@vcmap/ui 5.0.0-rc.10 → 5.0.0-rc.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -5
- package/build/build.js +6 -3
- package/build/buildHelpers.js +12 -4
- package/build/buildPreview.js +7 -0
- package/build/getPluginProxies.js +4 -0
- package/config/aerowest.config.json +13 -3
- package/config/base.config.json +398 -219
- package/config/codes.config.json +397 -0
- package/config/dev.config.json +375 -1
- package/config/graphFeatureInfo.config.json +100 -0
- package/config/www.config.json +1232 -0
- package/dist/assets/{cesium.eb5667.js → cesium.21663e.js} +0 -0
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/core.63242d.js +4 -0
- package/dist/assets/core.js +1 -1
- package/dist/assets/font/OFL.txt +93 -0
- package/dist/assets/font/TitilliumWeb-Regular.woff2 +0 -0
- package/dist/assets/{index.4ccd4433.js → index.44b91cfe.js} +1 -1
- package/dist/assets/{ol.ef03b1.js → ol.88ba9d.js} +0 -0
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui.3c2933.css +1 -0
- package/dist/assets/ui.3c2933.js +71 -0
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.c897fc.js +9 -0
- package/dist/assets/vue.js +2 -1
- package/dist/assets/{vuetify.401a29.css → vuetify.147c3a.css} +1 -1
- package/dist/assets/{vuetify.401a29.js → vuetify.147c3a.js} +72 -72
- package/dist/assets/vuetify.js +2 -2
- package/dist/index.html +1 -5
- package/index.js +39 -5
- package/lib/vue.js +1 -0
- package/map.config.json +15 -6
- package/package.json +17 -8
- package/plugins/@vcmap/create-link/fallbackCreateLink.vue +71 -0
- package/plugins/@vcmap/create-link/index.js +83 -0
- package/plugins/@vcmap/create-link/package.json +6 -0
- package/plugins/@vcmap/pluginExample/index.js +2 -2
- package/plugins/@vcmap/pluginExample/pluginExampleComponent.vue +20 -3
- package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +1 -1
- package/plugins/@vcmap/project-selector/index.js +1 -1
- package/plugins/@vcmap/project-selector/package.json +1 -2
- package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +1 -1
- package/plugins/@vcmap/theme-changer/index.js +1 -1
- package/plugins/@vcmap/theme-changer/package.json +1 -2
- package/plugins/categoryTest/Categories.vue +89 -1
- package/plugins/categoryTest/Category.vue +1 -1
- package/plugins/example/index.js +10 -23
- package/plugins/simple-graph/README.md +51 -0
- package/plugins/simple-graph/SimpleGraphComponent.vue +70 -0
- package/plugins/simple-graph/index.js +17 -0
- package/plugins/simple-graph/package.json +11 -0
- package/plugins/simple-graph/simpleGraphView.js +76 -0
- package/plugins/test/editor.vue +1 -1
- package/plugins/test/index.js +76 -9
- package/plugins/test/toolbox-data.js +82 -57
- package/plugins/test/windowManagerExample.vue +1 -1
- package/src/actions/stateRefAction.js +2 -2
- package/src/actions/styleSelector.vue +1 -1
- package/src/application/Navbar.vue +13 -2
- package/src/application/VcsApp.vue +301 -116
- package/src/application/VcsMap.vue +1 -1
- package/src/application/VcsSettings.vue +1 -1
- package/src/application/vcsAppWrapper.vue +1 -0
- package/src/assets/font/OFL.txt +93 -0
- package/src/assets/font/TitilliumWeb-Regular.woff2 +0 -0
- package/src/components/form-inputs-controls/VcsCheckbox.vue +13 -0
- package/src/components/form-inputs-controls/VcsColorPicker.vue +1 -1
- package/src/components/form-inputs-controls/VcsRadio.vue +123 -0
- package/src/components/form-output/VcsFormattedNumber.vue +1 -1
- package/src/components/lists/VcsActionList.vue +22 -7
- package/src/components/lists/VcsTreeview.vue +4 -4
- package/src/components/lists/VcsTreeviewLeaf.vue +10 -3
- package/src/components/lists/VcsTreeviewSearchbar.vue +1 -2
- package/src/components/tables/VcsTable.vue +245 -0
- package/src/contentTree/LayerTree.vue +1 -1
- package/src/contentTree/contentTreeCollection.js +4 -4
- package/src/contentTree/contentTreeItem.js +9 -9
- package/src/contentTree/groupContentTreeItem.js +1 -1
- package/src/contentTree/layerContentTreeItem.js +15 -1
- package/src/contentTree/layerGroupContentTreeItem.js +21 -1
- package/src/contentTree/nodeContentTreeItem.js +1 -1
- package/src/featureInfo/AddressBalloonComponent.vue +47 -0
- package/src/featureInfo/BalloonComponent.vue +140 -0
- package/src/featureInfo/abstractFeatureInfoView.js +313 -0
- package/src/featureInfo/addressBalloonFeatureInfoView.js +118 -0
- package/src/featureInfo/balloonFeatureInfoView.js +151 -0
- package/src/featureInfo/balloonHelper.js +132 -0
- package/src/featureInfo/featureInfo.js +457 -0
- package/src/featureInfo/featureInfoInteraction.js +42 -0
- package/src/featureInfo/iframeFeatureInfoView.js +95 -0
- package/src/featureInfo/tableFeatureInfoView.js +106 -0
- package/src/i18n/de.js +26 -0
- package/src/i18n/en.js +26 -0
- package/src/i18n/i18nCollection.js +17 -0
- package/src/icons/+all.js +80 -0
- package/src/icons/ClippingHorizontalIcon.vue +7 -0
- package/src/icons/ClippingIcon.vue +7 -0
- package/src/icons/ClippingVerticalIcon.vue +7 -0
- package/src/icons/ColorPickerIcon.vue +7 -0
- package/src/icons/ComponentsIcon.vue +2 -2
- package/src/icons/DimensionsHouseIcon.vue +11 -9
- package/src/icons/EditIcon.vue +7 -0
- package/src/icons/GlobalTerrainIcon.vue +9 -0
- package/src/icons/GroundIcon.vue +18 -0
- package/src/icons/HideIcon.vue +12 -0
- package/src/icons/LogoutIcon.vue +7 -0
- package/src/icons/ObjectAttributeIcon.vue +2 -13
- package/src/icons/PedestrianIcon.vue +2 -3
- package/src/icons/PenIcon.vue +2 -9
- package/src/icons/PoiIcon.vue +5 -2
- package/src/icons/PointSelectIcon.vue +4 -2
- package/src/icons/QueryIcon.vue +6 -7
- package/src/icons/ScreenshotIcon.vue +16 -0
- package/src/icons/ShareIcon.vue +4 -16
- package/src/icons/SkipNextIcon.vue +3 -1
- package/src/icons/TerrainBoxIcon.vue +9 -0
- package/src/icons/ToolsIcon.vue +4 -30
- package/src/icons/UploadIcon.vue +2 -9
- package/src/icons/UserProfileIcon.vue +7 -0
- package/src/icons/UserShareIcon.vue +7 -0
- package/src/icons/VideoRecorderIcon.vue +5 -9
- package/src/icons/ViewpointFlightIcon.vue +11 -0
- package/src/icons/ViewpointIcon.vue +11 -0
- package/src/icons/Viewshed360Icon.vue +7 -0
- package/src/icons/ViewshedConeIcon.vue +7 -0
- package/src/icons/ViewshedIcon.vue +7 -0
- package/src/icons/WallIcon.vue +4 -9
- package/src/legend/legendHelper.js +193 -0
- package/src/legend/styleLegendItem.vue +129 -0
- package/src/legend/vcsLegend.vue +92 -0
- package/src/manager/buttonManager.js +7 -12
- package/src/manager/categoryManager/ComponentsManager.vue +30 -0
- package/src/manager/categoryManager/categoryManager.js +500 -0
- package/src/manager/contextMenu/contextMenuComponent.vue +43 -0
- package/src/manager/contextMenu/contextMenuInteraction.js +42 -0
- package/src/manager/contextMenu/contextMenuManager.js +197 -0
- package/src/manager/navbarManager.js +9 -9
- package/src/manager/toolbox/GroupToolboxComponent.vue +118 -0
- package/src/manager/toolbox/SelectToolboxComponent.vue +128 -0
- package/src/manager/toolbox/ToolboxManager.vue +116 -98
- package/src/manager/toolbox/toolboxManager.js +235 -86
- package/src/manager/window/WindowComponent.vue +1 -1
- package/src/manager/window/WindowManager.vue +5 -3
- package/src/manager/window/windowManager.js +118 -14
- package/src/navigation/mapNavigation.vue +3 -5
- package/src/navigation/overviewMap.js +28 -5
- package/src/navigation/vcsCompass.vue +1 -1
- package/src/pluginHelper.js +42 -10
- package/src/setup.js +0 -2
- package/src/state.js +256 -0
- package/src/styles/_theming.scss +0 -5
- package/src/styles/variables.scss +7 -0
- package/src/styles/vcsFont.scss +17 -0
- package/src/uiConfig.js +79 -0
- package/src/vcsUiApp.js +213 -22
- package/src/vuePlugins/vuetify.js +14 -4
- package/config/berlin.config.json +0 -510
- package/dist/assets/core.216494.js +0 -4
- package/dist/assets/ui.99a1a7.css +0 -1
- package/dist/assets/ui.99a1a7.js +0 -70
- package/dist/assets/vue-composition-api.c5aca1.js +0 -14
- package/dist/assets/vue-composition-api.js +0 -2
- package/dist/assets/vue.762edd.js +0 -9
- package/lib/vue-composition-api.js +0 -2
- package/src/manager/toolbox/ToolboxGroupComponent.vue +0 -128
package/README.md
CHANGED
@@ -94,6 +94,10 @@ how safe it is to start developing with these components.
|
|
94
94
|
- PluginConcept RC
|
95
95
|
- SEARCH API TODO
|
96
96
|
- I18n API RC [I18n](documentation/INTERNATIONALIZATION.md).
|
97
|
+
- Components API RC [Components](documentation/COMPONENTS.md).
|
98
|
+
- [Context Menu](documentation/CONTEXT_MENU.md) API RC
|
99
|
+
- [FeatureInfo](documentation/FeatureInfo.md) RC
|
100
|
+
- [State & Application Link](documentation/STATE.md) RC
|
97
101
|
|
98
102
|
##### components
|
99
103
|
- VcsTextField BETA
|
@@ -102,6 +106,7 @@ how safe it is to start developing with these components.
|
|
102
106
|
- VcsButton ALPHA
|
103
107
|
- VcsFormattedNumber BETA
|
104
108
|
- VcsLabel BETA
|
109
|
+
- VcsRadio BETA
|
105
110
|
- VcsTooltip ALPHA
|
106
111
|
- VcsActionButtonList ALPHA
|
107
112
|
- VcsActionList ALPHA
|
@@ -131,14 +136,15 @@ how safe it is to start developing with these components.
|
|
131
136
|
- Search API + UI Prio 2
|
132
137
|
- Overlay API Support Prio 3
|
133
138
|
- i18n DONE.
|
134
|
-
- FeatureInfo Concept/API (Balloon)
|
135
|
-
- Context API
|
139
|
+
- FeatureInfo Concept/API (Balloon) DONE
|
140
|
+
- Context API DONE
|
136
141
|
- Hierachy B3dm
|
137
|
-
- Legend Concept/API
|
142
|
+
- Legend Concept/API DONE
|
138
143
|
- Copyright/Attributions Concept / API Prio 2
|
139
|
-
- Ui Configuration (title/themes, usw, projectInfo/Impressum/usw. ) / API
|
144
|
+
- Ui Configuration (title/themes, usw, projectInfo/Impressum/usw. ) / API DONE
|
140
145
|
- Help Concept / Beispielhaft implementieren Prio 2
|
141
|
-
- Components Concept/Categories / API
|
146
|
+
- Components Concept/Categories / API DONE.
|
147
|
+
- Notification Concept Prio 2
|
142
148
|
|
143
149
|
### Plugins
|
144
150
|
- Drawing (WIP) Prio 1
|
@@ -164,6 +170,7 @@ how safe it is to start developing with these components.
|
|
164
170
|
- Walkmode Prio 4
|
165
171
|
- Search esri Prio 4
|
166
172
|
- Search WFS Prio 4
|
173
|
+
- Create Link DONE
|
167
174
|
|
168
175
|
# Getting started
|
169
176
|
For a first start, clone the repo and call `npm i` `npm run start` This will start a development server. The
|
package/build/build.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import path from 'path';
|
2
|
+
import fs from 'fs';
|
2
3
|
import { build } from 'vite';
|
3
4
|
import { v4 as uuid } from 'uuid';
|
4
5
|
import rollupPluginStripPragma from 'rollup-plugin-strip-pragma';
|
@@ -24,9 +25,6 @@ function hashLibraries() {
|
|
24
25
|
vue: {
|
25
26
|
entry: path.join('lib', 'vue.js'),
|
26
27
|
},
|
27
|
-
'@vue/composition-api': {
|
28
|
-
entry: path.join('lib', 'vue-composition-api.js'),
|
29
|
-
},
|
30
28
|
'@vcmap/cesium': {
|
31
29
|
entry: path.join('lib', 'cesium.js'),
|
32
30
|
rollupOptions: {
|
@@ -156,6 +154,11 @@ await Promise.all(Object.entries(libraryBuildOptions).map(async ([key, value]) =
|
|
156
154
|
},
|
157
155
|
};
|
158
156
|
await build(libraryEntryConfig);
|
157
|
+
await fs.promises.cp(
|
158
|
+
path.join('src', 'assets', 'font'),
|
159
|
+
path.join('dist', 'assets', 'font'),
|
160
|
+
{ recursive: true },
|
161
|
+
);
|
159
162
|
}));
|
160
163
|
|
161
164
|
await buildCesium();
|
package/build/buildHelpers.js
CHANGED
@@ -138,7 +138,6 @@ function loadCss(href) {
|
|
138
138
|
*/
|
139
139
|
export const libraries = {
|
140
140
|
vue: 'vue',
|
141
|
-
'@vue/composition-api': 'vue-composition-api',
|
142
141
|
'@vcmap/cesium': 'cesium',
|
143
142
|
ol: 'ol',
|
144
143
|
'@vcmap/core': 'core',
|
@@ -194,18 +193,27 @@ export async function buildPluginsForPreview(baseConfig = {}, minify = true) {
|
|
194
193
|
await buildLibrary(pluginConfig, `plugins/${plugin}`, 'index', '', true);
|
195
194
|
});
|
196
195
|
|
197
|
-
promises.push(...dependentPlugins.
|
196
|
+
promises.push(...dependentPlugins.flatMap((pluginName) => {
|
198
197
|
let scope = '';
|
199
198
|
let name = pluginName;
|
200
199
|
if (pluginName.startsWith('@')) {
|
201
200
|
[scope, name] = pluginName.split('/');
|
202
201
|
}
|
203
202
|
|
204
|
-
|
203
|
+
const copyPromises = [fs.promises.cp(
|
205
204
|
path.join(pluginsDirectory, 'node_modules', scope, name, 'dist'),
|
206
205
|
path.join(process.cwd(), 'dist', 'plugins', scope, name),
|
207
206
|
{ recursive: true },
|
208
|
-
);
|
207
|
+
)];
|
208
|
+
|
209
|
+
if (fs.existsSync(path.join(pluginsDirectory, 'node_modules', scope, name, 'plugin-assets'))) {
|
210
|
+
copyPromises.push(fs.promises.cp(
|
211
|
+
path.join(pluginsDirectory, 'node_modules', scope, name, 'plugin-assets'),
|
212
|
+
path.join(process.cwd(), 'dist', 'plugins', scope, name, 'plugin-assets'),
|
213
|
+
{ recursive: true },
|
214
|
+
));
|
215
|
+
}
|
216
|
+
return copyPromises;
|
209
217
|
}));
|
210
218
|
|
211
219
|
await Promise.all(promises);
|
package/build/buildPreview.js
CHANGED
@@ -20,6 +20,10 @@ export default async function getPluginProxies(target = 'http://localhost:8080',
|
|
20
20
|
rewrite: (route) => {
|
21
21
|
const rest = route.replace(new RegExp(`^/plugins/${plugin}/`), '');
|
22
22
|
const file = rest || 'index.js';
|
23
|
+
const pluginDir = path.posix.join(path.relative(root, pluginsDir), 'node_modules', plugin);
|
24
|
+
if (/plugin-assets\//.test(file)) {
|
25
|
+
return path.posix.join(pluginDir, file);
|
26
|
+
}
|
23
27
|
return path.posix.join(path.relative(root, pluginsDir), 'node_modules', plugin, production ? 'dist' : 'src', file);
|
24
28
|
},
|
25
29
|
};
|
@@ -55,7 +55,8 @@
|
|
55
55
|
"provider": "Fachbereich Geodaten und Verkehrsanlagen Osnabrück"
|
56
56
|
},
|
57
57
|
"properties": {
|
58
|
-
"title": "Gebäude"
|
58
|
+
"title": "Gebäude",
|
59
|
+
"featureInfo": "vcsContent"
|
59
60
|
}
|
60
61
|
},
|
61
62
|
{
|
@@ -166,7 +167,6 @@
|
|
166
167
|
"layers": "web",
|
167
168
|
"parameters": "format=image/png",
|
168
169
|
"maxLevel": 21,
|
169
|
-
"featureInfo": null,
|
170
170
|
"tilingSchema": "geographic",
|
171
171
|
"hiddenObjectIds": [],
|
172
172
|
"copyright": {
|
@@ -384,5 +384,15 @@
|
|
384
384
|
"collectionName": "Schrägluftbilder 2019"
|
385
385
|
}
|
386
386
|
],
|
387
|
-
"plugins": []
|
387
|
+
"plugins": [],
|
388
|
+
"uiConfig": [
|
389
|
+
{
|
390
|
+
"name": "primaryColor",
|
391
|
+
"value": "#232D52"
|
392
|
+
},
|
393
|
+
{
|
394
|
+
"name": "logo",
|
395
|
+
"value": "data:image/png;base64,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"
|
396
|
+
}
|
397
|
+
]
|
388
398
|
}
|