From fe742e0ea129e0ccbfd50a1300ed2bf7e7e6e61c Mon Sep 17 00:00:00 2001
From: Xiao Gui <xgui3783@gmail.com>
Date: Wed, 18 Oct 2023 17:35:13 +0200
Subject: [PATCH] fix: var undefined, error msg fix: selected region on select
 feat: tooltip for related regions

---
 .../region/region/rich/region.rich.component.ts    |  3 ++-
 .../region/region/rich/region.rich.template.html   | 14 +++++++++++---
 src/state/atlasSelection/effects.ts                |  4 ++--
 src/viewerModule/viewerCmp/viewerCmp.component.ts  |  6 +++---
 src/viewerModule/viewerCmp/viewerCmp.template.html |  2 +-
 5 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.component.ts b/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.component.ts
index 242bb2ff5..d2ba51f51 100644
--- a/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.component.ts
+++ b/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.component.ts
@@ -103,7 +103,8 @@ export class SapiViewsCoreRegionRegionRich extends SapiViewsCoreRegionRegionBase
     shareReplay(1),
   )
 
-  public selectATPR(region: SxplrRegion, parcellation: SxplrParcellation){
+  public selectATPR(regParc: {region?: SxplrRegion, parcellation: SxplrParcellation}){
+    const { region, parcellation } = regParc
     this.relatedRegion.next({
       region,
       parcellation
diff --git a/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html b/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html
index c3587d8ec..5be2c5d7c 100644
--- a/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html
+++ b/src/atlasComponents/sapiViews/core/region/region/rich/region.rich.template.html
@@ -106,9 +106,11 @@
                     <th mat-header-cell *matHeaderCellDef> Related Region </th>
                     <td mat-cell *matCellDef="let related">
                       <button tabindex="-1" mat-stroked-button
-                        (click)="selectATPR(related.region, related.parcellation)"
+                        (click)="selectATPR({ region: related.region, parcellation: related.parcellation})"
                         class="sxplr-w-100"
-                        [disabled]="!related.mapped">
+                        [disabled]="!related.mapped"
+                        mat-dialog-close
+                        [matTooltip]="('Explorer ' + related.region.name + ' in ' + related.parcellation.name)">
                         {{ related.region.name }}
                       </button>
                     </td>
@@ -117,7 +119,13 @@
                   <ng-container matColumnDef="relatedRegionParc">
                     <th mat-header-cell *matHeaderCellDef> Related Region Parcellation </th>
                     <td mat-cell *matCellDef="let related">
-                      {{ related.parcellation.name }}
+                      <button tabindex="-1" mat-stroked-button
+                        (click)="selectATPR({ parcellation: related.parcellation })"
+                        class="sxplr-w-100"
+                        mat-dialog-close
+                        [matTooltip]="('Explore ' + related.parcellation.name)">
+                        {{ related.parcellation.name }}
+                      </button>
                     </td>
                   </ng-container>
 
diff --git a/src/state/atlasSelection/effects.ts b/src/state/atlasSelection/effects.ts
index 7cf228c21..c4920067a 100644
--- a/src/state/atlasSelection/effects.ts
+++ b/src/state/atlasSelection/effects.ts
@@ -303,11 +303,11 @@ export class Effect {
                     }
                   }
 
+                  state.selectedRegions = []
                   if (!!regionId) {
                     const selectedRegions = (state.selectedParcellationAllRegions || []).filter(r => r.name === regionId)
                     state.selectedRegions = selectedRegions
                   }
-
                   
                   return actions.setAtlasSelectionState(state)
                 })
@@ -316,7 +316,7 @@ export class Effect {
           )
         }),
         catchError((err) => {
-          console.log("error!", err)  
+          console.warn("Selecting ATP Error!", err)  
           return of(
             mainActions.generalActionError({
               message: err.toString()
diff --git a/src/viewerModule/viewerCmp/viewerCmp.component.ts b/src/viewerModule/viewerCmp/viewerCmp.component.ts
index e6dd65887..6ddd87d44 100644
--- a/src/viewerModule/viewerCmp/viewerCmp.component.ts
+++ b/src/viewerModule/viewerCmp/viewerCmp.component.ts
@@ -511,11 +511,11 @@ export class ViewerCmp implements OnDestroy {
     }
   }
 
-  selectATPR(region: SxplrRegion, parcellation: SxplrParcellation){
+  selectATPR(regParc: {region: SxplrRegion, parcellation: SxplrParcellation}){
     this.store$.dispatch(
       atlasSelection.actions.selectATPById({
-        parcellationId: parcellation.id,
-        regionId: region.name
+        parcellationId: regParc?.parcellation.id,
+        regionId: regParc?.region?.name
       })
     )
   }
diff --git a/src/viewerModule/viewerCmp/viewerCmp.template.html b/src/viewerModule/viewerCmp/viewerCmp.template.html
index 486717925..1a247aafb 100644
--- a/src/viewerModule/viewerCmp/viewerCmp.template.html
+++ b/src/viewerModule/viewerCmp/viewerCmp.template.html
@@ -729,7 +729,7 @@
         [sxplr-sapiviews-core-region-parcellation]="view.selectedParcellation"
         [sxplr-sapiviews-core-region-region]="view.selectedRegions[0]"
         (sxplr-sapiviews-core-region-region-rich-feature-clicked)="showDataset($event)"
-        (sxplr-sapiviews-core-region-region-rich-related-region-clicked)="selectATPR($event.region, $event.parcellation)"
+        (sxplr-sapiviews-core-region-region-rich-related-region-clicked)="selectATPR($event)"
         (sxplr-sapiviews-core-region-navigate-to)="navigateTo($event)"
         #regionDirective="sapiViewsCoreRegionRich"
       >
-- 
GitLab