@vcmap/ui 6.1.0-rc.2 → 6.1.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/config/base.config.json +6 -0
- package/config/clipping.config.json +384 -0
- package/config/cluster.config.json +106 -0
- package/config/concepts-show-case.config.json +4 -0
- package/config/projects.config.json +5 -2
- package/dist/assets/{cesium-57fbd309.js → cesium-87d5e72d.js} +438 -432
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core-fd079400.js → core-72f9f393.js} +4907 -4514
- package/dist/assets/core.js +1 -1
- package/dist/assets/{ol-50dfef96.js → ol-e468ba43.js} +23518 -22404
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui-73257b15.css +1 -0
- package/dist/assets/{ui-5135917c.js → ui-73257b15.js} +13440 -12742
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +1 -1
- package/dist/assets/{vuetify-f02b7bb9.css → vuetify-2437380c.css} +2 -2
- package/dist/assets/{vuetify-f02b7bb9.js → vuetify-2437380c.js} +8024 -7634
- package/dist/assets/vuetify.js +1 -1
- package/index.d.ts +38 -19
- package/index.js +35 -6
- package/lib/olLib.js +25 -3
- package/package.json +6 -6
- package/plugins/@vcmap-show-case/callback-tester/README.md +3 -0
- package/plugins/@vcmap-show-case/callback-tester/package.json +5 -0
- package/plugins/@vcmap-show-case/callback-tester/src/CallbackTester.vue +62 -0
- package/plugins/@vcmap-show-case/callback-tester/src/index.js +48 -0
- package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +1 -0
- package/src/actions/actionHelper.d.ts +1 -0
- package/src/actions/actionHelper.js +70 -19
- package/src/application/VcsApp.vue +83 -50
- package/src/application/VcsApp.vue.d.ts +24 -2
- package/src/application/VcsContainer.vue.d.ts +8 -0
- package/src/application/VcsObliqueFooter.vue +9 -3
- package/src/application/VcsSplashScreen.vue +37 -0
- package/src/application/VcsSplashScreen.vue.d.ts +6 -0
- package/src/application/positionDisplayInteraction.js +1 -1
- package/src/callback/activateClippingPolygonCallback.d.ts +29 -0
- package/src/callback/activateClippingPolygonCallback.js +54 -0
- package/src/callback/closeSplashScreenCallback.d.ts +8 -0
- package/src/callback/closeSplashScreenCallback.js +33 -0
- package/src/callback/deactivateClippingPolygonCallback.d.ts +29 -0
- package/src/callback/deactivateClippingPolygonCallback.js +54 -0
- package/src/callback/openSplashScreenCallback.d.ts +8 -0
- package/src/callback/openSplashScreenCallback.js +35 -0
- package/src/callback/toggleNavbarButtonCallback.d.ts +36 -0
- package/src/callback/toggleNavbarButtonCallback.js +62 -0
- package/src/components/form-inputs-controls/VcsSelect.vue +1 -1
- package/src/components/form-inputs-controls/VcsTextArea.vue +12 -7
- package/src/components/form-output/markdownHelper.d.ts +0 -25
- package/src/components/form-output/markdownHelper.js +1 -386
- package/src/components/lists/VcsGroupedList.vue +178 -0
- package/src/components/lists/VcsGroupedList.vue.d.ts +17 -0
- package/src/components/lists/VcsList.vue +142 -396
- package/src/components/lists/VcsList.vue.d.ts +38 -168
- package/src/components/lists/VcsTreeview.vue +11 -12
- package/src/components/lists/listHelper.d.ts +87 -0
- package/src/components/lists/listHelper.js +348 -0
- package/src/components/section/VcsFormSection.vue +7 -2
- package/src/components/section/VcsFormSection.vue.d.ts +9 -0
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +1 -1
- package/src/contentTree/LayerTree.vue +2 -1
- package/src/contentTree/LayerTree.vue.d.ts +2 -0
- package/src/contentTree/contentTreeCollection.d.ts +1 -0
- package/src/contentTree/contentTreeCollection.js +7 -3
- package/src/contentTree/contentTreeItem.js +4 -2
- package/src/contentTree/groupContentTreeItem.js +5 -3
- package/src/featureInfo/ClusterFeatureComponent.vue +58 -0
- package/src/featureInfo/ClusterFeatureComponent.vue.d.ts +6 -0
- package/src/featureInfo/abstractFeatureInfoView.js +1 -2
- package/src/featureInfo/featureInfo.d.ts +87 -1
- package/src/featureInfo/featureInfo.js +342 -34
- package/src/featureInfo/featureInfoInteraction.js +18 -3
- package/src/featureInfo/iframeFeatureInfoView.js +1 -1
- package/src/featureInfo/markdownBalloonFeatureInfoView.js +2 -4
- package/src/featureInfo/markdownFeatureInfoView.js +1 -1
- package/src/i18n/de.d.ts +17 -4
- package/src/i18n/de.js +7 -0
- package/src/i18n/en.d.ts +17 -4
- package/src/i18n/en.js +7 -0
- package/src/legend/legendHelper.d.ts +1 -1
- package/src/legend/legendHelper.js +52 -9
- package/src/localStorage.d.ts +21 -0
- package/src/localStorage.js +51 -0
- package/src/manager/collectionManager/CollectionComponent.vue +1 -1
- package/src/manager/collectionManager/CollectionComponentContent.vue +2 -3
- package/src/manager/collectionManager/CollectionComponentList.vue +2 -3
- package/src/manager/collectionManager/CollectionComponentStandalone.vue +1 -1
- package/src/manager/navbarManager.js +9 -4
- package/src/manager/toolbox/ToolboxManagerComponent.vue +10 -8
- package/src/manager/toolbox/ToolboxManagerComponent.vue.d.ts +11 -0
- package/src/manager/window/windowHelper.d.ts +7 -3
- package/src/manager/window/windowHelper.js +30 -10
- package/src/navigation/overviewMap.d.ts +1 -0
- package/src/navigation/overviewMap.js +4 -3
- package/src/pluginHelper.d.ts +7 -0
- package/src/pluginHelper.js +18 -4
- package/src/search/ResultItem.vue.d.ts +1 -1
- package/src/search/search.js +1 -1
- package/src/state.d.ts +4 -2
- package/src/state.js +54 -31
- package/src/uiConfig.d.ts +27 -0
- package/src/uiConfig.js +16 -1
- package/src/vcsUiApp.js +7 -11
- package/dist/assets/ui-5135917c.css +0 -1
- /package/dist/assets/{vue-c3c55d88.js → vue-ff37ea23.js} +0 -0
@@ -64,6 +64,7 @@
|
|
64
64
|
* @vue-prop {Array<VcsAction>} headerActions - Icons to be displayed on the right side
|
65
65
|
* @vue-prop {number} [actionButtonListOverflowCount] - overflow count to use for action lists in the title and items
|
66
66
|
* @vue-prop {string} [helpText] - Optional help text. Must be plain string. Use 'help' slot for html based help texts. Help slot has precedence over helpText prop.
|
67
|
+
* @vue-prop {boolean} [startHelpOpen=false] - If help text starts open.
|
67
68
|
* @vue-computed {Array<VcsAction>} actions - Returns header actions extended by a help action, if help prop is passed or help slot is used.
|
68
69
|
*/
|
69
70
|
export default {
|
@@ -104,6 +105,10 @@
|
|
104
105
|
type: String,
|
105
106
|
default: undefined,
|
106
107
|
},
|
108
|
+
startHelpOpen: {
|
109
|
+
type: Boolean,
|
110
|
+
default: false,
|
111
|
+
},
|
107
112
|
},
|
108
113
|
setup(props, { slots }) {
|
109
114
|
const open = ref(props.startOpen);
|
@@ -116,7 +121,7 @@
|
|
116
121
|
const helpAction = reactive({
|
117
122
|
name: 'help',
|
118
123
|
title: 'components.vcsFormSection.help',
|
119
|
-
active:
|
124
|
+
active: props.startHelpOpen,
|
120
125
|
icon: 'mdi-help-circle',
|
121
126
|
callback() {
|
122
127
|
this.active = !this.active;
|
@@ -128,7 +133,7 @@
|
|
128
133
|
*/
|
129
134
|
const actions = computed(() => {
|
130
135
|
if (props.helpText || (slots.help && slots.help().length > 0)) {
|
131
|
-
return [
|
136
|
+
return [...props.headerActions, helpAction];
|
132
137
|
}
|
133
138
|
return props.headerActions;
|
134
139
|
});
|
@@ -28,6 +28,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
28
28
|
type: StringConstructor;
|
29
29
|
default: undefined;
|
30
30
|
};
|
31
|
+
startHelpOpen: {
|
32
|
+
type: BooleanConstructor;
|
33
|
+
default: boolean;
|
34
|
+
};
|
31
35
|
}, {
|
32
36
|
open: import("vue").Ref<boolean>;
|
33
37
|
showContent: import("vue").ComputedRef<boolean>;
|
@@ -64,6 +68,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
64
68
|
type: StringConstructor;
|
65
69
|
default: undefined;
|
66
70
|
};
|
71
|
+
startHelpOpen: {
|
72
|
+
type: BooleanConstructor;
|
73
|
+
default: boolean;
|
74
|
+
};
|
67
75
|
}>>, {
|
68
76
|
disabled: boolean;
|
69
77
|
headerActions: unknown[];
|
@@ -72,5 +80,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
72
80
|
helpText: string;
|
73
81
|
expandable: boolean;
|
74
82
|
startOpen: boolean;
|
83
|
+
startHelpOpen: boolean;
|
75
84
|
}, {}>;
|
76
85
|
export default _default;
|
@@ -218,7 +218,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
218
218
|
getPrimitiveOptions: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => import("@vcmap/core", { with: { "resolution-mode": "import" } }).VectorPropertiesPrimitiveOptions<import("@vcmap/core", { with: { "resolution-mode": "import" } }).PrimitiveOptionsType> | undefined;
|
219
219
|
getPrimitive: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => import("@vcmap/core", { with: { "resolution-mode": "import" } }).VectorPropertiesPrimitive | null;
|
220
220
|
getModel: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => import("@vcmap/core", { with: { "resolution-mode": "import" } }).VectorPropertiesModelOptions | null;
|
221
|
-
renderAs: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => "geometry" | "
|
221
|
+
renderAs: (feature: import("ol/Feature.js", { with: { "resolution-mode": "import" } }).default<import("ol/geom.js", { with: { "resolution-mode": "import" } }).Geometry>) => "geometry" | "primitive" | "model";
|
222
222
|
setVcsMeta: (vcsMeta: import("@vcmap/core", { with: { "resolution-mode": "import" } }).VcsMeta) => void;
|
223
223
|
setValues: (options: import("@vcmap/core", { with: { "resolution-mode": "import" } }).VectorPropertiesOptions) => void;
|
224
224
|
getValues: () => import("@vcmap/core", { with: { "resolution-mode": "import" } }).VectorPropertiesOptions;
|
@@ -20,7 +20,8 @@
|
|
20
20
|
import { VSheet } from 'vuetify/components';
|
21
21
|
import VcsTreeview from '../components/lists/VcsTreeview.vue';
|
22
22
|
|
23
|
-
|
23
|
+
/** The open state Symbol of the ContentTree */
|
24
|
+
export const openStateMapSymbol = Symbol('openStateMap');
|
24
25
|
/**
|
25
26
|
* @description
|
26
27
|
* Implements Treeview and shows content tree
|
@@ -3,6 +3,7 @@
|
|
3
3
|
* @returns {import("@vcmap/core").OverrideCollection<ContentTreeItem, ContentTreeCollection>}
|
4
4
|
*/
|
5
5
|
export function createContentTreeCollection(app: import("@src/vcsUiApp.js").default): import("@vcmap/core").OverrideCollection<ContentTreeItem, ContentTreeCollection>;
|
6
|
+
export const defaultContentTreeComponentId: "Content";
|
6
7
|
export default ContentTreeCollection;
|
7
8
|
export type ParentTreeViewItem = {
|
8
9
|
treeViewItem?: import("./contentTreeItem.js").TreeViewItem | undefined;
|
@@ -20,6 +20,8 @@ import { ButtonLocation } from '../manager/navbarManager.js';
|
|
20
20
|
const subTreeOpenStateSymbol = Symbol('SubTreeOpenState');
|
21
21
|
const subTreeItemWeight = Symbol('SubTreeItemWeight');
|
22
22
|
|
23
|
+
export const defaultContentTreeComponentId = 'Content';
|
24
|
+
|
23
25
|
/**
|
24
26
|
* @typedef {Object} ParentTreeViewItem
|
25
27
|
* @property {import("./contentTreeItem.js").TreeViewItem} [treeViewItem]
|
@@ -77,7 +79,9 @@ class ContentTreeCollection extends IndexedCollection {
|
|
77
79
|
contentTreeActiveOnStartup?.value &&
|
78
80
|
contentTreeActiveOnStartup[moduleIdSymbol] !== this._app.dynamicModuleId
|
79
81
|
) {
|
80
|
-
const action = this._app.navbarManager.get(
|
82
|
+
const action = this._app.navbarManager.get(
|
83
|
+
defaultContentTreeComponentId,
|
84
|
+
)?.action;
|
81
85
|
if (action && !action.active) {
|
82
86
|
action.callback();
|
83
87
|
}
|
@@ -119,7 +123,7 @@ class ContentTreeCollection extends IndexedCollection {
|
|
119
123
|
*/
|
120
124
|
this._defaultSubtreeItem = new SubContentTreeItem(
|
121
125
|
{
|
122
|
-
name:
|
126
|
+
name: defaultContentTreeComponentId,
|
123
127
|
icon: '$vcsLayers',
|
124
128
|
title: 'content.title',
|
125
129
|
tooltip: 'content.title',
|
@@ -198,7 +202,7 @@ class ContentTreeCollection extends IndexedCollection {
|
|
198
202
|
'contentTreeActiveOnStartup',
|
199
203
|
);
|
200
204
|
if (
|
201
|
-
id ===
|
205
|
+
id === defaultContentTreeComponentId &&
|
202
206
|
contentTreeActiveOnStartup?.value &&
|
203
207
|
contentTreeActiveOnStartup[moduleIdSymbol] !== this._app.dynamicModuleId
|
204
208
|
) {
|
@@ -422,9 +422,11 @@ class ContentTreeItem {
|
|
422
422
|
(a) => a[actionWeightSymbol] > weight,
|
423
423
|
);
|
424
424
|
if (insertIndex > -1) {
|
425
|
-
this._actions.value
|
425
|
+
const newActions = [...this._actions.value];
|
426
|
+
newActions.splice(insertIndex, 0, action);
|
427
|
+
this._actions.value = newActions;
|
426
428
|
} else {
|
427
|
-
this._actions.value.
|
429
|
+
this._actions.value = [...this._actions.value, action];
|
428
430
|
}
|
429
431
|
}
|
430
432
|
|
@@ -33,11 +33,13 @@ class GroupContentTreeItem extends ContentTreeItem {
|
|
33
33
|
() => {
|
34
34
|
const children = this._children.value;
|
35
35
|
this.visible = children.some((c) => c.visible);
|
36
|
-
if (
|
36
|
+
if (
|
37
|
+
children.every((c) => c.state === StateActionState.NONE || !c.visible)
|
38
|
+
) {
|
37
39
|
this.state = StateActionState.NONE;
|
38
40
|
} else {
|
39
41
|
const childrenWithState = children.filter(
|
40
|
-
(c) => c.state !== StateActionState.NONE,
|
42
|
+
(c) => c.visible && c.state !== StateActionState.NONE,
|
41
43
|
);
|
42
44
|
if (
|
43
45
|
childrenWithState.every((c) => c.state === StateActionState.ACTIVE)
|
@@ -54,7 +56,7 @@ class GroupContentTreeItem extends ContentTreeItem {
|
|
54
56
|
}
|
55
57
|
}
|
56
58
|
},
|
57
|
-
{ deep: true },
|
59
|
+
{ deep: true, immediate: true },
|
58
60
|
);
|
59
61
|
}
|
60
62
|
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<script setup>
|
2
|
+
import { ref, shallowRef, inject, onUnmounted } from 'vue';
|
3
|
+
import VcsGroupedList from '../components/lists/VcsGroupedList.vue';
|
4
|
+
|
5
|
+
const props = defineProps({
|
6
|
+
/** @type {import("../components/lists/VcsGroupedList.vue").VcsGroupedListItem} */
|
7
|
+
items: {
|
8
|
+
type: Array,
|
9
|
+
default: () => [],
|
10
|
+
},
|
11
|
+
/** @type {import("../components/lists/VcsGroupedList.vue").VcsListGroup} */
|
12
|
+
groups: {
|
13
|
+
type: Array,
|
14
|
+
default: () => [],
|
15
|
+
},
|
16
|
+
});
|
17
|
+
|
18
|
+
const app = inject('vcsApp');
|
19
|
+
const open = ref(true);
|
20
|
+
const selected = shallowRef([]);
|
21
|
+
|
22
|
+
const selectionListener = app.featureInfo.featureChanged.addEventListener(
|
23
|
+
(f) => {
|
24
|
+
if (f === null) {
|
25
|
+
selected.value = [];
|
26
|
+
} else {
|
27
|
+
const item = props.items.find((i) => i.name === f.getId());
|
28
|
+
if (item) {
|
29
|
+
selected.value = [item];
|
30
|
+
}
|
31
|
+
}
|
32
|
+
},
|
33
|
+
);
|
34
|
+
|
35
|
+
onUnmounted(() => {
|
36
|
+
selectionListener();
|
37
|
+
});
|
38
|
+
</script>
|
39
|
+
|
40
|
+
<template>
|
41
|
+
<div>
|
42
|
+
<template v-if="items.length > 0">
|
43
|
+
<vcs-grouped-list
|
44
|
+
v-if="open"
|
45
|
+
:items="items"
|
46
|
+
:groups="groups"
|
47
|
+
v-model="selected"
|
48
|
+
selectable
|
49
|
+
single-select
|
50
|
+
searchable
|
51
|
+
open-all
|
52
|
+
/>
|
53
|
+
</template>
|
54
|
+
<p v-else>{{ $t('featureInfo.cluster.empty') }}</p>
|
55
|
+
</div>
|
56
|
+
</template>
|
57
|
+
|
58
|
+
<style scoped lang="scss"></style>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {
|
2
|
+
$props: {
|
3
|
+
readonly [x: string]: any;
|
4
|
+
};
|
5
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
|
6
|
+
export default _default;
|
@@ -1,7 +1,6 @@
|
|
1
|
-
import { VcsObject } from '@vcmap/core';
|
1
|
+
import { renderTemplate, VcsObject } from '@vcmap/core';
|
2
2
|
import { WindowSlot } from '../manager/window/windowManager.js';
|
3
3
|
import { defaultTagOptions } from '../components/tables/VcsTable.vue';
|
4
|
-
import { renderTemplate } from '../components/form-output/markdownHelper.js';
|
5
4
|
|
6
5
|
/**
|
7
6
|
* @typedef {Object} FeatureInfoProps
|
@@ -1,3 +1,10 @@
|
|
1
|
+
/**
|
2
|
+
*
|
3
|
+
* @param {import("ol/style/Style.js").default?} style
|
4
|
+
* @param {import("@vcmap-cesium/engine").Color} fillColor
|
5
|
+
* @returns {import("ol/style/Style.js").default}
|
6
|
+
*/
|
7
|
+
export function getHighlightStyleFromStyle(style: import("ol/style/Style.js").default | null, fillColor: import("@vcmap-cesium/engine").Color): import("ol/style/Style.js").default;
|
1
8
|
/**
|
2
9
|
* @param {FeatureType} feature
|
3
10
|
* @param {import("@vcmap/core").Layer} layer
|
@@ -5,6 +12,14 @@
|
|
5
12
|
* @returns {import("ol/style/Style.js").default|import("@vcmap/core").VectorStyleItem}
|
6
13
|
*/
|
7
14
|
export function getHighlightStyle(feature: FeatureType, layer: import("@vcmap/core").Layer, defaultFillColor: string): import("ol/style/Style.js").default | import("@vcmap/core").VectorStyleItem;
|
15
|
+
/**
|
16
|
+
* @param {import("ol").Feature} clusterFeature
|
17
|
+
* @param {import("@vcmap/core").VectorClusterGroup} clusterGroup
|
18
|
+
* @param {import("ol/style/Style.js").default} clusterStyle
|
19
|
+
* @param {string} defaultFillColor
|
20
|
+
* @returns {import("ol/style/Style.js").default}
|
21
|
+
*/
|
22
|
+
export function getClusterHighlightStyle(clusterFeature: import("ol").Feature, clusterGroup: import("@vcmap/core").VectorClusterGroup, clusterStyle: import("ol/style/Style.js").default, defaultFillColor: string): import("ol/style/Style.js").default;
|
8
23
|
/**
|
9
24
|
* @param {import("../vcsUiApp.js").default} app
|
10
25
|
* @returns {FeatureInfoSession}
|
@@ -69,7 +84,12 @@ declare class FeatureInfo extends Collection<AbstractFeatureInfoView> {
|
|
69
84
|
*/
|
70
85
|
private _windowId;
|
71
86
|
/**
|
72
|
-
* @type {
|
87
|
+
* @type {string|null}
|
88
|
+
* @private
|
89
|
+
*/
|
90
|
+
private _clusterWindowId;
|
91
|
+
/**
|
92
|
+
* @type {VcsEvent<FeatureType|null>}
|
73
93
|
* @private
|
74
94
|
*/
|
75
95
|
private _featureChanged;
|
@@ -83,6 +103,21 @@ declare class FeatureInfo extends Collection<AbstractFeatureInfoView> {
|
|
83
103
|
* @private
|
84
104
|
*/
|
85
105
|
private _selectedFeatureId;
|
106
|
+
/**
|
107
|
+
* @type {VcsEvent<import("ol").Feature|null>}
|
108
|
+
* @private
|
109
|
+
*/
|
110
|
+
private _clusterFeatureChanged;
|
111
|
+
/**
|
112
|
+
* @type {import("ol").Feature|null}
|
113
|
+
* @private
|
114
|
+
*/
|
115
|
+
private _selectedClusterFeature;
|
116
|
+
/**
|
117
|
+
* @type {string|null}
|
118
|
+
* @private
|
119
|
+
*/
|
120
|
+
private _selectedClusterFeatureId;
|
86
121
|
/**
|
87
122
|
* @type {Array<function():void>}
|
88
123
|
* @private
|
@@ -96,6 +131,8 @@ declare class FeatureInfo extends Collection<AbstractFeatureInfoView> {
|
|
96
131
|
*/
|
97
132
|
private _scratchLayer;
|
98
133
|
/**
|
134
|
+
* Emitted whenever a feature is selected or cleared.
|
135
|
+
* Does not reflect cluster feature changes!
|
99
136
|
* @type {VcsEvent<null|FeatureType>}
|
100
137
|
*/
|
101
138
|
get featureChanged(): VcsEvent<FeatureType | null>;
|
@@ -107,11 +144,29 @@ declare class FeatureInfo extends Collection<AbstractFeatureInfoView> {
|
|
107
144
|
* @type {null|string}
|
108
145
|
*/
|
109
146
|
get selectedFeatureId(): string | null;
|
147
|
+
/**
|
148
|
+
* Emitted whenever a cluster feature is selected or cleared.
|
149
|
+
* @type {VcsEvent<null|import("ol").Feature>}
|
150
|
+
*/
|
151
|
+
get clusterFeatureChanged(): VcsEvent<Feature<import("ol/geom.js").Geometry> | null>;
|
152
|
+
/**
|
153
|
+
* @type {null|import("ol").Feature}
|
154
|
+
*/
|
155
|
+
get selectedClusterFeature(): Feature<import("ol/geom.js").Geometry> | null;
|
156
|
+
/**
|
157
|
+
* @type {null|string}
|
158
|
+
*/
|
159
|
+
get selectedClusterFeatureId(): string | null;
|
110
160
|
/**
|
111
161
|
* The window id of the current features FeatureInfoView window
|
112
162
|
* @type {string|null}
|
113
163
|
*/
|
114
164
|
get windowId(): string | null;
|
165
|
+
/**
|
166
|
+
* The window id of the current cluster feature window
|
167
|
+
* @type {string|null}
|
168
|
+
*/
|
169
|
+
get clusterWindowId(): string | null;
|
115
170
|
/**
|
116
171
|
* @private
|
117
172
|
*/
|
@@ -136,11 +191,42 @@ declare class FeatureInfo extends Collection<AbstractFeatureInfoView> {
|
|
136
191
|
* @returns {Promise<void>}
|
137
192
|
*/
|
138
193
|
selectFeature(feature: FeatureType, position?: import("ol/coordinate.js").Coordinate | undefined, windowPosition?: import("ol/coordinate.js").Coordinate | undefined, featureInfoView?: AbstractFeatureInfoView | undefined): Promise<void>;
|
194
|
+
/**
|
195
|
+
* Selecting a cluster feature opens a window listing the features belonging to the cluster feature.
|
196
|
+
* To be listed the feature must meet the following criteria: a) the feature must be part of a layer, b) said layer must be managed in
|
197
|
+
* the same VcsApp as provided to the FeatureInfo on construction. if not providing a feature info view, then c) said layer must have a featureInfo property set on
|
198
|
+
* its properties bag and d) said featureInfo property must provide the name of a FeatureInfoView present on this FeatureInfos
|
199
|
+
* collection.
|
200
|
+
* The cluster feature will be cloned, highlighted and added on an internal scratch layer to ensure availability until deselection.
|
201
|
+
* The original cluster feature will be hidden until deselection.
|
202
|
+
* @param {import("ol").Feature} clusterFeature
|
203
|
+
* @returns {Promise<void>}
|
204
|
+
*/
|
205
|
+
selectClusterFeature(clusterFeature: import("ol").Feature): Promise<void>;
|
139
206
|
/**
|
140
207
|
* Clears the current feature. remove window, highlighting and provided feature.
|
141
208
|
* @private
|
142
209
|
*/
|
143
210
|
private _clearInternal;
|
211
|
+
/**
|
212
|
+
* Clears the current cluster feature. remove window, highlighting and provided cluster feature.
|
213
|
+
* @private
|
214
|
+
*/
|
215
|
+
private _clearClusterInternal;
|
216
|
+
/**
|
217
|
+
* Deselecting feature clears highlighting and closes FeatureInfoView. fires feature changed with null
|
218
|
+
*/
|
219
|
+
clearFeature(): void;
|
220
|
+
/**
|
221
|
+
* Deselecting and removing cluster feature. Closing cluster window and fires cluster feature changed with null
|
222
|
+
*/
|
223
|
+
clearCluster(): void;
|
224
|
+
/**
|
225
|
+
* Clears selection by deselecting current feature and cluster and closing all related windows.
|
226
|
+
* Fires feature changed and cluster feature changed events with null.
|
227
|
+
*/
|
228
|
+
clearSelection(): void;
|
144
229
|
}
|
145
230
|
import { VcsEvent } from '@vcmap/core';
|
146
231
|
import { Collection } from '@vcmap/core';
|
232
|
+
import { Feature } from 'ol';
|