@vcmap/ui 5.0.0-rc.22 → 5.0.0-rc.23
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 +2 -2
- package/app.config.json +5 -0
- package/build/buildPreview.js +2 -2
- package/config/aerowest.config.json +2 -0
- package/config/base.config.json +1 -0
- package/config/codes.config.json +2 -0
- package/config/dev.config.json +6 -0
- package/config/graphFeatureInfo.config.json +3 -1
- package/config/projects.config.json +27 -0
- package/config/www.config.json +2 -0
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core.a66593.js → core.9342a1.js} +7804 -5352
- package/dist/assets/core.js +1 -1
- package/dist/assets/index.fd041928.js +1 -0
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui.c27597.css +5 -0
- package/dist/assets/{ui.d760e4.js → ui.c27597.js} +5055 -4694
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +2 -2
- package/dist/assets/{vuetify.427322.js → vuetify.2f1432.js} +1 -1
- package/dist/assets/vuetify.js +2 -2
- package/dist/index.html +1 -1
- package/index.js +5 -2
- package/package.json +3 -3
- package/plugins/@vcmap/project-selector/{ContextsListComponent.vue → ModulesListComponent.vue} +10 -10
- package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +15 -15
- package/plugins/@vcmap/project-selector/README.md +15 -21
- package/plugins/@vcmap/project-selector/config.json +3 -3
- package/plugins/@vcmap/project-selector/de.json +3 -0
- package/plugins/@vcmap/project-selector/en.json +3 -0
- package/plugins/@vcmap/project-selector/index.js +76 -101
- package/plugins/@vcmap/simple-graph/index.js +1 -1
- package/plugins/@vcmap-show-case/category-tester/Categories.vue +2 -2
- package/plugins/@vcmap-show-case/category-tester/Category.vue +1 -4
- package/plugins/@vcmap-show-case/config-editor/editor.vue +14 -14
- package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +18 -1
- package/plugins/@vcmap-show-case/form-inputs-example/index.js +1 -0
- package/plugins/@vcmap-show-case/table-example/DataTableExample.vue +202 -0
- package/plugins/@vcmap-show-case/table-example/README.md +3 -0
- package/plugins/@vcmap-show-case/table-example/index.js +47 -0
- package/plugins/@vcmap-show-case/table-example/package.json +5 -0
- package/src/actions/actionHelper.js +16 -27
- package/src/actions/styleSelector.vue +26 -19
- package/src/components/form-inputs-controls/VcsDatePicker.vue +111 -0
- package/src/components/form-inputs-controls/VcsTextField.vue +18 -7
- package/src/components/form-inputs-controls/VcsWizard.vue +3 -1
- package/src/components/icons/CheckboxCheckedIcon.vue +1 -1
- package/src/components/icons/LegendIcon.vue +10 -60
- package/src/components/lists/VcsList.vue +25 -6
- package/src/components/tables/VcsDataTable.vue +386 -0
- package/src/components/tables/VcsTable.vue +33 -278
- package/src/contentTree/contentTreeCollection.js +1 -1
- package/src/contentTree/layerContentTreeItem.js +3 -0
- package/src/downloadHelper.js +49 -0
- package/src/featureInfo/BalloonComponent.vue +9 -8
- package/src/featureInfo/abstractFeatureInfoView.js +1 -1
- package/src/featureInfo/featureInfo.js +3 -3
- package/src/i18n/de.js +8 -0
- package/src/i18n/en.js +8 -0
- package/src/i18n/i18nCollection.js +22 -22
- package/src/init.js +90 -7
- package/src/manager/categoryManager/CategoryComponent.vue +56 -47
- package/src/manager/categoryManager/CategoryManager.vue +23 -10
- package/src/manager/categoryManager/categoryManager.js +11 -11
- package/src/manager/navbarManager.js +18 -0
- package/src/manager/window/WindowComponent.vue +10 -15
- package/src/manager/window/WindowComponentHeader.vue +4 -2
- package/src/manager/window/WindowManager.vue +14 -15
- package/src/manager/window/windowHelper.js +1 -1
- package/src/manager/window/windowManager.js +18 -7
- package/src/navigation/mapNavCompass.vue +1 -1
- package/src/navigation/mapNavigation.vue +6 -6
- package/src/navigation/obliqueRotation.vue +36 -13
- package/src/navigation/orientationToolsButton.vue +0 -1
- package/src/navigation/overviewMap.js +5 -5
- package/src/navigation/vcsZoomButton.vue +37 -11
- package/src/pluginHelper.js +20 -0
- package/src/search/search.js +12 -3
- package/src/search/searchComponent.vue +15 -0
- package/src/state.js +6 -6
- package/src/uiConfig.js +3 -3
- package/src/vcsUiApp.js +44 -40
- package/src/vuePlugins/i18n.js +1 -0
- package/start.js +8 -2
- package/dist/assets/index.8b833ead.js +0 -1
- package/dist/assets/ui.d760e4.css +0 -5
- package/map.config.json +0 -44
- /package/dist/assets/{cesium.88cffd.js → cesium.166f91.js} +0 -0
- /package/dist/assets/{ol.d4539f.js → ol.d2cba3.js} +0 -0
- /package/dist/assets/{vue.db5102.js → vue.5d00e9.js} +0 -0
- /package/dist/assets/{vuetify.427322.css → vuetify.2f1432.css} +0 -0
@@ -1,117 +1,37 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
>
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
<template #item.value="{ item }">
|
32
|
-
<td
|
33
|
-
:title="$t(item.value)"
|
34
|
-
class="vcs-table px-2 overflow-max-width rounded-0 noBorder"
|
35
|
-
:style="{'max-width': headers[1].width }"
|
36
|
-
>
|
37
|
-
<span :class="{ 'single-line': !/\s/.test(item.value), 'multi-line': /\s/.test(item.value), }">
|
38
|
-
{{ $t(item.value) }}
|
39
|
-
</span>
|
40
|
-
</td>
|
41
|
-
</template>
|
42
|
-
<template #footer v-if="items.length > itemsPerPageRef">
|
43
|
-
<v-divider />
|
44
|
-
<v-container class="pa-2 vcs-pagination-bar">
|
45
|
-
<v-row
|
46
|
-
dense
|
47
|
-
no-gutters
|
48
|
-
justify="center"
|
49
|
-
>
|
50
|
-
<v-menu offset-y dense>
|
51
|
-
<template #activator="{ on, attrs }">
|
52
|
-
<VcsButton
|
53
|
-
small
|
54
|
-
color="primary"
|
55
|
-
v-bind="attrs"
|
56
|
-
v-on="on"
|
57
|
-
>
|
58
|
-
{{ itemsPerPageRef }}
|
59
|
-
<v-icon>mdi-chevron-down</v-icon>
|
60
|
-
</VcsButton>
|
61
|
-
</template>
|
62
|
-
<v-list>
|
63
|
-
<v-list-item
|
64
|
-
v-for="(number, index) in itemsPerPageArray"
|
65
|
-
:key="index"
|
66
|
-
@click="updateItemsPerPage(number)"
|
67
|
-
style="min-height: auto; height: 24px; text-align: right;"
|
68
|
-
>
|
69
|
-
<v-list-item-title>{{ number }}</v-list-item-title>
|
70
|
-
</v-list-item>
|
71
|
-
</v-list>
|
72
|
-
</v-menu>
|
73
|
-
<span class="mx-2">{{ $t('components.vcsTable.itemsPerPage') }}</span>
|
74
|
-
<span class="mx-2">
|
75
|
-
{{ itemsFrom }} - {{ itemsTo }} {{ $t('components.vcsTable.ofItems') }} {{ numberOfItems }}
|
76
|
-
</span>
|
77
|
-
<VcsButton
|
78
|
-
small
|
79
|
-
icon="mdi-chevron-left"
|
80
|
-
@click="formerPage"
|
81
|
-
tooltip="components.vcsTable.formerPage"
|
82
|
-
:disabled="page < 2"
|
83
|
-
class="ml-1"
|
84
|
-
/>
|
85
|
-
<VcsButton
|
86
|
-
small
|
87
|
-
icon="mdi-chevron-right"
|
88
|
-
@click="nextPage"
|
89
|
-
tooltip="components.vcsTable.nextPage"
|
90
|
-
:disabled="page > numberOfPages - 1"
|
91
|
-
class="ml-1"
|
92
|
-
/>
|
93
|
-
</v-row>
|
94
|
-
</v-container>
|
95
|
-
</template>
|
96
|
-
</v-data-table>
|
97
|
-
</v-card>
|
2
|
+
<VcsDataTable
|
3
|
+
:items="items"
|
4
|
+
:headers="headers"
|
5
|
+
item-key="key"
|
6
|
+
v-bind="$attrs"
|
7
|
+
>
|
8
|
+
<!-- eslint-disable-next-line -->
|
9
|
+
<template #item.key="{ item }">
|
10
|
+
<td
|
11
|
+
:title="$t(item.key)"
|
12
|
+
class="vcs-table px-2 overflow-max-width rounded-0 noBorder"
|
13
|
+
:style="{'max-width': headers[0].width }"
|
14
|
+
>
|
15
|
+
{{ $t(item.key) }}
|
16
|
+
</td>
|
17
|
+
</template>
|
18
|
+
<!-- eslint-disable-next-line -->
|
19
|
+
<template #item.value="{ item }">
|
20
|
+
<td
|
21
|
+
:title="$t(item.value)"
|
22
|
+
class="vcs-table px-2 overflow-max-width rounded-0 noBorder"
|
23
|
+
:style="{'max-width': headers[1].width }"
|
24
|
+
>
|
25
|
+
<span :class="{ 'single-line': !/\s/.test(item.value), 'multi-line': /\s/.test(item.value), }">
|
26
|
+
{{ $t(item.value) }}
|
27
|
+
</span>
|
28
|
+
</td>
|
29
|
+
</template>
|
30
|
+
</VcsDataTable>
|
98
31
|
</template>
|
99
32
|
<script>
|
100
|
-
import {
|
101
|
-
import
|
102
|
-
VCard,
|
103
|
-
VDivider,
|
104
|
-
VContainer,
|
105
|
-
VDataTable,
|
106
|
-
VList,
|
107
|
-
VListItem,
|
108
|
-
VListItemTitle,
|
109
|
-
VMenu,
|
110
|
-
VIcon,
|
111
|
-
VRow,
|
112
|
-
} from 'vuetify/lib';
|
113
|
-
import VcsTreeviewSearchbar from '../lists/VcsTreeviewSearchbar.vue';
|
114
|
-
import VcsButton from '../buttons/VcsButton.vue';
|
33
|
+
import { computed } from 'vue';
|
34
|
+
import VcsDataTable from './VcsDataTable.vue';
|
115
35
|
|
116
36
|
/**
|
117
37
|
* @typedef {Object} TableItem
|
@@ -140,34 +60,16 @@
|
|
140
60
|
}
|
141
61
|
|
142
62
|
/**
|
143
|
-
* @description A table view for feature attributes using
|
63
|
+
* @description A table view for feature attributes using VcsDataTable
|
144
64
|
* @vue-prop {string} featureId - feature's id
|
145
65
|
* @vue-prop {Object} attributes - feature's attributes
|
146
66
|
* @vue-prop {Array<{text: string, value: string}>} [headers] - optional array defining column names
|
147
|
-
* @vue-prop {boolean} [showSearchbar=true] - whether to show searchbar
|
148
|
-
* @vue-prop {string} [searchbarPlaceholder='Search'] - placeholder for searchbar
|
149
67
|
* @vue-computed {Array<TableItem>} items - from attributes derived table items
|
150
|
-
* @vue-computed {Array<TableItem>} filteredItems - array of items with search filter applied on. If search string is empty, same as items array.
|
151
|
-
* @vue-computed {number} numberOfItems - number of filtered items (depending on search).
|
152
|
-
* @vue-computed {number} numberOfPages - number of pages depending on number of items, search and itemsPerPage.
|
153
|
-
* @vue-computed {number} itemsFrom - index of first item shown on current page.
|
154
|
-
* @vue-computed {number} itemsTo - index of last item shown on current page.
|
155
68
|
*/
|
156
69
|
export default {
|
157
70
|
name: 'VcsTable',
|
158
71
|
components: {
|
159
|
-
|
160
|
-
VcsTreeviewSearchbar,
|
161
|
-
VCard,
|
162
|
-
VDataTable,
|
163
|
-
VContainer,
|
164
|
-
VDivider,
|
165
|
-
VRow,
|
166
|
-
VMenu,
|
167
|
-
VIcon,
|
168
|
-
VList,
|
169
|
-
VListItem,
|
170
|
-
VListItemTitle,
|
72
|
+
VcsDataTable,
|
171
73
|
},
|
172
74
|
props: {
|
173
75
|
featureId: {
|
@@ -185,29 +87,8 @@
|
|
185
87
|
{ text: 'components.vcsTable.value', value: 'value', width: '160px' },
|
186
88
|
],
|
187
89
|
},
|
188
|
-
itemsPerPage: {
|
189
|
-
type: Number,
|
190
|
-
default: 10,
|
191
|
-
},
|
192
|
-
itemsPerPageArray: {
|
193
|
-
type: Array,
|
194
|
-
default: () => [5, 10, 15],
|
195
|
-
},
|
196
|
-
showSearchbar: {
|
197
|
-
type: Boolean,
|
198
|
-
default: true,
|
199
|
-
},
|
200
|
-
searchbarPlaceholder: {
|
201
|
-
type: String,
|
202
|
-
default: 'components.vcsTable.searchbarPlaceholder',
|
203
|
-
},
|
204
90
|
},
|
205
91
|
setup(props) {
|
206
|
-
const vm = getCurrentInstance().proxy;
|
207
|
-
/**
|
208
|
-
* @type {Ref<UnwrapRef<string>>}
|
209
|
-
*/
|
210
|
-
const search = ref('');
|
211
92
|
/**
|
212
93
|
* @type {ComputedRef<Array<TableItem>>}
|
213
94
|
*/
|
@@ -218,89 +99,14 @@
|
|
218
99
|
});
|
219
100
|
});
|
220
101
|
|
221
|
-
/**
|
222
|
-
* @param {any} value
|
223
|
-
* @param {string|undefined} filter
|
224
|
-
* @param {TableItem} item
|
225
|
-
* @returns {boolean}
|
226
|
-
*/
|
227
|
-
const handleFilter = (value, filter, item) => {
|
228
|
-
if (filter) {
|
229
|
-
const q = filter.toLocaleLowerCase();
|
230
|
-
return [item.key, item.value].some((i) => {
|
231
|
-
const content = i.toString();
|
232
|
-
const translated = vm.$t(content);
|
233
|
-
return translated.toLowerCase().includes(q) || content.toLowerCase().includes(q);
|
234
|
-
});
|
235
|
-
}
|
236
|
-
return true;
|
237
|
-
};
|
238
|
-
|
239
|
-
/**
|
240
|
-
* @type {ComputedRef<TableItem[]>}
|
241
|
-
*/
|
242
|
-
const filteredItems = computed(() => items.value.filter(item => handleFilter(item.value, search.value, item)));
|
243
|
-
const numberOfItems = computed(() => filteredItems.value.length);
|
244
|
-
|
245
|
-
/**
|
246
|
-
* @type {ComputedRef<Array<{text: string, value: string}>>}
|
247
|
-
*/
|
248
|
-
const translatedHeaders = computed(() => {
|
249
|
-
return props.headers.map((hd) => {
|
250
|
-
hd.text = vm.$t(hd.text);
|
251
|
-
return hd;
|
252
|
-
});
|
253
|
-
});
|
254
|
-
|
255
|
-
/**
|
256
|
-
* @type {Ref<UnwrapRef<number>>}
|
257
|
-
*/
|
258
|
-
const itemsPerPageRef = ref(props.itemsPerPage);
|
259
|
-
const numberOfPages = computed(() => {
|
260
|
-
return Math.ceil(numberOfItems.value / itemsPerPageRef.value);
|
261
|
-
});
|
262
|
-
/**
|
263
|
-
* @type {Ref<UnwrapRef<number>>}
|
264
|
-
*/
|
265
|
-
const page = ref(1);
|
266
|
-
const itemsFrom = computed(() => ((page.value - 1) * itemsPerPageRef.value) + 1);
|
267
|
-
const itemsTo = computed(() => {
|
268
|
-
const last = page.value * itemsPerPageRef.value;
|
269
|
-
return last < numberOfItems.value ? last : numberOfItems.value;
|
270
|
-
});
|
271
|
-
|
272
102
|
return {
|
273
|
-
search,
|
274
|
-
page,
|
275
103
|
items,
|
276
|
-
filteredItems,
|
277
|
-
itemsPerPageRef,
|
278
|
-
itemsFrom,
|
279
|
-
itemsTo,
|
280
|
-
numberOfPages,
|
281
|
-
numberOfItems,
|
282
|
-
nextPage() {
|
283
|
-
if (page.value + 1 <= numberOfPages.value) {
|
284
|
-
page.value += 1;
|
285
|
-
}
|
286
|
-
},
|
287
|
-
formerPage() {
|
288
|
-
if (page.value - 1 >= 1) {
|
289
|
-
page.value -= 1;
|
290
|
-
}
|
291
|
-
},
|
292
|
-
updateItemsPerPage(number) {
|
293
|
-
itemsPerPageRef.value = number;
|
294
|
-
},
|
295
|
-
handleFilter,
|
296
|
-
translatedHeaders,
|
297
104
|
};
|
298
105
|
},
|
299
106
|
};
|
300
107
|
</script>
|
301
108
|
|
302
109
|
<style lang="scss" scoped>
|
303
|
-
@import '../../styles/shades.scss';
|
304
110
|
|
305
111
|
.single-line {
|
306
112
|
display: block;
|
@@ -322,61 +128,10 @@
|
|
322
128
|
}
|
323
129
|
|
324
130
|
::v-deep {
|
325
|
-
.vcs-table {
|
326
|
-
tbody tr {
|
327
|
-
&:hover {
|
328
|
-
background-color: transparent !important;
|
329
|
-
}
|
330
|
-
&:nth-child(odd) {
|
331
|
-
background-color: var(--v-base-lighten4) !important;
|
332
|
-
}
|
333
|
-
}
|
334
|
-
td {
|
335
|
-
font-size: 14px !important;
|
336
|
-
&.v-data-table__mobile-row {
|
337
|
-
justify-content: left;
|
338
|
-
height: 27px;
|
339
|
-
min-height: auto;
|
340
|
-
}
|
341
|
-
}
|
342
|
-
th.sortable {
|
343
|
-
padding: 0 8px;
|
344
|
-
span {
|
345
|
-
vertical-align: middle;
|
346
|
-
padding: 0 4px 0 0;
|
347
|
-
}
|
348
|
-
}
|
349
|
-
&.theme--light {
|
350
|
-
thead tr th {
|
351
|
-
color: map-get($shades, 'black') !important;
|
352
|
-
}
|
353
|
-
}
|
354
|
-
&.theme--dark {
|
355
|
-
thead tr th {
|
356
|
-
color: map-get($shades, 'white') !important;
|
357
|
-
}
|
358
|
-
}
|
359
|
-
}
|
360
131
|
.v-data-table__mobile-row__cell {
|
361
132
|
td.vcs-table.overflow-max-width {
|
362
133
|
max-width: 260px;
|
363
134
|
}
|
364
135
|
}
|
365
|
-
.v-btn.vcs-button--small {
|
366
|
-
height: 100% !important;
|
367
|
-
display: block;
|
368
|
-
}
|
369
|
-
}
|
370
|
-
|
371
|
-
.vcs-pagination-bar {
|
372
|
-
.vcs-button-wrap {
|
373
|
-
height: 25px;
|
374
|
-
border: 1px solid;
|
375
|
-
padding: 0 4px;
|
376
|
-
border-radius: 4px;
|
377
|
-
&:hover {
|
378
|
-
border: 1px solid var(--v-primary-base);
|
379
|
-
}
|
380
|
-
}
|
381
136
|
}
|
382
137
|
</style>
|
@@ -306,7 +306,7 @@ export function createContentTreeCollection(app) {
|
|
306
306
|
|
307
307
|
const overrideCollection = makeOverrideCollection(
|
308
308
|
collection,
|
309
|
-
() => app.
|
309
|
+
() => app.dynamicModuleId,
|
310
310
|
null,
|
311
311
|
config => getObjectFromClassRegistry(app.contentTreeClassRegistry, config, app),
|
312
312
|
ContentTreeItem,
|
@@ -0,0 +1,49 @@
|
|
1
|
+
import { hasSameOrigin } from '@vcmap/core';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Download a blob
|
5
|
+
* @param {string} uri
|
6
|
+
* @param {string} fileName
|
7
|
+
* @api
|
8
|
+
* @export
|
9
|
+
*/
|
10
|
+
export function downloadURI(uri, fileName) {
|
11
|
+
const link = document.createElement('a');
|
12
|
+
link.download = fileName;
|
13
|
+
link.href = uri;
|
14
|
+
if (!hasSameOrigin(uri)) {
|
15
|
+
link.target = '_blank';
|
16
|
+
}
|
17
|
+
link.click();
|
18
|
+
link.remove();
|
19
|
+
}
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Download a blob
|
23
|
+
* @param {Blob} blob
|
24
|
+
* @param {string} fileName
|
25
|
+
*/
|
26
|
+
export function downloadBlob(blob, fileName) {
|
27
|
+
downloadURI(URL.createObjectURL(blob), fileName);
|
28
|
+
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Download a text as UTF-8
|
32
|
+
* @param {string} text
|
33
|
+
* @param {string} fileName
|
34
|
+
*/
|
35
|
+
export function downloadText(text, fileName) {
|
36
|
+
downloadURI(`data:text/plain;charset=utf-8,${encodeURIComponent(text)}`, fileName);
|
37
|
+
}
|
38
|
+
|
39
|
+
/**
|
40
|
+
* Download a canvas as an image
|
41
|
+
* @param {HTMLCanvasElement} canvas
|
42
|
+
* @param {string} fileName
|
43
|
+
* @param {string=} mimeType
|
44
|
+
*/
|
45
|
+
export function downloadCanvas(canvas, fileName, mimeType) {
|
46
|
+
canvas.toBlob((blob) => {
|
47
|
+
downloadBlob(blob, fileName);
|
48
|
+
}, mimeType);
|
49
|
+
}
|
@@ -1,21 +1,21 @@
|
|
1
1
|
<template>
|
2
2
|
<v-card
|
3
|
-
class="mx-auto elevation-0
|
3
|
+
class="mx-auto elevation-0"
|
4
4
|
max-width="400"
|
5
5
|
v-if="position"
|
6
6
|
>
|
7
7
|
<slot name="balloon-header" :attrs="{...$props, ...$attrs}">
|
8
|
-
<v-list-item class="px-2
|
8
|
+
<v-list-item class="px-2 align-center">
|
9
9
|
<v-list-item-avatar
|
10
10
|
tile
|
11
|
-
size="
|
12
|
-
class="mr-2
|
11
|
+
size="16"
|
12
|
+
class="mr-2"
|
13
13
|
>
|
14
14
|
<v-icon color="primary">
|
15
15
|
$vcsInfo
|
16
16
|
</v-icon>
|
17
17
|
</v-list-item-avatar>
|
18
|
-
<v-list-item-content class="
|
18
|
+
<v-list-item-content class="pr-1">
|
19
19
|
<v-list-item-title>
|
20
20
|
<h3 class="font-weight-bold">
|
21
21
|
{{ $t(balloonTitle) }}
|
@@ -30,7 +30,7 @@
|
|
30
30
|
small
|
31
31
|
icon="mdi-close-thick"
|
32
32
|
tooltip="components.close"
|
33
|
-
class="
|
33
|
+
class="d-flex"
|
34
34
|
/>
|
35
35
|
</v-list-item>
|
36
36
|
</slot>
|
@@ -164,12 +164,13 @@
|
|
164
164
|
.balloon:after {
|
165
165
|
content: "";
|
166
166
|
position: absolute;
|
167
|
-
bottom: -
|
167
|
+
bottom: -12px;
|
168
168
|
left: 40px;
|
169
|
-
border-width:
|
169
|
+
border-width: 12px 10px 0;
|
170
170
|
border-style: solid;
|
171
171
|
display: block;
|
172
172
|
width: 0;
|
173
|
+
filter: drop-shadow(1px 2px 1px rgba(0, 0, 0, 0.3));
|
173
174
|
}
|
174
175
|
.theme--light .balloon:after {
|
175
176
|
border-color: map-get($shades, 'white') transparent;
|
@@ -217,7 +217,7 @@ class AbstractFeatureInfoView extends VcsObject {
|
|
217
217
|
}
|
218
218
|
|
219
219
|
/**
|
220
|
-
* window options, configured in a
|
220
|
+
* window options, configured in a module, used only internally by AbstractFeatureInfoView or subclass
|
221
221
|
* @type {WindowComponentOptions|Object}
|
222
222
|
* @readonly
|
223
223
|
*/
|
@@ -211,7 +211,7 @@ class FeatureInfo {
|
|
211
211
|
*/
|
212
212
|
this._collection = makeOverrideCollection(
|
213
213
|
new Collection(),
|
214
|
-
() => this._app.
|
214
|
+
() => this._app.dynamicModuleId,
|
215
215
|
null,
|
216
216
|
config => getObjectFromClassRegistry(this._featureInfoClassRegistry, config),
|
217
217
|
AbstractFeatureInfoView,
|
@@ -277,12 +277,12 @@ class FeatureInfo {
|
|
277
277
|
this.clear();
|
278
278
|
}
|
279
279
|
}),
|
280
|
-
this._app.
|
280
|
+
this._app.moduleAdded.addEventListener(() => {
|
281
281
|
this.clear();
|
282
282
|
this._destroyFeatureInfoTool();
|
283
283
|
this._destroyFeatureInfoTool = setupFeatureInfoTool(this._app);
|
284
284
|
}),
|
285
|
-
this._app.
|
285
|
+
this._app.moduleRemoved.addEventListener(() => this.clear()),
|
286
286
|
];
|
287
287
|
/**
|
288
288
|
* A vector layer to render provided features on
|
package/src/i18n/de.js
CHANGED
@@ -55,11 +55,15 @@ const messages = {
|
|
55
55
|
vcsTable: {
|
56
56
|
key: 'Name',
|
57
57
|
value: 'Wert',
|
58
|
+
},
|
59
|
+
vcsDataTable: {
|
58
60
|
searchbarPlaceholder: 'Name, Wert, ...',
|
59
61
|
itemsPerPage: 'pro Seite',
|
60
62
|
ofItems: 'von',
|
61
63
|
nextPage: 'Nächste Seite',
|
62
64
|
formerPage: 'Vorherige Seite',
|
65
|
+
noDataPlaceholder: 'Keine Daten verfügbar',
|
66
|
+
noResultsPlaceholder: 'Keine übereinstimmenden Einträge gefunden',
|
63
67
|
},
|
64
68
|
},
|
65
69
|
settings: {
|
@@ -89,6 +93,7 @@ const messages = {
|
|
89
93
|
select: 'Suchergebnis selektieren',
|
90
94
|
placeholder: 'Suche nach Straße, Adresse, Ort, POI',
|
91
95
|
zoomToFeatureAction: 'Auf Ergebnis zoomen',
|
96
|
+
zoomToAll: 'Zu allen Ergebnissen zoomen',
|
92
97
|
},
|
93
98
|
toolbox: {
|
94
99
|
flight: 'Flug',
|
@@ -107,6 +112,9 @@ const messages = {
|
|
107
112
|
information: 'Information',
|
108
113
|
success: 'Erfolg',
|
109
114
|
},
|
115
|
+
datePicker: {
|
116
|
+
today: 'Heute',
|
117
|
+
},
|
110
118
|
};
|
111
119
|
|
112
120
|
export default messages;
|
package/src/i18n/en.js
CHANGED
@@ -55,11 +55,15 @@ const messages = {
|
|
55
55
|
vcsTable: {
|
56
56
|
key: 'Name',
|
57
57
|
value: 'Value',
|
58
|
+
},
|
59
|
+
vcsDataTable: {
|
58
60
|
searchbarPlaceholder: 'Name, Value, ...',
|
59
61
|
itemsPerPage: 'per page',
|
60
62
|
ofItems: 'of',
|
61
63
|
nextPage: 'Next page',
|
62
64
|
formerPage: 'Former page',
|
65
|
+
noDataPlaceholder: 'No data available',
|
66
|
+
noResultsPlaceholder: 'No matching records found',
|
63
67
|
},
|
64
68
|
},
|
65
69
|
settings: {
|
@@ -89,6 +93,7 @@ const messages = {
|
|
89
93
|
select: 'Select result item',
|
90
94
|
placeholder: 'Search for Street, Address, Landmark, POI',
|
91
95
|
zoomToFeatureAction: 'Zoom to result',
|
96
|
+
zoomToAll: 'Zoom to all',
|
92
97
|
},
|
93
98
|
toolbox: {
|
94
99
|
flight: 'flight',
|
@@ -107,6 +112,9 @@ const messages = {
|
|
107
112
|
information: 'Information',
|
108
113
|
success: 'Success',
|
109
114
|
},
|
115
|
+
datePicker: {
|
116
|
+
today: 'Today',
|
117
|
+
},
|
110
118
|
};
|
111
119
|
|
112
120
|
export default messages;
|