From dd94f29bd40207a2c1a016f7103a8e482836211e Mon Sep 17 00:00:00 2001 From: Xiao Gui <xgui3783@gmail.com> Date: Thu, 9 Jan 2020 13:53:31 +0100 Subject: [PATCH] bugfix: try catch getNgId map --- .../atlasViewer.apiService.service.ts | 7 +++-- .../regionSearch/regionSearch.component.ts | 31 ++++++++++++------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/atlasViewer/atlasViewer.apiService.service.ts b/src/atlasViewer/atlasViewer.apiService.service.ts index b8da64e12..c68c60bf9 100644 --- a/src/atlasViewer/atlasViewer.apiService.service.ts +++ b/src/atlasViewer/atlasViewer.apiService.service.ts @@ -1,7 +1,7 @@ import { Injectable } from "@angular/core"; import { select, Store } from "@ngrx/store"; import { Observable } from "rxjs"; -import { distinctUntilChanged, map } from "rxjs/operators"; +import { distinctUntilChanged, map, filter } from "rxjs/operators"; import { DialogService } from "src/services/dialogService.service"; import { LoggingService } from "src/services/logging.service"; import { getLabelIndexMap, getMultiNgIdsRegionsLabelIndexMap, IavRootStoreInterface, safeFilter } from "src/services/stateStore.service"; @@ -140,7 +140,10 @@ export class AtlasViewerAPIServices { private init() { this.loadedTemplates$.subscribe(templates => this.interactiveViewer.metadata.loadedTemplates = templates) - this.selectParcellation$.subscribe(parcellation => { + this.selectParcellation$.pipe( + filter(p => !!p && p.regions), + distinctUntilChanged() + ).subscribe(parcellation => { this.interactiveViewer.metadata.regionsLabelIndexMap = getLabelIndexMap(parcellation.regions) this.interactiveViewer.metadata.layersRegionLabelIndexMap = getMultiNgIdsRegionsLabelIndexMap(parcellation) }) diff --git a/src/ui/viewerStateController/regionSearch/regionSearch.component.ts b/src/ui/viewerStateController/regionSearch/regionSearch.component.ts index 6d666d93a..01fb37ceb 100644 --- a/src/ui/viewerStateController/regionSearch/regionSearch.component.ts +++ b/src/ui/viewerStateController/regionSearch/regionSearch.component.ts @@ -9,6 +9,7 @@ import { VIEWER_STATE_ACTION_TYPES } from "src/services/effect/effect"; import { ADD_TO_REGIONS_SELECTION_WITH_IDS, CHANGE_NAVIGATION, SELECT_REGIONS } from "src/services/state/viewerState.store"; import { generateLabelIndexId, getMultiNgIdsRegionsLabelIndexMap, IavRootStoreInterface } from "src/services/stateStore.service"; import { VIEWERSTATE_CONTROLLER_ACTION_TYPES } from "../viewerState.base"; +import { LoggingService } from "src/services/logging.service"; const filterRegionBasedOnText = searchTerm => region => region.name.toLowerCase().includes(searchTerm.toLowerCase()) || (region.relatedAreas && region.relatedAreas.some(relatedArea => relatedArea.toLowerCase().includes(searchTerm.toLowerCase()))) @@ -42,6 +43,7 @@ export class RegionTextSearchAutocomplete { private store$: Store<IavRootStoreInterface>, private dialog: MatDialog, private constantService: AtlasViewerConstantsServices, + private log: LoggingService ) { this.useMobileUI$ = this.constantService.useMobileUI$ @@ -54,21 +56,26 @@ export class RegionTextSearchAutocomplete { this.regionsWithLabelIndex$ = viewerState$.pipe( select('parcellationSelected'), distinctUntilChanged(), - filter(p => !!p), + filter(p => !!p && p.regions), map(parcellationSelected => { - const returnArray = [] - const ngIdMap = getMultiNgIdsRegionsLabelIndexMap(parcellationSelected, { ngId: 'root', relatedAreas: [] }) - for (const [ngId, labelIndexMap] of ngIdMap) { - for (const [labelIndex, region] of labelIndexMap) { - returnArray.push({ - ...region, - ngId, - labelIndex, - labelIndexId: generateLabelIndexId({ ngId, labelIndex }), - }) + try { + const returnArray = [] + const ngIdMap = getMultiNgIdsRegionsLabelIndexMap(parcellationSelected, { ngId: 'root', relatedAreas: [] }) + for (const [ngId, labelIndexMap] of ngIdMap) { + for (const [labelIndex, region] of labelIndexMap) { + returnArray.push({ + ...region, + ngId, + labelIndex, + labelIndexId: generateLabelIndexId({ ngId, labelIndex }), + }) + } } + return returnArray + } catch (e) { + this.log.warn(`getMultiNgIdsRegionsLabelIndexMap error`, e) + return [] } - return returnArray }), shareReplay(1), ) -- GitLab