From c4e316a1b8ceba2e4278aa77e4587d3a4eb23967 Mon Sep 17 00:00:00 2001
From: fsdavid <daviti1@mail.com>
Date: Wed, 5 Aug 2020 06:30:09 +0200
Subject: [PATCH] Show connectivity as chip (#621)

---
 src/atlasViewer/atlasViewer.component.ts      |  9 +++++++
 src/atlasViewer/atlasViewer.template.html     | 15 +++++++++++
 src/services/state/viewerState.store.ts       |  2 +-
 .../connectivityBrowser.component.ts          | 27 +++++++++++++------
 .../nehubaContainer.component.ts              |  3 +++
 .../nehubaContainer.template.html             |  2 +-
 6 files changed, 48 insertions(+), 10 deletions(-)

diff --git a/src/atlasViewer/atlasViewer.component.ts b/src/atlasViewer/atlasViewer.component.ts
index a5a88fd48..34d3bd40c 100644
--- a/src/atlasViewer/atlasViewer.component.ts
+++ b/src/atlasViewer/atlasViewer.component.ts
@@ -95,6 +95,8 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit {
 
   public onhoverLandmark$: Observable<{landmarkName: string, datasets: any} | null>
 
+  public overwrittenColorMap$: Observable<any>
+
   private subscriptions: Subscription[] = []
 
   public unsupportedPreviewIdx: number = 0
@@ -202,6 +204,13 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit {
 
     )
 
+    this.overwrittenColorMap$ = this.store.pipe(
+      select('viewerState'),
+      safeFilter('overwrittenColorMap'),
+      map(state => state.overwrittenColorMap),
+      distinctUntilChanged()
+    )
+
     const error = this.el.nativeElement.getAttribute('data-error')
 
     if (error) {
diff --git a/src/atlasViewer/atlasViewer.template.html b/src/atlasViewer/atlasViewer.template.html
index 8b4f9d41e..d9c88931d 100644
--- a/src/atlasViewer/atlasViewer.template.html
+++ b/src/atlasViewer/atlasViewer.template.html
@@ -227,7 +227,22 @@
                     fontIcon="fa-times">
                   </mat-icon>
                 </mat-chip>
+
+                <mat-chip *ngIf="(overwrittenColorMap$ | async) === 'connectivity' && !previewDirective.active"
+                          (click)="uiNehubaContainer.matDrawerMinor.open() && uiNehubaContainer.navSideDrawerMainSwitch.open()"
+                          class="pe-all position-relative ml-8-n">
+                  <span class="pl-4">
+                    Connectivity
+                  </span>
+                  <mat-icon
+                          (click)="uiNehubaContainer.connectivityComponent.closeConnectivityView()"
+                          fontSet="fas"
+                          iav-stop="click"
+                          fontIcon="fa-times">
+                  </mat-icon>
+                </mat-chip>
               </ng-container>
+
             </ng-container>
           </ng-template>
 
diff --git a/src/services/state/viewerState.store.ts b/src/services/state/viewerState.store.ts
index ef8929596..33750d0d5 100644
--- a/src/services/state/viewerState.store.ts
+++ b/src/services/state/viewerState.store.ts
@@ -226,7 +226,7 @@ export const getStateStore = ({ state = defaultState } = {}) => (prevState: Part
   case SET_CONNECTIVITY_VISIBLE:
     return {
       ...prevState,
-      overwrittenColorMap: action.payload,
+      overwrittenColorMap: action.payload || '',
     }  
   default :
     return prevState
diff --git a/src/ui/connectivityBrowser/connectivityBrowser.component.ts b/src/ui/connectivityBrowser/connectivityBrowser.component.ts
index ed930b686..43d5cd18d 100644
--- a/src/ui/connectivityBrowser/connectivityBrowser.component.ts
+++ b/src/ui/connectivityBrowser/connectivityBrowser.component.ts
@@ -29,6 +29,7 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy, A
     private connectivityRegion$: Observable<any>
     private templateSelected$: Observable<any>
     private selectedParcellation$: Observable<any>
+    public overwrittenColorMap$: Observable<any>
 
     private subscriptions: Subscription[] = []
     public expandMenuIndex = -1
@@ -72,6 +73,13 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy, A
         select('templateSelected'),
         shareReplay(1)
       )
+
+      this.overwrittenColorMap$ = this.store$.pipe(
+        select('viewerState'),
+        safeFilter('overwrittenColorMap'),
+        map(state => state.overwrittenColorMap),
+        distinctUntilChanged()
+      )
     }
 
     public ngAfterContentChecked(): void {
@@ -99,7 +107,7 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy, A
               this.setDefaultMap()
               this.store$.dispatch({
                 type: SET_CONNECTIVITY_VISIBLE,
-                payload: false,
+                payload: null,
               })
             }
             this.region = cr
@@ -110,6 +118,9 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy, A
       this.subscriptions.push(this.templateSelected$.subscribe(t => {
         this.closeConnectivityView()
       }))
+      this.subscriptions.push(this.overwrittenColorMap$.subscribe(ocm => {
+        this.showConnectivityToggle = ocm === 'connectivity'? true : false
+      }))
       this.subscriptions.push(
         fromEvent(this.connectivityComponentElement?.nativeElement, 'connectivityDataReceived', { capture: true })
           .subscribe((e: CustomEvent) => {
@@ -151,7 +162,7 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy, A
         if (this.defaultColorMap) this.setDefaultMap()
         this.store$.dispatch({
           type: SET_CONNECTIVITY_VISIBLE,
-          payload: false,
+          payload: null,
         })
       }
     }
@@ -164,10 +175,10 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy, A
     public ngOnDestroy(): void {
       this.subscriptions.forEach(s => s.unsubscribe())
       this.defaultColorMap && this.setDefaultMap()
-      this.store$.dispatch({
-        type: SET_CONNECTIVITY_VISIBLE,
-        payload: false,
-      })
+      // this.store$.dispatch({
+      //   type: SET_CONNECTIVITY_VISIBLE,
+      //   payload: false,
+      // })
     }
 
     navigateToRegion(region) {
@@ -197,7 +208,7 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy, A
       })
       this.store$.dispatch({
         type: SET_CONNECTIVITY_VISIBLE,
-        payload: false,
+        payload: null,
       })
     }
 
@@ -213,7 +224,7 @@ export class ConnectivityBrowserComponent implements AfterViewInit, OnDestroy, A
     public addNewColorMap() {
       this.store$.dispatch({
         type: SET_CONNECTIVITY_VISIBLE,
-        payload: true,
+        payload: 'connectivity',
       })
       this.defaultColorMap = new Map(getWindow().interactiveViewer.viewerHandle.getLayersSegmentColourMap())
 
diff --git a/src/ui/nehubaContainer/nehubaContainer.component.ts b/src/ui/nehubaContainer/nehubaContainer.component.ts
index 06c46df2e..a225812a9 100644
--- a/src/ui/nehubaContainer/nehubaContainer.component.ts
+++ b/src/ui/nehubaContainer/nehubaContainer.component.ts
@@ -25,6 +25,7 @@ import {
 import { getFourPanel, getHorizontalOneThree, getSinglePanel, getVerticalOneThree, calculateSliceZoomFactor, scanSliceViewRenderFn as scanFn, isFirstRow, isFirstCell } from "./util";
 import { NehubaViewerContainerDirective } from "./nehubaViewerInterface/nehubaViewerInterface.directive";
 import { ITunableProp } from "./mobileOverlay/mobileOverlay.component";
+import {ConnectivityBrowserComponent} from "src/ui/connectivityBrowser/connectivityBrowser.component";
 
 const { MESH_LOADING_STATUS } = IDS
 
@@ -249,6 +250,8 @@ export class NehubaContainer implements OnInit, OnChanges, OnDestroy {
 
   public hoveredPanelIndices$: Observable<number>
 
+  @ViewChild('connectivityComponent') public connectivityComponent: ConnectivityBrowserComponent
+
   constructor(
     private pureConstantService: PureContantService,
     private apiService: AtlasViewerAPIServices,
diff --git a/src/ui/nehubaContainer/nehubaContainer.template.html b/src/ui/nehubaContainer/nehubaContainer.template.html
index 8492ba346..ccce42380 100644
--- a/src/ui/nehubaContainer/nehubaContainer.template.html
+++ b/src/ui/nehubaContainer/nehubaContainer.template.html
@@ -380,7 +380,7 @@
     <!-- Connectivity -->
     <ng-template #connectivityContentTmpl>
       <mat-card-content class="flex-grow-1 flex-shrink-1 w-100">
-        <connectivity-browser class="pe-all flex-shrink-1">
+        <connectivity-browser class="pe-all flex-shrink-1" #connectivityComponent>
         </connectivity-browser>
       </mat-card-content>
     </ng-template>
-- 
GitLab