|
1 | | -import { Component, computed, NgZone, OnDestroy, OnInit, Signal, signal, inject } from '@angular/core'; |
| 1 | +import { Component, computed, inject, NgZone, OnDestroy, OnInit, signal, Signal } from '@angular/core'; |
2 | 2 | import { filter, Observable, of, Subject, takeUntil } from 'rxjs'; |
3 | 3 | import { |
4 | | - BaseTreeModel, BrowserHelper, DropZoneHelper, NodePositionChangedEventModel, TreeDragDropService, |
5 | | - TreeService, |
| 4 | + BaseTreeModel, BrowserHelper, DropZoneHelper, NodePositionChangedEventModel, TreeDragDropService, TreeService, |
6 | 5 | } from '@tailormap-viewer/shared'; |
7 | 6 | import { map, tap } from 'rxjs/operators'; |
8 | 7 | import { MenubarService } from '../../menubar'; |
9 | 8 | import { TocMenuButtonComponent } from '../toc-menu-button/toc-menu-button.component'; |
10 | 9 | import { Store } from '@ngrx/store'; |
11 | | -import { |
12 | | - AppLayerModel, AuthenticatedUserService, BaseComponentConfigHelper, BaseComponentTypeEnum, EditConfigModel, TocConfigModel, |
13 | | -} from '@tailormap-viewer/api'; |
| 10 | +import { AppLayerModel, AuthenticatedUserService, BaseComponentTypeEnum, TocConfigModel } from '@tailormap-viewer/api'; |
14 | 11 | import { MapService } from '@tailormap-viewer/map'; |
15 | 12 | import { selectFilteredLayerTree, selectFilterEnabled } from '../state/toc.selectors'; |
16 | 13 | import { toggleFilterEnabled } from '../state/toc.actions'; |
17 | 14 | import { |
18 | 15 | select3dTilesLayers, selectEditableLayers, selectIn3dView, selectLayersWithoutWebMercatorIds, selectSelectedNode, selectSelectedNodeId, |
19 | 16 | } from '../../../map/state/map.selectors'; |
20 | | -import { moveLayerTreeNode, setLayerVisibility, toggleSelectedLayerId, toggleLevelExpansion } from '../../../map/state/map.actions'; |
| 17 | +import { moveLayerTreeNode, setLayerVisibility, toggleLevelExpansion, toggleSelectedLayerId } from '../../../map/state/map.actions'; |
21 | 18 | import { selectFilteredLayerIds } from '../../../state/filter-state/filter.selectors'; |
22 | 19 | import { setEditActive, setSelectedEditLayer } from '../../edit/state/edit.actions'; |
23 | 20 | import { ComponentConfigHelper } from '../../../shared'; |
@@ -59,17 +56,21 @@ export class TocComponent implements OnInit, OnDestroy { |
59 | 56 | public layersWithoutWebMercator: Signal<string[]> = signal([]); |
60 | 57 | public tiles3DLayerIds: Signal<string[]> = signal([]); |
61 | 58 | public filteredLayerIds: Signal<string[]> = signal([]); |
62 | | - public editableLayerIds: Signal<string[]> = signal([]); |
63 | | - |
64 | | - public config: TocConfigModel | undefined; |
65 | 59 |
|
66 | | - public editComponentEnabled = !BaseComponentConfigHelper.isComponentDisabledByDefault(BaseComponentTypeEnum.EDIT); |
| 60 | + private config = ComponentConfigHelper.componentConfigSignal<TocConfigModel>(this.store$, BaseComponentTypeEnum.TOC); |
67 | 61 |
|
| 62 | + public editComponentEnabled= ComponentConfigHelper.componentEnabledConfigSignal(this.store$, BaseComponentTypeEnum.EDIT); |
68 | 63 | private authenticatedUserDetails = toSignal(this.authenticatedUserService.getUserDetails$()); |
69 | | - public getEditableLayerIds = computed(() => { |
70 | | - return this.config?.showEditLayerIcon |
71 | | - && this.authenticatedUserDetails()?.isAuthenticated |
72 | | - && this.editComponentEnabled |
| 64 | + |
| 65 | + private editableLayerIds = computed(() => { |
| 66 | + const editableLayers = this.store$.selectSignal(selectEditableLayers); |
| 67 | + return editableLayers().map(layer => layer.id); |
| 68 | + }); |
| 69 | + |
| 70 | + public getCurrentlyEditableLayerIds = computed(() => { |
| 71 | + return this.config()?.showEditLayerIcon |
| 72 | + && this.authenticatedUserDetails()?.isAuthenticated // remove when HTM-1762 is implemented |
| 73 | + && this.editComponentEnabled() |
73 | 74 | ? this.editableLayerIds() |
74 | 75 | : []; |
75 | 76 | }); |
@@ -113,29 +114,11 @@ export class TocComponent implements OnInit, OnDestroy { |
113 | 114 |
|
114 | 115 | this.menubarService.registerComponent({ type: BaseComponentTypeEnum.TOC, component: TocMenuButtonComponent }); |
115 | 116 |
|
116 | | - ComponentConfigHelper.useInitialConfigForComponent<TocConfigModel>( |
117 | | - this.store$, |
118 | | - BaseComponentTypeEnum.TOC, |
119 | | - config => { |
120 | | - this.config = config; |
121 | | - }, |
122 | | - ); |
123 | | - |
124 | | - ComponentConfigHelper.useInitialConfigForComponent<EditConfigModel>( |
125 | | - this.store$, |
126 | | - BaseComponentTypeEnum.EDIT, |
127 | | - config => { |
128 | | - this.editComponentEnabled = config.enabled; |
129 | | - }, |
130 | | - ); |
131 | | - |
132 | 117 | this.in3D = this.store$.selectSignal(selectIn3dView); |
133 | 118 | this.layersWithoutWebMercator = this.store$.selectSignal(selectLayersWithoutWebMercatorIds); |
134 | 119 | const tiles3DLayers = this.store$.selectSignal(select3dTilesLayers); |
135 | 120 | this.tiles3DLayerIds = computed(() => tiles3DLayers().map(l => l.id)); |
136 | 121 | this.filteredLayerIds = this.store$.selectSignal(selectFilteredLayerIds); |
137 | | - const editableLayers = this.store$.selectSignal(selectEditableLayers); |
138 | | - this.editableLayerIds = computed(() => editableLayers().map(layer => layer.id)); |
139 | 122 | } |
140 | 123 |
|
141 | 124 | public getDropZoneConfig() { |
|
0 commit comments