@vcmap/ui 6.0.0-rc.2 → 6.0.0-rc.5
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 +62 -19
- package/build/bundle.js +1 -1
- package/build/info/conf.json +1 -1
- package/build/info/publish.js +25 -31
- package/build/lintTypes.js +5 -0
- package/config/base.config.json +2 -1
- package/config/dev.config.json +7 -1
- package/config/projects.config.json +2 -1
- package/config/splashscreen.config.json +45 -0
- package/config/www.config.json +25 -22
- package/dist/.htaccess +7 -0
- package/dist/assets/@mdi/font/README.md +25 -0
- package/dist/assets/@mdi/font/css/materialdesignicons.min-680621ca.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.0b750d.js → cesium-126f111a.js} +272 -385
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core.cbf44a.js → core-1c8b8674.js} +2015 -2019
- package/dist/assets/core.js +1 -1
- package/dist/assets/{ol.86e93c.js → ol-27f9b3f3.js} +42521 -44394
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui-7214428e.css +1 -0
- package/dist/assets/{ui.7c276c.js → ui-7214428e.js} +13968 -13907
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue-c78a5f76.js +6083 -0
- package/dist/assets/vue.js +1 -1
- package/dist/assets/{vuetify.4d18fe.css → vuetify-88a2fabe.css} +2 -2
- package/dist/assets/{vuetify.4d18fe.js → vuetify-88a2fabe.js} +7793 -7940
- package/dist/assets/vuetify.js +1 -1
- package/dist/index.html +11 -10
- package/index.d.ts +11 -11
- package/index.html +5 -5
- package/index.js +9 -7
- package/lib/olLib.js +84 -23
- package/package.json +19 -19
- package/plugins/@vcmap-show-case/flight-component-example/src/FlightExample.vue +41 -1
- package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +71 -32
- 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/project-selector/src/ModulesListComponent.vue +18 -11
- package/plugins/@vcmap-show-case/search-example/src/index.js +1 -0
- package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +35 -5
- package/plugins/@vcmap-show-case/style-input-example/src/StyleExample.vue +29 -90
- package/plugins/@vcmap-show-case/toolbox-example/src/index.js +2 -1
- package/plugins/package.json +3 -23
- 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/StyleSelector.vue +1 -1
- package/src/actions/actionHelper.js +33 -22
- package/src/actions/flightActions.js +5 -5
- package/src/actions/listActions.d.ts +4 -11
- package/src/actions/listActions.js +6 -22
- package/src/actions/stateRefAction.js +2 -2
- package/src/application/VcsApp.vue +147 -57
- package/src/application/VcsApp.vue.d.ts +298 -4
- package/src/application/VcsAttributions.vue +2 -13
- package/src/application/VcsAttributionsFooter.vue +10 -11
- package/src/application/VcsContainer.vue +26 -9
- package/src/application/VcsContainer.vue.d.ts +237 -0
- package/src/application/VcsMainMap.vue +7 -7
- package/src/application/VcsMainMap.vue.d.ts +2 -2
- package/src/application/VcsNavbar.vue +5 -1
- 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 +21 -40
- 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 +23 -40
- package/src/components/buttons/VcsActionButtonList.vue +59 -3
- package/src/components/buttons/VcsActionButtonList.vue.d.ts +28 -0
- 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/VcsChipArrayInput.vue +15 -13
- package/src/components/form-inputs-controls/VcsChipArrayInput.vue.d.ts +3 -4
- package/src/components/form-inputs-controls/VcsCoordinate.vue +17 -4
- 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 +40 -31
- package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +5 -2
- package/src/components/form-inputs-controls/VcsSlider.vue +13 -1
- package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +1 -0
- package/src/components/form-inputs-controls/VcsTextArea.vue +27 -26
- package/src/components/form-inputs-controls/VcsTextArea.vue.d.ts +1 -0
- package/src/components/form-inputs-controls/VcsTextField.vue +20 -4
- package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +9 -0
- package/src/components/form-inputs-controls/VcsWizardStep.vue +3 -6
- package/src/components/form-inputs-controls/vcsTextField.scss +9 -12
- package/src/components/form-output/VcsFormattedNumber.vue +21 -5
- package/src/components/form-output/VcsFormattedNumber.vue.d.ts +9 -0
- package/src/components/form-output/VcsMarkdown.vue +15 -12
- package/src/components/form-output/VcsMarkdown.vue.d.ts +1 -0
- package/src/components/form-output/markdownHelper.d.ts +30 -0
- package/src/components/form-output/markdownHelper.js +398 -0
- package/src/components/import/VcsFileDrop.vue +8 -5
- package/src/components/import/VcsImportComponent.vue +4 -3
- package/src/components/import/VcsImportComponent.vue.d.ts +1 -2
- package/src/components/lists/VcsActionList.vue +11 -7
- package/src/components/lists/VcsList.vue +30 -52
- package/src/components/lists/VcsList.vue.d.ts +14 -59
- package/src/components/lists/{VcsListItem.vue → VcsListItemComponent.vue} +68 -22
- package/src/components/lists/VcsListItemComponent.vue.d.ts +69 -0
- package/src/components/lists/VcsTreeview.vue +43 -16
- package/src/components/lists/VcsTreeview.vue.d.ts +14 -3
- package/src/components/lists/VcsTreeviewLeaf.vue +15 -6
- package/src/components/lists/VcsTreeviewSearchbar.vue +2 -2
- package/src/components/notification/VcsHelp.vue +1 -1
- package/src/components/notification/VcsHelp.vue.d.ts +3 -2
- package/src/components/section/VcsExpansionPanel.vue +101 -0
- package/src/components/section/VcsExpansionPanel.vue.d.ts +19 -0
- package/src/components/{form-inputs-controls → section}/VcsFormSection.vue +10 -4
- package/src/components/{form-inputs-controls → section}/VcsFormSection.vue.d.ts +1 -2
- 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 +8 -19
- 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/tables/VcsDataTable.vue +28 -22
- package/src/components/tables/VcsTable.vue +45 -62
- package/src/components/tables/VcsTable.vue.d.ts +30 -17
- package/src/components/tables/VcsTableCell.vue +72 -0
- package/src/components/tables/VcsTableCell.vue.d.ts +13 -0
- package/src/components/vector-properties/VcsFeatureEditingWindow.vue +43 -9
- package/src/components/vector-properties/VcsFeatureTransforms.vue +5 -0
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +1 -1
- package/src/components/viewpoint/VcsViewpointComponent.vue +23 -10
- package/src/components/viewpoint/VcsViewpointEditor.vue +2 -1
- package/src/contentTree/LayerTree.vue +9 -27
- package/src/contentTree/LayerTree.vue.d.ts +1 -1
- package/src/contentTree/contentTreeCollection.d.ts +1 -0
- package/src/contentTree/contentTreeCollection.js +45 -11
- package/src/contentTree/contentTreeItem.d.ts +2 -2
- package/src/contentTree/contentTreeItem.js +7 -7
- package/src/featureInfo/BalloonComponent.vue +14 -15
- package/src/featureInfo/MarkdownBalloonComponent.vue +4 -2
- package/src/featureInfo/MarkdownBalloonComponent.vue.d.ts +2 -2
- package/src/featureInfo/abstractFeatureInfoView.d.ts +6 -0
- package/src/featureInfo/abstractFeatureInfoView.js +15 -7
- package/src/featureInfo/featureInfo.d.ts +5 -5
- package/src/featureInfo/featureInfo.js +59 -41
- package/src/featureInfo/iframeFeatureInfoView.d.ts +8 -2
- package/src/featureInfo/iframeFeatureInfoView.js +15 -5
- package/src/featureInfo/markdownBalloonFeatureInfoView.d.ts +1 -1
- package/src/featureInfo/markdownBalloonFeatureInfoView.js +5 -5
- package/src/featureInfo/markdownFeatureInfoView.d.ts +1 -1
- package/src/featureInfo/markdownFeatureInfoView.js +9 -11
- package/src/featureInfo/tableFeatureInfoView.js +13 -4
- 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 +11 -9
- package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +6 -4
- 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.d.ts +1 -1
- package/src/manager/collectionManager/collectionComponentClass.js +7 -10
- package/src/manager/collectionManager/collectionManager.js +10 -10
- package/src/manager/collectionManager/editorCollectionComponentClass.js +6 -5
- package/src/manager/contextMenu/contextMenuManager.js +2 -2
- package/src/manager/navbarManager.js +2 -2
- package/src/manager/panel/PanelComponent.vue +2 -9
- package/src/manager/panel/PanelManagerComponent.vue +7 -3
- package/src/manager/panel/panelHelper.js +3 -3
- package/src/manager/panel/panelManager.d.ts +9 -1
- package/src/manager/panel/panelManager.js +18 -6
- package/src/manager/toolbox/GroupToolboxComponent.vue +8 -4
- package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +1 -0
- package/src/manager/toolbox/SelectToolboxComponent.vue +7 -4
- package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +1 -0
- package/src/manager/toolbox/ToolboxManager.vue +9 -6
- package/src/manager/toolbox/ToolboxManager.vue.d.ts +1 -0
- package/src/manager/toolbox/toolboxManager.js +10 -10
- package/src/manager/window/WindowComponent.vue +12 -8
- package/src/manager/window/WindowComponentHeader.vue +29 -8
- package/src/manager/window/WindowComponentHeader.vue.d.ts +2 -0
- package/src/manager/window/WindowManager.vue +2 -2
- package/src/manager/window/windowManager.d.ts +2 -2
- package/src/manager/window/windowManager.js +4 -4
- package/src/navigation/MapNavigation.vue +20 -0
- package/src/navigation/locatorHelper.js +1 -1
- package/src/navigation/overviewMap.js +1 -1
- package/src/notifier/NotifierComponent.vue +18 -15
- package/src/search/ResultItem.vue +18 -6
- package/src/search/ResultsComponent.vue +31 -20
- package/src/search/ResultsComponent.vue.d.ts +2 -1
- package/src/search/SearchComponent.vue +8 -14
- package/src/search/SearchComponent.vue.d.ts +1 -0
- package/src/search/search.js +2 -2
- package/src/siteConfig.js +9 -9
- package/src/state.js +4 -4
- package/src/styles/_typography.scss +0 -2
- package/src/styles/main.scss +0 -4
- package/src/uiConfig.d.ts +300 -5
- package/src/uiConfig.js +28 -16
- package/src/vcsUiApp.d.ts +21 -17
- package/src/vcsUiApp.js +11 -10
- package/src/vuePlugins/vuetify.d.ts +2 -0
- package/src/vuePlugins/vuetify.js +14 -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/dist/assets/vue.a3cd64.js +0 -6096
- 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/src/application/markdownHelper.d.ts +0 -12
- package/src/application/markdownHelper.js +0 -70
- package/src/components/lists/VcsListItem.vue.d.ts +0 -21
- package/src/components/notification/VcsTooltip.vue +0 -156
- package/src/components/notification/VcsTooltip.vue.d.ts +0 -27
- package/src/featureInfo/MarkdownComponent.vue +0 -16
- package/src/featureInfo/MarkdownComponent.vue.d.ts +0 -7
- package/src/styles/_theming.scss +0 -73
- package/src/styles/settings.scss +0 -6
- package/src/styles/shades.scss +0 -4
- package/src/styles/variables.scss +0 -140
- package/src/styles/vcsFont.scss +0 -2
- package/src/styles/vcsGrid.scss +0 -3
- /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/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
@@ -5,9 +5,15 @@
|
|
5
5
|
:options="splashScreen"
|
6
6
|
v-model="splashScreenRef"
|
7
7
|
></VcsSplashScreen>
|
8
|
-
<VcsNavbar />
|
8
|
+
<VcsNavbar v-if="!config.hideHeader" />
|
9
9
|
<VcsContainer :attribution-action="attributionAction" />
|
10
|
-
<v-footer
|
10
|
+
<v-footer
|
11
|
+
v-if="showFooter"
|
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,18 +63,49 @@
|
|
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';
|
70
76
|
import VcsPositionDisplay from './VcsPositionDisplay.vue';
|
71
77
|
|
78
|
+
/**
|
79
|
+
* This helper checks the uiConfig and depending on the value will setup/teardown the providedSetupFunction
|
80
|
+
* @param {import("../vcsUiApp.js").default} app
|
81
|
+
* @param {(import("../vcsUiApp.js").default) => () => void} setupFunction
|
82
|
+
* @param {string} configOption parameter name of a uiConfig parameter, for example `app.uiConfig.config.hideContentTree`
|
83
|
+
* @returns {function():void} - cleanup function
|
84
|
+
*/
|
85
|
+
export function setupUIConfigDependency(app, setupFunction, configOption) {
|
86
|
+
let destroyFunction = null;
|
87
|
+
function handler() {
|
88
|
+
if (!app.uiConfig.config[configOption] && !destroyFunction) {
|
89
|
+
destroyFunction = setupFunction(app);
|
90
|
+
} else if (app.uiConfig.config[configOption] && destroyFunction) {
|
91
|
+
destroyFunction();
|
92
|
+
destroyFunction = null;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
handler();
|
96
|
+
const listeners = [
|
97
|
+
app.uiConfig.added.addEventListener(handler),
|
98
|
+
app.uiConfig.added.addEventListener(handler),
|
99
|
+
];
|
100
|
+
|
101
|
+
return () => {
|
102
|
+
if (destroyFunction) {
|
103
|
+
destroyFunction();
|
104
|
+
}
|
105
|
+
listeners.forEach((cb) => cb());
|
106
|
+
};
|
107
|
+
}
|
108
|
+
|
72
109
|
/**
|
73
110
|
* You should call this function in the component providing the vcsUiApp to your
|
74
111
|
* application in the components mounted hook. This will call VcsAppMounted on all plugins in the app
|
@@ -103,6 +140,7 @@
|
|
103
140
|
/**
|
104
141
|
* This helper function will add a map action button based on the default icons
|
105
142
|
* to the apps NavbarManager. Furthermore, all maps on the app are synced for adding and removing.
|
143
|
+
* The buttons can be removed with the uiConfig hideMapButtons
|
106
144
|
* @param {import("../vcsUiApp.js").default} app
|
107
145
|
* @returns {function():void}
|
108
146
|
*/
|
@@ -225,8 +263,11 @@
|
|
225
263
|
if (layersWithLegend < 1 && stylesWithLegend < 1) {
|
226
264
|
app.navbarManager.remove('legend');
|
227
265
|
app.windowManager.remove('legend');
|
266
|
+
} else {
|
267
|
+
addLegend();
|
228
268
|
}
|
229
269
|
};
|
270
|
+
handleLegend();
|
230
271
|
|
231
272
|
const listeners = [
|
232
273
|
app.layers.added.addEventListener((layer) => {
|
@@ -244,6 +285,8 @@
|
|
244
285
|
];
|
245
286
|
|
246
287
|
return () => {
|
288
|
+
app.navbarManager.remove('legend');
|
289
|
+
app.windowManager.remove('legend');
|
247
290
|
destroy();
|
248
291
|
legendDestroy();
|
249
292
|
listeners.forEach((cb) => cb());
|
@@ -257,7 +300,7 @@
|
|
257
300
|
*/
|
258
301
|
function setupCustomScreen(app) {
|
259
302
|
function setupCustomScreenAction() {
|
260
|
-
const { customScreen } = app.uiConfig.config
|
303
|
+
const { customScreen } = app.uiConfig.config;
|
261
304
|
const { action: customScreenAction, destroy: customScreenDestroy } =
|
262
305
|
createToggleAction(
|
263
306
|
{
|
@@ -267,7 +310,7 @@
|
|
267
310
|
},
|
268
311
|
{
|
269
312
|
id: 'customScreenId',
|
270
|
-
component:
|
313
|
+
component: VcsTextPage,
|
271
314
|
state: {
|
272
315
|
headerIcon: customScreen.icon,
|
273
316
|
headerTitle: customScreen.name,
|
@@ -295,7 +338,7 @@
|
|
295
338
|
}
|
296
339
|
let customScreen;
|
297
340
|
const stopCustomScreenWatcher = watch(
|
298
|
-
() => app.uiConfig.config.
|
341
|
+
() => app.uiConfig.config.customScreen,
|
299
342
|
(newCustomScreen) => {
|
300
343
|
if (app.navbarManager.has('customScreenToggle')) {
|
301
344
|
app.navbarManager.remove('customScreenToggle');
|
@@ -321,37 +364,51 @@
|
|
321
364
|
*/
|
322
365
|
function setupSplashScreen(app, splashScreenRef) {
|
323
366
|
function setupSplashScreenAction() {
|
324
|
-
const { splashScreen } = app.uiConfig.config
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
367
|
+
const { splashScreen } = app.uiConfig.config;
|
368
|
+
if (splashScreen) {
|
369
|
+
splashScreenRef.value = true;
|
370
|
+
}
|
371
|
+
if (splashScreen && splashScreen.menuEntry) {
|
372
|
+
const splashScreenAction = {
|
373
|
+
name: splashScreen.name || 'components.splashScreen.name',
|
374
|
+
icon: splashScreen.icon || 'mdi-alert-box',
|
375
|
+
title: splashScreen.title,
|
376
|
+
callback() {
|
377
|
+
splashScreenRef.value = !splashScreenRef.value;
|
378
|
+
},
|
379
|
+
};
|
380
|
+
app.navbarManager.add(
|
381
|
+
{
|
382
|
+
id: 'splashScreenToggle',
|
383
|
+
action: splashScreenAction,
|
384
|
+
},
|
385
|
+
vcsAppSymbol,
|
386
|
+
ButtonLocation.MENU,
|
387
|
+
);
|
388
|
+
}
|
341
389
|
}
|
342
|
-
|
343
|
-
|
344
|
-
(
|
345
|
-
(newSplashScreen) => {
|
390
|
+
setupSplashScreenAction();
|
391
|
+
const removeAddedListener = app.uiConfig.added.addEventListener((item) => {
|
392
|
+
if (item.name === 'splashScreen') {
|
346
393
|
if (app.navbarManager.has('splashScreenToggle')) {
|
347
394
|
app.navbarManager.remove('splashScreenToggle');
|
348
395
|
}
|
349
|
-
|
350
|
-
|
396
|
+
setupSplashScreenAction();
|
397
|
+
}
|
398
|
+
});
|
399
|
+
const removeRemovedListener = app.uiConfig.removed.addEventListener(
|
400
|
+
(item) => {
|
401
|
+
if (item.name === 'splashScreen') {
|
402
|
+
if (app.navbarManager.has('splashScreenToggle')) {
|
403
|
+
app.navbarManager.remove('splashScreenToggle');
|
404
|
+
}
|
351
405
|
}
|
352
406
|
},
|
353
|
-
{ immediate: true },
|
354
407
|
);
|
408
|
+
return () => {
|
409
|
+
removeAddedListener();
|
410
|
+
removeRemovedListener();
|
411
|
+
};
|
355
412
|
}
|
356
413
|
/**
|
357
414
|
* This helper function will add a settings action button to the apps NavbarManager MENU location.
|
@@ -359,6 +416,7 @@
|
|
359
416
|
* @returns {function():void}
|
360
417
|
*/
|
361
418
|
export function setupSettingsWindow(app) {
|
419
|
+
const settingsWindowId = 'vcsSettings';
|
362
420
|
const { action: settingsAction, destroy: settingsDestroy } =
|
363
421
|
createToggleAction(
|
364
422
|
{
|
@@ -367,7 +425,7 @@
|
|
367
425
|
title: 'settings.tooltip',
|
368
426
|
},
|
369
427
|
{
|
370
|
-
id:
|
428
|
+
id: settingsWindowId,
|
371
429
|
component: VcsSettings,
|
372
430
|
state: { headerIcon: 'mdi-cog', headerTitle: 'settings.title' },
|
373
431
|
slot: WindowSlot.DYNAMIC_RIGHT,
|
@@ -377,13 +435,15 @@
|
|
377
435
|
);
|
378
436
|
app.navbarManager.add(
|
379
437
|
{
|
380
|
-
id:
|
438
|
+
id: settingsWindowId,
|
381
439
|
action: settingsAction,
|
382
440
|
},
|
383
441
|
vcsAppSymbol,
|
384
442
|
ButtonLocation.MENU,
|
385
443
|
);
|
386
444
|
return () => {
|
445
|
+
app.navbarManager.remove(settingsWindowId);
|
446
|
+
app.windowManager.remove(settingsWindowId);
|
387
447
|
settingsDestroy();
|
388
448
|
};
|
389
449
|
}
|
@@ -411,6 +471,11 @@
|
|
411
471
|
);
|
412
472
|
}
|
413
473
|
|
474
|
+
/**
|
475
|
+
* @type {string}
|
476
|
+
*/
|
477
|
+
export const categoryManagerWindowId = 'category-manager';
|
478
|
+
|
414
479
|
/**
|
415
480
|
* This helper function will add a category manager button to the navbar. The category Manager
|
416
481
|
* will only be shown if there is at least one category under management in the categoryManager.
|
@@ -418,15 +483,14 @@
|
|
418
483
|
* @returns {function():void}
|
419
484
|
*/
|
420
485
|
export function setupCategoryManagerWindow(app) {
|
421
|
-
const id = 'category-manager';
|
422
486
|
const { action: categoryManagerAction, destroy } = createToggleAction(
|
423
487
|
{
|
424
|
-
name:
|
488
|
+
name: categoryManagerWindowId,
|
425
489
|
icon: '$vcsComponents',
|
426
490
|
title: 'categoryManager.tooltip',
|
427
491
|
},
|
428
492
|
{
|
429
|
-
id,
|
493
|
+
id: categoryManagerWindowId,
|
430
494
|
state: {
|
431
495
|
headerTitle: 'categoryManager.title',
|
432
496
|
headerIcon: '$vcsComponents',
|
@@ -452,9 +516,9 @@
|
|
452
516
|
* @param {import("../manager/collectionManager/collectionComponentClass.js").default} collectionComponent
|
453
517
|
*/
|
454
518
|
function handleAdded(collectionComponent) {
|
455
|
-
if (!app.navbarManager.has(
|
519
|
+
if (!app.navbarManager.has(categoryManagerWindowId)) {
|
456
520
|
app.navbarManager.add(
|
457
|
-
{ id, action: categoryManagerAction },
|
521
|
+
{ id: categoryManagerWindowId, action: categoryManagerAction },
|
458
522
|
vcsAppSymbol,
|
459
523
|
ButtonLocation.CONTENT,
|
460
524
|
);
|
@@ -463,7 +527,7 @@
|
|
463
527
|
collectionComponent.id,
|
464
528
|
collectionComponent.collection.added.addEventListener((item) => {
|
465
529
|
if (
|
466
|
-
!app.windowManager.has(
|
530
|
+
!app.windowManager.has(categoryManagerWindowId) &&
|
467
531
|
item[moduleIdSymbol] === app.dynamicModuleId
|
468
532
|
) {
|
469
533
|
categoryManagerAction.hasUpdate = true;
|
@@ -482,8 +546,8 @@
|
|
482
546
|
collectionListeners.delete(collectionComponent.id);
|
483
547
|
|
484
548
|
if (!app.categoryManager.componentIds.length) {
|
485
|
-
app.windowManager.remove(
|
486
|
-
app.navbarManager.remove(
|
549
|
+
app.windowManager.remove(categoryManagerWindowId);
|
550
|
+
app.navbarManager.remove(categoryManagerWindowId);
|
487
551
|
categoryManagerAction.hasUpdate = false;
|
488
552
|
}
|
489
553
|
}
|
@@ -500,13 +564,15 @@
|
|
500
564
|
|
501
565
|
const windowListener = app.windowManager.added.addEventListener(
|
502
566
|
(windowComponent) => {
|
503
|
-
if (windowComponent.id ===
|
567
|
+
if (windowComponent.id === categoryManagerWindowId) {
|
504
568
|
categoryManagerAction.hasUpdate = false;
|
505
569
|
}
|
506
570
|
},
|
507
571
|
);
|
508
572
|
|
509
573
|
return () => {
|
574
|
+
app.windowManager.remove(categoryManagerWindowId);
|
575
|
+
app.navbarManager.remove(categoryManagerWindowId);
|
510
576
|
destroy();
|
511
577
|
addedListener();
|
512
578
|
removedListener();
|
@@ -651,14 +717,30 @@
|
|
651
717
|
/** @type {import("../vcsUiApp.js").default} */
|
652
718
|
const app = getVcsAppById(props.appId);
|
653
719
|
provide('vcsApp', app);
|
654
|
-
const mapNavbarListener =
|
655
|
-
|
656
|
-
|
720
|
+
const mapNavbarListener = setupUIConfigDependency(
|
721
|
+
app,
|
722
|
+
setupMapNavbar,
|
723
|
+
'hideMapButtons',
|
724
|
+
);
|
725
|
+
const legendDestroy = setupUIConfigDependency(
|
726
|
+
app,
|
727
|
+
setupLegendWindow,
|
728
|
+
'hideLegend',
|
729
|
+
);
|
730
|
+
const settingsDestroy = setupUIConfigDependency(
|
731
|
+
app,
|
732
|
+
setupSettingsWindow,
|
733
|
+
'hideSettings',
|
734
|
+
);
|
657
735
|
const stopCustomScreen = setupCustomScreen(app);
|
658
736
|
const splashScreenRef = ref(true);
|
659
737
|
const stopSplashScreen = setupSplashScreen(app, splashScreenRef);
|
660
738
|
setupHelpButton(app);
|
661
|
-
const
|
739
|
+
const destroyMyWorkspace = setupUIConfigDependency(
|
740
|
+
app,
|
741
|
+
setupCategoryManagerWindow,
|
742
|
+
'hideMyWorkspace',
|
743
|
+
);
|
662
744
|
const destroyThemingListener = setupUiConfigTheming(app);
|
663
745
|
const destroyDisplayQualityListener = setupUiConfigDisplayQuality(app);
|
664
746
|
const { attributionEntries, attributionAction, destroyAttributions } =
|
@@ -678,45 +760,53 @@
|
|
678
760
|
settingsDestroy();
|
679
761
|
stopCustomScreen();
|
680
762
|
stopSplashScreen();
|
681
|
-
|
763
|
+
destroyMyWorkspace();
|
682
764
|
destroyThemingListener();
|
683
|
-
destroyAttributions();
|
684
765
|
destroyDisplayQualityListener();
|
766
|
+
destroyAttributions();
|
685
767
|
});
|
686
768
|
|
687
769
|
const { smAndUp } = useDisplay();
|
770
|
+
const fontSize = useFontSize();
|
771
|
+
const footerHeight = computed(() => {
|
772
|
+
return Math.ceil(fontSize.value * 1.65);
|
773
|
+
});
|
688
774
|
|
689
775
|
return {
|
690
|
-
|
776
|
+
config: app.uiConfig.config,
|
777
|
+
showFooter: computed(() => {
|
778
|
+
return !app.uiConfig.config.hideFooter && smAndUp.value;
|
779
|
+
}),
|
780
|
+
footerHeight,
|
691
781
|
mobileLogo: computed(
|
692
782
|
() =>
|
693
|
-
app.uiConfig.config.
|
694
|
-
app.uiConfig.config.
|
783
|
+
app.uiConfig.config.mobileLogo ??
|
784
|
+
app.uiConfig.config.logo ??
|
695
785
|
VcsDefaultLogoMobile,
|
696
786
|
),
|
697
787
|
imprint: computed(() => {
|
698
|
-
if (app.uiConfig.config.
|
788
|
+
if (app.uiConfig.config.imprint) {
|
699
789
|
return {
|
700
790
|
title: 'footer.imprint.title',
|
701
791
|
tooltip: 'footer.imprint.tooltip',
|
702
|
-
...app.uiConfig.config.
|
792
|
+
...app.uiConfig.config.imprint,
|
703
793
|
};
|
704
794
|
}
|
705
795
|
return undefined;
|
706
796
|
}),
|
707
797
|
dataProtection: computed(() => {
|
708
|
-
if (app.uiConfig.config.
|
798
|
+
if (app.uiConfig.config.dataProtection) {
|
709
799
|
return {
|
710
800
|
title: 'footer.dataProtection.title',
|
711
801
|
tooltip: 'footer.dataProtection.tooltip',
|
712
|
-
...app.uiConfig.config.
|
802
|
+
...app.uiConfig.config.dataProtection,
|
713
803
|
};
|
714
804
|
}
|
715
805
|
return undefined;
|
716
806
|
}),
|
717
807
|
splashScreenRef,
|
718
808
|
splashScreen: computed(() => {
|
719
|
-
if (app.uiConfig.config.
|
809
|
+
if (app.uiConfig.config.splashScreen) {
|
720
810
|
return {
|
721
811
|
title: 'components.splashScreen.name',
|
722
812
|
tooltip: 'components.splashScreen.tooltip',
|
@@ -724,7 +814,7 @@
|
|
724
814
|
width: '800px',
|
725
815
|
height: '400px',
|
726
816
|
},
|
727
|
-
...app.uiConfig.config.
|
817
|
+
...app.uiConfig.config.splashScreen,
|
728
818
|
};
|
729
819
|
}
|
730
820
|
return undefined;
|