From 45a1c57e731c10939e54c5c7c4c5d3f2c936ffb5 Mon Sep 17 00:00:00 2001
From: Xiao Gui <xgui3783@gmail.com>
Date: Fri, 14 Jul 2023 15:23:10 +0200
Subject: [PATCH] fix: min tray filtering

---
 .../regionListSearch.component.ts             | 31 ++++++++++++-------
 .../viewerCmp/viewerCmp.template.html         |  1 +
 2 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearch.component.ts b/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearch.component.ts
index e55fb7e12..389486f77 100644
--- a/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearch.component.ts
+++ b/src/atlasComponents/sapiViews/core/rich/regionsListSearch/regionListSearch.component.ts
@@ -5,6 +5,7 @@ import { UntypedFormControl } from "@angular/forms";
 import { debounceTime, distinctUntilChanged, map, startWith } from "rxjs/operators";
 import { MatAutocompleteSelectedEvent } from "@angular/material/autocomplete";
 import { SapiViewsCoreRichRegionListTemplateDirective } from "./regionListSearchTmpl.directive";
+import { BehaviorSubject, combineLatest } from "rxjs";
 
 const filterRegionViaSearch = (searchTerm: string) => (region:SxplrRegion) => {
   return region.name.toLocaleLowerCase().includes(searchTerm.toLocaleLowerCase())
@@ -25,13 +26,16 @@ export class SapiViewsCoreRichRegionListSearch {
 
   showNOptions = 4
 
-  private _regions: SxplrRegion[] = []
-  get regions(){
-    return this._regions
-  }
+  #regions = new BehaviorSubject<SxplrRegion[]>([])
   @Input('sxplr-sapiviews-core-rich-regionlistsearch-regions')
   set regions(reg: SxplrRegion[]) {
-    this._regions = reg.filter(r => !reg.some(c => c.parentIds.includes(r.id)))
+    this.#regions.next(reg)
+  }
+
+  #mappedRegionNames = new BehaviorSubject<string[]>([])
+  @Input('sxplr-sapiviews-core-rich-regionlistsearch-mapped-region-names')
+  set mappedRegions(regNames: string[]) {
+    this.#mappedRegionNames.next(regNames)
   }
 
   @ContentChild(SapiViewsCoreRichRegionListTemplateDirective)
@@ -51,13 +55,18 @@ export class SapiViewsCoreRichRegionListSearch {
 
   public searchFormControl = new UntypedFormControl()
 
-  public searchedList$ = this.searchFormControl.valueChanges.pipe(
-    startWith(''),
-    distinctUntilChanged(),
-    debounceTime(160),
-    map((searchTerm: string | SxplrRegion) => {
+  public searchedList$ = combineLatest([
+    this.searchFormControl.valueChanges.pipe(
+      startWith(''),
+      distinctUntilChanged(),
+      debounceTime(160),
+    ),
+    this.#regions,
+    this.#mappedRegionNames
+  ]).pipe(
+    map(([searchTerm, regions, mappedRegionNames]) => {
       if (typeof searchTerm === "string") {
-        return this.regions.filter(filterRegionViaSearch(searchTerm))
+        return regions.filter(r => mappedRegionNames.includes(r.name)).filter(filterRegionViaSearch(searchTerm))
       }
       return []
     })
diff --git a/src/viewerModule/viewerCmp/viewerCmp.template.html b/src/viewerModule/viewerCmp/viewerCmp.template.html
index 283145b65..a96f02587 100644
--- a/src/viewerModule/viewerCmp/viewerCmp.template.html
+++ b/src/viewerModule/viewerCmp/viewerCmp.template.html
@@ -562,6 +562,7 @@
     
       <sxplr-sapiviews-core-rich-regionlistsearch
         [sxplr-sapiviews-core-rich-regionlistsearch-regions]="allAvailableRegions$ | async"
+        [sxplr-sapiviews-core-rich-regionlistsearch-mapped-region-names]="view.labelMappedRegionNames"
         [sxplr-sapiviews-core-rich-regionlistsearch-current-search]="view.selectedRegions.length === 1 ? view.selectedRegions[0].name : null"
         (sxplr-sapiviews-core-rich-regionlistsearch-region-select)="selectRoi($event)"
         (sxplr-sapiviews-core-rich-regionlistsearch-region-toggle)="toggleRoi($event)">
-- 
GitLab