@vcmap/ui 6.0.0-rc.9 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/build/commonViteConfig.js +7 -0
- package/config/aerowest.config.json +12 -2
- package/config/analysis.config.json +17 -0
- package/config/base.config.json +16 -4
- package/config/components-show-case.config.json +53 -0
- package/config/concepts-show-case.config.json +39 -0
- package/config/dev.config.json +165 -104
- package/config/dynamic-layer.config.json +32 -0
- package/config/hello-world.config.json +11 -0
- package/config/projects.config.json +9 -1
- package/config/solar.config.json +65 -0
- package/config/vectorTile.config.json +70 -0
- package/config/www.config.json +33 -10
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core-ccecb5f4.js → core-a599e8b6.js} +7302 -6838
- package/dist/assets/core.js +1 -1
- package/dist/assets/{ol-3c6b9b5b.js → ol-21bbc740.js} +5057 -5178
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui-adeddc7d.css +1 -0
- package/dist/assets/{ui-8a8aef2a.js → ui-adeddc7d.js} +9687 -8940
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +1 -1
- package/dist/assets/{vuetify-ac50bfc8.js → vuetify-c0e02f11.js} +2507 -2504
- package/dist/assets/vuetify.js +1 -1
- package/index.d.ts +2 -0
- package/index.js +1 -0
- package/package.json +12 -12
- package/plugins/@vcmap-show-case/README.md +15 -6
- package/plugins/@vcmap-show-case/category-tester/package.json +1 -1
- package/plugins/@vcmap-show-case/category-tester/src/CollectionComponentOptions.vue +23 -23
- package/plugins/@vcmap-show-case/category-tester/src/FoobarEditor.vue +2 -8
- package/plugins/@vcmap-show-case/collection-manager-example/package.json +1 -1
- package/plugins/@vcmap-show-case/collection-manager-example/src/CollectionManagerExample.vue +10 -8
- package/plugins/@vcmap-show-case/context-menu-tester/package.json +1 -1
- package/plugins/@vcmap-show-case/extent-example/package.json +1 -1
- package/plugins/@vcmap-show-case/flight-component-example/package.json +1 -1
- package/plugins/@vcmap-show-case/form-inputs-example/package.json +1 -1
- package/plugins/@vcmap-show-case/hello-world/package.json +1 -1
- package/plugins/@vcmap-show-case/icons-example/package.json +1 -1
- package/plugins/@vcmap-show-case/notifier-tester/package.json +1 -1
- package/plugins/@vcmap-show-case/panel-tester/package.json +1 -1
- package/plugins/@vcmap-show-case/plugin-editors/package.json +1 -1
- package/plugins/@vcmap-show-case/plugin-editors/src/index.js +17 -6
- package/plugins/@vcmap-show-case/project-selector/package.json +1 -9
- package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +22 -31
- package/plugins/@vcmap-show-case/project-selector/src/ProjectSelectorComponent.vue +15 -23
- package/plugins/@vcmap-show-case/projection-example/README.md +3 -0
- package/plugins/@vcmap-show-case/projection-example/package.json +5 -0
- package/plugins/@vcmap-show-case/projection-example/src/ProjectionExample.vue +73 -0
- package/plugins/@vcmap-show-case/{table-example → projection-example}/src/index.js +22 -11
- package/plugins/@vcmap-show-case/search-example/package.json +1 -1
- package/plugins/@vcmap-show-case/simple-graph/package.json +1 -4
- package/plugins/@vcmap-show-case/style-input-example/package.json +1 -1
- package/plugins/@vcmap-show-case/switch-map-callback-example/README.md +2 -2
- package/plugins/@vcmap-show-case/switch-map-callback-example/package.json +2 -1
- package/plugins/@vcmap-show-case/switch-map-callback-example/src/index.js +4 -1
- package/plugins/@vcmap-show-case/theming-example/package.json +1 -1
- package/plugins/@vcmap-show-case/toolbox-example/package.json +1 -1
- package/plugins/@vcmap-show-case/vector-properties-example/package.json +1 -1
- package/plugins/@vcmap-show-case/viewpoint-component-example/package.json +1 -1
- package/plugins/@vcmap-show-case/window-tester/package.json +1 -1
- package/plugins/@vcmap-show-case/window-tester/src/WindowExample.vue +1 -1
- package/plugins/@vcmap-show-case/window-tester/src/WindowExampleToggleChild.vue +5 -1
- package/plugins/@vcmap-show-case/wizard-example/package.json +1 -1
- package/plugins/package.json +7 -3
- package/src/actions/flightActions.js +40 -20
- package/src/actions/listActions.d.ts +1 -1
- package/src/actions/listActions.js +1 -1
- package/src/application/VcsApp.vue +3 -0
- package/src/application/VcsApp.vue.d.ts +12 -0
- package/src/application/VcsAttributions.vue +1 -1
- package/src/application/VcsAttributionsFooter.vue +1 -1
- package/src/application/VcsContainer.vue +0 -1
- package/src/application/VcsContainer.vue.d.ts +12 -0
- package/src/application/VcsObliqueFooter.vue +110 -0
- package/src/application/VcsObliqueFooter.vue.d.ts +4 -0
- package/src/application/VcsTextPageFooter.vue +1 -0
- package/src/application/attributionsHelper.js +10 -6
- package/src/components/flight/VcsFlightPlayer.vue +26 -20
- package/src/components/form-inputs-controls/VcsDatePicker.vue +23 -3
- package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +1 -1
- package/src/components/form-inputs-controls/VcsFileInput.vue +1 -1
- package/src/components/form-inputs-controls/VcsLabel.vue +10 -1
- package/src/components/form-inputs-controls/VcsLabel.vue.d.ts +9 -0
- package/src/components/form-inputs-controls/VcsRadio.vue +4 -0
- package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +2 -2
- package/src/components/form-inputs-controls/VcsTextField.vue +1 -1
- package/src/components/form-inputs-controls/VcsWizardStep.vue.d.ts +2 -2
- package/src/components/import/VcsImportComponent.vue +3 -3
- package/src/components/lists/VcsActionList.vue +1 -1
- package/src/components/lists/VcsList.vue +42 -29
- package/src/components/lists/VcsListItemComponent.vue +1 -1
- package/src/components/lists/VcsListItemComponent.vue.d.ts +5 -32
- package/src/components/lists/VcsTreeview.vue +2 -0
- package/src/components/notification/VcsHelp.vue +0 -1
- package/src/components/notification/VcsHelpTooltip.vue +48 -0
- package/src/components/notification/VcsHelpTooltip.vue.d.ts +25 -0
- package/src/components/projection/VcsProjection.vue +329 -0
- package/src/components/projection/VcsProjection.vue.d.ts +7 -0
- package/src/components/section/VcsFormSection.vue +0 -1
- package/src/components/section/VcsFormSection.vue.d.ts +1 -1
- package/src/components/tables/VcsDataTable.vue +13 -2
- package/src/components/tables/VcsDataTable.vue.d.ts +12 -1
- package/src/components/vector-properties/VcsFeatureEditingWindow.vue +17 -1
- package/src/components/vector-properties/VcsFeatureEditingWindow.vue.d.ts +10 -1
- package/src/components/vector-properties/VcsFeatureTransforms.vue +39 -5
- package/src/components/vector-properties/VcsFeatureTransforms.vue.d.ts +2 -1
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +44 -24
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +27 -2
- package/src/components/viewpoint/VcsViewpointComponent.vue +6 -6
- package/src/contentTree/contentTreeCollection.js +12 -1
- package/src/featureInfo/abstractFeatureInfoView.d.ts +9 -0
- package/src/featureInfo/abstractFeatureInfoView.js +17 -1
- package/src/i18n/de.d.ts +90 -41
- package/src/i18n/de.js +63 -22
- package/src/i18n/en.d.ts +90 -41
- package/src/i18n/en.js +59 -18
- package/src/legend/StyleLegendItem.vue +1 -5
- package/src/legend/VcsLegend.vue +9 -10
- package/src/legend/VcsLegend.vue.d.ts +1 -1
- package/src/legend/legendHelper.js +6 -1
- package/src/manager/collectionManager/collectionComponentClass.js +4 -4
- package/src/manager/collectionManager/editorCollectionComponentClass.js +5 -3
- package/src/manager/toolbox/GroupToolboxComponent.vue +6 -1
- package/src/manager/toolbox/SelectToolboxComponent.vue +6 -2
- package/src/manager/toolbox/ToolboxManagerComponent.vue +7 -2
- package/src/manager/window/WindowComponentHeader.vue +1 -1
- package/src/navigation/MapNavCompass.vue +166 -140
- package/src/navigation/MapNavCompass.vue.d.ts +3 -1
- package/src/navigation/MapNavigation.vue +22 -5
- package/src/navigation/VcsCompass.vue +2 -1
- package/src/navigation/overviewMap.js +4 -1
- package/src/styles/main.scss +2 -2
- package/src/uiConfig.d.ts +27 -0
- package/src/uiConfig.js +3 -0
- package/src/vuePlugins/vuetify.js +2 -0
- package/dist/assets/ui-8a8aef2a.css +0 -1
- package/plugins/@vcmap-show-case/buttons-example/README.md +0 -4
- package/plugins/@vcmap-show-case/buttons-example/package.json +0 -5
- package/plugins/@vcmap-show-case/buttons-example/src/ButtonsExample.vue +0 -281
- package/plugins/@vcmap-show-case/buttons-example/src/index.js +0 -51
- package/plugins/@vcmap-show-case/config-editor/README.md +0 -3
- package/plugins/@vcmap-show-case/config-editor/package.json +0 -5
- package/plugins/@vcmap-show-case/config-editor/src/ConfigEditor.vue +0 -62
- package/plugins/@vcmap-show-case/config-editor/src/index.js +0 -49
- package/plugins/@vcmap-show-case/list-example/README.md +0 -3
- package/plugins/@vcmap-show-case/list-example/package.json +0 -5
- package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +0 -406
- package/plugins/@vcmap-show-case/list-example/src/index.js +0 -46
- package/plugins/@vcmap-show-case/table-example/README.md +0 -3
- package/plugins/@vcmap-show-case/table-example/package.json +0 -5
- package/plugins/@vcmap-show-case/table-example/src/DataTableExample.vue +0 -203
- package/plugins/@vcmap-show-case/textfields-example/README.md +0 -3
- package/plugins/@vcmap-show-case/textfields-example/package.json +0 -5
- package/plugins/@vcmap-show-case/textfields-example/src/TextfieldsExample.vue +0 -115
- package/plugins/@vcmap-show-case/textfields-example/src/index.js +0 -64
- /package/dist/assets/{cesium-a21a380a.js → cesium-00deba88.js} +0 -0
- /package/dist/assets/{vue-bcc58dd1.js → vue-8269279d.js} +0 -0
- /package/dist/assets/{vuetify-ac50bfc8.css → vuetify-c0e02f11.css} +0 -0
@@ -170,7 +170,7 @@ export function getLegendEntries(app) {
|
|
170
170
|
*/
|
171
171
|
function syncLayerLegendEntries(layer) {
|
172
172
|
removeEntryForLayer(layer);
|
173
|
-
if (layer.active) {
|
173
|
+
if (layer.active && layer.isSupported(app.maps.activeMap)) {
|
174
174
|
const key = layer.name;
|
175
175
|
const title = layer.properties.title || layer.name;
|
176
176
|
const legend =
|
@@ -187,6 +187,10 @@ export function getLegendEntries(app) {
|
|
187
187
|
}
|
188
188
|
}
|
189
189
|
|
190
|
+
const destroyMapListener = app.maps.mapActivated.addEventListener(() =>
|
191
|
+
[...app.layers].forEach(syncLayerLegendEntries),
|
192
|
+
);
|
193
|
+
|
190
194
|
const destroyChangedListener = app.layers.stateChanged.addEventListener(
|
191
195
|
syncLayerLegendEntries,
|
192
196
|
);
|
@@ -196,6 +200,7 @@ export function getLegendEntries(app) {
|
|
196
200
|
[...app.layers].forEach(syncLayerLegendEntries);
|
197
201
|
|
198
202
|
const destroy = () => {
|
203
|
+
destroyMapListener();
|
199
204
|
destroyChangedListener();
|
200
205
|
destroyRemovedListener();
|
201
206
|
Object.values(styleChangedListener).forEach((cb) => cb());
|
@@ -321,6 +321,7 @@ class CollectionComponentClass {
|
|
321
321
|
[...this.selection.value].forEach((listItem) => {
|
322
322
|
this._collection.remove(this._collection.getByKey(listItem.name));
|
323
323
|
});
|
324
|
+
this.selection.value = [];
|
324
325
|
},
|
325
326
|
});
|
326
327
|
this._destroyBulkDelete = destroy;
|
@@ -513,10 +514,9 @@ class CollectionComponentClass {
|
|
513
514
|
});
|
514
515
|
if (index > -1) {
|
515
516
|
const listItem = this._listItems.value[index];
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
}
|
517
|
+
this.selection.value = this.selection.value.filter(
|
518
|
+
(i) => i.name !== listItem.name,
|
519
|
+
);
|
520
520
|
destroyListItem(this._listItems.value[index]);
|
521
521
|
this._listItems.value.splice(index, 1);
|
522
522
|
}
|
@@ -218,9 +218,11 @@ export function makeEditorCollectionComponentClass(
|
|
218
218
|
);
|
219
219
|
|
220
220
|
const itemRemovedListener =
|
221
|
-
editorCollectionComponent.collection.removed.addEventListener(
|
222
|
-
|
223
|
-
|
221
|
+
editorCollectionComponent.collection.removed.addEventListener((item) => {
|
222
|
+
if (predicate(item)) {
|
223
|
+
closeEditorWindow(item);
|
224
|
+
}
|
225
|
+
});
|
224
226
|
|
225
227
|
editorCollectionComponent.addItemMapping({
|
226
228
|
predicate,
|
@@ -34,7 +34,12 @@
|
|
34
34
|
:icon="action.icon"
|
35
35
|
:disabled="action.disabled"
|
36
36
|
:active="action.active"
|
37
|
-
@click="
|
37
|
+
@click.stop="
|
38
|
+
() => {
|
39
|
+
$emit('click', $event);
|
40
|
+
action.callback($event);
|
41
|
+
}
|
42
|
+
"
|
38
43
|
v-bind="{ ...$attrs }"
|
39
44
|
/>
|
40
45
|
</div>
|
@@ -11,7 +11,12 @@
|
|
11
11
|
:active="group.action.active"
|
12
12
|
:disabled="group.action.disabled"
|
13
13
|
:background="group.action.background"
|
14
|
-
@click="
|
14
|
+
@click.stop="
|
15
|
+
() => {
|
16
|
+
$emit('click', $event);
|
17
|
+
group.action.callback($event);
|
18
|
+
}
|
19
|
+
"
|
15
20
|
v-bind="{ ...$attrs }"
|
16
21
|
class="vcs-toolbox-action-selected"
|
17
22
|
:min-width="32"
|
@@ -39,7 +44,6 @@
|
|
39
44
|
<v-toolbar
|
40
45
|
class="vcs-toolbox-2 mx-auto marginToTop rounded-b elevation-4 opacity-80 px-1"
|
41
46
|
:height="toolboxHeight"
|
42
|
-
dense
|
43
47
|
>
|
44
48
|
<v-toolbar-items class="w-100">
|
45
49
|
<div class="d-flex align-center justify-space-between gc-1 w-100">
|
@@ -20,11 +20,13 @@
|
|
20
20
|
v-if="group.type === ToolboxType.GROUP"
|
21
21
|
:group="group"
|
22
22
|
@toggle="openGroup"
|
23
|
+
@click="bringToTop"
|
23
24
|
/>
|
24
25
|
<ToolboxActionSelect
|
25
26
|
v-else-if="group.type === ToolboxType.SELECT"
|
26
27
|
:group="group"
|
27
28
|
@toggle="openGroup"
|
29
|
+
@click="bringToTop"
|
28
30
|
/>
|
29
31
|
<VcsToolButton
|
30
32
|
v-else
|
@@ -33,7 +35,10 @@
|
|
33
35
|
:active="group.action.active"
|
34
36
|
:background="group.action.background"
|
35
37
|
:disabled="group.action.disabled"
|
36
|
-
@click.stop="
|
38
|
+
@click.stop="
|
39
|
+
bringToTop();
|
40
|
+
group.action.callback($event);
|
41
|
+
"
|
37
42
|
v-bind="{ ...$attrs }"
|
38
43
|
/>
|
39
44
|
</div>
|
@@ -149,7 +154,7 @@
|
|
149
154
|
const toolboxToggleAction = {
|
150
155
|
name: 'toolboxToggleAction',
|
151
156
|
icon: '$vcsTools',
|
152
|
-
title: '
|
157
|
+
title: 'toolbox.title',
|
153
158
|
active: true,
|
154
159
|
callback() {
|
155
160
|
this.active = !this.active;
|
@@ -1,151 +1,172 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
2
|
+
<span>
|
3
|
+
<v-tooltip location="start" target="parent" :disabled="!canEmit">
|
4
|
+
<template #activator="{ props }">
|
5
|
+
<svg
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
7
|
+
width="58"
|
8
|
+
height="58"
|
9
|
+
viewBox="0 0 58 58"
|
10
|
+
>
|
11
|
+
<g
|
12
|
+
id="Group_1654"
|
13
|
+
data-name="Group 1654"
|
14
|
+
transform="translate(24)"
|
15
|
+
v-bind="props"
|
16
|
+
>
|
17
|
+
<path
|
18
|
+
:class="canEmit ? 'cursor-pointer hover' : ''"
|
19
|
+
id="north_arrow"
|
20
|
+
data-name="Polygon 14"
|
21
|
+
d="M4,0,8,13H0Z"
|
22
|
+
transform="translate(1)"
|
23
|
+
fill="currentColor"
|
24
|
+
@click="emit($event, 0)"
|
25
|
+
@mouseenter="alignment = 'alignNorth'"
|
26
|
+
/>
|
27
|
+
<path
|
28
|
+
:class="canEmit ? 'cursor-pointer hover' : ''"
|
29
|
+
id="south_arrow"
|
30
|
+
data-name="Polygon 17"
|
31
|
+
d="M4,0,8,13H0Z"
|
32
|
+
transform="translate(9 58) rotate(180)"
|
33
|
+
fill="rgba(88,88,88,0.51)"
|
34
|
+
@click="emit($event, 180)"
|
35
|
+
@mouseenter="alignment = 'alignSouth'"
|
36
|
+
/>
|
37
|
+
</g>
|
38
|
+
<g
|
39
|
+
id="Group_1653"
|
40
|
+
data-name="Group 1653"
|
41
|
+
transform="translate(0 33) rotate(-90)"
|
42
|
+
v-bind="props"
|
43
|
+
>
|
44
|
+
<path
|
45
|
+
:class="canEmit ? 'cursor-pointer hover' : ''"
|
46
|
+
id="west_arrow"
|
47
|
+
data-name="Polygon 14"
|
48
|
+
d="M4,0,8,13H0Z"
|
49
|
+
fill="rgba(88,88,88,0.51)"
|
50
|
+
@click="emit($event, 270)"
|
51
|
+
@mouseenter="alignment = 'alignWest'"
|
52
|
+
/>
|
53
|
+
<path
|
54
|
+
:class="canEmit ? 'cursor-pointer hover' : ''"
|
55
|
+
id="east_arrow"
|
56
|
+
data-name="Polygon 17"
|
57
|
+
d="M4,0,8,13H0Z"
|
58
|
+
transform="translate(8 58) rotate(180)"
|
59
|
+
fill="rgba(88,88,88,0.51)"
|
60
|
+
@click="emit($event, 90)"
|
61
|
+
@mouseenter="alignment = 'alignEast'"
|
62
|
+
/>
|
63
|
+
</g>
|
64
|
+
<g
|
65
|
+
id="Group_1672"
|
66
|
+
data-name="Group 1672"
|
67
|
+
transform="translate(1)"
|
68
|
+
v-if="!hideTicks"
|
69
|
+
>
|
70
|
+
<line
|
71
|
+
id="Line_289-2"
|
72
|
+
data-name="Line 289"
|
73
|
+
x2="6.079"
|
74
|
+
transform="translate(3.751 15) rotate(30)"
|
75
|
+
fill="none"
|
76
|
+
stroke="#707070"
|
77
|
+
stroke-linecap="round"
|
78
|
+
stroke-width="1"
|
79
|
+
/>
|
80
|
+
<line
|
81
|
+
id="Line_290-2"
|
82
|
+
data-name="Line 290"
|
83
|
+
x2="4.665"
|
84
|
+
transform="translate(48.208 40.667) rotate(30)"
|
85
|
+
fill="none"
|
86
|
+
stroke="#707070"
|
87
|
+
stroke-linecap="round"
|
88
|
+
stroke-width="1"
|
89
|
+
/>
|
90
|
+
<line
|
91
|
+
id="Line_289-4"
|
92
|
+
data-name="Line 289"
|
93
|
+
x2="6.079"
|
94
|
+
transform="translate(14 53.249) rotate(-60)"
|
95
|
+
fill="none"
|
96
|
+
stroke="#707070"
|
97
|
+
stroke-linecap="round"
|
98
|
+
stroke-width="1"
|
99
|
+
/>
|
100
|
+
<line
|
101
|
+
id="Line_290-3"
|
102
|
+
data-name="Line 290"
|
103
|
+
x2="4.665"
|
104
|
+
transform="translate(39.668 8.792) rotate(-60)"
|
105
|
+
fill="none"
|
106
|
+
stroke="#707070"
|
107
|
+
stroke-linecap="round"
|
108
|
+
stroke-width="1"
|
109
|
+
/>
|
110
|
+
<line
|
111
|
+
id="Line_289-5"
|
112
|
+
data-name="Line 289"
|
113
|
+
x2="6.079"
|
114
|
+
transform="translate(14 4.751) rotate(60)"
|
115
|
+
fill="none"
|
116
|
+
stroke="#707070"
|
117
|
+
stroke-linecap="round"
|
118
|
+
stroke-width="1"
|
119
|
+
/>
|
120
|
+
<line
|
121
|
+
id="Line_290-4"
|
122
|
+
data-name="Line 290"
|
123
|
+
x2="4.665"
|
124
|
+
transform="translate(39.667 49.208) rotate(60)"
|
125
|
+
fill="none"
|
126
|
+
stroke="#707070"
|
127
|
+
stroke-linecap="round"
|
128
|
+
stroke-width="1"
|
129
|
+
/>
|
130
|
+
<line
|
131
|
+
id="Line_289-6"
|
132
|
+
data-name="Line 289"
|
133
|
+
x2="6.079"
|
134
|
+
transform="translate(3.752 43) rotate(-30)"
|
135
|
+
fill="none"
|
136
|
+
stroke="#707070"
|
137
|
+
stroke-linecap="round"
|
138
|
+
stroke-width="1"
|
139
|
+
/>
|
140
|
+
<line
|
141
|
+
id="Line_290-5"
|
142
|
+
data-name="Line 290"
|
143
|
+
x2="4.665"
|
144
|
+
transform="translate(48.209 17.333) rotate(-30)"
|
145
|
+
fill="none"
|
146
|
+
stroke="#707070"
|
147
|
+
stroke-linecap="round"
|
148
|
+
stroke-width="1"
|
149
|
+
/>
|
150
|
+
</g>
|
151
|
+
</svg>
|
152
|
+
</template>
|
153
|
+
<span>{{ $st(`navigation.compass.${alignment}`) }}</span>
|
154
|
+
</v-tooltip>
|
155
|
+
</span>
|
139
156
|
</template>
|
140
157
|
|
141
158
|
<script>
|
159
|
+
import { ref } from 'vue';
|
160
|
+
import { VTooltip } from 'vuetify/components';
|
161
|
+
|
142
162
|
/**
|
143
|
-
* @description The compass with ticks along the border
|
163
|
+
* @description The compass with ticks along the border and alignment tooltips on arrows.
|
144
164
|
* @vue-prop {boolean} [canEmit=true] - whether to emit click events on cardinal direction arrows or not
|
145
165
|
* @vue-prop {boolean} [hideTicks=false] - hide ticks on navigation rose
|
146
166
|
* @vue-event {HTMLEvent} direction-click - raised when a cardinal direction arrow is clicked
|
147
167
|
*/
|
148
168
|
export default {
|
169
|
+
components: { VTooltip },
|
149
170
|
props: {
|
150
171
|
canEmit: {
|
151
172
|
type: Boolean,
|
@@ -165,6 +186,9 @@
|
|
165
186
|
}
|
166
187
|
},
|
167
188
|
},
|
189
|
+
setup() {
|
190
|
+
return { alignment: ref('') };
|
191
|
+
},
|
168
192
|
};
|
169
193
|
</script>
|
170
194
|
|
@@ -174,8 +198,10 @@
|
|
174
198
|
height: 85%;
|
175
199
|
margin: 7.5%;
|
176
200
|
}
|
177
|
-
|
178
|
-
|
201
|
+
svg g:focus {
|
202
|
+
outline: none;
|
203
|
+
}
|
204
|
+
.hover:hover {
|
179
205
|
fill: var(--v-primary-lighten1) !important;
|
180
206
|
}
|
181
207
|
</style>
|
@@ -7,7 +7,9 @@ declare const _default: import("vue").DefineComponent<{
|
|
7
7
|
type: BooleanConstructor;
|
8
8
|
default: boolean;
|
9
9
|
};
|
10
|
-
},
|
10
|
+
}, {
|
11
|
+
alignment: import("vue").Ref<string>;
|
12
|
+
}, any, {}, {
|
11
13
|
emit(event: any, dir: any): void;
|
12
14
|
}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
13
15
|
canEmit: {
|
@@ -60,9 +60,10 @@
|
|
60
60
|
|
61
61
|
<script>
|
62
62
|
import { computed, inject, ref, reactive, onUnmounted } from 'vue';
|
63
|
-
import { ObliqueMap, CesiumMap } from '@vcmap/core';
|
63
|
+
import { ObliqueMap, CesiumMap, ObliqueViewDirection } from '@vcmap/core';
|
64
64
|
import { VContainer, VRow } from 'vuetify/components';
|
65
65
|
import { useDisplay } from 'vuetify';
|
66
|
+
import { Math as CesiumMath } from '@vcmap-cesium/engine';
|
66
67
|
import { createOverviewMapAction } from '../actions/actionHelper.js';
|
67
68
|
import { createLocatorAction } from './locatorHelper.js';
|
68
69
|
import {
|
@@ -185,6 +186,16 @@
|
|
185
186
|
};
|
186
187
|
}
|
187
188
|
|
189
|
+
/**
|
190
|
+
* @enum {number}
|
191
|
+
*/
|
192
|
+
const directionToDegrees = {
|
193
|
+
[ObliqueViewDirection.NORTH]: 0,
|
194
|
+
[ObliqueViewDirection.EAST]: 90,
|
195
|
+
[ObliqueViewDirection.SOUTH]: 180,
|
196
|
+
[ObliqueViewDirection.WEST]: 270,
|
197
|
+
};
|
198
|
+
|
188
199
|
export default {
|
189
200
|
components: {
|
190
201
|
OrientationToolsButton,
|
@@ -204,10 +215,16 @@
|
|
204
215
|
|
205
216
|
const handleRenderEvent = ({ map }) => {
|
206
217
|
viewMode.value = getViewModeForMap(map);
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
218
|
+
if (map instanceof ObliqueMap && map.currentImage) {
|
219
|
+
headingRef.value = map.currentImage.viewDirectionAngle
|
220
|
+
? 90 - CesiumMath.toDegrees(map.currentImage.viewDirectionAngle)
|
221
|
+
: directionToDegrees[map.currentImage.viewDirection];
|
222
|
+
} else {
|
223
|
+
const vp = map.getViewpointSync();
|
224
|
+
if (vp) {
|
225
|
+
headingRef.value = vp.heading;
|
226
|
+
tiltRef.value = vp.pitch;
|
227
|
+
}
|
211
228
|
}
|
212
229
|
};
|
213
230
|
|
@@ -2,9 +2,10 @@
|
|
2
2
|
<v-sheet
|
3
3
|
:style="{
|
4
4
|
transform: `rotate(${compassRotation}deg)`,
|
5
|
+
transition: 'transform 0.2s ease',
|
5
6
|
}"
|
6
7
|
@click="$emit('update:modelValue', 0)"
|
7
|
-
class="d-flex flex-column justify-center align-center position-relative rounded-circle user-select-none
|
8
|
+
class="d-flex flex-column justify-center align-center position-relative rounded-circle user-select-none vcs-compass"
|
8
9
|
elevation="1"
|
9
10
|
:height="height"
|
10
11
|
:width="width"
|
@@ -232,7 +232,10 @@ class OverviewMap {
|
|
232
232
|
this._collectionListeners = [
|
233
233
|
this._app.maps.layerCollection.added.addEventListener((layer) => {
|
234
234
|
if (layer.properties.showInOverviewMap) {
|
235
|
-
const clone = deserializeLayer(this._app,
|
235
|
+
const clone = deserializeLayer(this._app, {
|
236
|
+
...layer.toJSON(),
|
237
|
+
mapNames: [this._map.name],
|
238
|
+
});
|
236
239
|
clone.activate();
|
237
240
|
const idx = this._map.layerCollection.indexOf(clone);
|
238
241
|
if (idx < 0) {
|
package/src/styles/main.scss
CHANGED
package/src/uiConfig.d.ts
CHANGED
@@ -56,6 +56,10 @@ export type UiConfigObject = {
|
|
56
56
|
* - mouse event, when position display is updated. Either 'click' (default) or 'move'.
|
57
57
|
*/
|
58
58
|
positionDisplayEventType?: string | undefined;
|
59
|
+
/**
|
60
|
+
* - A template for rendering information of the current image in oblique mode, e.g. '{{ name }}' printing the image's name
|
61
|
+
*/
|
62
|
+
obliqueFooterTemplate?: string | undefined;
|
59
63
|
/**
|
60
64
|
* - an optional URL to a help landing page
|
61
65
|
*/
|
@@ -128,10 +132,18 @@ export type UiConfigObject = {
|
|
128
132
|
* - can be used to hide the settings Window
|
129
133
|
*/
|
130
134
|
hideSettings?: boolean | undefined;
|
135
|
+
/**
|
136
|
+
* - can be used to hide the oblique name in the footer
|
137
|
+
*/
|
138
|
+
hideObliqueFooter?: boolean | undefined;
|
131
139
|
/**
|
132
140
|
* - can be used to activate the overviewMap on startup
|
133
141
|
*/
|
134
142
|
overviewMapActiveOnStartup?: boolean | undefined;
|
143
|
+
/**
|
144
|
+
* - can be used to activate a contentTree on startup
|
145
|
+
*/
|
146
|
+
contentTreeActiveOnStartup?: boolean | undefined;
|
135
147
|
/**
|
136
148
|
* - the display quality settings
|
137
149
|
*/
|
@@ -190,6 +202,7 @@ export type UiConfigObject = {
|
|
190
202
|
* @property {string} [primaryColor] - an optional primary color to use in all themes, can be overwritten by `vuetifyTheme`
|
191
203
|
* @property {boolean} [startingFeatureInfo] - an optional flag whether to activate feature info on startup (default active)
|
192
204
|
* @property {string} [positionDisplayEventType] - mouse event, when position display is updated. Either 'click' (default) or 'move'.
|
205
|
+
* @property {string} [obliqueFooterTemplate] - A template for rendering information of the current image in oblique mode, e.g. '{{ name }}' printing the image's name
|
193
206
|
* @property {string} [helpBaseUrl='https://help.vc.systems/'] - an optional URL to a help landing page
|
194
207
|
* @property {TextPageType} [imprint] - an option imprint, will show a link in the footer. Default title is 'footer.imprint.title'.
|
195
208
|
* @property {TextPageType} [dataProtection] - an option dataProtection, will show a link in the footer. Default title is 'footer.dataProtection.title'.
|
@@ -208,7 +221,9 @@ export type UiConfigObject = {
|
|
208
221
|
* @property {boolean} [hideContentTree] - can be used to hide the contentTree
|
209
222
|
* @property {boolean} [hideLegend] - can be used to hide the legend
|
210
223
|
* @property {boolean} [hideSettings] - can be used to hide the settings Window
|
224
|
+
* @property {boolean} [hideObliqueFooter] - can be used to hide the oblique name in the footer
|
211
225
|
* @property {boolean} [overviewMapActiveOnStartup] - can be used to activate the overviewMap on startup
|
226
|
+
* @property {boolean} [contentTreeActiveOnStartup] - can be used to activate a contentTree on startup
|
212
227
|
* @property {import("@vcmap/core").DisplayQualityOptions} [displayQuality] - the display quality settings
|
213
228
|
* @property {import("./vuetifyPlugins/vuetify.js").VcsThemes} [vuetifyTheme] - Vuetify Theming, also see vuetify configuraton https://vuetifyjs.com/en/features/theme/
|
214
229
|
* @property {boolean} [openLegendOnAdd] - open the legend window, if new layer has a config
|
@@ -266,6 +281,10 @@ declare class UiConfig extends Collection<UiConfigurationItem<unknown>> {
|
|
266
281
|
* - mouse event, when position display is updated. Either 'click' (default) or 'move'.
|
267
282
|
*/
|
268
283
|
readonly positionDisplayEventType?: string | undefined;
|
284
|
+
/**
|
285
|
+
* - A template for rendering information of the current image in oblique mode, e.g. '{{ name }}' printing the image's name
|
286
|
+
*/
|
287
|
+
readonly obliqueFooterTemplate?: string | undefined;
|
269
288
|
/**
|
270
289
|
* - an optional URL to a help landing page
|
271
290
|
*/
|
@@ -438,10 +457,18 @@ declare class UiConfig extends Collection<UiConfigurationItem<unknown>> {
|
|
438
457
|
* - can be used to hide the settings Window
|
439
458
|
*/
|
440
459
|
readonly hideSettings?: boolean | undefined;
|
460
|
+
/**
|
461
|
+
* - can be used to hide the oblique name in the footer
|
462
|
+
*/
|
463
|
+
readonly hideObliqueFooter?: boolean | undefined;
|
441
464
|
/**
|
442
465
|
* - can be used to activate the overviewMap on startup
|
443
466
|
*/
|
444
467
|
readonly overviewMapActiveOnStartup?: boolean | undefined;
|
468
|
+
/**
|
469
|
+
* - can be used to activate a contentTree on startup
|
470
|
+
*/
|
471
|
+
readonly contentTreeActiveOnStartup?: boolean | undefined;
|
445
472
|
/**
|
446
473
|
* - the display quality settings
|
447
474
|
*/
|