From 3369956accb8a181d3ea9053255292bbc401981f Mon Sep 17 00:00:00 2001
From: Xiao Gui <xgui3783@gmail.com>
Date: Tue, 20 Oct 2020 17:05:29 +0200
Subject: [PATCH] bugfix: changing template now also update url nav

---
 src/main.module.ts                                   |  1 -
 src/services/state/viewerState.store.ts              | 12 +++++++++---
 src/services/state/viewerState/actions.ts            |  2 +-
 .../viewerState.useEffect.spec.ts                    |  5 -----
 .../viewerStateController/viewerState.useEffect.ts   |  7 ++-----
 5 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/src/main.module.ts b/src/main.module.ts
index 65fb34a1c..0c2749376 100644
--- a/src/main.module.ts
+++ b/src/main.module.ts
@@ -258,7 +258,6 @@ export const GET_STATE_SNAPSHOT_TOKEN = new InjectionToken('GET_STATE_SNAPSHOT_T
      * TODO
      * once nehubacontainer is separated into viewer + overlay, migrate to nehubaContainer module
      */
-    DatabrowserService,
     {
       provide: API_SERVICE_SET_VIEWER_HANDLE_TOKEN,
       useFactory: setViewerHandleFactory,
diff --git a/src/services/state/viewerState.store.ts b/src/services/state/viewerState.store.ts
index fa8c727a6..63fefee54 100644
--- a/src/services/state/viewerState.store.ts
+++ b/src/services/state/viewerState.store.ts
@@ -24,6 +24,7 @@ import {
   viewerStateMouseOverCustomLandmarkInPerspectiveView,
   viewerStateNewViewer
 } from './viewerState.store.helper';
+import { cvtNehubaConfigToNavigationObj } from 'src/ui/viewerStateController/viewerState.useEffect';
 
 export interface StateInterface {
   fetchedTemplates: any[]
@@ -136,17 +137,22 @@ export const getStateStore = ({ state = defaultState } = {}) => (prevState: Part
     }
   case NEWVIEWER: {
 
-    const { selectParcellation: parcellation } = action
+    const {
+      selectParcellation: parcellation,
+      navigation,
+      selectTemplate,
+    } = action
+    const navigationFromTemplateSelected = cvtNehubaConfigToNavigationObj(selectTemplate?.nehubaConfig?.dataset?.initialNgState)
     return {
       ...prevState,
-      templateSelected : action.selectTemplate,
+      templateSelected : selectTemplate,
       parcellationSelected : parcellation,
       // taken care of by effect.ts
       // regionsSelected : [],
 
       // taken care of by effect.ts
       // landmarksSelected : [],
-      navigation : action.navigation,
+      navigation : navigation || navigationFromTemplateSelected,
       dedicatedView : null,
     }
   }
diff --git a/src/services/state/viewerState/actions.ts b/src/services/state/viewerState/actions.ts
index 7cea8db48..4da844663 100644
--- a/src/services/state/viewerState/actions.ts
+++ b/src/services/state/viewerState/actions.ts
@@ -6,7 +6,7 @@ export const viewerStateNewViewer = createAction(
   props<{ 
     selectTemplate: any
     selectParcellation: any
-    navigation: any
+    navigation?: any
   }>()
 )
 
diff --git a/src/ui/viewerStateController/viewerState.useEffect.spec.ts b/src/ui/viewerStateController/viewerState.useEffect.spec.ts
index e15a18fb8..b1eeb0940 100644
--- a/src/ui/viewerStateController/viewerState.useEffect.spec.ts
+++ b/src/ui/viewerStateController/viewerState.useEffect.spec.ts
@@ -104,7 +104,6 @@ describe('> viewerState.useEffect.ts', () => {
                   a: viewerStateNewViewer({
                       selectTemplate: reconstitutedColin,
                       selectParcellation: reconstitutedColin.parcellations[0],
-                      navigation: {}
                     })
                 }
               )
@@ -133,7 +132,6 @@ describe('> viewerState.useEffect.ts', () => {
                   a: viewerStateNewViewer({
                       selectTemplate: reconstitutedColin,
                       selectParcellation: reconstitutedColin.parcellations[0],
-                      navigation: {}
                     })
                 }
               )
@@ -162,7 +160,6 @@ describe('> viewerState.useEffect.ts', () => {
                   a: viewerStateNewViewer({
                       selectTemplate: reconstitutedColin,
                       selectParcellation: reconstitutedColin.parcellations[0],
-                      navigation: {}
                     })
                 }
               )
@@ -190,7 +187,6 @@ describe('> viewerState.useEffect.ts', () => {
               a: viewerStateNewViewer({
                   selectTemplate: reconstitutedColin,
                   selectParcellation: reconstitutedColin.parcellations[0],
-                  navigation: {}
                 })
             }
           )
@@ -224,7 +220,6 @@ describe('> viewerState.useEffect.ts', () => {
               a: viewerStateNewViewer({
                   selectTemplate: updatedColin,
                   selectParcellation: updatedColin.parcellations[0],
-                  navigation: {}
                 })
             }
           )
diff --git a/src/ui/viewerStateController/viewerState.useEffect.ts b/src/ui/viewerStateController/viewerState.useEffect.ts
index 75f613cca..292d47435 100644
--- a/src/ui/viewerStateController/viewerState.useEffect.ts
+++ b/src/ui/viewerStateController/viewerState.useEffect.ts
@@ -210,9 +210,8 @@ export class ViewerStateControllerUseEffect implements OnDestroy {
        */
       if (!lastSelectedTemplate) {
         return of(viewerStateNewViewer({
-          navigation: {},
           selectParcellation,
-          selectTemplate
+          selectTemplate,
         }))
       }
 
@@ -228,9 +227,8 @@ export class ViewerStateControllerUseEffect implements OnDestroy {
            */
           if (status === 'error') {
             return viewerStateNewViewer({
-              navigation: {},
               selectParcellation,
-              selectTemplate
+              selectTemplate,
             })
           }
 
@@ -258,7 +256,6 @@ export class ViewerStateControllerUseEffect implements OnDestroy {
           return viewerStateNewViewer({
             selectTemplate: deepCopiedState,
             selectParcellation,
-            navigation: {}
           })
         })
       )
-- 
GitLab