Skip to content

Commit ceee4fb

Browse files
authored
HTM-1704 | HTM-1705: Add styling to 3D Tiles layers (#1036)
* save object in layer settings instead of file in uploads * format style field * use type for style * check if inserted style is correct * improve typing in form field for tileset style * Add translations * Move isTileset3dStyle to helper class * Add link to 3D Tiles Styling Language documentation * Fix duplicate i18n identifier * Do not use incorrect null check * move 3D tileset style model * remove incorrect export * fix incorrect import * fix incorrect import
1 parent f82be0c commit ceee4fb

File tree

16 files changed

+263
-20
lines changed

16 files changed

+263
-20
lines changed

projects/admin-api/src/lib/models/app-layer-settings.model.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { HiddenLayerFunctionality } from '@tailormap-viewer/api';
1+
import { HiddenLayerFunctionality, Tileset3dStyle } from '@tailormap-viewer/api';
22

33
export interface AppLayerSettingsModel {
44
title?: string;
@@ -11,5 +11,6 @@ export interface AppLayerSettingsModel {
1111
hideAttributes?: string[] | null;
1212
readOnlyAttributes?: string[] | null;
1313
autoRefreshInSeconds?: number | null;
14+
tileset3dStyle?: Tileset3dStyle | null;
1415
hiddenFunctionality?: HiddenLayerFunctionality[] | null;
1516
}

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,14 @@
174174
<source>Edit <x id="INTERPOLATION" equiv-text="{{ application.title }}"/></source>
175175
<target>Bearbeiten von<x id="INTERPOLATION" equiv-text="{{ application.title }}"/></target>
176176
</trans-unit>
177-
<trans-unit id="admin-core.application.edit-application-layer-attributes" datatype="html">
177+
<trans-unit id="admin-core.application.edit-application-layer-attribute-settings" datatype="html">
178178
<source>Edit application layer attribute settings</source>
179179
<target>Einstellungen für Anwendungsebenenattribute bearbeiten</target>
180180
</trans-unit>
181+
<trans-unit id="admin-core.application.edit-application-layer-attributes" datatype="html">
182+
<source>Edit application layer attributes</source>
183+
<target>Anwendungsebenenattribute bearbeiten</target>
184+
</trans-unit>
181185
<trans-unit id="admin-core.application.edit-application-layer-attributes-hint1" datatype="html">
182186
<source>This only shows the attributes that are enabled in the catalog. If an attribute is missing, check the catalog settings.</source>
183187
<target>Hier werden nur die Attribute angezeigt, die im Katalog aktiviert sind. Wenn ein Attribut fehlt, überprüfen Sie die Katalogeinstellungen.</target>
@@ -454,10 +458,18 @@
454458
<source>Initial extent</source>
455459
<target>Anfangsausdehnung</target>
456460
</trans-unit>
461+
<trans-unit id="admin-core.application.invalid-json" datatype="html">
462+
<source>Invalid JSON: </source>
463+
<target>Ongeldige JSON: </target>
464+
</trans-unit>
457465
<trans-unit id="admin-core.application.invalid-name-error" datatype="html">
458466
<source>Name can only contain letters, numbers, underscores and dashes.</source>
459467
<target>Der Name darf nur Buchstaben, Zahlen, Unterstriche und Bindestriche enthalten.</target>
460468
</trans-unit>
469+
<trans-unit id="admin-core.application.invalid-tileset-style" datatype="html">
470+
<source>The style does not conform to the 3D Tileset Styling Language structure</source>
471+
<target>Der Stil entspricht nicht der Struktur der 3D Tileset Styling Language</target>
472+
</trans-unit>
461473
<trans-unit id="admin-core.application.layer-not-editable" datatype="html">
462474
<source>This layer cannot be edited because there is no writeable feature source / type configured for this layer</source>
463475
<target>Diese Ebene kann nicht bearbeitet werden, da keine beschreibbare Feature-Quelle / -Typ für diese Ebene konfiguriert ist</target>
@@ -590,6 +602,10 @@
590602
<source>Setting this application as default will overwrite the current default application</source>
591603
<target>Das Festlegen dieser Anwendung als Standard überschreibt die aktuelle Standardanwendung</target>
592604
</trans-unit>
605+
<trans-unit id="admin-core.application.set-tileset-style" datatype="html">
606+
<source>Set a style for the 3D Tileset</source>
607+
<target>Stil für das 3D Tileset festlege</target>
608+
</trans-unit>
593609
<trans-unit id="admin-core.application.settings" datatype="html">
594610
<source>Settings</source>
595611
<target>Einstellungen</target>
@@ -606,6 +622,14 @@
606622
<source>Terrain layers</source>
607623
<target>Geländeebene</target>
608624
</trans-unit>
625+
<trans-unit id="admin-core.application.tileset-style" datatype="html">
626+
<source>Tileset style</source>
627+
<target>Kachelstil</target>
628+
</trans-unit>
629+
<trans-unit id="admin-core.application.tileset-style-hint" datatype="html">
630+
<source>Fill in a tileset style in json format according to the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;https://docs.ogc.org/cs/22-025r4/22-025r4.html#toc45&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;"/>OGC 3D Tiles Styling Language<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>. Note: The structure of the style is validated, but not the style expressions.</source>
631+
<target>Geben Sie einen Kachelstil im JSON-Format gemäß der <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;https://docs.ogc.org/cs/22-025r4/22-025r4.html#toc45&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;"/>OGC 3D Tiles Styling Language<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> ein. Hinweis: Die Struktur des Stils wird validiert, nicht jedoch die Stil-Ausdrücke.</target>
632+
</trans-unit>
609633
<trans-unit id="admin-core.authorizations.access" datatype="html">
610634
<source>Access</source>
611635
<target>Zugriff</target>

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@
131131
<trans-unit id="admin-core.application.edit" datatype="html">
132132
<source>Edit <x id="INTERPOLATION" equiv-text="{{ application.title }}"/></source>
133133
</trans-unit>
134+
<trans-unit id="admin-core.application.edit-application-layer-attribute-settings" datatype="html">
135+
<source>Edit application layer attribute settings</source>
136+
</trans-unit>
134137
<trans-unit id="admin-core.application.edit-application-layer-attributes" datatype="html">
135138
<source>Edit application layer attributes</source>
136139
</trans-unit>
@@ -341,9 +344,15 @@
341344
<trans-unit id="admin-core.application.initial-extent" datatype="html">
342345
<source>Initial extent</source>
343346
</trans-unit>
347+
<trans-unit id="admin-core.application.invalid-json" datatype="html">
348+
<source>Invalid JSON: </source>
349+
</trans-unit>
344350
<trans-unit id="admin-core.application.invalid-name-error" datatype="html">
345351
<source>Name can only contain letters, numbers, underscores and dashes.</source>
346352
</trans-unit>
353+
<trans-unit id="admin-core.application.invalid-tileset-style" datatype="html">
354+
<source>The style does not conform to the 3D Tileset Styling Language structure</source>
355+
</trans-unit>
347356
<trans-unit id="admin-core.application.layer-not-editable" datatype="html">
348357
<source>This layer cannot be edited because there is no writeable feature source / type configured for this layer</source>
349358
</trans-unit>
@@ -443,6 +452,9 @@
443452
<trans-unit id="admin-core.application.set-default-application-hint" datatype="html">
444453
<source>Setting this application as default will overwrite the current default application</source>
445454
</trans-unit>
455+
<trans-unit id="admin-core.application.set-tileset-style" datatype="html">
456+
<source>Set a style for the 3D Tileset</source>
457+
</trans-unit>
446458
<trans-unit id="admin-core.application.settings" datatype="html">
447459
<source>Settings</source>
448460
</trans-unit>
@@ -455,6 +467,12 @@
455467
<trans-unit id="admin-core.application.terrain-layers" datatype="html">
456468
<source>Terrain layers</source>
457469
</trans-unit>
470+
<trans-unit id="admin-core.application.tileset-style" datatype="html">
471+
<source>Tileset style</source>
472+
</trans-unit>
473+
<trans-unit id="admin-core.application.tileset-style-hint" datatype="html">
474+
<source>Fill in a tileset style in json format according to the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;https://docs.ogc.org/cs/22-025r4/22-025r4.html#toc45&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;"/>OGC 3D Tiles Styling Language<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>. Note: The structure of the style is validated, but not the style expressions.</source>
475+
</trans-unit>
458476
<trans-unit id="admin-core.authorizations.access" datatype="html">
459477
<source>Access</source>
460478
</trans-unit>

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

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,9 +174,13 @@
174174
<source>Edit <x id="INTERPOLATION" equiv-text="{{ application.title }}"/></source>
175175
<target>Bewerken van <x id="INTERPOLATION" equiv-text="{{ application.title }}"/></target>
176176
</trans-unit>
177-
<trans-unit id="admin-core.application.edit-application-layer-attributes" datatype="html">
177+
<trans-unit id="admin-core.application.edit-application-layer-attribute-settings" datatype="html">
178178
<source>Edit application layer attribute settings</source>
179-
<target state="new">Attributen voor applicatielaag bewerken</target>
179+
<target>Attribuut-instellingen voor applicatielaag bewerken</target>
180+
</trans-unit>
181+
<trans-unit id="admin-core.application.edit-application-layer-attributes" datatype="html">
182+
<source>Edit application layer attributes</source>
183+
<target>Attributen voor applicatielaag bewerken</target>
180184
</trans-unit>
181185
<trans-unit id="admin-core.application.edit-application-layer-attributes-hint1" datatype="html">
182186
<source>This only shows the attributes that are enabled in the catalog. If an attribute is missing, check the catalog settings.</source>
@@ -453,10 +457,18 @@
453457
<source>Initial extent</source>
454458
<target>Start-begrenzingsrechthoek</target>
455459
</trans-unit>
460+
<trans-unit id="admin-core.application.invalid-json" datatype="html">
461+
<source>Invalid JSON: </source>
462+
<target>Ongeldige JSON: </target>
463+
</trans-unit>
456464
<trans-unit id="admin-core.application.invalid-name-error" datatype="html">
457465
<source>Name can only contain letters, numbers, underscores and dashes.</source>
458466
<target>De naam mag alleen letters, cijfers en (liggende) streepjes bevatten.</target>
459467
</trans-unit>
468+
<trans-unit id="admin-core.application.invalid-tileset-style" datatype="html">
469+
<source>The style does not conform to the 3D Tileset Styling Language structure</source>
470+
<target>De stijl komt niet overeen met de structuur van de 3D Tileset Styling Language</target>
471+
</trans-unit>
460472
<trans-unit id="admin-core.application.layer-not-editable" datatype="html">
461473
<source>This layer cannot be edited because there is no writeable feature source / type configured for this layer</source>
462474
<target>Deze laag kan niet worden bewerkt omdat er geen schrijfbare feature source / type is geconfigureerd voor deze laag</target>
@@ -589,6 +601,10 @@
589601
<source>Setting this application as default will overwrite the current default application</source>
590602
<target>Door deze applicatie als standaard in te stellen, wordt de huidige standaardapplicatie overschreven</target>
591603
</trans-unit>
604+
<trans-unit id="admin-core.application.set-tileset-style" datatype="html">
605+
<source>Set a style for the 3D Tileset</source>
606+
<target>Stel een stijl in voor de 3D Tileset</target>
607+
</trans-unit>
592608
<trans-unit id="admin-core.application.settings" datatype="html">
593609
<source>Settings</source>
594610
<target>Instellingen</target>
@@ -605,6 +621,14 @@
605621
<source>Terrain layers</source>
606622
<target>Terreinlagen</target>
607623
</trans-unit>
624+
<trans-unit id="admin-core.application.tileset-style" datatype="html">
625+
<source>Tileset style</source>
626+
<target>Tileset stijl</target>
627+
</trans-unit>
628+
<trans-unit id="admin-core.application.tileset-style-hint" datatype="html">
629+
<source>Fill in a tileset style in json format according to the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;https://docs.ogc.org/cs/22-025r4/22-025r4.html#toc45&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;"/>OGC 3D Tiles Styling Language<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>. Note: The structure of the style is validated, but not the style expressions.</source>
630+
<target>Vul een tileset stijl in JSON-formaat in volgens de OGC <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;https://docs.ogc.org/cs/22-025r4/22-025r4.html#toc45&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;"/>OGC 3D Tiles Styling Language<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>. Let op: De structuur van de stijl wordt gevalideerd, maar de stijlexpressies niet.</target>
631+
</trans-unit>
608632
<trans-unit id="admin-core.authorizations.access" datatype="html">
609633
<source>Access</source>
610634
<target>Toegang</target>

projects/admin-core/src/lib/application/application-layer-attribute-settings/application-layer-attribute-settings.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<h2 mat-dialog-title i18n="@@admin-core.application.edit-application-layer-attributes">Edit application layer attribute settings</h2>
1+
<h2 mat-dialog-title i18n="@@admin-core.application.edit-application-layer-attribute-settings">Edit application layer attribute settings</h2>
22
<mat-dialog-content>
33
<p i18n="@@admin-core.application.edit-application-layer-attributes-hint1">This only shows the attributes that are enabled in the catalog. If an attribute is missing, check the catalog settings.</p>
44
<p i18n="@@admin-core.application.edit-application-layer-attributes-hint2">It is advised to use the catalog for global attribute settings and only use these application layer settings in specific cases.</p>

projects/admin-core/src/lib/application/application-layer-settings/application-layer-settings.component.css

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,24 @@ fieldset {
2525
fieldset.layer-functionality mat-checkbox {
2626
display: block;
2727
}
28+
29+
.set-tileset-style {
30+
margin-top: 16px;
31+
}
32+
33+
.set-tileset-style mat-form-field {
34+
margin-top: 8px;
35+
}
36+
37+
.tileset-style-error-message {
38+
margin-top: 8px;
39+
}
40+
41+
.hint {
42+
font-size: 12px;
43+
font-weight: 400;
44+
letter-spacing: 0.4px;
45+
line-height: 20px;
46+
text-align: left;
47+
padding: 0 16px;
48+
}

projects/admin-core/src/lib/application/application-layer-settings/application-layer-settings.component.html

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<mat-label i18n="@@admin-core.common.title">Title</mat-label>
1111
<input matInput formControlName="title" />
1212
</mat-form-field>
13-
@if (!layerIs3D) {
13+
@if (!layerIs3d) {
1414
<div class="form-field form-field__slider">
1515
<strong i18n="@@admin-core.application.opacity">Opacity</strong>
1616
<tm-slider formControlName="opacity"></tm-slider>
@@ -30,7 +30,7 @@
3030
cdkAutosizeMinRows="4"
3131
cdkAutosizeMaxRows="10"></textarea>
3232
</mat-form-field>
33-
@if (!layerIs3D) {
33+
@if (!layerIs3d) {
3434
<mat-form-field>
3535
<mat-label i18n="@@admin-core.application.autoRefreshInSeconds">Auto refresh the layer (seconds)</mat-label>
3636
<input type="number" matInput formControlName="autoRefreshInSeconds" />
@@ -106,5 +106,26 @@
106106
}
107107
}
108108
}
109+
@if (layerIs3dTiles) {
110+
<div class="set-tileset-style">
111+
<strong class="set-tileset-style-label" i18n="@@admin-core.application.set-tileset-style">Set a style for the 3D Tileset</strong>
112+
@if (tilesetStyleErrorMessage) {
113+
<div class="tileset-style-error-message">
114+
<tm-error-message [message]="tilesetStyleErrorMessage" [friendlyError]="true">
115+
</tm-error-message>
116+
</div>
117+
}
118+
<mat-form-field>
119+
<mat-label i18n="@@admin-core.application.tileset-style">Tileset style</mat-label>
120+
<textarea matInput formControlName="tileset3dStyle"
121+
[cdkTextareaAutosize]="true"
122+
cdkAutosizeMinRows="4"
123+
cdkAutosizeMaxRows="12">
124+
</textarea>
125+
</mat-form-field>
126+
<div class="hint" i18n="@@admin-core.application.tileset-style-hint">Fill in a tileset style in json format according to the <a href="https://docs.ogc.org/cs/22-025r4/22-025r4.html#toc45" target="_blank" rel="noopener">OGC 3D Tiles Styling Language</a>. Note: The structure of the style is validated, but not the style expressions.</div>
127+
</div>
128+
}
129+
109130
</form>
110131
}

0 commit comments

Comments
 (0)