diff --git a/src/ui/layerbrowser/layerbrowser.component.ts b/src/ui/layerbrowser/layerbrowser.component.ts index 2dd2a8aa0bcca320f72a2eeff7c1ac7b2c3ed72f..ca537076ad572f367913f0e6ce0dc93df8391ba8 100644 --- a/src/ui/layerbrowser/layerbrowser.component.ts +++ b/src/ui/layerbrowser/layerbrowser.component.ts @@ -1,7 +1,7 @@ import { Component, OnDestroy } from "@angular/core"; import { NgLayerInterface } from "../../atlasViewer/atlasViewer.component"; import { Store, select } from "@ngrx/store"; -import { ViewerStateInterface, isDefined, REMOVE_NG_LAYER, FORCE_SHOW_SEGMENT, safeFilter } from "../../services/stateStore.service"; +import { ViewerStateInterface, isDefined, REMOVE_NG_LAYER, FORCE_SHOW_SEGMENT, safeFilter, getNgIds } from "../../services/stateStore.service"; import { Subscription, Observable } from "rxjs"; import { filter, distinctUntilChanged, map, delay, buffer } from "rxjs/operators"; import { AtlasViewerConstantsServices } from "src/atlasViewer/atlasViewer.constantService.service"; @@ -42,12 +42,28 @@ export class LayerBrowser implements OnDestroy{ this.ngLayers$ = store.pipe( select('viewerState'), select('templateSelected'), - map(templateSelected => (templateSelected && !this.advancedMode && [ - templateSelected.ngId, - ...templateSelected.parcellations.map(p => p.ngId) - ]) || []) + map(templateSelected => { + if (!templateSelected) return [] + if (this.advancedMode) return [] + return [ + templateSelected.ngId, + ...templateSelected.parcellations.reduce((acc, curr) => { + return acc.concat([ + curr.ngId, + ...getNgIds(curr.regions) + ]) + }, []) + ] + }), + /** + * get unique array + */ + map(nonUniqueArray => Array.from(new Set(nonUniqueArray))), + /** + * remove falsy values + */ + map(arr => arr.filter(v => !!v)) ) - /** * TODO * this is no longer populated