diff --git a/UI/Web/src/app/_services/search.service.ts b/UI/Web/src/app/_services/search.service.ts index e166b1d43..78868fc24 100644 --- a/UI/Web/src/app/_services/search.service.ts +++ b/UI/Web/src/app/_services/search.service.ts @@ -14,6 +14,7 @@ export class SearchService { private searchSubject: ReplaySubject = new ReplaySubject(1); searchResults$: Observable; + searchTerm$: Observable = this.searchSubject.asObservable(); constructor(private httpClient: HttpClient) { this.searchResults$ = this.searchSubject.pipe( diff --git a/UI/Web/src/app/nav/grouped-typeahead/grouped-typeahead.component.ts b/UI/Web/src/app/nav/grouped-typeahead/grouped-typeahead.component.ts index d27caa10b..df6aede40 100644 --- a/UI/Web/src/app/nav/grouped-typeahead/grouped-typeahead.component.ts +++ b/UI/Web/src/app/nav/grouped-typeahead/grouped-typeahead.component.ts @@ -180,6 +180,7 @@ export class GroupedTypeaheadComponent implements OnInit, OnDestroy { } open(event?: FocusEvent) { + // TODO: Supress showing the groupped results when on the search page directly this.hasFocus = true; this.focusChanged.emit(this.hasFocus); this.cdRef.markForCheck(); diff --git a/UI/Web/src/app/search/search/search.component.html b/UI/Web/src/app/search/search/search.component.html index c8af4130e..c09e22bbd 100644 --- a/UI/Web/src/app/search/search/search.component.html +++ b/UI/Web/src/app/search/search/search.component.html @@ -1,15 +1,13 @@ - \ No newline at end of file + + \ No newline at end of file diff --git a/UI/Web/src/app/search/search/search.component.ts b/UI/Web/src/app/search/search/search.component.ts index cb19f4b01..51b83c92d 100644 --- a/UI/Web/src/app/search/search/search.component.ts +++ b/UI/Web/src/app/search/search/search.component.ts @@ -1,28 +1,52 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; -import { AccountService } from 'src/app/_services/account.service'; +import { map, Observable, Subject, switchMap, takeUntil } from 'rxjs'; +import { SearchResult } from 'src/app/_models/search-result'; +import { SearchService } from 'src/app/_services/search.service'; @Component({ selector: 'app-search', templateUrl: './search.component.html', styleUrls: ['./search.component.scss'] }) -export class SearchComponent implements OnInit { +export class SearchComponent implements OnInit, OnDestroy { + isLoading: boolean = false; originalQueryString: string = ''; + series$!: Observable; - constructor(private route: ActivatedRoute, private router: Router, private accountService: AccountService,) { + private onDestroy: Subject = new Subject(); + + constructor(private route: ActivatedRoute, private router: Router, public searchService: SearchService,) { } ngOnInit(): void { const queryString = this.route.snapshot.queryParamMap.get('query'); console.log('query: ', queryString) - if (queryString === undefined || queryString === null) { - //this.router.navigateByUrl('/libraries'); + if (queryString === undefined || queryString === null || queryString === '') { + this.router.navigateByUrl('/libraries'); return; } this.originalQueryString = queryString; + + // const searchResults$ = this.searchService.searchTerm$.pipe( + // takeUntil(this.onDestroy), + // switchMap(() =>) + + // ); + + this.series$ = this.searchService.searchResults$.pipe( + takeUntil(this.onDestroy), + map(g => g.series), + ); } + ngOnDestroy() { + this.onDestroy.next(); + this.onDestroy.complete(); + } + + loadPage() {} + }