Skip to content

Commit a65fde6

Browse files
committed
HTM-1754: Add icon for editing the layer to TOC tree nodes
1 parent 2a73662 commit a65fde6

File tree

17 files changed

+162
-6
lines changed

17 files changed

+162
-6
lines changed

projects/admin-core/assets/locale/messages.admin-core.de.xlf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1610,6 +1610,10 @@
16101610
<source>Search title</source>
16111611
<target>Suchtitel</target>
16121612
</trans-unit>
1613+
<trans-unit id="admin-core.components.toc-show-edit-layer-icon" datatype="html">
1614+
<source>Show edit layer icon</source>
1615+
<target>Symbol zum Bearbeiten der Ebene anzeigen</target>
1616+
</trans-unit>
16131617
<trans-unit id="admin-core.feature-type-settings-updated" datatype="html">
16141618
<source>Feature type settings updated</source>
16151619
<target>Feature-Typ-Einstellungen aktualisiert</target>

projects/admin-core/assets/locale/messages.admin-core.en.xlf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1187,6 +1187,9 @@
11871187
<trans-unit id="admin-core.components.simple-search-title" datatype="html">
11881188
<source>Search title</source>
11891189
</trans-unit>
1190+
<trans-unit id="admin-core.components.toc-show-edit-layer-icon" datatype="html">
1191+
<source>Show edit layer icon</source>
1192+
</trans-unit>
11901193
<trans-unit id="admin-core.feature-type-settings-updated" datatype="html">
11911194
<source>Feature type settings updated</source>
11921195
</trans-unit>

projects/admin-core/assets/locale/messages.admin-core.nl.xlf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1609,6 +1609,10 @@
16091609
<source>Search title</source>
16101610
<target>Zoeken titel</target>
16111611
</trans-unit>
1612+
<trans-unit id="admin-core.components.toc-show-edit-layer-icon" datatype="html">
1613+
<source>Show edit layer icon</source>
1614+
<target>Toon icoon voor het bewerken van de laag</target>
1615+
</trans-unit>
16121616
<trans-unit id="admin-core.feature-type-settings-updated" datatype="html">
16131617
<source>Feature type settings updated</source>
16141618
<target>Feature type instellingen aangepast</target>

projects/admin-core/src/lib/application/components/components.module.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { EditComponentConfigComponent } from './edit-config/edit-component-confi
1616
import { GeolocationConfigComponent } from './geolocation-config/geolocation-config.component';
1717
import { InfoConfigComponent } from './info-config/info-config.component';
1818
import { DrawingConfigComponent } from './drawing-config/drawing-config.component';
19+
import { TocComponentConfigComponent } from './toc-config/toc-component-config.component';
1920

2021
@NgModule({
2122
declarations: [
@@ -30,6 +31,7 @@ import { DrawingConfigComponent } from './drawing-config/drawing-config.componen
3031
GeolocationConfigComponent,
3132
InfoConfigComponent,
3233
DrawingConfigComponent,
34+
TocComponentConfigComponent,
3335
],
3436
imports: [
3537
CommonModule,
@@ -48,7 +50,7 @@ export class ComponentsModule {
4850
const configurationComponentService = inject(ConfigurationComponentRegistryService);
4951

5052
/* eslint-disable max-len */
51-
configurationComponentService.registerConfigurationComponents(BaseComponentTypeEnum.TOC, $localize `:@@admin-core.application.component-table-of-contents:Table of contents`, BaseComponentConfigComponent);
53+
configurationComponentService.registerConfigurationComponents(BaseComponentTypeEnum.TOC, $localize `:@@admin-core.application.component-table-of-contents:Table of contents`, TocComponentConfigComponent);
5254
configurationComponentService.registerConfigurationComponents(BaseComponentTypeEnum.LEGEND, $localize `:@@admin-core.application.component-legend:Legend`, BaseComponentConfigComponent);
5355
configurationComponentService.registerConfigurationComponents(BaseComponentTypeEnum.DRAWING, $localize `:@@admin-core.application.component-drawing:Drawing`, DrawingConfigComponent);
5456
configurationComponentService.registerConfigurationComponents(BaseComponentTypeEnum.PRINT, $localize `:@@admin-core.application.component-print:Print`, BaseComponentConfigComponent);

projects/admin-core/src/lib/application/components/toc-config/toc-component-config.component.css

Whitespace-only changes.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<tm-admin-base-component-config [type]="type"
2+
[label]="label"
3+
[config]="config"
4+
i18n-titleLabel="@@admin-core.application.component-table-of-contents"
5+
titleLabel="Table of contents">
6+
<div [formGroup]="formGroup">
7+
<mat-checkbox formControlName="showEditLayerIcon"
8+
i18n="@@admin-core.components.toc-show-edit-layer-icon">Show edit layer icon</mat-checkbox>
9+
</div>
10+
</tm-admin-base-component-config>
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import { ChangeDetectionStrategy, Component, DestroyRef, Input, inject } from '@angular/core';
2+
import {
3+
BaseComponentTypeEnum, TocConfigModel,
4+
} from '@tailormap-viewer/api';
5+
import { FormControl, FormGroup } from '@angular/forms';
6+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7+
import { ComponentConfigurationService } from '../../services/component-configuration.service';
8+
import { ConfigurationComponentModel } from '../configuration-component.model';
9+
import { debounceTime } from 'rxjs';
10+
11+
@Component({
12+
selector: 'tm-admin-edit-component-config',
13+
templateUrl: './toc-component-config.component.html',
14+
styleUrls: ['./toc-component-config.component.css'],
15+
changeDetection: ChangeDetectionStrategy.OnPush,
16+
standalone: false,
17+
})
18+
export class TocComponentConfigComponent implements ConfigurationComponentModel<TocConfigModel> {
19+
private componentConfigService = inject(ComponentConfigurationService);
20+
private destroyRef = inject(DestroyRef);
21+
22+
@Input()
23+
public type: BaseComponentTypeEnum | undefined;
24+
25+
@Input()
26+
public label: string | undefined;
27+
28+
@Input()
29+
public set config(config: TocConfigModel | undefined) {
30+
this._config = config;
31+
this.initForm(config);
32+
}
33+
public get config() {
34+
return this._config;
35+
}
36+
private _config: TocConfigModel | undefined;
37+
38+
public formGroup = new FormGroup({
39+
showEditLayerIcon: new FormControl<boolean>(false),
40+
});
41+
42+
constructor() {
43+
this.formGroup.valueChanges
44+
.pipe(takeUntilDestroyed(this.destroyRef), debounceTime(250))
45+
.subscribe(() => {
46+
if (!this.formGroup.valid) {
47+
return;
48+
}
49+
this.saveConfig();
50+
});
51+
}
52+
53+
public initForm(config: TocConfigModel | undefined) {
54+
this.formGroup.patchValue({ showEditLayerIcon: config?.showEditLayerIcon ?? false }, { emitEvent: false });
55+
}
56+
57+
private saveConfig() {
58+
this.componentConfigService.updateConfigForKey<TocConfigModel>(this.type, 'showEditLayerIcon', this.formGroup.value.showEditLayerIcon);
59+
}
60+
}

projects/api/src/lib/models/component-config/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ export * from './edit-config.model';
77
export * from './geolocation-config.model';
88
export * from './info-component-config.model';
99
export * from './drawing-component-config.model';
10+
export * from './toc-config.model';
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { ComponentBaseConfigModel } from '../component-base-config.model';
2+
3+
export interface TocConfigModel extends ComponentBaseConfigModel {
4+
showEditLayerIcon?: boolean;
5+
}

projects/core/assets/locale/messages.core.de.xlf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,6 +1126,10 @@
11261126
<source>Details for <x id="INTERPOLATION" equiv-text="{{node.layer?.title || node.name}}"/></source>
11271127
<target>Details für <x id="INTERPOLATION" equiv-text="{{node.layer?.title || node.name}}"/></target>
11281128
</trans-unit>
1129+
<trans-unit id="core.toc.edit-layer" datatype="html">
1130+
<source>Edit layer</source>
1131+
<target>Ebene bearbeiten</target>
1132+
</trans-unit>
11291133
<trans-unit id="core.toc.filter-by-layer-name" datatype="html">
11301134
<source>Filter by layer name...</source>
11311135
<target>Nach Ebenennamen filtern...</target>

0 commit comments

Comments
 (0)