@vcmap/ui 6.0.0-rc.2 → 6.0.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 +40 -60
- package/build/buildHelpers.js +2 -8
- package/build/info/conf.json +1 -1
- package/config/projects.config.json +2 -1
- package/config/splashscreen.config.json +45 -0
- package/dist/.htaccess +7 -0
- package/dist/assets/@mdi/font/README.md +25 -0
- package/dist/assets/@mdi/font/css/materialdesignicons.min-7a4f6be0.css +3 -0
- package/dist/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
- package/dist/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core.cbf44a.js → core-72f21835.js} +673 -641
- package/dist/assets/core.js +1 -1
- package/dist/assets/{ol.86e93c.js → ol-2d33bc8b.js} +42505 -44282
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui-2ab43a16.css +1 -0
- package/dist/assets/{ui.7c276c.js → ui-2ab43a16.js} +12026 -12100
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +1 -1
- package/dist/assets/{vuetify.4d18fe.css → vuetify-760ced3b.css} +1 -1
- package/dist/assets/{vuetify.4d18fe.js → vuetify-760ced3b.js} +5720 -5662
- package/dist/assets/vuetify.js +1 -1
- package/dist/index.html +11 -10
- package/index.d.ts +7 -5
- package/index.html +5 -5
- package/index.js +3 -3
- package/lib/olLib.js +84 -23
- package/package.json +5 -5
- package/plugins/@vcmap-show-case/flight-component-example/src/FlightExample.vue +41 -1
- package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +70 -30
- package/plugins/@vcmap-show-case/form-inputs-example/src/exampleActions.js +7 -11
- package/plugins/@vcmap-show-case/form-inputs-example/src/index.js +2 -2
- package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +21 -8
- package/plugins/@vcmap-show-case/style-input-example/src/StyleExample.vue +29 -90
- package/public/assets/@mdi/font/README.md +25 -0
- package/public/assets/@mdi/font/css/materialdesignicons.min.css +2 -2
- package/public/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
- package/public/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
- package/src/actions/actionHelper.js +20 -20
- package/src/actions/flightActions.js +5 -5
- package/src/actions/listActions.d.ts +0 -7
- package/src/actions/listActions.js +4 -20
- package/src/actions/stateRefAction.js +2 -2
- package/src/application/VcsApp.vue +52 -27
- package/src/application/VcsApp.vue.d.ts +1 -0
- package/src/application/VcsAttributions.vue +2 -13
- package/src/application/VcsAttributionsFooter.vue +10 -11
- package/src/application/VcsPositionDisplay.vue +8 -23
- package/src/application/VcsPositionDisplay.vue.d.ts +0 -1
- package/src/application/VcsSettings.vue +10 -17
- package/src/application/VcsSplashScreen.vue +25 -42
- package/src/application/VcsSplashScreen.vue.d.ts +0 -2
- package/src/application/VcsTextPage.vue +12 -43
- package/src/application/VcsTextPage.vue.d.ts +4 -8
- package/src/application/VcsTextPageFooter.vue +22 -40
- package/src/components/extent/VcsExtentEditor.vue +1 -1
- package/src/components/flight/VcsFlightAnchorsComponent.vue +63 -36
- package/src/components/flight/VcsFlightComponent.vue +16 -21
- package/src/components/flight/VcsFlightPlayer.vue +27 -5
- package/src/components/form-inputs-controls/VcsCheckbox.vue +9 -5
- package/src/components/form-inputs-controls/VcsCoordinate.vue +13 -1
- package/src/components/form-inputs-controls/VcsCoordinate.vue.d.ts +5 -2
- package/src/components/form-inputs-controls/VcsDatePicker.vue +34 -60
- package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +1 -63
- package/src/components/form-inputs-controls/VcsFileInput.vue +17 -18
- package/src/components/form-inputs-controls/VcsFileInput.vue.d.ts +1 -0
- package/src/components/form-inputs-controls/VcsLabel.vue +1 -1
- package/src/components/form-inputs-controls/VcsRadio.vue +17 -3
- package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +1 -0
- package/src/components/form-inputs-controls/VcsSelect.vue +39 -27
- package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +5 -2
- package/src/components/form-inputs-controls/VcsSlider.vue +14 -1
- package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +5 -2
- package/src/components/form-inputs-controls/VcsTextArea.vue +26 -22
- package/src/components/form-inputs-controls/VcsTextArea.vue.d.ts +1 -0
- package/src/components/form-inputs-controls/VcsTextField.vue +6 -4
- package/src/components/form-inputs-controls/VcsWizardStep.vue +1 -1
- package/src/components/form-inputs-controls/vcsTextField.scss +8 -8
- package/src/components/form-output/VcsFormattedNumber.vue +15 -1
- package/src/components/form-output/VcsFormattedNumber.vue.d.ts +9 -0
- package/src/components/lists/VcsActionList.vue +7 -7
- package/src/components/lists/VcsList.vue +10 -17
- package/src/components/lists/VcsList.vue.d.ts +3 -7
- package/src/components/lists/VcsListItem.vue +51 -21
- package/src/components/lists/VcsListItem.vue.d.ts +11 -5
- package/src/components/section/VcsExpansionPanel.vue +101 -0
- package/src/components/section/VcsExpansionPanel.vue.d.ts +19 -0
- package/src/components/style/MenuWrapper.vue +24 -26
- package/src/components/style/MenuWrapper.vue.d.ts +4 -4
- package/src/components/style/VcsFillMenu.vue +9 -16
- package/src/components/style/VcsFillMenu.vue.d.ts +0 -18
- package/src/components/style/VcsFillSelector.vue +13 -16
- package/src/components/style/VcsImageMenu.vue +8 -25
- package/src/components/style/VcsImageMenu.vue.d.ts +0 -27
- package/src/components/style/VcsImageSelector.vue +102 -167
- package/src/components/style/VcsImageSelector.vue.d.ts +15 -15
- package/src/components/style/VcsStrokeMenu.vue +8 -15
- package/src/components/style/VcsStrokeMenu.vue.d.ts +0 -18
- package/src/components/style/VcsStrokeSelector.vue +11 -18
- package/src/components/style/VcsTextMenu.vue +9 -12
- package/src/components/style/VcsTextMenu.vue.d.ts +0 -9
- package/src/components/style/VcsTextSelector.vue +79 -95
- package/src/components/style/VcsTextSelector.vue.d.ts +20 -22
- package/src/components/style/VcsVectorStyleComponent.vue +7 -18
- package/src/components/style/VcsVectorStyleComponent.vue.d.ts +1 -1
- package/src/components/style/composables.d.ts +0 -14
- package/src/components/style/composables.js +0 -49
- package/src/components/vector-properties/VcsFeatureEditingWindow.vue +39 -6
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +1 -1
- package/src/components/viewpoint/VcsViewpointComponent.vue +21 -8
- package/src/components/viewpoint/VcsViewpointEditor.vue +1 -0
- package/src/contentTree/contentTreeItem.d.ts +2 -2
- package/src/contentTree/contentTreeItem.js +7 -7
- package/src/featureInfo/featureInfo.js +8 -10
- package/src/init.d.ts +5 -38
- package/src/init.js +19 -18
- package/src/legend/StyleLegendItem.vue +4 -9
- package/src/legend/VcsLegend.vue +28 -54
- package/src/manager/buttonManager.js +4 -4
- package/src/manager/collectionManager/CollectionComponent.vue +17 -42
- package/src/manager/collectionManager/CollectionComponent.vue.d.ts +4 -2
- package/src/manager/collectionManager/CollectionComponentContent.vue +7 -6
- package/src/manager/collectionManager/CollectionComponentContent.vue.d.ts +3 -1
- package/src/manager/collectionManager/CollectionComponentList.vue +10 -8
- package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +4 -2
- package/src/manager/collectionManager/CollectionComponentProvider.vue +1 -1
- package/src/manager/collectionManager/CollectionComponentStandalone.vue +3 -2
- package/src/manager/collectionManager/CollectionManager.vue +1 -1
- package/src/manager/collectionManager/collectionComponentClass.js +6 -9
- package/src/manager/collectionManager/collectionManager.js +10 -10
- package/src/manager/collectionManager/editorCollectionComponentClass.js +4 -4
- package/src/manager/contextMenu/contextMenuManager.js +2 -2
- package/src/manager/navbarManager.js +2 -2
- package/src/manager/panel/panelManager.js +3 -3
- package/src/manager/toolbox/toolboxManager.js +10 -10
- package/src/manager/window/windowManager.d.ts +2 -2
- package/src/manager/window/windowManager.js +4 -4
- package/src/search/search.js +2 -2
- package/src/siteConfig.js +1 -1
- package/src/state.js +4 -4
- package/src/vcsUiApp.d.ts +14 -10
- package/src/vcsUiApp.js +1 -1
- package/src/vuePlugins/vuetify.d.ts +2 -0
- package/src/vuePlugins/vuetify.js +11 -0
- package/dist/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
- package/dist/assets/@mdi/font/css/materialdesignicons.min.e3f476.css +0 -3
- package/dist/assets/index-8eGauqjA.js +0 -1
- package/dist/assets/ui.7c276c.css +0 -1
- package/public/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
- package/src/application/VcsCustomScreen.vue +0 -45
- package/src/application/VcsCustomScreen.vue.d.ts +0 -15
- /package/dist/assets/{cesium.0b750d.js → cesium-cb4dbfba.js} +0 -0
- /package/dist/assets/{favicon-128.4c4ce5.png → favicon-128-4c4ce5df.png} +0 -0
- /package/dist/assets/{favicon-180.5b99c0.png → favicon-180-4c4ce5df.png} +0 -0
- /package/dist/assets/{favicon-192.0e205e.png → favicon-192-4c4ce5df.png} +0 -0
- /package/dist/assets/{favicon-32.6b9add.png → favicon-32-4c4ce5df.png} +0 -0
- /package/dist/assets/{favicon.d5ec97.svg → favicon-4c4ce5df.svg} +0 -0
- /package/dist/assets/font/{TitilliumWeb-Regular.9ca076.woff2 → TitilliumWeb-Regular-9ca076be.woff2} +0 -0
- /package/dist/assets/style/{icon-marker.70960f.png → icon-marker-70960f05.png} +0 -0
- /package/dist/assets/style/{icon-marker-blue.534e37.png → icon-marker-blue-534e374b.png} +0 -0
- /package/dist/assets/style/{icon-marker-green.0b6a92.png → icon-marker-green-0b6a92bc.png} +0 -0
- /package/dist/assets/style/{icon-marker-o.036477.png → icon-marker-o-036477fa.png} +0 -0
- /package/dist/assets/style/{icon-marker-o-blue.7b6d62.png → icon-marker-o-blue-7b6d6279.png} +0 -0
- /package/dist/assets/style/{icon-marker-o-green.c863c0.png → icon-marker-o-green-c863c0fa.png} +0 -0
- /package/dist/assets/style/{icon-marker-o-red.93ff58.png → icon-marker-o-red-93ff58df.png} +0 -0
- /package/dist/assets/style/{icon-marker-red.313d03.png → icon-marker-red-313d03e8.png} +0 -0
- /package/dist/assets/style/{icon-pin.b7ce77.png → icon-pin-b7ce771e.png} +0 -0
- /package/dist/assets/style/{icon-pin-blue.7be369.png → icon-pin-blue-7be369a3.png} +0 -0
- /package/dist/assets/style/{icon-pin-green.cbb935.png → icon-pin-green-cbb935fe.png} +0 -0
- /package/dist/assets/style/{icon-pin-red.3f25b2.png → icon-pin-red-3f25b245.png} +0 -0
- /package/dist/assets/{vue.a3cd64.js → vue-03b265aa.js} +0 -0
- /package/public/assets/{favicon-128.png → favicon-128-4c4ce5df.png} +0 -0
- /package/public/assets/{favicon-180.png → favicon-180-4c4ce5df.png} +0 -0
- /package/public/assets/{favicon-192.png → favicon-192-4c4ce5df.png} +0 -0
- /package/public/assets/{favicon-32.png → favicon-32-4c4ce5df.png} +0 -0
- /package/public/assets/{favicon.svg → favicon-4c4ce5df.svg} +0 -0
- /package/src/components/{form-inputs-controls → section}/VcsFormSection.vue +0 -0
- /package/src/components/{form-inputs-controls → section}/VcsFormSection.vue.d.ts +0 -0
Binary file
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { v4 as uuid } from 'uuid';
|
2
|
-
import { check,
|
2
|
+
import { check, maybe, oneOf, optional } from '@vcsuite/check';
|
3
3
|
import {
|
4
4
|
Collection,
|
5
5
|
Extent,
|
@@ -48,8 +48,8 @@ import SearchComponent from '../search/SearchComponent.vue';
|
|
48
48
|
*/
|
49
49
|
export function getActionFromOptions(options) {
|
50
50
|
check(options.name, String);
|
51
|
-
|
52
|
-
|
51
|
+
check(options.title, maybe(String));
|
52
|
+
check(options.icon, maybe(String));
|
53
53
|
check(options.callback, Function);
|
54
54
|
options.active = parseBoolean(options.active, false);
|
55
55
|
options.hasUpdate = parseBoolean(options.hasUpdate, false);
|
@@ -67,8 +67,8 @@ export function getActionFromOptions(options) {
|
|
67
67
|
export function createMapButtonAction(actionOptions, mapName, maps) {
|
68
68
|
check(actionOptions, {
|
69
69
|
name: String,
|
70
|
-
icon:
|
71
|
-
title:
|
70
|
+
icon: optional(String),
|
71
|
+
title: optional(String),
|
72
72
|
});
|
73
73
|
check(mapName, String);
|
74
74
|
check(maps, MapCollection);
|
@@ -104,12 +104,12 @@ export function createToggleAction(
|
|
104
104
|
) {
|
105
105
|
check(actionOptions, {
|
106
106
|
name: String,
|
107
|
-
icon:
|
108
|
-
title:
|
109
|
-
hasUpdate:
|
107
|
+
icon: optional(String),
|
108
|
+
title: optional(String),
|
109
|
+
hasUpdate: optional(Boolean),
|
110
110
|
});
|
111
111
|
check(windowComponent, { id: String });
|
112
|
-
check(owner,
|
112
|
+
check(owner, oneOf(String, vcsAppSymbol));
|
113
113
|
|
114
114
|
const action = reactive({
|
115
115
|
...actionOptions,
|
@@ -256,10 +256,10 @@ export function createOverviewMapAction(
|
|
256
256
|
export function createModalAction(actionOptions, modalComponent, app, owner) {
|
257
257
|
check(actionOptions, {
|
258
258
|
name: String,
|
259
|
-
icon:
|
260
|
-
title:
|
259
|
+
icon: optional(String),
|
260
|
+
title: optional(String),
|
261
261
|
});
|
262
|
-
check(owner,
|
262
|
+
check(owner, oneOf(String, vcsAppSymbol));
|
263
263
|
|
264
264
|
const id = uuid();
|
265
265
|
const { position: windowPositionOptions, ...component } = modalComponent;
|
@@ -334,10 +334,10 @@ export function createModalAction(actionOptions, modalComponent, app, owner) {
|
|
334
334
|
export function createLinkAction(actionOptions, url) {
|
335
335
|
check(actionOptions, {
|
336
336
|
name: String,
|
337
|
-
icon:
|
338
|
-
title:
|
337
|
+
icon: optional(String),
|
338
|
+
title: optional(String),
|
339
339
|
});
|
340
|
-
check(url,
|
340
|
+
check(url, oneOf(String, Function));
|
341
341
|
|
342
342
|
return {
|
343
343
|
...actionOptions,
|
@@ -369,10 +369,10 @@ export function createGoToViewpointAction(
|
|
369
369
|
) {
|
370
370
|
check(actionOptions, {
|
371
371
|
name: String,
|
372
|
-
icon:
|
373
|
-
title:
|
372
|
+
icon: optional(String),
|
373
|
+
title: optional(String),
|
374
374
|
});
|
375
|
-
check(viewpoint,
|
375
|
+
check(viewpoint, oneOf(Viewpoint, String));
|
376
376
|
check(viewpointCollection, Collection);
|
377
377
|
check(mapCollection, MapCollection);
|
378
378
|
|
@@ -422,8 +422,8 @@ export function createZoomToFeatureAction(
|
|
422
422
|
) {
|
423
423
|
check(actionOptions, {
|
424
424
|
name: String,
|
425
|
-
icon:
|
426
|
-
title:
|
425
|
+
icon: optional(String),
|
426
|
+
title: optional(String),
|
427
427
|
});
|
428
428
|
check(feature, Feature);
|
429
429
|
check(mapCollection, MapCollection);
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { reactive } from 'vue';
|
2
|
-
import { check,
|
2
|
+
import { check, maybe, ofEnum } from '@vcsuite/check';
|
3
3
|
import {
|
4
4
|
createFlightVisualization,
|
5
5
|
exportFlightAsGeoJson,
|
@@ -87,7 +87,7 @@ export const PlayerDirection = {
|
|
87
87
|
* @returns {{action: import("./actionHelper.js").VcsAction, destroy: () => void}}
|
88
88
|
*/
|
89
89
|
export function createStepAction(app, instance, direction) {
|
90
|
-
check(direction,
|
90
|
+
check(direction, ofEnum(PlayerDirection));
|
91
91
|
|
92
92
|
let player;
|
93
93
|
const action = reactive({
|
@@ -123,7 +123,7 @@ export function createStepAction(app, instance, direction) {
|
|
123
123
|
* @returns {{ action: import("./actionHelper.js").VcsAction & { listeners:Object<string,()=>void>, destroy: () => void }}}
|
124
124
|
*/
|
125
125
|
export function createFastAction(app, instance, direction) {
|
126
|
-
check(direction,
|
126
|
+
check(direction, ofEnum(PlayerDirection));
|
127
127
|
|
128
128
|
let player;
|
129
129
|
const sign = direction === PlayerDirection.Forward ? 1 : -1;
|
@@ -421,8 +421,8 @@ export function createExportFlightAction(instance, isPathExport = false) {
|
|
421
421
|
* @returns {Promise<boolean>}
|
422
422
|
*/
|
423
423
|
export async function importFlights(app, files, moduleId, importSuccessCb) {
|
424
|
-
|
425
|
-
|
424
|
+
check(moduleId, maybe(String));
|
425
|
+
check(importSuccessCb, maybe(Function));
|
426
426
|
|
427
427
|
const { vueI18n } = app;
|
428
428
|
const results = await Promise.all(
|
@@ -1,10 +1,3 @@
|
|
1
|
-
/**
|
2
|
-
* Creates an action for renaming an item in a VcsList. Shows VcsTextfield in VcsList.
|
3
|
-
* @param {import("../components/lists/VcsList.vue").VcsListItem} item
|
4
|
-
* @param {Partial<import("./actionHelper.js").ActionOptions>} [actionOptions={}]
|
5
|
-
* @returns {import("./actionHelper.js").VcsAction}
|
6
|
-
*/
|
7
|
-
export function createListItemRenameAction(item: import("../components/lists/VcsList.vue").VcsListItem, actionOptions?: Partial<import("./actionHelper.js").ActionOptions> | undefined): import("./actionHelper.js").VcsAction;
|
8
1
|
/**
|
9
2
|
* Creates an action for renaming an item in a VcsList.
|
10
3
|
* @param {import("@vcmap/core").Collection<T>} collection
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { reactive, watch } from 'vue';
|
2
|
-
import { check } from '@vcsuite/check';
|
2
|
+
import { check, oneOf, optional } from '@vcsuite/check';
|
3
3
|
import { getLogger } from '@vcsuite/logger';
|
4
4
|
import { parseGeoJSON } from '@vcmap/core';
|
5
5
|
import VcsImportComponent from '../components/import/VcsImportComponent.vue';
|
@@ -8,22 +8,6 @@ import { WindowSlot } from '../manager/window/windowManager.js';
|
|
8
8
|
import { vcsAppSymbol } from '../pluginHelper.js';
|
9
9
|
import { NotificationType } from '../notifier/notifier.js';
|
10
10
|
|
11
|
-
/**
|
12
|
-
* Creates an action for renaming an item in a VcsList. Shows VcsTextfield in VcsList.
|
13
|
-
* @param {import("../components/lists/VcsList.vue").VcsListItem} item
|
14
|
-
* @param {Partial<import("./actionHelper.js").ActionOptions>} [actionOptions={}]
|
15
|
-
* @returns {import("./actionHelper.js").VcsAction}
|
16
|
-
*/
|
17
|
-
export function createListItemRenameAction(item, actionOptions = {}) {
|
18
|
-
return {
|
19
|
-
name: 'list.renameItem',
|
20
|
-
...actionOptions,
|
21
|
-
callback: () => {
|
22
|
-
item.rename = true;
|
23
|
-
},
|
24
|
-
};
|
25
|
-
}
|
26
|
-
|
27
11
|
/**
|
28
12
|
* Creates an action for renaming an item in a VcsList.
|
29
13
|
* @param {import("@vcmap/core").Collection<T>} collection
|
@@ -57,8 +41,8 @@ export function createListItemDeleteAction(
|
|
57
41
|
export function createListItemBulkAction(selection, actionOptions) {
|
58
42
|
check(actionOptions, {
|
59
43
|
name: String,
|
60
|
-
icon:
|
61
|
-
title:
|
44
|
+
icon: optional(String),
|
45
|
+
title: optional(String),
|
62
46
|
callback: Function,
|
63
47
|
});
|
64
48
|
|
@@ -218,7 +202,7 @@ export function createListImportAction(
|
|
218
202
|
parentId,
|
219
203
|
) {
|
220
204
|
check(importCallback, Function);
|
221
|
-
check(owner,
|
205
|
+
check(owner, oneOf(String, vcsAppSymbol));
|
222
206
|
check(parentId, String);
|
223
207
|
|
224
208
|
const { action, destroy } = createToggleAction(
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { reactive, watch } from 'vue';
|
2
|
-
import { check } from '@vcsuite/check';
|
2
|
+
import { check, ofEnum } from '@vcsuite/check';
|
3
3
|
|
4
4
|
/**
|
5
5
|
* @enum {number}
|
@@ -28,7 +28,7 @@ const stateIconMap = {
|
|
28
28
|
*/
|
29
29
|
export function createStateRefAction(name, stateRef, callback) {
|
30
30
|
check(name, String);
|
31
|
-
check(stateRef?.value,
|
31
|
+
check(stateRef?.value, ofEnum(StateActionState));
|
32
32
|
check(callback, Function);
|
33
33
|
|
34
34
|
const currentState = stateRef.value;
|
@@ -7,7 +7,13 @@
|
|
7
7
|
></VcsSplashScreen>
|
8
8
|
<VcsNavbar />
|
9
9
|
<VcsContainer :attribution-action="attributionAction" />
|
10
|
-
<v-footer
|
10
|
+
<v-footer
|
11
|
+
v-if="smAndUp"
|
12
|
+
app
|
13
|
+
absolute
|
14
|
+
:height="footerHeight"
|
15
|
+
class="d-flex gc-1 pa-0"
|
16
|
+
>
|
11
17
|
<VcsPositionDisplay />
|
12
18
|
<VcsTextPageFooter
|
13
19
|
v-if="imprint"
|
@@ -57,13 +63,13 @@
|
|
57
63
|
import VcsSettings from './VcsSettings.vue';
|
58
64
|
import { WindowSlot } from '../manager/window/windowManager.js';
|
59
65
|
import CollectionManager from '../manager/collectionManager/CollectionManager.vue';
|
60
|
-
import { defaultPrimaryColor } from '../vuePlugins/vuetify.js';
|
66
|
+
import { defaultPrimaryColor, useFontSize } from '../vuePlugins/vuetify.js';
|
61
67
|
import VcsLegend from '../legend/VcsLegend.vue';
|
62
68
|
import { getLegendEntries } from '../legend/legendHelper.js';
|
63
69
|
import VcsAttributionsFooter from './VcsAttributionsFooter.vue';
|
64
70
|
import VcsTextPageFooter from './VcsTextPageFooter.vue';
|
65
71
|
import VcsSplashScreen from './VcsSplashScreen.vue';
|
66
|
-
import
|
72
|
+
import VcsTextPage from './VcsTextPage.vue';
|
67
73
|
import VcsAttributions from './VcsAttributions.vue';
|
68
74
|
import { getAttributions } from './attributionsHelper.js';
|
69
75
|
import VcsDefaultLogoMobile from '../logo-mobile.svg';
|
@@ -267,7 +273,7 @@
|
|
267
273
|
},
|
268
274
|
{
|
269
275
|
id: 'customScreenId',
|
270
|
-
component:
|
276
|
+
component: VcsTextPage,
|
271
277
|
state: {
|
272
278
|
headerIcon: customScreen.icon,
|
273
279
|
headerTitle: customScreen.name,
|
@@ -322,36 +328,50 @@
|
|
322
328
|
function setupSplashScreen(app, splashScreenRef) {
|
323
329
|
function setupSplashScreenAction() {
|
324
330
|
const { splashScreen } = app.uiConfig.config.value;
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
331
|
+
if (splashScreen) {
|
332
|
+
splashScreenRef.value = true;
|
333
|
+
}
|
334
|
+
if (splashScreen && splashScreen.menuEntry) {
|
335
|
+
const splashScreenAction = {
|
336
|
+
name: splashScreen.name || 'components.splashScreen.name',
|
337
|
+
icon: splashScreen.icon || 'mdi-alert-box',
|
338
|
+
title: splashScreen.title,
|
339
|
+
callback() {
|
340
|
+
splashScreenRef.value = !splashScreenRef.value;
|
341
|
+
},
|
342
|
+
};
|
343
|
+
app.navbarManager.add(
|
344
|
+
{
|
345
|
+
id: 'splashScreenToggle',
|
346
|
+
action: splashScreenAction,
|
347
|
+
},
|
348
|
+
vcsAppSymbol,
|
349
|
+
ButtonLocation.MENU,
|
350
|
+
);
|
351
|
+
}
|
341
352
|
}
|
342
|
-
|
343
|
-
|
344
|
-
(
|
345
|
-
(newSplashScreen) => {
|
353
|
+
setupSplashScreenAction();
|
354
|
+
const removeAddedListener = app.uiConfig.added.addEventListener((item) => {
|
355
|
+
if (item.name === 'splashScreen') {
|
346
356
|
if (app.navbarManager.has('splashScreenToggle')) {
|
347
357
|
app.navbarManager.remove('splashScreenToggle');
|
348
358
|
}
|
349
|
-
|
350
|
-
|
359
|
+
setupSplashScreenAction();
|
360
|
+
}
|
361
|
+
});
|
362
|
+
const removeRemovedListener = app.uiConfig.removed.addEventListener(
|
363
|
+
(item) => {
|
364
|
+
if (item.name === 'splashScreen') {
|
365
|
+
if (app.navbarManager.has('splashScreenToggle')) {
|
366
|
+
app.navbarManager.remove('splashScreenToggle');
|
367
|
+
}
|
351
368
|
}
|
352
369
|
},
|
353
|
-
{ immediate: true },
|
354
370
|
);
|
371
|
+
return () => {
|
372
|
+
removeAddedListener();
|
373
|
+
removeRemovedListener();
|
374
|
+
};
|
355
375
|
}
|
356
376
|
/**
|
357
377
|
* This helper function will add a settings action button to the apps NavbarManager MENU location.
|
@@ -685,9 +705,14 @@
|
|
685
705
|
});
|
686
706
|
|
687
707
|
const { smAndUp } = useDisplay();
|
708
|
+
const fontSize = useFontSize();
|
709
|
+
const footerHeight = computed(() => {
|
710
|
+
return Math.ceil(fontSize.value * 1.65);
|
711
|
+
});
|
688
712
|
|
689
713
|
return {
|
690
714
|
smAndUp,
|
715
|
+
footerHeight,
|
691
716
|
mobileLogo: computed(
|
692
717
|
() =>
|
693
718
|
app.uiConfig.config.value.mobileLogo ??
|
@@ -72,6 +72,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
72
72
|
};
|
73
73
|
}, {
|
74
74
|
smAndUp: import("vue").Ref<boolean>;
|
75
|
+
footerHeight: import("vue").ComputedRef<number>;
|
75
76
|
mobileLogo: import("vue").ComputedRef<any>;
|
76
77
|
imprint: import("vue").ComputedRef<{
|
77
78
|
title: string;
|
@@ -25,21 +25,10 @@
|
|
25
25
|
</template>
|
26
26
|
|
27
27
|
<style lang="scss" scoped>
|
28
|
-
@import '../styles/shades.scss';
|
29
|
-
|
30
|
-
.theme--light {
|
31
|
-
a {
|
32
|
-
color: map-get($shades, 'black');
|
33
|
-
}
|
34
|
-
}
|
35
|
-
.theme--dark {
|
36
|
-
a {
|
37
|
-
color: map-get($shades, 'white');
|
38
|
-
}
|
39
|
-
}
|
40
28
|
a {
|
29
|
+
color: var(--v-theme-surface);
|
41
30
|
&:hover {
|
42
|
-
color: var(--v-primary
|
31
|
+
color: rgb(var(--v-theme-primary));
|
43
32
|
}
|
44
33
|
&:before {
|
45
34
|
content: '\00a9';
|
@@ -2,11 +2,11 @@
|
|
2
2
|
<span class="d-inline-block text-truncate mr-10">
|
3
3
|
<span
|
4
4
|
v-for="attribution in mergedAttributions"
|
5
|
-
class="attribution
|
5
|
+
class="attribution"
|
6
6
|
:key="attribution.provider"
|
7
7
|
>
|
8
|
-
<a :href="attribution.url" target="_blank"
|
9
|
-
|
8
|
+
<a :href="attribution.url" target="_blank">
|
9
|
+
{{ $st(attribution.provider) }} <span>{{ attribution.years }}</span>
|
10
10
|
</a>
|
11
11
|
</span>
|
12
12
|
<VcsButton
|
@@ -21,14 +21,7 @@
|
|
21
21
|
</template>
|
22
22
|
|
23
23
|
<style lang="scss" scoped>
|
24
|
-
.attribution
|
25
|
-
bottom: 3px;
|
26
|
-
}
|
27
|
-
|
28
|
-
a:before {
|
29
|
-
content: '\00a9\00a0';
|
30
|
-
}
|
31
|
-
.attribution-span {
|
24
|
+
.attribution {
|
32
25
|
font-size: smaller;
|
33
26
|
&:before {
|
34
27
|
content: '\00a0\007c\00a0';
|
@@ -39,6 +32,12 @@
|
|
39
32
|
span {
|
40
33
|
font-size: inherit;
|
41
34
|
}
|
35
|
+
a {
|
36
|
+
color: var(--v-text-color);
|
37
|
+
&:before {
|
38
|
+
content: '\00a9\00a0';
|
39
|
+
}
|
40
|
+
}
|
42
41
|
}
|
43
42
|
</style>
|
44
43
|
|
@@ -1,13 +1,13 @@
|
|
1
1
|
<template>
|
2
2
|
<span
|
3
|
-
class="d-flex gc-
|
3
|
+
class="d-flex gc-2 px-1 h-100 align-center"
|
4
4
|
:class="{ 'vcs-position-display': positionDisplayAction.active }"
|
5
5
|
>
|
6
6
|
<VcsButton
|
7
7
|
:tooltip="positionDisplayAction.title"
|
8
8
|
:icon="positionDisplayAction.icon"
|
9
9
|
@click.stop="positionDisplayAction.callback($event)"
|
10
|
-
:
|
10
|
+
:class="{ 'bg-primary': positionDisplayAction.active }"
|
11
11
|
>
|
12
12
|
</VcsButton>
|
13
13
|
<template
|
@@ -17,17 +17,20 @@
|
|
17
17
|
prefix="x:"
|
18
18
|
:model-value="transformedPosition[0]"
|
19
19
|
:fraction-digits="fractionDigits"
|
20
|
+
class="pa-0"
|
20
21
|
/>
|
21
22
|
<VcsFormattedNumber
|
22
23
|
no-padding
|
23
24
|
prefix="y:"
|
24
25
|
:model-value="transformedPosition[1]"
|
25
26
|
:fraction-digits="fractionDigits"
|
27
|
+
class="pa-0"
|
26
28
|
/>
|
27
29
|
<VcsFormattedNumber
|
28
30
|
v-if="transformedPosition[2]"
|
29
31
|
prefix="z:"
|
30
32
|
:model-value="transformedPosition[2]"
|
33
|
+
class="pa-0"
|
31
34
|
/>
|
32
35
|
</template>
|
33
36
|
<v-menu v-if="positionDisplayAction.active">
|
@@ -36,10 +39,10 @@
|
|
36
39
|
v-bind="props"
|
37
40
|
tooltip="footer.positionDisplay.projection"
|
38
41
|
icon="mdi-chevron-down"
|
39
|
-
|
42
|
+
class="bg-primary"
|
40
43
|
/>
|
41
44
|
</template>
|
42
|
-
<v-list selectable
|
45
|
+
<v-list selectable v-model:selected="selectedEPSG">
|
43
46
|
<v-list-item v-for="(item, i) in items" :key="i" :value="item.value">
|
44
47
|
<v-list-item-title>{{ $st(item.text) }}</v-list-item-title>
|
45
48
|
</v-list-item>
|
@@ -49,22 +52,10 @@
|
|
49
52
|
</template>
|
50
53
|
|
51
54
|
<style lang="scss" scoped>
|
52
|
-
@import '../styles/shades.scss';
|
53
|
-
|
54
55
|
.vcs-position-display {
|
55
|
-
height: 22px;
|
56
56
|
background-color: rgb(var(--v-theme-primary));
|
57
57
|
span {
|
58
|
-
color:
|
59
|
-
}
|
60
|
-
|
61
|
-
:deep(.vcs-formatted-number),
|
62
|
-
:deep(.vcs-formatted-number span) {
|
63
|
-
font-size: unset;
|
64
|
-
line-height: unset;
|
65
|
-
}
|
66
|
-
:deep(.vcs-formatted-number-dense) {
|
67
|
-
line-height: unset;
|
58
|
+
color: rgb(var(--v-theme-on-primary));
|
68
59
|
}
|
69
60
|
}
|
70
61
|
</style>
|
@@ -89,7 +80,6 @@
|
|
89
80
|
|
90
81
|
/**
|
91
82
|
* @description Activates an interaction to display the mouse click or mouse move position, depending on the uiConfig property 'positionDisplayEventType'
|
92
|
-
* @vue-computed {string[]} customClasses - changes button color depending on state
|
93
83
|
* @vue-computed {import("ol").Coordinate} transformedPosition - position in selected projection
|
94
84
|
* @vue-computed {number} fractionDigits - number of digits depending on selected projection
|
95
85
|
*/
|
@@ -174,10 +164,6 @@
|
|
174
164
|
},
|
175
165
|
});
|
176
166
|
|
177
|
-
const customClasses = computed(() => {
|
178
|
-
return positionDisplayAction.active ? ['primary'] : [];
|
179
|
-
});
|
180
|
-
|
181
167
|
const transformedPosition = computed(() => {
|
182
168
|
if (position.value.length > 0) {
|
183
169
|
return mercatorProjection.transformTo(
|
@@ -198,7 +184,6 @@
|
|
198
184
|
fractionDigits,
|
199
185
|
selectedEPSG,
|
200
186
|
items,
|
201
|
-
customClasses,
|
202
187
|
};
|
203
188
|
},
|
204
189
|
};
|
@@ -13,6 +13,5 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
13
13
|
text: any;
|
14
14
|
value: string;
|
15
15
|
}[]>;
|
16
|
-
customClasses: import("vue").ComputedRef<string[]>;
|
17
16
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
|
18
17
|
export default _default;
|
@@ -19,20 +19,18 @@
|
|
19
19
|
{{ $t('settings.displayQuality.title') }}
|
20
20
|
</VcsLabel>
|
21
21
|
</v-row>
|
22
|
-
<v-row v-if="is3D" no-gutters
|
22
|
+
<v-row v-if="is3D" no-gutters>
|
23
23
|
<VcsSlider
|
24
|
-
step="1"
|
24
|
+
:step="1"
|
25
25
|
v-model="displaySettings"
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
ticks="
|
30
|
-
|
31
|
-
|
32
|
-
$t('settings.displayQuality.level.
|
33
|
-
|
34
|
-
$t('settings.displayQuality.level.high'),
|
35
|
-
]"
|
26
|
+
:max="2"
|
27
|
+
:min="0"
|
28
|
+
show-ticks="always"
|
29
|
+
:ticks="{
|
30
|
+
0: $t('settings.displayQuality.level.low'),
|
31
|
+
1: $t('settings.displayQuality.level.medium'),
|
32
|
+
2: $t('settings.displayQuality.level.high'),
|
33
|
+
}"
|
36
34
|
/>
|
37
35
|
</v-row>
|
38
36
|
<v-row no-gutters>
|
@@ -170,8 +168,3 @@
|
|
170
168
|
},
|
171
169
|
};
|
172
170
|
</script>
|
173
|
-
<style scoped>
|
174
|
-
.quality-slider-padding {
|
175
|
-
padding-bottom: 20px !important;
|
176
|
-
}
|
177
|
-
</style>
|