From dd5f3919ef02a9666b262250478e3aba4342e462 Mon Sep 17 00:00:00 2001
From: Xiao Gui <xgui3783@gmail.com>
Date: Fri, 22 Jul 2022 09:11:57 +0200
Subject: [PATCH] chore: remove unused direct access to worker

---
 docs/releases/v2.7.3.md                       |  4 +
 .../atlasViewer.workerService.service.ts      |  9 +-
 .../nehubaViewer.component.spec.ts            |  2 -
 .../nehubaViewer/nehubaViewer.component.ts    | 98 +------------------
 .../viewerCtrlCmp.component.spec.ts           |  2 -
 5 files changed, 11 insertions(+), 104 deletions(-)

diff --git a/docs/releases/v2.7.3.md b/docs/releases/v2.7.3.md
index f5dd31e92..8034c954c 100644
--- a/docs/releases/v2.7.3.md
+++ b/docs/releases/v2.7.3.md
@@ -3,3 +3,7 @@
 ## Bugfix
 
 - fixed matomo visitor counting (broke since 2.7.0 release)
+
+## Under the hood
+
+- minor refactor of unused code
diff --git a/src/atlasViewer/atlasViewer.workerService.service.ts b/src/atlasViewer/atlasViewer.workerService.service.ts
index 9a1711553..67a422714 100644
--- a/src/atlasViewer/atlasViewer.workerService.service.ts
+++ b/src/atlasViewer/atlasViewer.workerService.service.ts
@@ -3,9 +3,6 @@ import { fromEvent } from "rxjs";
 import { filter, take } from "rxjs/operators";
 import { getUuid } from "src/util/fn";
 
-// worker is now exported in angular.json file
-export const worker = new Worker('worker.js')
-
 interface IWorkerMessage {
   method: string
   param: any
@@ -17,7 +14,11 @@ interface IWorkerMessage {
 })
 
 export class AtlasWorkerService {
-  public worker = worker
+  private worker: Worker
+
+  constructor(){
+    this.worker = new Worker('worker.js')
+  }
 
   async sendMessage(_data: IWorkerMessage){
 
diff --git a/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.spec.ts b/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.spec.ts
index c6437fc7c..6c5bb5aeb 100644
--- a/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.spec.ts
+++ b/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.spec.ts
@@ -1,7 +1,6 @@
 import { TestBed, fakeAsync, tick, ComponentFixture } from "@angular/core/testing"
 import { CommonModule } from "@angular/common"
 import { NehubaViewerUnit, IMPORT_NEHUBA_INJECT_TOKEN, scanFn } from "./nehubaViewer.component"
-import { AtlasWorkerService } from "src/atlasViewer/atlasViewer.workerService.service"
 import { LoggingModule, LoggingService } from "src/logging"
 import { IMeshesToLoad, SET_MESHES_TO_LOAD } from "../constants"
 import { Subject } from "rxjs"
@@ -106,7 +105,6 @@ describe('> nehubaViewer.component.ts', () => {
             provide: SET_COLORMAP_OBS,
             useValue: setcolorMap$
           },
-          AtlasWorkerService,
           LoggingService,
         ]
       }).compileComponents()
diff --git a/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts b/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts
index b1f70202a..4d38f0487 100644
--- a/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts
+++ b/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts
@@ -1,7 +1,6 @@
 import { Component, ElementRef, EventEmitter, OnDestroy, Output, Inject, Optional } from "@angular/core";
-import { fromEvent, Subscription, BehaviorSubject, Observable, Subject, of, interval } from 'rxjs'
-import { debounceTime, filter, map, scan, switchMap, take, distinctUntilChanged, debounce } from "rxjs/operators";
-import { AtlasWorkerService } from "src/atlasViewer/atlasViewer.workerService.service";
+import { Subscription, BehaviorSubject, Observable, Subject, of, interval } from 'rxjs'
+import { debounceTime, filter, scan, switchMap, take, distinctUntilChanged, debounce } from "rxjs/operators";
 import { LoggingService } from "src/logging";
 import { bufferUntil, getExportNehuba, getViewer, setNehubaViewer, switchMapWaitFor } from "src/util/fn";
 import { deserializeSegment, NEHUBA_INSTANCE_INJTKN } from "../util";
@@ -135,7 +134,6 @@ export class NehubaViewerUnit implements OnDestroy {
 
   constructor(
     public elementRef: ElementRef,
-    private workerService: AtlasWorkerService,
     private log: LoggingService,
     @Inject(IMPORT_NEHUBA_INJECT_TOKEN) getImportNehubaPr: () => Promise<any>,
     @Optional() @Inject(NEHUBA_INSTANCE_INJTKN) private nehubaViewer$: Subject<NehubaViewerUnit>,
@@ -179,67 +177,6 @@ export class NehubaViewerUnit implements OnDestroy {
       })
       .catch(e => this.errorEmitter.emit(e))
 
-
-    /**
-     * TODO move to layerCtrl.service
-     */
-    this.ondestroySubscriptions.push(
-      fromEvent(this.workerService.worker, 'message').pipe(
-        filter((message: any) => {
-
-          if (!message) {
-            // this.log.error('worker response message is undefined', message)
-            return false
-          }
-          if (!message.data) {
-            // this.log.error('worker response message.data is undefined', message.data)
-            return false
-          }
-          if (message.data.type !== 'ASSEMBLED_USERLANDMARKS_VTK') {
-            /* worker responded with not assembled landmark, no need to act */
-            return false
-          }
-          /**
-           * nb url may be undefined
-           * if undefined, user have removed all user landmarks, and all that needs to be done
-           * is remove the user landmark layer
-           *
-           * message.data.url
-           */
-
-          return true
-        }),
-        debounceTime(100),
-        map(e => e.data.url),
-      ).subscribe(url => {
-        this.landmarksLoaded = !!url
-        this.removeuserLandmarks()
-
-        /**
-         * url may be null if user removes all landmarks
-         */
-        if (!url) {
-          /**
-           * remove transparency from meshes in current layer(s)
-           */
-          this.setMeshTransparency(false)
-          return
-        }
-        const _ = {}
-        _[NG_USER_LANDMARK_LAYER_NAME] = {
-          type: 'mesh',
-          source: `vtk://${url}`,
-          shader: this.userLandmarkShader,
-        }
-        this.loadLayer(_)
-
-        /**
-         * adding transparency to meshes in current layer(s)
-         */
-        this.setMeshTransparency(true)
-      }),
-    )
-  
     if (this.setColormap$) {
       this.ondestroySubscriptions.push(
         this.setColormap$.pipe(
@@ -546,37 +483,6 @@ export class NehubaViewerUnit implements OnDestroy {
   }
 
   private userLandmarkShader: string = FRAGMENT_MAIN_WHITE
-  
-  // TODO single landmark for user landmark
-  public updateUserLandmarks(landmarks: any[]) {
-    if (!this.nehubaViewer) {
-      return
-    }
-    
-    this.workerService.worker.postMessage({
-      type : 'GET_USERLANDMARKS_VTK',
-      scale: Math.min(...this.dim.map(v => v * NG_LANDMARK_CONSTANT)),
-      landmarks : landmarks.map(lm => lm.position.map(coord => coord * 1e6)),
-    })
-
-    const parseLmColor = lm => {
-      if (!lm) return null
-      const { color } = lm
-      if (!color) return null
-      if (!Array.isArray(color)) return null
-      if (color.length !== 3) return null
-      const parseNum = num => (num >= 0 && num <= 255 ? num / 255 : 1).toFixed(3)
-      return `emitRGB(vec3(${color.map(parseNum).join(',')}));`
-    }
-  
-    const appendConditional = (frag, idx) => frag && `if (label > ${idx - 0.01} && label < ${idx + 0.01}) { ${frag} }`
-
-    if (landmarks.some(parseLmColor)) {
-      this.userLandmarkShader = `void main(){ ${landmarks.map(parseLmColor).map(appendConditional).filter(v => !!v).join('else ')} else {${FRAGMENT_EMIT_WHITE}} }`
-    } else {
-      this.userLandmarkShader = FRAGMENT_MAIN_WHITE  
-    }
-  }
 
   public removeSpatialSearch3DLandmarks() {
     this.removeLayer({
diff --git a/src/viewerModule/nehuba/viewerCtrl/viewerCtrlCmp/viewerCtrlCmp.component.spec.ts b/src/viewerModule/nehuba/viewerCtrl/viewerCtrlCmp/viewerCtrlCmp.component.spec.ts
index c5042ecfc..0ec1d5125 100644
--- a/src/viewerModule/nehuba/viewerCtrl/viewerCtrlCmp/viewerCtrlCmp.component.spec.ts
+++ b/src/viewerModule/nehuba/viewerCtrl/viewerCtrlCmp/viewerCtrlCmp.component.spec.ts
@@ -22,7 +22,6 @@ describe('> viewerCtrlCmp.component.ts', () => {
     let mockStore: MockStore
 
     let mockNehubaViewer = {
-      updateUserLandmarks: jasmine.createSpy(),
       nehubaViewer: {
         ngviewer: {
           layerManager: {
@@ -42,7 +41,6 @@ describe('> viewerCtrlCmp.component.ts', () => {
     }
 
     afterEach(() => {
-      mockNehubaViewer.updateUserLandmarks.calls.reset()
       mockNehubaViewer.nehubaViewer.ngviewer.layerManager.getLayerByName.calls.reset()
       mockNehubaViewer.nehubaViewer.ngviewer.display.scheduleRedraw.calls.reset()
     })
-- 
GitLab