@dative-gpi/foundation-shared-components 1.0.157 → 1.0.158-devices-latency-2
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/components/FSCol.vue +11 -5
- package/components/FSTagGroup.vue +3 -1
- package/components/fields/FSAutocompleteField.vue +8 -0
- package/components/fields/FSBaseField.vue +6 -0
- package/components/fields/FSIconField.vue +10 -2
- package/components/fields/FSSearchField.vue +1 -0
- package/components/fields/FSTimeRangeField.vue +6 -0
- package/components/lists/FSDataTableUI.vue +30 -24
- package/components/map/FSMap.vue +1 -3
- package/components/map/FSMapMarker.vue +52 -13
- package/components/tiles/FSEntityCountBadge.vue +83 -0
- package/components/tiles/FSFolderTileUI.vue +38 -4
- package/components/tiles/FSGroupTileUI.vue +15 -67
- package/components/tiles/FSGroupingTileUI.vue +52 -0
- package/components/tiles/FSLocationTileUI.vue +9 -28
- package/components/tiles/FSSimpleTileUI.vue +2 -2
- package/components/views/desktop/FSBaseDefaultDesktopView.vue +1 -1
- package/components/views/desktop/FSBaseEntityDesktopView.vue +6 -4
- package/components/views/mobile/FSBaseDefaultMobileView.vue +5 -5
- package/components/views/mobile/FSBaseEntityMobileView.vue +28 -21
- package/composables/index.ts +0 -1
- package/composables/useMapLayers.ts +60 -53
- package/models/index.ts +0 -1
- package/package.json +4 -4
- package/styles/components/fs_col.scss +1 -1
- package/tools/alertsTools.ts +2 -1
- package/tools/chartsTools.ts +14 -1
- package/components/fields/FSMagicConfigField.vue +0 -171
- package/components/fields/FSMagicField.vue +0 -198
- package/components/selects/chartSelectors/FSPlotPerSelector.vue +0 -52
- package/composables/useMagicFieldProvider.ts +0 -24
- package/models/magicFields.ts +0 -11
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<component
|
|
3
|
-
v-if="!$props.useOnlyAllowedValues"
|
|
4
|
-
:is="get($props.type)"
|
|
5
|
-
:modelValue="valueToInput"
|
|
6
|
-
@update:modelValue="inputToValue"
|
|
7
|
-
v-bind="$attrs"
|
|
8
|
-
/>
|
|
9
|
-
<FSSelectField
|
|
10
|
-
v-else
|
|
11
|
-
itemValue="value"
|
|
12
|
-
:items="items"
|
|
13
|
-
:modelValue="$props.modelValue"
|
|
14
|
-
@update:modelValue="$emit('update:modelValue', $event)"
|
|
15
|
-
v-bind="$attrs"
|
|
16
|
-
>
|
|
17
|
-
<template
|
|
18
|
-
v-if="$props.type === MagicFieldType.IconField"
|
|
19
|
-
#selection="{ item }"
|
|
20
|
-
>
|
|
21
|
-
<FSRow
|
|
22
|
-
align="center-center"
|
|
23
|
-
:wrap="false"
|
|
24
|
-
>
|
|
25
|
-
<FSIcon
|
|
26
|
-
v-if="item.raw.value"
|
|
27
|
-
>
|
|
28
|
-
{{ item.raw.value }}
|
|
29
|
-
</FSIcon>
|
|
30
|
-
<FSSpan
|
|
31
|
-
v-if="item.raw.value !== item.raw.label"
|
|
32
|
-
>
|
|
33
|
-
{{ item.raw.label }}
|
|
34
|
-
</FSSpan>
|
|
35
|
-
</FSRow>
|
|
36
|
-
</template>
|
|
37
|
-
<template
|
|
38
|
-
v-if="$props.type === MagicFieldType.IconField"
|
|
39
|
-
#item-label="{ item }"
|
|
40
|
-
>
|
|
41
|
-
<FSRow
|
|
42
|
-
align="center-center"
|
|
43
|
-
:wrap="false"
|
|
44
|
-
>
|
|
45
|
-
<FSIcon
|
|
46
|
-
v-if="item.raw.value"
|
|
47
|
-
>
|
|
48
|
-
{{ item.raw.value }}
|
|
49
|
-
</FSIcon>
|
|
50
|
-
<FSSpan
|
|
51
|
-
v-if="item.raw.value !== item.raw.label"
|
|
52
|
-
>
|
|
53
|
-
{{ item.raw.label }}
|
|
54
|
-
</FSSpan>
|
|
55
|
-
</FSRow>
|
|
56
|
-
</template>
|
|
57
|
-
</FSSelectField>
|
|
58
|
-
</template>
|
|
59
|
-
|
|
60
|
-
<script lang="ts">
|
|
61
|
-
import { computed, defineComponent, type PropType } from "vue";
|
|
62
|
-
|
|
63
|
-
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
64
|
-
|
|
65
|
-
import { useDateFormat } from "@dative-gpi/foundation-shared-services/composables";
|
|
66
|
-
|
|
67
|
-
import { useMagicFieldProvider } from "../../composables";
|
|
68
|
-
import { MagicFieldType } from "../../models/magicFields";
|
|
69
|
-
import { getTimeBestString, timeStepToString } from "../../utils";
|
|
70
|
-
|
|
71
|
-
import FSSelectField from "./FSSelectField.vue";
|
|
72
|
-
import FSIcon from "../FSIcon.vue";
|
|
73
|
-
import FSSpan from "../FSSpan.vue";
|
|
74
|
-
import FSRow from "../FSRow.vue";
|
|
75
|
-
|
|
76
|
-
export default defineComponent({
|
|
77
|
-
name: "FSMagicField",
|
|
78
|
-
components: {
|
|
79
|
-
FSSelectField,
|
|
80
|
-
FSIcon,
|
|
81
|
-
FSSpan,
|
|
82
|
-
FSRow
|
|
83
|
-
},
|
|
84
|
-
props: {
|
|
85
|
-
type: {
|
|
86
|
-
type: Number as PropType<MagicFieldType>,
|
|
87
|
-
required: false,
|
|
88
|
-
default: MagicFieldType.TextField
|
|
89
|
-
},
|
|
90
|
-
modelValue: {
|
|
91
|
-
type: String as PropType<string | null>,
|
|
92
|
-
required: false,
|
|
93
|
-
default: null
|
|
94
|
-
},
|
|
95
|
-
allowedValues: {
|
|
96
|
-
type: Array as PropType<{ value: string; label: string }[]>,
|
|
97
|
-
required: false,
|
|
98
|
-
default: () => []
|
|
99
|
-
},
|
|
100
|
-
useOnlyAllowedValues: {
|
|
101
|
-
type: Boolean,
|
|
102
|
-
required: false,
|
|
103
|
-
default: false
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
emits: ["update:modelValue"],
|
|
107
|
-
setup(props, { emit }) {
|
|
108
|
-
const { epochToShortTimeFormat } = useDateFormat();
|
|
109
|
-
const { $tr } = useTranslationsProvider();
|
|
110
|
-
const { get } = useMagicFieldProvider();
|
|
111
|
-
|
|
112
|
-
const items = computed(() => props.allowedValues.map((av) => ({
|
|
113
|
-
value: av.value,
|
|
114
|
-
label: av.label || asString(av.value),
|
|
115
|
-
})));
|
|
116
|
-
|
|
117
|
-
const valueToInput = computed((): any => {
|
|
118
|
-
if (props.modelValue == null) {
|
|
119
|
-
return null;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
switch (props.type) {
|
|
123
|
-
case MagicFieldType.NumberField:
|
|
124
|
-
case MagicFieldType.DateTimeField:
|
|
125
|
-
case MagicFieldType.TimeField:
|
|
126
|
-
if (isNaN(parseFloat(props.modelValue))) {
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
return parseFloat(props.modelValue);
|
|
130
|
-
case MagicFieldType.Switch:
|
|
131
|
-
return props.modelValue === "true";
|
|
132
|
-
case MagicFieldType.TimeStepField:
|
|
133
|
-
return JSON.parse(props.modelValue);
|
|
134
|
-
case MagicFieldType.PlotPerField:
|
|
135
|
-
return parseInt(props.modelValue);
|
|
136
|
-
default:
|
|
137
|
-
return props.modelValue;
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
const asString = (value: string): string | null => {
|
|
142
|
-
if (value == null) {
|
|
143
|
-
return "";
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
switch (props.type) {
|
|
147
|
-
case MagicFieldType.NumberField:
|
|
148
|
-
return value.toString();
|
|
149
|
-
case MagicFieldType.Switch:
|
|
150
|
-
if (value) {
|
|
151
|
-
return $tr("magic-field.true", "True");
|
|
152
|
-
}
|
|
153
|
-
return $tr("magic-field.false", "False");
|
|
154
|
-
case MagicFieldType.DateTimeField:
|
|
155
|
-
return epochToShortTimeFormat(parseFloat(value));
|
|
156
|
-
case MagicFieldType.TimeField:
|
|
157
|
-
return getTimeBestString(parseFloat(value));
|
|
158
|
-
case MagicFieldType.TimeStepField:
|
|
159
|
-
return timeStepToString(JSON.parse(value));
|
|
160
|
-
default:
|
|
161
|
-
return value;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
const inputToValue = (value: any) => {
|
|
166
|
-
if (value == null) {
|
|
167
|
-
emit("update:modelValue", null);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
switch (props.type) {
|
|
171
|
-
case MagicFieldType.NumberField:
|
|
172
|
-
case MagicFieldType.Switch:
|
|
173
|
-
case MagicFieldType.DateTimeField:
|
|
174
|
-
case MagicFieldType.TimeField:
|
|
175
|
-
emit("update:modelValue", value.toString());
|
|
176
|
-
break;
|
|
177
|
-
case MagicFieldType.TimeStepField:
|
|
178
|
-
emit("update:modelValue", JSON.stringify(value));
|
|
179
|
-
break;
|
|
180
|
-
case MagicFieldType.PlotPerField:
|
|
181
|
-
emit("update:modelValue", value.toString());
|
|
182
|
-
break;
|
|
183
|
-
default:
|
|
184
|
-
emit("update:modelValue", value);
|
|
185
|
-
break;
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
return {
|
|
190
|
-
MagicFieldType,
|
|
191
|
-
valueToInput,
|
|
192
|
-
items,
|
|
193
|
-
inputToValue,
|
|
194
|
-
get
|
|
195
|
-
};
|
|
196
|
-
},
|
|
197
|
-
});
|
|
198
|
-
</script>
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<FSAutocompleteField
|
|
3
|
-
:label="label ?? $tr('ui.common.plot-per','Plot per')"
|
|
4
|
-
:items="plotPerItems"
|
|
5
|
-
:modelValue="modelValue"
|
|
6
|
-
@update:modelValue="$emit('update:modelValue', $event)"
|
|
7
|
-
v-bind="$attrs"
|
|
8
|
-
/>
|
|
9
|
-
</template>
|
|
10
|
-
|
|
11
|
-
<script lang="ts">
|
|
12
|
-
import { computed, defineComponent, type PropType } from "vue";
|
|
13
|
-
|
|
14
|
-
import {PlotPer} from "@dative-gpi/foundation-shared-domain/enums";
|
|
15
|
-
|
|
16
|
-
import { getEnumEntries } from "@dative-gpi/foundation-shared-domain/tools";
|
|
17
|
-
import { plotPerLabel } from "@dative-gpi/foundation-shared-components/tools";
|
|
18
|
-
|
|
19
|
-
import FSAutocompleteField from "@dative-gpi/foundation-shared-components/components/fields/FSAutocompleteField.vue";
|
|
20
|
-
|
|
21
|
-
export default defineComponent({
|
|
22
|
-
components: {
|
|
23
|
-
FSAutocompleteField
|
|
24
|
-
},
|
|
25
|
-
props: {
|
|
26
|
-
modelValue: {
|
|
27
|
-
type: Number as PropType<PlotPer>,
|
|
28
|
-
required: false
|
|
29
|
-
},
|
|
30
|
-
label: {
|
|
31
|
-
type: String,
|
|
32
|
-
required: false
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
emits: ['update:modelValue'],
|
|
36
|
-
setup() {
|
|
37
|
-
|
|
38
|
-
const plotPerItems = computed(()=>{
|
|
39
|
-
return getEnumEntries(PlotPer).filter(f=>f.value != PlotPer.None).map((f)=>{
|
|
40
|
-
return {
|
|
41
|
-
id: f.value,
|
|
42
|
-
label: plotPerLabel(f.value)
|
|
43
|
-
}
|
|
44
|
-
})
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
return {
|
|
48
|
-
plotPerItems
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
})
|
|
52
|
-
</script>
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { defineAsyncComponent } from "vue";
|
|
2
|
-
|
|
3
|
-
import { MagicFieldType } from "../models/magicFields";
|
|
4
|
-
|
|
5
|
-
const FIELDS = {
|
|
6
|
-
[MagicFieldType.NumberField] : defineAsyncComponent(() => import("../components/fields/FSNumberField.vue")),
|
|
7
|
-
[MagicFieldType.TextField] : defineAsyncComponent(() => import("../components/fields/FSTextField.vue")),
|
|
8
|
-
[MagicFieldType.Switch] : defineAsyncComponent(() => import("../components/FSSwitch.vue")),
|
|
9
|
-
[MagicFieldType.DateTimeField] : defineAsyncComponent(() => import("../components/fields/FSDateTimeField.vue")),
|
|
10
|
-
[MagicFieldType.IconField] : defineAsyncComponent(() => import("../components/fields/FSIconField.vue")),
|
|
11
|
-
[MagicFieldType.TimeField] : defineAsyncComponent(() => import("../components/fields/FSTimeField.vue")),
|
|
12
|
-
[MagicFieldType.TimeStepField] : defineAsyncComponent(() => import("../components/fields/FSTimeStepField.vue")),
|
|
13
|
-
[MagicFieldType.PlotPerField] : defineAsyncComponent(() => import("../components/selects/chartSelectors/FSPlotPerSelector.vue")),
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export const useMagicFieldProvider = () => {
|
|
17
|
-
const get = (code: keyof typeof FIELDS) => {
|
|
18
|
-
return FIELDS[code];
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
return {
|
|
22
|
-
get
|
|
23
|
-
};
|
|
24
|
-
};
|