@vcmap/ui 6.2.0-rc.1 → 6.2.0-rc.3
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/build/build.js +52 -7
- package/build/postInstall.js +32 -0
- package/config/dev.config.json +40 -0
- package/config/pano.config.json +420 -0
- package/config/projects.config.json +5 -0
- package/dist/assets/cesium/Workers/{chunk-P6TRGU3S.js → chunk-2PFJ45KC.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-7ZZ5LMZY.js → chunk-35ALNMG5.js} +15 -15
- package/dist/assets/cesium/Workers/{chunk-7YIOHQWH.js → chunk-35EJBV7X.js} +13 -13
- package/dist/assets/cesium/Workers/{chunk-EJVGYGLF.js → chunk-3E3OH65K.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-JBSKHTNX.js → chunk-4FHUY275.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-Z2QP3CXW.js → chunk-565T3GIE.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-IZGUQO6Q.js → chunk-5LGDCKCZ.js} +13 -13
- package/dist/assets/cesium/Workers/{chunk-3IFRSGEY.js → chunk-6JXJYBWN.js} +9 -9
- package/dist/assets/cesium/Workers/{chunk-WGDFYAGC.js → chunk-6RAEC3AW.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-44QAAS4P.js → chunk-6Z67VIOY.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-NGZJIN5Z.js → chunk-ADDGROZ6.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-GBT7MJ6X.js → chunk-ASYGMBRG.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-C4WPMOKT.js → chunk-BABDQOWA.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-IBRIWOCM.js → chunk-BQHHGIFB.js} +13 -13
- package/dist/assets/cesium/Workers/{chunk-LLAF3CPH.js → chunk-C33B4KHN.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-JXVLNVXC.js → chunk-CMCR2ZK4.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-3HQMMUPU.js → chunk-EGGJIATZ.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-RJM36CNY.js → chunk-EWS5LXAB.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-OPP2SKMA.js → chunk-FDXPBTSX.js} +12 -12
- package/dist/assets/cesium/Workers/{chunk-QN6TBED4.js → chunk-FIFQP4YX.js} +11 -11
- package/dist/assets/cesium/Workers/{chunk-JISPSEF3.js → chunk-HOGDZ2EB.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-2PTKXHJB.js → chunk-I4NB77NH.js} +10 -10
- package/dist/assets/cesium/Workers/{chunk-QQOZO7KO.js → chunk-JX4A2BCF.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-XIUSRWL6.js → chunk-K6PDUSH6.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-KHZNBFOH.js → chunk-KFHZFU5O.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-U5HSOKPQ.js → chunk-KYGXRFA6.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-56EDBCGT.js → chunk-LNWNAP2C.js} +10 -10
- package/dist/assets/cesium/Workers/{chunk-YCDZX5LS.js → chunk-LWN2B3KW.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-TI3TRKIC.js → chunk-LXLABO2L.js} +10 -10
- package/dist/assets/cesium/Workers/{chunk-C3EQ27WF.js → chunk-MB6B2UUL.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-57H6I3SV.js → chunk-MZSRINXK.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-ZVUUPJEM.js → chunk-NBI3GZSK.js} +17 -17
- package/dist/assets/cesium/Workers/{chunk-O72GZTSE.js → chunk-NUAXNUP5.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-M24KHENR.js → chunk-PNZR4RLL.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-HJMNR3GC.js → chunk-Q4K22DSJ.js} +11 -11
- package/dist/assets/cesium/Workers/{chunk-2LOWCAMW.js → chunk-Q4OS4EFN.js} +13 -13
- package/dist/assets/cesium/Workers/{chunk-TK5IIG2F.js → chunk-QLIMO7TQ.js} +4 -4
- package/dist/assets/cesium/Workers/{chunk-EDLRS3AW.js → chunk-RQ4F6YFU.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-JSQJDZI4.js → chunk-SB67D3JL.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-RTJKHZWU.js → chunk-SS6WRJ5J.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-L5GODJAR.js → chunk-TC4NTWIJ.js} +14 -14
- package/dist/assets/cesium/Workers/{chunk-IZJ42N4W.js → chunk-TKNA6WSZ.js} +17 -17
- package/dist/assets/cesium/Workers/{chunk-HP5XLODI.js → chunk-VQYEP77L.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-YSIJTJ7N.js → chunk-WKS5H3VW.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-XWOUPGUF.js → chunk-WPGX7DEA.js} +1 -1
- package/dist/assets/cesium/Workers/{chunk-6SQMLVGV.js → chunk-X3EPFVG3.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-NDDI2LWR.js → chunk-XH7MSR3A.js} +6 -6
- package/dist/assets/cesium/Workers/{chunk-FFLMY4TE.js → chunk-YDEBBUNQ.js} +5 -5
- package/dist/assets/cesium/Workers/{chunk-YK3QIKY7.js → chunk-YSVI7YNN.js} +9 -9
- package/dist/assets/cesium/Workers/{chunk-BVKITG4N.js → chunk-YVAS5WPH.js} +7 -7
- package/dist/assets/cesium/Workers/{chunk-X7IQYYHF.js → chunk-Z4QVAZM6.js} +2 -2
- package/dist/assets/cesium/Workers/{chunk-LJ2JQHJT.js → chunk-ZXOK77EW.js} +7 -7
- package/dist/assets/cesium/Workers/combineGeometry.js +22 -22
- package/dist/assets/cesium/Workers/createBoxGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +14 -14
- package/dist/assets/cesium/Workers/createCircleGeometry.js +24 -24
- package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +17 -17
- package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +31 -31
- package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +29 -29
- package/dist/assets/cesium/Workers/createCorridorGeometry.js +27 -27
- package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +26 -26
- package/dist/assets/cesium/Workers/createCylinderGeometry.js +18 -18
- package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createEllipseGeometry.js +24 -24
- package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +17 -17
- package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +17 -17
- package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createFrustumGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createGeometry.js +22 -22
- package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +20 -20
- package/dist/assets/cesium/Workers/createPlaneGeometry.js +14 -14
- package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +13 -13
- package/dist/assets/cesium/Workers/createPolygonGeometry.js +30 -30
- package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +28 -28
- package/dist/assets/cesium/Workers/createPolylineGeometry.js +23 -23
- package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +29 -29
- package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +25 -25
- package/dist/assets/cesium/Workers/createRectangleGeometry.js +25 -25
- package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +18 -18
- package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +21 -21
- package/dist/assets/cesium/Workers/createSphereGeometry.js +17 -17
- package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +3 -3
- package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +13 -13
- package/dist/assets/cesium/Workers/createVectorTileGeometries.js +22 -22
- package/dist/assets/cesium/Workers/createVectorTilePoints.js +12 -12
- package/dist/assets/cesium/Workers/createVectorTilePolygons.js +20 -20
- package/dist/assets/cesium/Workers/createVectorTilePolylines.js +13 -13
- package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +20 -20
- package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +20 -20
- package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +17 -17
- package/dist/assets/cesium/Workers/createWallGeometry.js +22 -22
- package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +21 -21
- package/dist/assets/cesium/Workers/decodeDraco.js +11 -11
- package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/dist/assets/cesium/Workers/decodeI3S.js +10 -10
- package/dist/assets/cesium/Workers/transcodeKTX2.js +7 -7
- package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
- package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +20 -20
- package/dist/assets/{cesium-ac6c193a.js → cesium-7d4ab914.js} +44609 -44606
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/core-deeb2b8d.js +34569 -0
- package/dist/assets/core-workers/panoramaImageWorker.js +1 -0
- package/dist/assets/core-workers/panoramaImageWorker.js-f8148bc6.js +34 -0
- package/dist/assets/core.js +1 -1
- package/dist/assets/{ol-94c57f2e.js → ol-8db5c824.js} +1 -1
- package/dist/assets/ol.js +1 -1
- package/dist/assets/start.js +3 -1
- package/dist/assets/ui-62439099.css +1 -0
- package/dist/assets/{ui-4f308e45.js → ui-62439099.js} +9581 -8853
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +1 -1
- package/dist/assets/{vuetify-99195777.js → vuetify-439ba6d5.js} +1 -1
- package/dist/assets/vuetify.js +1 -1
- package/index.d.ts +14 -4
- package/index.js +8 -6
- package/package.json +5 -4
- package/plugins/@vcmap-show-case/panorama-inspector/package.json +10 -0
- package/plugins/@vcmap-show-case/panorama-inspector/src/PanoramaDebugInfo.vue +86 -0
- package/plugins/@vcmap-show-case/panorama-inspector/src/PanoramaDebugTools.vue +259 -0
- package/plugins/@vcmap-show-case/panorama-inspector/src/PanoramaInspector.vue +31 -0
- package/plugins/@vcmap-show-case/panorama-inspector/src/api.js +161 -0
- package/plugins/@vcmap-show-case/panorama-inspector/src/index.js +57 -0
- package/plugins/@vcmap-show-case/panorama-inspector/src/showClickInteraction.js +20 -0
- package/plugins/package.json +1 -1
- package/src/actions/actionHelper.d.ts +16 -11
- package/src/actions/actionHelper.js +190 -87
- package/src/actions/flightActions.d.ts +10 -0
- package/src/actions/flightActions.js +109 -13
- package/src/application/VcsApp.vue +11 -0
- package/src/application/VcsApp.vue.d.ts +4 -0
- package/src/application/VcsContainer.vue.d.ts +4 -0
- package/src/application/VcsMainMap.vue +40 -2
- package/src/application/VcsMainMap.vue.d.ts +4 -0
- package/src/application/VcsMap.vue +0 -9
- package/src/application/VcsNavbar.vue +2 -1
- package/src/callback/activateMapCallback.d.ts +30 -0
- package/src/callback/activateMapCallback.js +63 -0
- package/src/callback/activateOverviewMapCallback.d.ts +7 -0
- package/src/callback/activateOverviewMapCallback.js +26 -0
- package/src/callback/deactivateOverviewMapCallback.d.ts +7 -0
- package/src/callback/deactivateOverviewMapCallback.js +20 -0
- package/src/components/flight/VcsFlightAnchorsComponent.vue +1 -0
- package/src/components/flight/VcsFlightPlayer.vue +31 -17
- package/src/components/flight/VcsFlightPlayer.vue.d.ts +1 -0
- package/src/components/lists/VcsGroupedList.vue +10 -2
- package/src/components/lists/VcsTreeNode.vue +3 -0
- package/src/components/plugins/VcsLoadingOverlay.vue +138 -0
- package/src/components/plugins/VcsLoadingOverlay.vue.d.ts +2 -0
- package/src/components/plugins/VcsWorkspaceWrapper.vue +104 -0
- package/src/components/plugins/VcsWorkspaceWrapper.vue.d.ts +82 -0
- package/src/components/section/VcsExpansionPanel.vue +13 -3
- package/src/components/vector-properties/VcsFeatureEditingWindow.vue +20 -1
- package/src/components/vector-properties/VcsFeatureEditingWindow.vue.d.ts +11 -0
- package/src/components/vector-properties/VcsFeatureInputEditor.vue +166 -0
- package/src/components/vector-properties/VcsFeatureInputEditor.vue.d.ts +17 -0
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +1 -1
- package/src/contentTree/LayerSwap.vue +15 -6
- package/src/contentTree/contentTreeCollection.js +2 -2
- package/src/contentTree/contentTreeItem.d.ts +2 -2
- package/src/contentTree/wmsGroupContentTreeItem.js +10 -3
- package/src/featureInfo/featureInfo.js +6 -25
- package/src/featureInfo/iframeWmsFeatureInfoView.d.ts +10 -0
- package/src/featureInfo/iframeWmsFeatureInfoView.js +42 -0
- package/src/i18n/de.d.ts +25 -7
- package/src/i18n/de.js +14 -0
- package/src/i18n/en.d.ts +25 -7
- package/src/i18n/en.js +14 -0
- package/src/legend/VcsLegend.vue +5 -1
- package/src/navigation/MapNavigation.vue +82 -45
- package/src/navigation/MapNavigation.vue.d.ts +3 -34
- package/src/navigation/TiltSlider.vue +10 -2
- package/src/navigation/TiltSlider.vue.d.ts +20 -0
- package/src/navigation/VcsCompass.vue +3 -1
- package/src/navigation/overviewMap.d.ts +23 -8
- package/src/navigation/overviewMap.js +82 -60
- package/src/search/ResultsComponent.vue +8 -1
- package/src/search/SearchComponent.vue +3 -17
- package/src/search/SearchComponent.vue.d.ts +1 -2
- package/src/search/search.d.ts +13 -0
- package/src/search/search.js +21 -1
- package/src/uiConfig.d.ts +9 -0
- package/src/uiConfig.js +1 -0
- package/dist/assets/core-de8e51b5.js +0 -26236
- package/dist/assets/ui-4f308e45.css +0 -1
- /package/dist/assets/{vue-62303c82.js → vue-1b861f55.js} +0 -0
- /package/dist/assets/{vuetify-99195777.css → vuetify-439ba6d5.css} +0 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-dialog
|
|
3
|
+
v-model="show"
|
|
4
|
+
class="vcs-loading-overlay"
|
|
5
|
+
:max-width="maxWidth"
|
|
6
|
+
:persistent="persistent"
|
|
7
|
+
>
|
|
8
|
+
<v-card class="pa-1">
|
|
9
|
+
<v-card-title v-if="title" class="title loading">
|
|
10
|
+
{{ $t(title) }}
|
|
11
|
+
</v-card-title>
|
|
12
|
+
<v-card-text v-if="text" class="px-4">
|
|
13
|
+
{{ $t(text) }}
|
|
14
|
+
</v-card-text>
|
|
15
|
+
<div class="d-flex justify-end px-4" v-if="hasProgress">
|
|
16
|
+
{{ localProgress }}%
|
|
17
|
+
</div>
|
|
18
|
+
<div class="px-4 pb-1 pt-2">
|
|
19
|
+
<v-progress-linear
|
|
20
|
+
:model-value="localProgress"
|
|
21
|
+
:indeterminate="!hasProgress"
|
|
22
|
+
rounded
|
|
23
|
+
/>
|
|
24
|
+
</div>
|
|
25
|
+
<template #actions v-if="cancellable">
|
|
26
|
+
<div class="pa-2">
|
|
27
|
+
<VcsFormButton @click="show = false">
|
|
28
|
+
{{ $t('components.cancel') }}
|
|
29
|
+
</VcsFormButton>
|
|
30
|
+
</div>
|
|
31
|
+
</template>
|
|
32
|
+
</v-card>
|
|
33
|
+
</v-dialog>
|
|
34
|
+
</template>
|
|
35
|
+
|
|
36
|
+
<script>
|
|
37
|
+
import {
|
|
38
|
+
VDialog,
|
|
39
|
+
VCard,
|
|
40
|
+
VCardText,
|
|
41
|
+
VProgressLinear,
|
|
42
|
+
VCardTitle,
|
|
43
|
+
} from 'vuetify/components';
|
|
44
|
+
import { computed, ref, watch } from 'vue';
|
|
45
|
+
import VcsFormButton from '../buttons/VcsFormButton.vue';
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @description Basic overlay to display a progress bar on a VCard, with optional text and cancel button.
|
|
49
|
+
* @vue-prop {import("vue").Ref<number>|undefined} [progress] - The current progress value, between 0 and 1.
|
|
50
|
+
* @vue-prop {string} [title] - The title of the overlay. Will be translated.
|
|
51
|
+
* @vue-prop {string} [text=''] - Optional text to display in the overlay. Will be translated.
|
|
52
|
+
* @vue-prop {boolean} [cancellable=true] - Whether the overlay can be cancelled by the user.
|
|
53
|
+
* @vue-prop {string|number} [maxWidth='500'] - Optional max-width for the dialog.
|
|
54
|
+
* @vue-prop {boolean} [persistent=true] - Whether the dialog should be persistent (not dismissible by clicking outside).
|
|
55
|
+
*/
|
|
56
|
+
export default {
|
|
57
|
+
name: 'VcsLoadingOverlay',
|
|
58
|
+
components: {
|
|
59
|
+
VDialog,
|
|
60
|
+
VCard,
|
|
61
|
+
VCardTitle,
|
|
62
|
+
VCardText,
|
|
63
|
+
VProgressLinear,
|
|
64
|
+
VcsFormButton,
|
|
65
|
+
},
|
|
66
|
+
props: {
|
|
67
|
+
progress: {
|
|
68
|
+
type: [Object, Number, undefined],
|
|
69
|
+
default: undefined,
|
|
70
|
+
},
|
|
71
|
+
title: {
|
|
72
|
+
type: String,
|
|
73
|
+
default: '',
|
|
74
|
+
},
|
|
75
|
+
text: {
|
|
76
|
+
type: String,
|
|
77
|
+
default: '',
|
|
78
|
+
},
|
|
79
|
+
cancellable: {
|
|
80
|
+
type: Boolean,
|
|
81
|
+
default: true,
|
|
82
|
+
},
|
|
83
|
+
maxWidth: {
|
|
84
|
+
type: [String, Number],
|
|
85
|
+
default: '500px',
|
|
86
|
+
},
|
|
87
|
+
persistent: {
|
|
88
|
+
type: Boolean,
|
|
89
|
+
default: true,
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
emits: ['cancel'],
|
|
93
|
+
setup(props, { emit }) {
|
|
94
|
+
const show = ref(true);
|
|
95
|
+
watch(show, () => {
|
|
96
|
+
if (!show.value) {
|
|
97
|
+
emit('cancel');
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
show,
|
|
102
|
+
hasProgress: props.progress !== undefined,
|
|
103
|
+
localProgress: computed(() => {
|
|
104
|
+
if (props.progress && props.progress.value !== undefined) {
|
|
105
|
+
return Math.round(props.progress.value * 100);
|
|
106
|
+
}
|
|
107
|
+
return 0;
|
|
108
|
+
}),
|
|
109
|
+
};
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
</script>
|
|
113
|
+
|
|
114
|
+
<style scoped lang="scss">
|
|
115
|
+
.title {
|
|
116
|
+
font-size: calc(var(--v-vcs-font-size) * 1.2);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.loading:after {
|
|
120
|
+
content: ' .';
|
|
121
|
+
animation: dots 2s steps(4, end) infinite;
|
|
122
|
+
}
|
|
123
|
+
@keyframes dots {
|
|
124
|
+
0%,
|
|
125
|
+
100% {
|
|
126
|
+
content: '';
|
|
127
|
+
}
|
|
128
|
+
25% {
|
|
129
|
+
content: '.';
|
|
130
|
+
}
|
|
131
|
+
50% {
|
|
132
|
+
content: '..';
|
|
133
|
+
}
|
|
134
|
+
75% {
|
|
135
|
+
content: '...';
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
</style>
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-container class="pa-0 abstract-workspace-item-creator">
|
|
3
|
+
<slot />
|
|
4
|
+
<div v-if="showFooter">
|
|
5
|
+
<v-divider class="mt-3" />
|
|
6
|
+
<div class="d-flex w-full justify-space-between px-2 pt-2 pb-1">
|
|
7
|
+
<VcsFormButton
|
|
8
|
+
v-if="showAdd && !workspaceHidden"
|
|
9
|
+
icon="$vcsComponentsPlus"
|
|
10
|
+
:disabled="disableAdd"
|
|
11
|
+
:tooltip="tooltipAdd"
|
|
12
|
+
@click="$emit('addClicked', $event)"
|
|
13
|
+
/>
|
|
14
|
+
<div class="d-flex gc-2 w-100 justify-end">
|
|
15
|
+
<slot name="secondaryButton" />
|
|
16
|
+
<VcsFormButton
|
|
17
|
+
variant="filled"
|
|
18
|
+
:disabled="disableNew"
|
|
19
|
+
:tooltip="tooltipNew"
|
|
20
|
+
@click="$emit('newClicked', $event)"
|
|
21
|
+
>
|
|
22
|
+
{{ $st(newButtonTitle) }}
|
|
23
|
+
</VcsFormButton>
|
|
24
|
+
<VcsActionButtonList :actions="actions" button="VcsFormButton" />
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
</v-container>
|
|
29
|
+
</template>
|
|
30
|
+
|
|
31
|
+
<script>
|
|
32
|
+
import { VContainer, VDivider } from 'vuetify/components';
|
|
33
|
+
import { computed, inject } from 'vue';
|
|
34
|
+
import VcsFormButton from '../buttons/VcsFormButton.vue';
|
|
35
|
+
import VcsActionButtonList from '../buttons/VcsActionButtonList.vue';
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @description Basic wrapper for all plugins interacting with MyWorkspace.
|
|
39
|
+
* Providing a footer with add and new buttons.
|
|
40
|
+
* @vue-prop {boolean} [showFooter=true] - Flag to hide the footer.
|
|
41
|
+
* @vue-prop {boolean} [showAdd=true] - Flag to show an add button in the footer. You need to handle @addClicked in a child component.
|
|
42
|
+
* @vue-prop {boolean} [disableAdd=false] - Flag to render add button disabled.
|
|
43
|
+
* @vue-prop {boolean} [tooltipAdd='components.addToMyWorkspace'] - Option to change the add button tooltip.
|
|
44
|
+
* @vue-prop {boolean} [disableNew=false] - Flag to render new button disabled.
|
|
45
|
+
* @vue-prop {boolean} [tooltipNew''] - Option to change the add a tooltip to the new button.
|
|
46
|
+
* @vue-prop {Array<VcsAction>} [actions] - Optional actions rendered as ActionButtonList in the footer.
|
|
47
|
+
* @vue-prop {string} [newButtonTitle='components.new'] - Option to change the new button title, e.g. to 'components.apply'.
|
|
48
|
+
* @vue-event {Event} addClicked - Event fired on clicking the reset button.
|
|
49
|
+
* @vue-event {Event} newClicked - Event fired on clicking the cancel button.
|
|
50
|
+
* @vue-slot secondaryButton An optionnal named slot to add a secondary button to the footer, rendered filled on the left of the new button.
|
|
51
|
+
*/
|
|
52
|
+
export default {
|
|
53
|
+
name: 'VcsWorkspaceWrapper',
|
|
54
|
+
components: {
|
|
55
|
+
VContainer,
|
|
56
|
+
VDivider,
|
|
57
|
+
VcsFormButton,
|
|
58
|
+
VcsActionButtonList,
|
|
59
|
+
},
|
|
60
|
+
props: {
|
|
61
|
+
showFooter: {
|
|
62
|
+
type: Boolean,
|
|
63
|
+
default: true,
|
|
64
|
+
},
|
|
65
|
+
showAdd: {
|
|
66
|
+
type: Boolean,
|
|
67
|
+
default: true,
|
|
68
|
+
},
|
|
69
|
+
disableAdd: {
|
|
70
|
+
type: Boolean,
|
|
71
|
+
default: false,
|
|
72
|
+
},
|
|
73
|
+
tooltipAdd: {
|
|
74
|
+
type: String,
|
|
75
|
+
default: 'components.addToMyWorkspace',
|
|
76
|
+
},
|
|
77
|
+
newButtonTitle: {
|
|
78
|
+
type: String,
|
|
79
|
+
default: 'components.new',
|
|
80
|
+
},
|
|
81
|
+
disableNew: {
|
|
82
|
+
type: Boolean,
|
|
83
|
+
default: false,
|
|
84
|
+
},
|
|
85
|
+
tooltipNew: {
|
|
86
|
+
type: String,
|
|
87
|
+
default: '',
|
|
88
|
+
},
|
|
89
|
+
actions: {
|
|
90
|
+
type: Array,
|
|
91
|
+
default: () => [],
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
emits: ['addClicked', 'newClicked'],
|
|
95
|
+
setup() {
|
|
96
|
+
const app = inject('vcsApp');
|
|
97
|
+
return {
|
|
98
|
+
workspaceHidden: computed(() => !!app.uiConfig.config.workspaceHidden),
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
</script>
|
|
103
|
+
|
|
104
|
+
<style scoped></style>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{
|
|
2
|
+
showFooter: {
|
|
3
|
+
type: BooleanConstructor;
|
|
4
|
+
default: boolean;
|
|
5
|
+
};
|
|
6
|
+
showAdd: {
|
|
7
|
+
type: BooleanConstructor;
|
|
8
|
+
default: boolean;
|
|
9
|
+
};
|
|
10
|
+
disableAdd: {
|
|
11
|
+
type: BooleanConstructor;
|
|
12
|
+
default: boolean;
|
|
13
|
+
};
|
|
14
|
+
tooltipAdd: {
|
|
15
|
+
type: StringConstructor;
|
|
16
|
+
default: string;
|
|
17
|
+
};
|
|
18
|
+
newButtonTitle: {
|
|
19
|
+
type: StringConstructor;
|
|
20
|
+
default: string;
|
|
21
|
+
};
|
|
22
|
+
disableNew: {
|
|
23
|
+
type: BooleanConstructor;
|
|
24
|
+
default: boolean;
|
|
25
|
+
};
|
|
26
|
+
tooltipNew: {
|
|
27
|
+
type: StringConstructor;
|
|
28
|
+
default: string;
|
|
29
|
+
};
|
|
30
|
+
actions: {
|
|
31
|
+
type: ArrayConstructor;
|
|
32
|
+
default: () => never[];
|
|
33
|
+
};
|
|
34
|
+
}, {
|
|
35
|
+
workspaceHidden: import("vue").ComputedRef<boolean>;
|
|
36
|
+
}, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("addClicked" | "newClicked")[], "addClicked" | "newClicked", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
37
|
+
showFooter: {
|
|
38
|
+
type: BooleanConstructor;
|
|
39
|
+
default: boolean;
|
|
40
|
+
};
|
|
41
|
+
showAdd: {
|
|
42
|
+
type: BooleanConstructor;
|
|
43
|
+
default: boolean;
|
|
44
|
+
};
|
|
45
|
+
disableAdd: {
|
|
46
|
+
type: BooleanConstructor;
|
|
47
|
+
default: boolean;
|
|
48
|
+
};
|
|
49
|
+
tooltipAdd: {
|
|
50
|
+
type: StringConstructor;
|
|
51
|
+
default: string;
|
|
52
|
+
};
|
|
53
|
+
newButtonTitle: {
|
|
54
|
+
type: StringConstructor;
|
|
55
|
+
default: string;
|
|
56
|
+
};
|
|
57
|
+
disableNew: {
|
|
58
|
+
type: BooleanConstructor;
|
|
59
|
+
default: boolean;
|
|
60
|
+
};
|
|
61
|
+
tooltipNew: {
|
|
62
|
+
type: StringConstructor;
|
|
63
|
+
default: string;
|
|
64
|
+
};
|
|
65
|
+
actions: {
|
|
66
|
+
type: ArrayConstructor;
|
|
67
|
+
default: () => never[];
|
|
68
|
+
};
|
|
69
|
+
}>> & {
|
|
70
|
+
onAddClicked?: ((...args: any[]) => any) | undefined;
|
|
71
|
+
onNewClicked?: ((...args: any[]) => any) | undefined;
|
|
72
|
+
}, {
|
|
73
|
+
actions: unknown[];
|
|
74
|
+
showFooter: boolean;
|
|
75
|
+
showAdd: boolean;
|
|
76
|
+
disableAdd: boolean;
|
|
77
|
+
tooltipAdd: string;
|
|
78
|
+
newButtonTitle: string;
|
|
79
|
+
disableNew: boolean;
|
|
80
|
+
tooltipNew: string;
|
|
81
|
+
}, {}>;
|
|
82
|
+
export default _default;
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
VExpansionPanelText,
|
|
5
5
|
VExpansionPanelTitle,
|
|
6
6
|
VIcon,
|
|
7
|
-
VTooltip,
|
|
8
7
|
VListItemTitle,
|
|
8
|
+
VTooltip,
|
|
9
9
|
} from 'vuetify/components';
|
|
10
10
|
import { computed, ref, useSlots } from 'vue';
|
|
11
11
|
import VcsActionButtonList from '../buttons/VcsActionButtonList.vue';
|
|
@@ -96,7 +96,9 @@
|
|
|
96
96
|
line-height: 1.2;
|
|
97
97
|
padding: 0 8px;
|
|
98
98
|
}
|
|
99
|
-
|
|
99
|
+
:deep(.v-list-item-title) > span {
|
|
100
|
+
font-weight: bold;
|
|
101
|
+
}
|
|
100
102
|
.vcs-panel-title__append {
|
|
101
103
|
width: 90%;
|
|
102
104
|
display: inline-block;
|
|
@@ -104,8 +106,16 @@
|
|
|
104
106
|
text-overflow: ellipsis;
|
|
105
107
|
vertical-align: bottom;
|
|
106
108
|
}
|
|
107
|
-
|
|
108
109
|
:deep(.v-expansion-panel-text__wrapper) {
|
|
109
110
|
padding: 0 0;
|
|
110
111
|
}
|
|
111
112
|
</style>
|
|
113
|
+
|
|
114
|
+
<style lang="scss">
|
|
115
|
+
.v-expansion-panels {
|
|
116
|
+
z-index: auto;
|
|
117
|
+
> div:not(:last-child):has(.vcs-expansion-panel) {
|
|
118
|
+
border-bottom: 1px solid rgb(var(--v-theme-base-lighten-2));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
</style>
|
|
@@ -13,7 +13,12 @@
|
|
|
13
13
|
:feature-properties="featureProperties"
|
|
14
14
|
:allow-z-input="is3D"
|
|
15
15
|
/>
|
|
16
|
-
<div v-else class="
|
|
16
|
+
<div v-else-if="showInputs" class="py-1">
|
|
17
|
+
<VcsFeatureInputEditor
|
|
18
|
+
:is3-d="is3D && featureProperties.altitudeMode === 'absolute'"
|
|
19
|
+
/>
|
|
20
|
+
</div>
|
|
21
|
+
<div v-else class="py-1">
|
|
17
22
|
{{ $t('components.editor.modifyInfo') }}
|
|
18
23
|
</div>
|
|
19
24
|
</div>
|
|
@@ -67,6 +72,7 @@
|
|
|
67
72
|
} from './VcsVectorPropertiesComponent.vue';
|
|
68
73
|
import VcsFormSection from '../section/VcsFormSection.vue';
|
|
69
74
|
import VcsSnapTo from './VcsSnapTo.vue';
|
|
75
|
+
import VcsFeatureInputEditor from './VcsFeatureInputEditor.vue';
|
|
70
76
|
|
|
71
77
|
/**
|
|
72
78
|
* @typedef {Object} EditorManager
|
|
@@ -150,6 +156,7 @@
|
|
|
150
156
|
VSheet,
|
|
151
157
|
VcsFormSection,
|
|
152
158
|
VcsVectorPropertiesComponent,
|
|
159
|
+
VcsFeatureInputEditor,
|
|
153
160
|
VcsFeatureStyleComponent,
|
|
154
161
|
},
|
|
155
162
|
props: {
|
|
@@ -186,6 +193,10 @@
|
|
|
186
193
|
type: Boolean,
|
|
187
194
|
default: true,
|
|
188
195
|
},
|
|
196
|
+
showInputEditor: {
|
|
197
|
+
type: Boolean,
|
|
198
|
+
default: false,
|
|
199
|
+
},
|
|
189
200
|
},
|
|
190
201
|
setup(props) {
|
|
191
202
|
const vcsApp = inject('vcsApp');
|
|
@@ -463,8 +474,16 @@
|
|
|
463
474
|
availableVectorProperties,
|
|
464
475
|
is3D,
|
|
465
476
|
is2DFeature,
|
|
477
|
+
isGeometryEditing,
|
|
466
478
|
updateFeatureProperties,
|
|
467
479
|
defaultVectorProperties: VectorProperties.getDefaultOptions(),
|
|
480
|
+
showInputs: computed(
|
|
481
|
+
() =>
|
|
482
|
+
!currentTransformationMode.value &&
|
|
483
|
+
props.showInputEditor &&
|
|
484
|
+
features.value.length === 1 &&
|
|
485
|
+
features.value[0]?.getGeometry()?.getType() === 'Point',
|
|
486
|
+
),
|
|
468
487
|
};
|
|
469
488
|
},
|
|
470
489
|
};
|
|
@@ -42,6 +42,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
42
42
|
type: BooleanConstructor;
|
|
43
43
|
default: boolean;
|
|
44
44
|
};
|
|
45
|
+
showInputEditor: {
|
|
46
|
+
type: BooleanConstructor;
|
|
47
|
+
default: boolean;
|
|
48
|
+
};
|
|
45
49
|
}, {
|
|
46
50
|
featureProperties: import("vue").ShallowRef<any>;
|
|
47
51
|
session: import("vue").ShallowRef<import("@vcmap/core", { with: { "resolution-mode": "import" } }).SelectFeaturesSession | import("@vcmap/core", { with: { "resolution-mode": "import" } }).CreateFeatureSession<GeometryType> | undefined>;
|
|
@@ -53,8 +57,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
53
57
|
availableVectorProperties: import("vue").ShallowRef<never[]>;
|
|
54
58
|
is3D: import("vue").Ref<boolean>;
|
|
55
59
|
is2DFeature: import("vue").ComputedRef<boolean>;
|
|
60
|
+
isGeometryEditing: import("vue").ComputedRef<boolean>;
|
|
56
61
|
updateFeatureProperties: (update: import("@vcmap/core").VectorPropertiesOptions) => void;
|
|
57
62
|
defaultVectorProperties: import("@vcmap/core", { with: { "resolution-mode": "import" } }).VectorPropertiesOptions;
|
|
63
|
+
showInputs: import("vue").ComputedRef<boolean>;
|
|
58
64
|
}, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
59
65
|
allowedVectorProperties: {
|
|
60
66
|
type: ArrayConstructor;
|
|
@@ -84,6 +90,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
84
90
|
type: BooleanConstructor;
|
|
85
91
|
default: boolean;
|
|
86
92
|
};
|
|
93
|
+
showInputEditor: {
|
|
94
|
+
type: BooleanConstructor;
|
|
95
|
+
default: boolean;
|
|
96
|
+
};
|
|
87
97
|
}>>, {
|
|
88
98
|
altitudeModes: unknown[];
|
|
89
99
|
allowedVectorProperties: unknown[];
|
|
@@ -92,6 +102,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
92
102
|
showResetVectorProperties: boolean;
|
|
93
103
|
showStyle: boolean;
|
|
94
104
|
showSnapping: boolean;
|
|
105
|
+
showInputEditor: boolean;
|
|
95
106
|
}, {}>;
|
|
96
107
|
export default _default;
|
|
97
108
|
export type EditorManager = {
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="vcs-point-input-editor">
|
|
3
|
+
<v-row no-gutters>
|
|
4
|
+
<v-col>
|
|
5
|
+
<VcsLabel html-for="posX">
|
|
6
|
+
{{ $t('components.editor.position.x') }}
|
|
7
|
+
</VcsLabel>
|
|
8
|
+
</v-col>
|
|
9
|
+
<v-col>
|
|
10
|
+
<VcsTextField
|
|
11
|
+
id="posX"
|
|
12
|
+
type="number"
|
|
13
|
+
v-model.number="coordinates[0]"
|
|
14
|
+
@update:model-value="isEdited = true"
|
|
15
|
+
/>
|
|
16
|
+
</v-col>
|
|
17
|
+
</v-row>
|
|
18
|
+
<v-row no-gutters>
|
|
19
|
+
<v-col>
|
|
20
|
+
<VcsLabel html-for="posY">
|
|
21
|
+
{{ $t('components.editor.position.y') }}
|
|
22
|
+
</VcsLabel>
|
|
23
|
+
</v-col>
|
|
24
|
+
<v-col>
|
|
25
|
+
<VcsTextField
|
|
26
|
+
id="posY"
|
|
27
|
+
type="number"
|
|
28
|
+
v-model.number="coordinates[1]"
|
|
29
|
+
@update:model-value="isEdited = true"
|
|
30
|
+
/>
|
|
31
|
+
</v-col>
|
|
32
|
+
</v-row>
|
|
33
|
+
<v-row no-gutters v-if="is3D">
|
|
34
|
+
<v-col>
|
|
35
|
+
<VcsLabel html-for="posZ">
|
|
36
|
+
{{ $t('components.editor.position.z') }}
|
|
37
|
+
</VcsLabel>
|
|
38
|
+
</v-col>
|
|
39
|
+
<v-col>
|
|
40
|
+
<VcsTextField
|
|
41
|
+
id="posZ"
|
|
42
|
+
type="number"
|
|
43
|
+
v-model.number="coordinates[2]"
|
|
44
|
+
@update:model-value="isEdited = true"
|
|
45
|
+
/>
|
|
46
|
+
</v-col>
|
|
47
|
+
</v-row>
|
|
48
|
+
<v-row no-gutters v-if="isEdited" class="d-flex justify-end gc-1">
|
|
49
|
+
<VcsToolButton @click="cancel">
|
|
50
|
+
{{ $t('components.cancel') }}
|
|
51
|
+
</VcsToolButton>
|
|
52
|
+
<VcsToolButton @click="apply">
|
|
53
|
+
{{ $t('components.apply') }}
|
|
54
|
+
</VcsToolButton>
|
|
55
|
+
</v-row>
|
|
56
|
+
</div>
|
|
57
|
+
</template>
|
|
58
|
+
|
|
59
|
+
<script>
|
|
60
|
+
import { VCol, VRow } from 'vuetify/components';
|
|
61
|
+
import { inject, onUnmounted, ref } from 'vue';
|
|
62
|
+
import {
|
|
63
|
+
getDefaultProjection,
|
|
64
|
+
mercatorProjection,
|
|
65
|
+
Projection,
|
|
66
|
+
} from '@vcmap/core';
|
|
67
|
+
import { getLogger } from '@vcsuite/logger';
|
|
68
|
+
import VcsLabel from '../form-inputs-controls/VcsLabel.vue';
|
|
69
|
+
import VcsTextField from '../form-inputs-controls/VcsTextField.vue';
|
|
70
|
+
import VcsToolButton from '../buttons/VcsToolButton.vue';
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* @description Component to edit the position of a feature in a vector layer. Currently
|
|
74
|
+
* only supports point features, which need to be the currently selected feature in the manager.
|
|
75
|
+
* @vue-prop {boolean} is3D - Whether the feature is in 3D.
|
|
76
|
+
*/
|
|
77
|
+
export default {
|
|
78
|
+
name: 'VcsFeatureEditingWindow',
|
|
79
|
+
components: {
|
|
80
|
+
VCol,
|
|
81
|
+
VRow,
|
|
82
|
+
VcsLabel,
|
|
83
|
+
VcsTextField,
|
|
84
|
+
VcsToolButton,
|
|
85
|
+
},
|
|
86
|
+
props: {
|
|
87
|
+
is3D: {
|
|
88
|
+
type: Boolean,
|
|
89
|
+
required: true,
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
setup() {
|
|
93
|
+
const { currentFeatures: features } = inject('manager');
|
|
94
|
+
|
|
95
|
+
if (
|
|
96
|
+
features.value.length !== 1 ||
|
|
97
|
+
features.value[0]?.getGeometry()?.getType() !== 'Point'
|
|
98
|
+
) {
|
|
99
|
+
getLogger('VcsFeatureEditingWindow').error(
|
|
100
|
+
'This component only supports editing a single point feature.',
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const isEdited = ref(false);
|
|
105
|
+
/** @type {import("ol").Feature} */
|
|
106
|
+
const feature = features.value[0];
|
|
107
|
+
const defaultProjection = getDefaultProjection();
|
|
108
|
+
const decimalPlaces = defaultProjection.epsg.includes('4326') ? 6 : 2;
|
|
109
|
+
|
|
110
|
+
function transform(coordinates) {
|
|
111
|
+
return mercatorProjection
|
|
112
|
+
.transformTo(defaultProjection, coordinates)
|
|
113
|
+
.map((c, i) => +c.toFixed(i === 2 ? 2 : decimalPlaces));
|
|
114
|
+
}
|
|
115
|
+
const coordinates = ref(
|
|
116
|
+
transform(feature.getGeometry().getFlatCoordinates()),
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
function updateFromFeature() {
|
|
120
|
+
coordinates.value = transform(
|
|
121
|
+
feature.getGeometry().getFlatCoordinates(),
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
feature.on('change', updateFromFeature);
|
|
125
|
+
onUnmounted(() => {
|
|
126
|
+
feature.un('change', updateFromFeature);
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
function updateFromInput() {
|
|
130
|
+
let updatedCoordinates;
|
|
131
|
+
try {
|
|
132
|
+
updatedCoordinates = Projection.transform(
|
|
133
|
+
mercatorProjection,
|
|
134
|
+
defaultProjection,
|
|
135
|
+
coordinates.value,
|
|
136
|
+
);
|
|
137
|
+
feature.getGeometry().setCoordinates(updatedCoordinates);
|
|
138
|
+
} catch (error) {
|
|
139
|
+
getLogger('VcsFeatureEditingWindow').error(
|
|
140
|
+
'Invalid coordinates input',
|
|
141
|
+
error,
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return {
|
|
147
|
+
isEdited,
|
|
148
|
+
coordinates,
|
|
149
|
+
apply: () => {
|
|
150
|
+
updateFromInput();
|
|
151
|
+
isEdited.value = false;
|
|
152
|
+
},
|
|
153
|
+
cancel: () => {
|
|
154
|
+
updateFromFeature();
|
|
155
|
+
isEdited.value = false;
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
</script>
|
|
161
|
+
|
|
162
|
+
<style scoped>
|
|
163
|
+
:deep(.v-btn__content):hover {
|
|
164
|
+
color: rgb(var(--v-theme-primary));
|
|
165
|
+
}
|
|
166
|
+
</style>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{
|
|
2
|
+
is3D: {
|
|
3
|
+
type: BooleanConstructor;
|
|
4
|
+
required: true;
|
|
5
|
+
};
|
|
6
|
+
}, {
|
|
7
|
+
isEdited: import("vue").Ref<boolean>;
|
|
8
|
+
coordinates: import("vue").Ref<number[]>;
|
|
9
|
+
apply: () => void;
|
|
10
|
+
cancel: () => void;
|
|
11
|
+
}, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
12
|
+
is3D: {
|
|
13
|
+
type: BooleanConstructor;
|
|
14
|
+
required: true;
|
|
15
|
+
};
|
|
16
|
+
}>>, {}, {}>;
|
|
17
|
+
export default _default;
|
|
@@ -84,7 +84,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
84
84
|
} | undefined;
|
|
85
85
|
getEyeOffset: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => import("@vcmap-cesium/engine", { with: { "resolution-mode": "import" } }).Cartesian3 | undefined;
|
|
86
86
|
heightAboveGround: number | undefined;
|
|
87
|
-
getHeightAboveGround: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => number;
|
|
87
|
+
getHeightAboveGround: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => number | undefined;
|
|
88
88
|
skirt: number;
|
|
89
89
|
getSkirt: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => number;
|
|
90
90
|
groundLevel: number | undefined;
|
|
@@ -72,11 +72,15 @@
|
|
|
72
72
|
const wmsGroupItemsMap = getWmsGroupItemsMap(app);
|
|
73
73
|
|
|
74
74
|
/**
|
|
75
|
-
* @param {import("@vcmap/core").Layer}l
|
|
75
|
+
* @param {import("@vcmap/core").Layer} l
|
|
76
76
|
* @returns {boolean}
|
|
77
77
|
*/
|
|
78
78
|
const layerFilter = (l) => {
|
|
79
|
-
return
|
|
79
|
+
return (
|
|
80
|
+
l.active &&
|
|
81
|
+
l[moduleIdSymbol] !== volatileModuleId &&
|
|
82
|
+
l.isSupported(app.maps.activeMap)
|
|
83
|
+
);
|
|
80
84
|
};
|
|
81
85
|
|
|
82
86
|
function getLayerTreeItems() {
|
|
@@ -101,11 +105,16 @@
|
|
|
101
105
|
|
|
102
106
|
const items = shallowRef(getLayerTreeItems());
|
|
103
107
|
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
108
|
+
const listeners = [
|
|
109
|
+
app.layers.stateChanged.addEventListener(() => {
|
|
110
|
+
items.value = getLayerTreeItems();
|
|
111
|
+
}),
|
|
112
|
+
app.maps.mapActivated.addEventListener(() => {
|
|
113
|
+
items.value = getLayerTreeItems();
|
|
114
|
+
}),
|
|
115
|
+
];
|
|
107
116
|
|
|
108
|
-
onUnmounted(() =>
|
|
117
|
+
onUnmounted(() => listeners.forEach((l) => l()));
|
|
109
118
|
|
|
110
119
|
return {
|
|
111
120
|
items,
|