@vcmap/ui 5.0.0-rc.24 → 5.0.0-rc.25
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 +132 -14
- package/build/buildHelpers.js +196 -92
- package/build/bundle.js +56 -0
- package/build/commonViteConfig.js +2 -2
- package/config/base.config.json +29 -2
- package/config/dev.config.json +29 -1
- package/config/www.config.json +81 -39
- package/dist/assets/@mdi/font/LICENSE +20 -0
- package/dist/assets/@mdi/font/css/materialdesignicons.css.map +16 -0
- package/dist/assets/@mdi/font/css/materialdesignicons.min.e3f476.css +3 -0
- package/dist/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
- package/dist/assets/cesium/Workers/{AxisAlignedBoundingBox-85d9e53a.js → AxisAlignedBoundingBox-4140c51f.js} +1 -1
- package/dist/assets/cesium/Workers/{BoundingRectangle-1ee7eb47.js → BoundingRectangle-c714b156.js} +1 -1
- package/dist/assets/cesium/Workers/{BoxGeometry-3b2be784.js → BoxGeometry-6f3da43d.js} +1 -1
- package/dist/assets/cesium/Workers/{Color-f107c84d.js → Color-8a565ff2.js} +5 -5
- package/dist/assets/cesium/Workers/{CoplanarPolygonGeometryLibrary-78d71993.js → CoplanarPolygonGeometryLibrary-4b4d4096.js} +1 -1
- package/dist/assets/cesium/Workers/{CorridorGeometryLibrary-50d99b33.js → CorridorGeometryLibrary-7b94502b.js} +1 -1
- package/dist/assets/cesium/Workers/{CylinderGeometry-51b0d9bf.js → CylinderGeometry-ca070b87.js} +1 -1
- package/dist/assets/cesium/Workers/{EllipseGeometry-bcfb5d87.js → EllipseGeometry-122e51fa.js} +1 -1
- package/dist/assets/cesium/Workers/{EllipseGeometryLibrary-e94f8472.js → EllipseGeometryLibrary-4d326efc.js} +1 -1
- package/dist/assets/cesium/Workers/{EllipseOutlineGeometry-28e3a1bb.js → EllipseOutlineGeometry-16cc2bd7.js} +1 -1
- package/dist/assets/cesium/Workers/{EllipsoidGeometry-b222fa63.js → EllipsoidGeometry-cb148ca2.js} +1 -1
- package/dist/assets/cesium/Workers/{EllipsoidOutlineGeometry-38a3fb5b.js → EllipsoidOutlineGeometry-0fa10c79.js} +1 -1
- package/dist/assets/cesium/Workers/{EllipsoidTangentPlane-8c89f28c.js → EllipsoidTangentPlane-6dd1b7af.js} +1 -1
- package/dist/assets/cesium/Workers/{FrustumGeometry-bdd3a04d.js → FrustumGeometry-ee73037c.js} +1 -1
- package/dist/assets/cesium/Workers/{GeometryAttribute-153115c5.js → GeometryAttribute-ff5b4fb1.js} +1 -1
- package/dist/assets/cesium/Workers/{GeometryPipeline-acb2399c.js → GeometryPipeline-1f8fbf05.js} +1 -1
- package/dist/assets/cesium/Workers/{IntersectionTests-271e513e.js → IntersectionTests-70d39ba9.js} +1 -1
- package/dist/assets/cesium/Workers/{OrientedBoundingBox-5e04e31f.js → OrientedBoundingBox-159cf1d6.js} +1 -1
- package/dist/assets/cesium/Workers/{PolygonGeometryLibrary-6762b65b.js → PolygonGeometryLibrary-076a5d25.js} +1 -1
- package/dist/assets/cesium/Workers/{PolygonPipeline-7dc7a431.js → PolygonPipeline-b9f2810a.js} +1 -1
- package/dist/assets/cesium/Workers/{PolylinePipeline-15fde655.js → PolylinePipeline-639192e0.js} +1 -1
- package/dist/assets/cesium/Workers/{PolylineVolumeGeometryLibrary-ba7dfed5.js → PolylineVolumeGeometryLibrary-b73549fb.js} +1 -1
- package/dist/assets/cesium/Workers/{PrimitivePipeline-68f0b9a2.js → PrimitivePipeline-10ede1b6.js} +1 -1
- package/dist/assets/cesium/Workers/{RectangleGeometryLibrary-8eaf23da.js → RectangleGeometryLibrary-c35a7356.js} +1 -1
- package/dist/assets/cesium/Workers/{TerrainEncoding-eb8a645a.js → TerrainEncoding-668d242f.js} +1 -1
- package/dist/assets/cesium/Workers/{Transforms-f6451f99.js → Transforms-a2a85221.js} +14 -0
- package/dist/assets/cesium/Workers/{WallGeometryLibrary-feef3109.js → WallGeometryLibrary-1938bf0d.js} +1 -1
- package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +1 -1
- package/dist/assets/cesium/Workers/combineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createCircleGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createCorridorGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createPlaneGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createPolygonGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createPolylineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createRectangleGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createSphereGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createVectorTileGeometries.js +1 -1
- package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -1
- package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
- package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +1 -1
- package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +1 -1
- package/dist/assets/cesium/Workers/createWallGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/package.js +1 -1
- package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
- package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +1 -1
- package/dist/assets/{cesium.253914.js → cesium.1457fa.js} +58656 -33170
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/core.47836f.js +19060 -0
- package/dist/assets/core.js +1 -1
- package/dist/assets/index-bb372634.js +1 -0
- package/dist/assets/{ol.1c946a.js → ol.9e4d23.js} +27344 -12118
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui.6ed89d.css +5 -0
- package/dist/assets/ui.6ed89d.js +13461 -0
- package/dist/assets/ui.js +1 -1
- package/dist/assets/{vue.c1ece7.js → vue.7327e4.js} +834 -598
- package/dist/assets/vue.js +2 -2
- package/dist/assets/{vuetify.6efa21.css → vuetify.d2131d.css} +1 -1
- package/dist/assets/{vuetify.6efa21.js → vuetify.d2131d.js} +343 -103
- package/dist/assets/vuetify.js +2 -2
- package/dist/index.html +7 -6
- package/index.html +14 -6
- package/index.js +17 -2
- package/lib/olLib.js +19 -16
- package/package.json +15 -14
- package/plugins/@vcmap/create-link/fallbackCreateLink.vue +0 -2
- package/plugins/@vcmap/simple-graph/index.js +1 -1
- package/plugins/@vcmap-show-case/README.md +2 -1
- package/plugins/@vcmap-show-case/buttons-example/ButtonsExample.vue +55 -79
- package/plugins/@vcmap-show-case/category-tester/CategoriesExample.vue +135 -0
- package/plugins/@vcmap-show-case/category-tester/CollectionComponentOptions.vue +209 -0
- package/plugins/@vcmap-show-case/category-tester/index.js +19 -1
- package/plugins/@vcmap-show-case/collection-manager-example/CollectionManagerExample.vue +182 -0
- package/plugins/@vcmap-show-case/collection-manager-example/README.md +3 -0
- package/plugins/@vcmap-show-case/collection-manager-example/index.js +74 -0
- package/plugins/@vcmap-show-case/collection-manager-example/package.json +5 -0
- package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +20 -3
- package/plugins/@vcmap-show-case/switch-map-callback-example/README.md +21 -0
- package/plugins/@vcmap-show-case/switch-map-callback-example/SwitchMapCallback.js +47 -0
- package/plugins/@vcmap-show-case/switch-map-callback-example/config.json +3 -0
- package/plugins/@vcmap-show-case/switch-map-callback-example/index.js +34 -0
- package/plugins/@vcmap-show-case/switch-map-callback-example/package.json +5 -0
- package/plugins/@vcmap-show-case/table-example/DataTableExample.vue +0 -1
- package/plugins/package.json +3 -1
- package/public/assets/@mdi/font/LICENSE +20 -0
- package/public/assets/@mdi/font/css/materialdesignicons.css.map +16 -0
- package/public/assets/@mdi/font/css/materialdesignicons.min.css +3 -0
- package/public/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
- package/public/assets/favicon-128.png +0 -0
- package/public/assets/favicon-180.png +0 -0
- package/public/assets/favicon-192.png +0 -0
- package/public/assets/favicon-32.png +0 -0
- package/public/assets/logo-mobile.svg +9 -0
- package/public/assets/logo.svg +26 -0
- package/src/application/VcsApp.vue +34 -5
- package/src/application/VcsAttributions.vue +20 -5
- package/src/application/VcsAttributionsFooter.vue +0 -1
- package/src/application/VcsNavbar.vue +18 -13
- package/src/callback/activateLayersCallback.js +54 -0
- package/src/callback/applyLayerStyleCallback.js +63 -0
- package/src/callback/deactivateLayersCallback.js +54 -0
- package/src/callback/goToViewpointCallback.js +54 -0
- package/src/callback/vcsCallback.js +66 -0
- package/src/components/buttons/VcsActionButtonList.vue +28 -10
- package/src/components/buttons/VcsButton.vue +38 -100
- package/src/components/buttons/VcsFormButton.vue +6 -4
- package/src/components/buttons/VcsToolButton.vue +161 -0
- package/src/components/form-inputs-controls/VcsDatePicker.vue +19 -5
- package/src/components/form-inputs-controls/VcsFormSection.vue +0 -1
- package/src/components/form-inputs-controls/VcsSelect.vue +16 -2
- package/src/components/form-inputs-controls/VcsSlider.vue +72 -0
- package/src/components/form-inputs-controls/VcsTextField.vue +24 -13
- package/src/components/form-inputs-controls/VcsWizard.vue +13 -14
- package/src/components/form-inputs-controls/VcsWizardStep.vue +0 -1
- package/src/components/lists/VcsList.vue +3 -2
- package/src/components/lists/VcsTreeviewLeaf.vue +0 -1
- package/src/components/tables/VcsDataTable.vue +2 -4
- package/src/contentTree/LayerTree.vue +15 -9
- package/src/contentTree/contentTreeCollection.js +1 -1
- package/src/contentTree/contentTreeItem.js +22 -3
- package/src/contentTree/groupContentTreeItem.js +1 -0
- package/src/contentTree/layerContentTreeItem.js +4 -14
- package/src/contentTree/layerGroupContentTreeItem.js +4 -14
- package/src/contentTree/obliqueCollectionContentTreeItem.js +4 -0
- package/src/contentTree/viewpointContentTreeItem.js +1 -0
- package/src/featureInfo/BalloonComponent.vue +0 -1
- package/src/featureInfo/abstractFeatureInfoView.js +16 -1
- package/src/featureInfo/featureInfo.js +45 -56
- package/src/i18n/de.js +5 -2
- package/src/i18n/en.js +5 -2
- package/src/i18n/i18nCollection.js +1 -2
- package/src/init.js +1 -4
- package/src/legend/vcsLegend.vue +1 -1
- package/src/manager/buttonManager.js +15 -0
- package/src/manager/{categoryManager/CategoryComponent.vue → collectionManager/CollectionComponent.vue} +57 -66
- package/src/manager/collectionManager/CollectionComponentList.vue +62 -0
- package/src/manager/collectionManager/CollectionComponentProvider.vue +38 -0
- package/src/manager/collectionManager/CollectionManager.vue +43 -0
- package/src/manager/collectionManager/categoryManager.js +83 -0
- package/src/manager/collectionManager/collectionComponent.js +453 -0
- package/src/manager/collectionManager/collectionManager.js +432 -0
- package/src/manager/navbarManager.js +5 -4
- package/src/manager/toolbox/GroupToolboxComponent.vue +5 -7
- package/src/manager/toolbox/SelectToolboxComponent.vue +6 -9
- package/src/manager/toolbox/ToolboxManager.vue +4 -5
- package/src/manager/window/WindowComponentHeader.vue +0 -4
- package/src/navigation/mapNavigation.vue +34 -8
- package/src/navigation/overviewMap.js +7 -1
- package/src/notifier/notifierComponent.vue +0 -1
- package/src/pluginHelper.js +5 -0
- package/src/search/resultItem.vue +0 -1
- package/src/search/searchComponent.vue +7 -9
- package/src/styles/_theming.scss +2 -2
- package/src/styles/_typography.scss +2 -2
- package/src/styles/main.scss +8 -0
- package/src/styles/vcsFont.scss +1 -22
- package/src/vcsUiApp.js +76 -12
- package/src/vuePlugins/i18n.js +18 -19
- package/src/vuePlugins/vuetify.js +0 -1
- package/dist/assets/core.3a8205.js +0 -18426
- package/dist/assets/index.91ae2d55.js +0 -1
- package/dist/assets/ui.0025be.css +0 -5
- package/dist/assets/ui.0025be.js +0 -18534
- package/plugins/@vcmap-show-case/category-tester/Categories.vue +0 -291
- package/plugins/@vcmap-show-case/category-tester/Category.vue +0 -164
- package/src/manager/categoryManager/CategoryComponentList.vue +0 -82
- package/src/manager/categoryManager/CategoryManager.vue +0 -47
- package/src/manager/categoryManager/categoryManager.js +0 -633
- package/start.js +0 -9
- /package/{src/assets/favicon-128.png → dist/assets/favicon-128.4c4ce5.png} +0 -0
- /package/{src/assets/favicon-180.png → dist/assets/favicon-180.5b99c0.png} +0 -0
- /package/{src/assets/favicon-192.png → dist/assets/favicon-192.0e205e.png} +0 -0
- /package/{src/assets/favicon-32.png → dist/assets/favicon-32.6b9add.png} +0 -0
- /package/dist/assets/{favicon.decf54cc.svg → favicon.d5ec97.svg} +0 -0
- /package/dist/assets/font/{TitilliumWeb-Regular.woff2 → TitilliumWeb-Regular.9ca076.woff2} +0 -0
- /package/{src/assets/logo-mobile.svg → dist/assets/logo-mobile.2d10a6.svg} +0 -0
- /package/{src/assets/logo.svg → dist/assets/logo.27089a.svg} +0 -0
- /package/{src → public}/assets/favicon.svg +0 -0
- /package/{src → public}/assets/font/OFL.txt +0 -0
- /package/{src → public}/assets/font/TitilliumWeb-Regular.woff2 +0 -0
@@ -18,9 +18,9 @@
|
|
18
18
|
@blur="onBlur"
|
19
19
|
@keydown.esc="onEscape"
|
20
20
|
@keydown="$emit('keydown', $event)"
|
21
|
-
:value="visibleValue"
|
22
21
|
:type="type"
|
23
22
|
outlined
|
23
|
+
v-model="visibleValue"
|
24
24
|
v-bind="{ ...$attrs, ...attrs }"
|
25
25
|
v-on="{ ...$listeners, ...on }"
|
26
26
|
:height="isDense ? 24 : 32"
|
@@ -127,6 +127,12 @@
|
|
127
127
|
.v-text-field__suffix {
|
128
128
|
padding-left: 4px;
|
129
129
|
}
|
130
|
+
.v-input__prepend-outer {
|
131
|
+
margin-right: 4px;
|
132
|
+
}
|
133
|
+
.v-icon {
|
134
|
+
font-size: 16px;
|
135
|
+
}
|
130
136
|
fieldset {
|
131
137
|
border-radius: 2px;
|
132
138
|
border-color: var(--v-base-base);
|
@@ -212,18 +218,23 @@
|
|
212
218
|
!(attrs.disabled || attrs.disabled === '')
|
213
219
|
);
|
214
220
|
});
|
215
|
-
const visibleValue = computed(
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
221
|
+
const visibleValue = computed({
|
222
|
+
get() {
|
223
|
+
if (
|
224
|
+
attrs.type === 'number' &&
|
225
|
+
attrs.value &&
|
226
|
+
props.unit &&
|
227
|
+
!focus.value &&
|
228
|
+
!hover.value
|
229
|
+
) {
|
230
|
+
return `${attrs.value} ${props.unit}`;
|
231
|
+
} else {
|
232
|
+
return attrs.value ?? '';
|
233
|
+
}
|
234
|
+
},
|
235
|
+
set(event) {
|
236
|
+
emit('input', event);
|
237
|
+
},
|
227
238
|
});
|
228
239
|
const type = computed(() => {
|
229
240
|
if (attrs.type === 'number' && !focus.value) {
|
@@ -3,7 +3,7 @@
|
|
3
3
|
vertical
|
4
4
|
:value="value"
|
5
5
|
@change="(newValue) => $emit('input', newValue)"
|
6
|
-
class="rounded-0"
|
6
|
+
class="rounded-0 pb-1"
|
7
7
|
>
|
8
8
|
<slot />
|
9
9
|
</v-stepper>
|
@@ -41,15 +41,15 @@
|
|
41
41
|
.v-stepper__label {
|
42
42
|
color: map-get($shades, 'black');
|
43
43
|
}
|
44
|
-
&--
|
45
|
-
background-color: rgba(34, 34, 34, 0.1);
|
44
|
+
&--complete {
|
46
45
|
.v-stepper__label {
|
47
|
-
color:
|
46
|
+
color: map-get($shades, 'black');
|
48
47
|
}
|
49
48
|
}
|
50
|
-
&--
|
49
|
+
&--active {
|
50
|
+
background-color: rgba(34, 34, 34, 0.1);
|
51
51
|
.v-stepper__label {
|
52
|
-
color:
|
52
|
+
color: var(--v-primary-base);
|
53
53
|
}
|
54
54
|
}
|
55
55
|
.v-stepper__step__step::before {
|
@@ -68,15 +68,15 @@
|
|
68
68
|
.v-stepper__label {
|
69
69
|
color: map-get($shades, 'white');
|
70
70
|
}
|
71
|
-
&--
|
72
|
-
background-color: rgba(255, 255, 255, 0.17);
|
71
|
+
&--complete {
|
73
72
|
.v-stepper__label {
|
74
|
-
color:
|
73
|
+
color: map-get($shades, 'white');
|
75
74
|
}
|
76
75
|
}
|
77
|
-
&--
|
76
|
+
&--active {
|
77
|
+
background-color: rgba(255, 255, 255, 0.17);
|
78
78
|
.v-stepper__label {
|
79
|
-
color:
|
79
|
+
color: var(--v-primary-base);
|
80
80
|
}
|
81
81
|
}
|
82
82
|
.v-stepper__step__step {
|
@@ -113,7 +113,6 @@
|
|
113
113
|
color: transparent;
|
114
114
|
position: relative;
|
115
115
|
margin-top: 1px;
|
116
|
-
margin-right: 5px;
|
117
116
|
&:before {
|
118
117
|
content: '\25cf';
|
119
118
|
font-size: 18px;
|
@@ -130,8 +129,8 @@
|
|
130
129
|
}
|
131
130
|
}
|
132
131
|
}
|
133
|
-
.v-stepper__content.v-stepper__wrapper {
|
134
|
-
margin: 4px 0;
|
132
|
+
.v-stepper__content .v-stepper__wrapper {
|
133
|
+
margin: 4px 0 4px 4px;
|
135
134
|
}
|
136
135
|
}
|
137
136
|
}
|
@@ -41,7 +41,6 @@
|
|
41
41
|
:actions="actions"
|
42
42
|
:block-overflow="true"
|
43
43
|
:overflow-count="actionButtonListOverflowCount"
|
44
|
-
small
|
45
44
|
/>
|
46
45
|
</v-list-item-content>
|
47
46
|
</v-list-item>
|
@@ -109,7 +108,6 @@
|
|
109
108
|
:actions="item.actions"
|
110
109
|
:block-overflow="true"
|
111
110
|
:overflow-count="actionButtonListOverflowCount"
|
112
|
-
small
|
113
111
|
/>
|
114
112
|
</v-list-item-action>
|
115
113
|
</v-list-item>
|
@@ -565,6 +563,9 @@
|
|
565
563
|
.v-icon {
|
566
564
|
font-size: 16px;
|
567
565
|
}
|
566
|
+
&:last-child {
|
567
|
+
min-width: auto;
|
568
|
+
}
|
568
569
|
}
|
569
570
|
.v-list-item__content {
|
570
571
|
flex-wrap: nowrap;
|
@@ -83,7 +83,7 @@
|
|
83
83
|
<v-row dense no-gutters justify="center" class="align-center">
|
84
84
|
<v-menu offset-y dense>
|
85
85
|
<template #activator="{ on, attrs }">
|
86
|
-
<VcsButton
|
86
|
+
<VcsButton color="primary" v-bind="attrs" v-on="on">
|
87
87
|
{{ itemsPerPageRef }}
|
88
88
|
<v-icon>mdi-chevron-down</v-icon>
|
89
89
|
</VcsButton>
|
@@ -107,7 +107,6 @@
|
|
107
107
|
{{ $t('components.vcsDataTable.ofItems') }} {{ numberOfItems }}
|
108
108
|
</span>
|
109
109
|
<VcsButton
|
110
|
-
small
|
111
110
|
icon="mdi-chevron-left"
|
112
111
|
@click="formerPage"
|
113
112
|
tooltip="components.vcsDataTable.formerPage"
|
@@ -115,7 +114,6 @@
|
|
115
114
|
class="ml-1"
|
116
115
|
/>
|
117
116
|
<VcsButton
|
118
|
-
small
|
119
117
|
icon="mdi-chevron-right"
|
120
118
|
@click="nextPage"
|
121
119
|
tooltip="components.vcsDataTable.nextPage"
|
@@ -375,7 +373,7 @@
|
|
375
373
|
}
|
376
374
|
}
|
377
375
|
|
378
|
-
.v-btn.vcs-button
|
376
|
+
.v-btn.vcs-button {
|
379
377
|
height: 100% !important;
|
380
378
|
display: block;
|
381
379
|
}
|
@@ -1,16 +1,22 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
2
|
+
<div>
|
3
|
+
<VcsTreeview
|
4
|
+
v-if="tree && tree.length"
|
5
|
+
:items="tree"
|
6
|
+
:open.sync="open"
|
7
|
+
:show-searchbar="true"
|
8
|
+
:searchbar-placeholder="'content.search.placeholder'"
|
9
|
+
item-children="visibleChildren"
|
10
|
+
/>
|
11
|
+
<v-sheet v-else class="ma-2">
|
12
|
+
{{ $t('content.empty') }}
|
13
|
+
</v-sheet>
|
14
|
+
</div>
|
10
15
|
</template>
|
11
16
|
|
12
17
|
<script>
|
13
18
|
import { inject } from 'vue';
|
19
|
+
import { VSheet } from 'vuetify/lib';
|
14
20
|
import VcsTreeview from '../components/lists/VcsTreeview.vue';
|
15
21
|
|
16
22
|
/**
|
@@ -19,7 +25,7 @@
|
|
19
25
|
*/
|
20
26
|
export default {
|
21
27
|
name: 'VcsLayerTree',
|
22
|
-
components: { VcsTreeview },
|
28
|
+
components: { VcsTreeview, VSheet },
|
23
29
|
props: {
|
24
30
|
windowState: {
|
25
31
|
type: Object,
|
@@ -7,6 +7,7 @@ import {
|
|
7
7
|
createStateRefAction,
|
8
8
|
StateActionState,
|
9
9
|
} from '../actions/stateRefAction.js';
|
10
|
+
import { executeCallbacks } from '../callback/vcsCallback.js';
|
10
11
|
|
11
12
|
/**
|
12
13
|
* @typedef {Object} ContentTreeItemOptions
|
@@ -17,6 +18,9 @@ import {
|
|
17
18
|
* @property {number} [weight] - optional weighting of the item. higher weights come first.
|
18
19
|
* @property {string} [infoUrl] - optional info url providing link with additional information.
|
19
20
|
* @property {boolean} [initOpen=false] - groups being initially open or not.
|
21
|
+
* @property {VcsCallbackOptions} [onClick] - optional callback actions executed on click
|
22
|
+
* @property {VcsCallbackOptions} [onActivate] - optional callback actions executed on activation of the item
|
23
|
+
* @property {VcsCallbackOptions} [onDeactivate] - optional callback actions executed on deactivation of the item
|
20
24
|
*/
|
21
25
|
|
22
26
|
/**
|
@@ -157,7 +161,21 @@ class ContentTreeItem {
|
|
157
161
|
* @type {boolean}
|
158
162
|
*/
|
159
163
|
this.initOpen = parseBoolean(options.initOpen, false);
|
160
|
-
|
164
|
+
/**
|
165
|
+
* @type {Array<VcsCallbackOptions>}
|
166
|
+
* @protected
|
167
|
+
*/
|
168
|
+
this._onClick = options.onClick ?? [];
|
169
|
+
/**
|
170
|
+
* @type {Array<VcsCallbackOptions>}
|
171
|
+
* @protected
|
172
|
+
*/
|
173
|
+
this._onActivate = options.onActivate ?? [];
|
174
|
+
/**
|
175
|
+
* @type {Array<VcsCallbackOptions>}
|
176
|
+
* @protected
|
177
|
+
*/
|
178
|
+
this._onDeactivate = options.onDeactivate ?? [];
|
161
179
|
/**
|
162
180
|
* @type {VcsEvent<number>}
|
163
181
|
*/
|
@@ -426,8 +444,9 @@ class ContentTreeItem {
|
|
426
444
|
* A callback called once the item is clicked.
|
427
445
|
* @returns {Promise<void>}
|
428
446
|
*/
|
429
|
-
|
430
|
-
|
447
|
+
async clicked() {
|
448
|
+
executeCallbacks(this._app, this._onClick);
|
449
|
+
}
|
431
450
|
|
432
451
|
/**
|
433
452
|
* Returns a readonly TreeViewItem used for rendering the current item.
|
@@ -9,11 +9,11 @@ import component from '../actions/styleSelector.vue';
|
|
9
9
|
import VcsObjectContentTreeItem from './vcsObjectContentTreeItem.js';
|
10
10
|
import { vcsAppSymbol } from '../pluginHelper.js';
|
11
11
|
import { contentTreeClassRegistry } from './contentTreeItem.js';
|
12
|
+
import { executeCallbacks } from '../callback/vcsCallback.js';
|
12
13
|
|
13
14
|
/**
|
14
15
|
* @typedef {ContentTreeItemOptions} LayerContentTreeItemOptions
|
15
16
|
* @property {string} layerName
|
16
|
-
* @property {Array<string>} layerNamesToDeactivate list of LayerNames which should be deactivated if the click activates the layer
|
17
17
|
*/
|
18
18
|
|
19
19
|
/**
|
@@ -86,14 +86,6 @@ class LayerContentTreeItem extends VcsObjectContentTreeItem {
|
|
86
86
|
*/
|
87
87
|
this._layerName = options.layerName;
|
88
88
|
|
89
|
-
/**
|
90
|
-
* @type {Array<string>}
|
91
|
-
* @private
|
92
|
-
*/
|
93
|
-
this._layerNamesToDeactivate = Array.isArray(options.layerNamesToDeactivate)
|
94
|
-
? options.layerNamesToDeactivate.slice()
|
95
|
-
: [];
|
96
|
-
|
97
89
|
/**
|
98
90
|
* @type {Array<Function>}
|
99
91
|
* @private
|
@@ -238,15 +230,14 @@ class LayerContentTreeItem extends VcsObjectContentTreeItem {
|
|
238
230
|
}
|
239
231
|
|
240
232
|
async clicked() {
|
233
|
+
await super.clicked();
|
241
234
|
if (this._layer) {
|
242
235
|
if (this.state === StateActionState.INACTIVE) {
|
243
236
|
await this._layer.activate();
|
244
|
-
this.
|
245
|
-
.map((n) => this._app.layers.getByKey(n))
|
246
|
-
.filter((l) => l)
|
247
|
-
.forEach((l) => l.deactivate());
|
237
|
+
executeCallbacks(this._app, this._onActivate);
|
248
238
|
} else {
|
249
239
|
this._layer.deactivate();
|
240
|
+
executeCallbacks(this._app, this._onDeactivate);
|
250
241
|
}
|
251
242
|
}
|
252
243
|
}
|
@@ -257,7 +248,6 @@ class LayerContentTreeItem extends VcsObjectContentTreeItem {
|
|
257
248
|
toJSON() {
|
258
249
|
const config = super.toJSON();
|
259
250
|
config.layerName = this._layerName;
|
260
|
-
config.layerNamesToDeactivate = this._layerNamesToDeactivate.slice();
|
261
251
|
return config;
|
262
252
|
}
|
263
253
|
|
@@ -6,11 +6,11 @@ import {
|
|
6
6
|
setViewpointAction,
|
7
7
|
} from './layerContentTreeItem.js';
|
8
8
|
import { StateActionState } from '../actions/stateRefAction.js';
|
9
|
+
import { executeCallbacks } from '../callback/vcsCallback.js';
|
9
10
|
|
10
11
|
/**
|
11
12
|
* @typedef {ContentTreeItemOptions} LayerGroupContentTreeItemOptions
|
12
13
|
* @property {Array<string>} layerNames list of LayerNames which should be activated on click
|
13
|
-
* @property {Array<string>} layerNamesToDeactivate list of LayerNames which should be deactivated on click if the click activates the layer in layerNames
|
14
14
|
* @property {string} [defaultViewpoint] - the name of an optional default viewpoint
|
15
15
|
*/
|
16
16
|
|
@@ -63,14 +63,6 @@ class LayerGroupContentTreeItem extends ContentTreeItem {
|
|
63
63
|
? options.layerNames.slice()
|
64
64
|
: [];
|
65
65
|
|
66
|
-
/**
|
67
|
-
* @type {Array<string>}
|
68
|
-
* @private
|
69
|
-
*/
|
70
|
-
this._layerNamesToDeactivate = Array.isArray(options.layerNamesToDeactivate)
|
71
|
-
? options.layerNamesToDeactivate.slice()
|
72
|
-
: [];
|
73
|
-
|
74
66
|
/**
|
75
67
|
* @type {Array<function():void>}
|
76
68
|
* @private
|
@@ -152,18 +144,17 @@ class LayerGroupContentTreeItem extends ContentTreeItem {
|
|
152
144
|
* @returns {Promise<void>}
|
153
145
|
*/
|
154
146
|
async clicked() {
|
147
|
+
await super.clicked();
|
155
148
|
const layers = this._layers;
|
156
149
|
const activate = layers.some((l) => !(l.active || l.loading));
|
157
150
|
if (activate) {
|
158
151
|
await Promise.all(layers.map((l) => l.activate()));
|
159
|
-
this.
|
160
|
-
.map((n) => this._app.layers.getByKey(n))
|
161
|
-
.filter((l) => l)
|
162
|
-
.forEach((l) => l.deactivate());
|
152
|
+
executeCallbacks(this._app, this._onActivate);
|
163
153
|
} else {
|
164
154
|
layers.forEach((l) => {
|
165
155
|
l.deactivate();
|
166
156
|
});
|
157
|
+
executeCallbacks(this._app, this._onDeactivate);
|
167
158
|
}
|
168
159
|
}
|
169
160
|
|
@@ -173,7 +164,6 @@ class LayerGroupContentTreeItem extends ContentTreeItem {
|
|
173
164
|
toJSON() {
|
174
165
|
const config = super.toJSON();
|
175
166
|
config.layerNames = this._layerNames.slice();
|
176
|
-
config.layerNamesToDeactivate = this._layerNamesToDeactivate.slice();
|
177
167
|
if (this._defaultViewpoint) {
|
178
168
|
config.defaultViewpoint = this._defaultViewpoint;
|
179
169
|
}
|
@@ -3,6 +3,7 @@ import VcsObjectContentTreeItem from './vcsObjectContentTreeItem.js';
|
|
3
3
|
import { setViewpointAction } from './layerContentTreeItem.js';
|
4
4
|
import { StateActionState } from '../actions/stateRefAction.js';
|
5
5
|
import { contentTreeClassRegistry } from './contentTreeItem.js';
|
6
|
+
import { executeCallbacks } from '../callback/vcsCallback.js';
|
6
7
|
|
7
8
|
/**
|
8
9
|
* @typedef {ContentTreeItemOptions} ObliqueCollectionContentTreeItemOptions
|
@@ -139,6 +140,7 @@ class ObliqueCollectionContentTreeItem extends VcsObjectContentTreeItem {
|
|
139
140
|
}
|
140
141
|
|
141
142
|
async clicked() {
|
143
|
+
await super.clicked();
|
142
144
|
if (
|
143
145
|
this.visible &&
|
144
146
|
this._collection &&
|
@@ -151,9 +153,11 @@ class ObliqueCollectionContentTreeItem extends VcsObjectContentTreeItem {
|
|
151
153
|
if (this.state === StateActionState.INACTIVE) {
|
152
154
|
this.state = StateActionState.LOADING;
|
153
155
|
await map.setCollection(this._collection, vp);
|
156
|
+
executeCallbacks(this._app, this._onActivate);
|
154
157
|
} else if (this.state === StateActionState.ACTIVE) {
|
155
158
|
this.state = StateActionState.INACTIVE;
|
156
159
|
await map.setCollection(defaultCollection, vp);
|
160
|
+
executeCallbacks(this._app, this._onDeactivate);
|
157
161
|
}
|
158
162
|
}
|
159
163
|
}
|
@@ -172,6 +172,21 @@ export function applyAttributeFilter(attributes, keys, result = {}) {
|
|
172
172
|
return result;
|
173
173
|
}
|
174
174
|
|
175
|
+
/**
|
176
|
+
* Filters all olcs attributes, not provided as keys
|
177
|
+
* @param {Object<string, *>} attributes
|
178
|
+
* @param {Array<string>} keys
|
179
|
+
* @returns {Object}
|
180
|
+
*/
|
181
|
+
export function applyOlcsAttributeFilter(attributes, keys = []) {
|
182
|
+
return Object.keys(attributes)
|
183
|
+
.filter((key) => keys.includes(key) || !/^olcs_/.test(key))
|
184
|
+
.reduce((obj, key) => {
|
185
|
+
obj[key] = attributes[key];
|
186
|
+
return obj;
|
187
|
+
}, {});
|
188
|
+
}
|
189
|
+
|
175
190
|
/**
|
176
191
|
* Abstract class to be extended by FeatureInfoView classes
|
177
192
|
* Subclasses must always provide a component and may overwrite class methods.
|
@@ -265,7 +280,7 @@ class AbstractFeatureInfoView extends VcsObject {
|
|
265
280
|
if (this.keyMapping) {
|
266
281
|
applyKeyMapping(attributes, this.keyMapping);
|
267
282
|
}
|
268
|
-
return attributes;
|
283
|
+
return applyOlcsAttributeFilter(attributes, this.attributeKeys);
|
269
284
|
}
|
270
285
|
|
271
286
|
/**
|
@@ -1,11 +1,8 @@
|
|
1
1
|
import {
|
2
2
|
EventType,
|
3
|
-
makeOverrideCollection,
|
4
3
|
Collection,
|
5
|
-
getObjectFromClassRegistry,
|
6
4
|
VcsEvent,
|
7
5
|
vcsLayerName,
|
8
|
-
OverrideClassRegistry,
|
9
6
|
ClassRegistry,
|
10
7
|
fromCesiumColor,
|
11
8
|
VectorLayer,
|
@@ -155,23 +152,49 @@ function setupFeatureInfoTool(app) {
|
|
155
152
|
},
|
156
153
|
};
|
157
154
|
|
158
|
-
|
159
|
-
|
155
|
+
function addFeatureInfoButton() {
|
156
|
+
if (app.uiConfig.getByKey('startingFeatureInfo')?.value !== false) {
|
157
|
+
action.callback();
|
158
|
+
}
|
159
|
+
app.toolboxManager.add(
|
160
|
+
{
|
161
|
+
id: 'featureInfo',
|
162
|
+
type: ToolboxType.SINGLE,
|
163
|
+
action,
|
164
|
+
},
|
165
|
+
vcsAppSymbol,
|
166
|
+
);
|
160
167
|
}
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
168
|
+
|
169
|
+
if ([...app.layers].some((l) => l.properties?.featureInfo)) {
|
170
|
+
addFeatureInfoButton();
|
171
|
+
}
|
172
|
+
|
173
|
+
const listeners = [
|
174
|
+
app.layers.added.addEventListener((layer) => {
|
175
|
+
if (
|
176
|
+
layer?.properties?.featureInfo &&
|
177
|
+
!app.toolboxManager.has('featureInfo')
|
178
|
+
) {
|
179
|
+
addFeatureInfoButton();
|
180
|
+
}
|
181
|
+
}),
|
182
|
+
app.layers.removed.addEventListener(() => {
|
183
|
+
if (
|
184
|
+
![...app.layers].some((l) => l.properties?.featureInfo) &&
|
185
|
+
app.toolboxManager.has('featureInfo')
|
186
|
+
) {
|
187
|
+
app.toolboxManager.remove('featureInfo');
|
188
|
+
}
|
189
|
+
}),
|
190
|
+
];
|
169
191
|
|
170
192
|
return () => {
|
171
193
|
if (session) {
|
172
194
|
session.stop();
|
173
195
|
}
|
174
196
|
app.toolboxManager.remove('featureInfo');
|
197
|
+
listeners.forEach((cb) => cb());
|
175
198
|
};
|
176
199
|
}
|
177
200
|
|
@@ -194,37 +217,22 @@ export const featureInfoViewSymbol = Symbol('featureInfoView');
|
|
194
217
|
|
195
218
|
/**
|
196
219
|
* @class FeatureInfo
|
197
|
-
* @description Provides registration of featureInfoClasses and stores featureInfoView instances
|
220
|
+
* @description Provides registration of featureInfoClasses and stores featureInfoView instances.
|
221
|
+
* @extends {Collection<AbstractFeatureInfoView>}
|
222
|
+
* @implements {import("@vcmap/core").OverrideCollectionInterface<AbstractFeatureInfoView>}
|
198
223
|
*/
|
199
|
-
class FeatureInfo {
|
224
|
+
class FeatureInfo extends Collection {
|
200
225
|
/**
|
201
226
|
* @param {VcsUiApp} app
|
202
227
|
*/
|
203
228
|
constructor(app) {
|
229
|
+
super();
|
230
|
+
|
204
231
|
/**
|
205
232
|
* @type {VcsUiApp}
|
206
233
|
* @private
|
207
234
|
*/
|
208
235
|
this._app = app;
|
209
|
-
/**
|
210
|
-
* @type {import("@vcmap/core").OverrideCollection<AbstractFeatureInfoView>}
|
211
|
-
* @private
|
212
|
-
*/
|
213
|
-
this._collection = makeOverrideCollection(
|
214
|
-
new Collection(),
|
215
|
-
() => this._app.dynamicModuleId,
|
216
|
-
null,
|
217
|
-
(config) =>
|
218
|
-
getObjectFromClassRegistry(this._featureInfoClassRegistry, config),
|
219
|
-
AbstractFeatureInfoView,
|
220
|
-
);
|
221
|
-
/**
|
222
|
-
* @type {OverrideClassRegistry<AbstractFeatureInfoView>}
|
223
|
-
* @private
|
224
|
-
*/
|
225
|
-
this._featureInfoClassRegistry = new OverrideClassRegistry(
|
226
|
-
featureInfoClassRegistry,
|
227
|
-
);
|
228
236
|
/**
|
229
237
|
* @type {function():void|null}
|
230
238
|
* @private
|
@@ -301,22 +309,6 @@ class FeatureInfo {
|
|
301
309
|
this._destroyFeatureInfoTool = setupFeatureInfoTool(this._app);
|
302
310
|
}
|
303
311
|
|
304
|
-
/**
|
305
|
-
* @type {import("@vcmap/core").OverrideCollection<AbstractFeatureInfoView>}
|
306
|
-
* @readonly
|
307
|
-
*/
|
308
|
-
get collection() {
|
309
|
-
return this._collection;
|
310
|
-
}
|
311
|
-
|
312
|
-
/**
|
313
|
-
* @type {OverrideClassRegistry<AbstractFeatureInfoView>}
|
314
|
-
* @readonly
|
315
|
-
*/
|
316
|
-
get classRegistry() {
|
317
|
-
return this._featureInfoClassRegistry;
|
318
|
-
}
|
319
|
-
|
320
312
|
/**
|
321
313
|
* @type {VcsEvent<null|FeatureType>}
|
322
314
|
* @readonly
|
@@ -379,13 +371,11 @@ class FeatureInfo {
|
|
379
371
|
);
|
380
372
|
return null;
|
381
373
|
}
|
382
|
-
if (!this.
|
374
|
+
if (!this.hasKey(name)) {
|
383
375
|
getLogger().warning(`No view with name '${name}' has been registered.`);
|
384
376
|
return null;
|
385
377
|
}
|
386
|
-
return /** @type {AbstractFeatureInfoView} */ this.
|
387
|
-
name,
|
388
|
-
);
|
378
|
+
return /** @type {AbstractFeatureInfoView} */ this.getByKey(name);
|
389
379
|
}
|
390
380
|
|
391
381
|
/**
|
@@ -502,6 +492,7 @@ class FeatureInfo {
|
|
502
492
|
* Destroys the feature info and all its events & listeners
|
503
493
|
*/
|
504
494
|
destroy() {
|
495
|
+
super.destroy();
|
505
496
|
this._clearInternal();
|
506
497
|
this._featureChanged.destroy();
|
507
498
|
this._destroyFeatureInfoTool();
|
@@ -511,8 +502,6 @@ class FeatureInfo {
|
|
511
502
|
}
|
512
503
|
this._listeners.forEach((cb) => cb());
|
513
504
|
this._listeners.splice(0);
|
514
|
-
this._collection.destroy();
|
515
|
-
this._featureInfoClassRegistry.destroy();
|
516
505
|
}
|
517
506
|
}
|
518
507
|
|