@dative-gpi/foundation-shared-components 1.0.107 → 1.0.109
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/FSButton.vue +5 -3
- package/components/FSClickable.vue +5 -3
- package/components/FSLink.vue +17 -5
- package/components/FSRouterLink.vue +42 -0
- package/components/agenda/FSAgendaHeader.vue +1 -1
- package/components/agenda/FSAgendaHorizontalEvent.vue +1 -1
- package/components/agenda/FSAgendaHoursRow.vue +31 -7
- package/components/agenda/FSAgendaVerticalEvent.vue +1 -1
- package/components/agenda/FSDayAgenda.vue +0 -1
- package/components/agenda/FSMonthAgenda.vue +1 -6
- package/components/agenda/FSWeekAgenda.vue +1 -6
- package/components/fields/FSMagicConfigField.vue +3 -1
- package/components/fields/periodicField/FSPeriodicField.vue +4 -4
- package/components/fields/periodicField/FSPeriodicYearlyField.vue +4 -4
- package/components/lists/FSDataTableUI.vue +3 -6
- package/components/selects/FSSelectDashboardVariableType.vue +2 -1
- package/components/selects/chartSelectors/FSAggregationSelector.vue +52 -0
- package/components/selects/chartSelectors/FSAxisTypeSelector.vue +49 -0
- package/components/selects/chartSelectors/FSDisplayAsSelector.vue +53 -0
- package/components/selects/chartSelectors/FSFilterTypeSelector.vue +54 -0
- package/components/selects/chartSelectors/FSHeatmapRuleSelector.vue +54 -0
- package/components/selects/chartSelectors/FSOperationOnSelector.vue +53 -0
- package/components/selects/chartSelectors/FSPlanningTypeSelector.vue +53 -0
- package/components/selects/chartSelectors/FSPlotPerSelector.vue +52 -0
- package/components/selects/chartSelectors/FSSelectEntityType.vue +59 -0
- package/components/selects/chartSelectors/FSSerieTypeSelector.vue +53 -0
- package/composables/useMagicFieldProvider.ts +1 -0
- package/models/magicFields.ts +1 -0
- package/package.json +4 -4
- package/styles/components/fs_agenda_hours_row.scss +0 -8
- package/styles/components/fs_dialog.scss +2 -3
package/components/FSButton.vue
CHANGED
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
<template
|
|
130
130
|
v-else-if="$props.to"
|
|
131
131
|
>
|
|
132
|
-
<
|
|
132
|
+
<FSRouterLink
|
|
133
133
|
:to="$props.to"
|
|
134
134
|
>
|
|
135
135
|
<FSIcon
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
>
|
|
144
144
|
{{ $props.label }}
|
|
145
145
|
</FSSpan>
|
|
146
|
-
</
|
|
146
|
+
</FSRouterLink>
|
|
147
147
|
</template>
|
|
148
148
|
<template
|
|
149
149
|
v-else
|
|
@@ -170,6 +170,7 @@ import { type RouteLocation } from "vue-router";
|
|
|
170
170
|
import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
171
171
|
import { useColors } from "@dative-gpi/foundation-shared-components/composables";
|
|
172
172
|
|
|
173
|
+
import FSRouterLink from "./FSRouterLink.vue";
|
|
173
174
|
import FSClickable from "./FSClickable.vue";
|
|
174
175
|
import FSSpan from "./FSSpan.vue";
|
|
175
176
|
import FSIcon from "./FSIcon.vue";
|
|
@@ -185,6 +186,7 @@ const DEFAULT_PADDING = PADDING_ICON_LABEL;
|
|
|
185
186
|
export default defineComponent({
|
|
186
187
|
name: "FSButton",
|
|
187
188
|
components: {
|
|
189
|
+
FSRouterLink,
|
|
188
190
|
FSClickable,
|
|
189
191
|
FSSpan,
|
|
190
192
|
FSIcon,
|
|
@@ -198,7 +200,7 @@ export default defineComponent({
|
|
|
198
200
|
default: DEFAULT_PADDING
|
|
199
201
|
},
|
|
200
202
|
to: {
|
|
201
|
-
type:
|
|
203
|
+
type: Object as PropType<RouteLocation | null>,
|
|
202
204
|
required: false,
|
|
203
205
|
default: null
|
|
204
206
|
},
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
/>
|
|
41
41
|
</template>
|
|
42
42
|
</a>
|
|
43
|
-
<
|
|
43
|
+
<FSRouterLink
|
|
44
44
|
v-else-if="$props.to"
|
|
45
45
|
:style="style"
|
|
46
46
|
:to="$props.to"
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
:color="loadColor"
|
|
81
81
|
/>
|
|
82
82
|
</template>
|
|
83
|
-
</
|
|
83
|
+
</FSRouterLink>
|
|
84
84
|
<button
|
|
85
85
|
v-else
|
|
86
86
|
:type="$props.type"
|
|
@@ -134,11 +134,13 @@ import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-compone
|
|
|
134
134
|
import { useColors } from "@dative-gpi/foundation-shared-components/composables";
|
|
135
135
|
import { sizeToVar } from "@dative-gpi/foundation-shared-components/utils";
|
|
136
136
|
|
|
137
|
+
import FSRouterLink from "./FSRouterLink.vue";
|
|
137
138
|
import FSCard from "./FSCard.vue";
|
|
138
139
|
|
|
139
140
|
export default defineComponent({
|
|
140
141
|
name: "FSClickable",
|
|
141
142
|
components: {
|
|
143
|
+
FSRouterLink,
|
|
142
144
|
FSCard
|
|
143
145
|
},
|
|
144
146
|
props: {
|
|
@@ -163,7 +165,7 @@ export default defineComponent({
|
|
|
163
165
|
default: null
|
|
164
166
|
},
|
|
165
167
|
to: {
|
|
166
|
-
type:
|
|
168
|
+
type: Object as PropType<RouteLocation | null>,
|
|
167
169
|
required: false,
|
|
168
170
|
default: null
|
|
169
171
|
},
|
package/components/FSLink.vue
CHANGED
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
<a
|
|
3
3
|
v-if="$props.href"
|
|
4
4
|
:href="$props.href"
|
|
5
|
+
:class="classes"
|
|
5
6
|
:style="style"
|
|
6
7
|
>
|
|
7
8
|
<slot>
|
|
8
|
-
|
|
9
|
+
<FSSpan>
|
|
10
|
+
{{ $props.label }}
|
|
11
|
+
</FSSpan>
|
|
9
12
|
</slot>
|
|
10
13
|
</a>
|
|
11
|
-
<
|
|
14
|
+
<FSRouterLink
|
|
12
15
|
v-else-if="$props.to"
|
|
13
16
|
:to="$props.to"
|
|
14
17
|
:class="classes"
|
|
@@ -19,9 +22,11 @@
|
|
|
19
22
|
<slot
|
|
20
23
|
v-bind="props"
|
|
21
24
|
>
|
|
22
|
-
|
|
25
|
+
<FSSpan>
|
|
26
|
+
{{ $props.label }}
|
|
27
|
+
</FSSpan>
|
|
23
28
|
</slot>
|
|
24
|
-
</
|
|
29
|
+
</FSRouterLink>
|
|
25
30
|
</template>
|
|
26
31
|
|
|
27
32
|
<script lang="ts">
|
|
@@ -31,8 +36,15 @@ import { type RouteLocation } from "vue-router";
|
|
|
31
36
|
import { useBreakpoints, useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
|
|
32
37
|
import { type ColorBase, ColorEnum } from "@dative-gpi/foundation-shared-components/models";
|
|
33
38
|
|
|
39
|
+
import FSRouterLink from "./FSRouterLink.vue";
|
|
40
|
+
import FSSpan from "./FSSpan.vue";
|
|
41
|
+
|
|
34
42
|
export default defineComponent({
|
|
35
43
|
name: "FSLink",
|
|
44
|
+
components: {
|
|
45
|
+
FSRouterLink,
|
|
46
|
+
FSSpan
|
|
47
|
+
},
|
|
36
48
|
props: {
|
|
37
49
|
label: {
|
|
38
50
|
type: String as PropType<string | null>,
|
|
@@ -40,7 +52,7 @@ export default defineComponent({
|
|
|
40
52
|
default: null
|
|
41
53
|
},
|
|
42
54
|
to: {
|
|
43
|
-
type:
|
|
55
|
+
type: Object as PropType<RouteLocation | null>,
|
|
44
56
|
required: false,
|
|
45
57
|
default: null
|
|
46
58
|
},
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<router-link
|
|
3
|
+
:to="$props.to"
|
|
4
|
+
@auxclick="handleRoutingEvent($event, $props.to)"
|
|
5
|
+
@click="handleRoutingEvent($event, $props.to)"
|
|
6
|
+
v-bind="$attrs"
|
|
7
|
+
>
|
|
8
|
+
<template
|
|
9
|
+
v-for="(_, name) in $slots"
|
|
10
|
+
v-slot:[name]="slotData"
|
|
11
|
+
>
|
|
12
|
+
<slot
|
|
13
|
+
:name="name"
|
|
14
|
+
v-bind="{ ...slotData }"
|
|
15
|
+
/>
|
|
16
|
+
</template>
|
|
17
|
+
</router-link>
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script lang="ts">
|
|
21
|
+
import { defineComponent, type PropType } from "vue";
|
|
22
|
+
import { type RouteLocation } from "vue-router";
|
|
23
|
+
|
|
24
|
+
import { useRouting } from "@dative-gpi/foundation-shared-services/composables";
|
|
25
|
+
|
|
26
|
+
export default defineComponent({
|
|
27
|
+
name: "FSRouterLink",
|
|
28
|
+
props: {
|
|
29
|
+
to: {
|
|
30
|
+
type: Object as PropType<RouteLocation>,
|
|
31
|
+
required: true
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
setup() {
|
|
35
|
+
const { handleRoutingEvent } = useRouting();
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
handleRoutingEvent
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
</script>
|
|
@@ -134,7 +134,7 @@ export default defineComponent({
|
|
|
134
134
|
const width = computed(() => {
|
|
135
135
|
let start = props.start - dayDurationOffset.value;
|
|
136
136
|
let end = props.end - dayDurationOffset.value;
|
|
137
|
-
if(props.variant === 'current') {
|
|
137
|
+
if(props.variant === 'current' && dayEnd.value > props.now) {
|
|
138
138
|
end = props.now;
|
|
139
139
|
} else if (props.end > dayEnd.value) {
|
|
140
140
|
end = dayEnd.value - dayDurationOffset.value;
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
gap="0"
|
|
4
4
|
>
|
|
5
5
|
<FSRow
|
|
6
|
+
:padding="`0 ${paddingRightHours} 0 ${paddingLeftHours}`"
|
|
6
7
|
class="fs-agenda-hours-row"
|
|
7
8
|
:wrap="false"
|
|
8
9
|
gap="0"
|
|
9
10
|
align="center-center"
|
|
10
|
-
:style="style"
|
|
11
11
|
>
|
|
12
12
|
<FSRow
|
|
13
13
|
v-for="hour in hours"
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
</FSRow>
|
|
38
38
|
</FSRow>
|
|
39
39
|
<FSRow
|
|
40
|
+
:padding="`0 ${paddingRightMarkers} 0 ${paddingLeftMarkers}`"
|
|
40
41
|
class="fs-agenda-hours-row-markers"
|
|
41
42
|
:wrap="false"
|
|
42
43
|
gap="0"
|
|
@@ -88,8 +89,12 @@ export default defineComponent({
|
|
|
88
89
|
required: false,
|
|
89
90
|
default: false,
|
|
90
91
|
},
|
|
92
|
+
firstColumnWidth: {
|
|
93
|
+
type: String,
|
|
94
|
+
required: true,
|
|
95
|
+
},
|
|
91
96
|
},
|
|
92
|
-
setup() {
|
|
97
|
+
setup(props) {
|
|
93
98
|
const { getColors } = useColors();
|
|
94
99
|
const { isMobileSized } = useBreakpoints();
|
|
95
100
|
|
|
@@ -108,12 +113,27 @@ export default defineComponent({
|
|
|
108
113
|
return Array.from({ length: hoursToShow.value }, (_, i) => i * (24 / hoursToShow.value));
|
|
109
114
|
});
|
|
110
115
|
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
116
|
+
const paddingLeftHours = computed(() => {
|
|
117
|
+
// ((100% - ${props.firstColumnWidth}) / ${hoursToShow.value}) is the width of each hour slot (2 hour if 12 hours are shown, 1 hour if 24 hours are shown)
|
|
118
|
+
// 0.5 * ((100% - ${props.firstColumnWidth}) / ${hoursToShow.value}) is half of the width of each hour slot
|
|
119
|
+
// So we have : ${props.firstColumnWidth} - Half of the width of each hour slot
|
|
120
|
+
return `calc(${props.firstColumnWidth} - 0.5 * ((100% - ${props.firstColumnWidth}) / ${hoursToShow.value}))`;
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
const paddingRightHours = computed(() => {
|
|
124
|
+
return `calc(0.5 * ((100% - ${props.firstColumnWidth}) / ${hoursToShow.value}))`;
|
|
115
125
|
});
|
|
116
126
|
|
|
127
|
+
const paddingLeftMarkers = computed(() => {
|
|
128
|
+
return `calc(${props.firstColumnWidth} - 0.5 * ((100% - ${props.firstColumnWidth}) / 24))`;
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
const paddingRightMarkers = computed(() => {
|
|
132
|
+
return `calc(0.5 * ((100% - ${props.firstColumnWidth}) / 24))`;
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
117
137
|
const getMarkerStyle = (isNowHour: boolean): StyleValue => {
|
|
118
138
|
if(isNowHour) {
|
|
119
139
|
return {
|
|
@@ -129,8 +149,12 @@ export default defineComponent({
|
|
|
129
149
|
|
|
130
150
|
return {
|
|
131
151
|
hours,
|
|
132
|
-
style,
|
|
133
152
|
fontColor,
|
|
153
|
+
hoursToShow,
|
|
154
|
+
paddingLeftHours,
|
|
155
|
+
paddingRightHours,
|
|
156
|
+
paddingLeftMarkers,
|
|
157
|
+
paddingRightMarkers,
|
|
134
158
|
getMarkerStyle,
|
|
135
159
|
to2Digits
|
|
136
160
|
};
|
|
@@ -131,7 +131,7 @@ export default defineComponent({
|
|
|
131
131
|
const height = computed(() => {
|
|
132
132
|
let start = props.start - dayDurationOffset.value;
|
|
133
133
|
let end = props.end - dayDurationOffset.value;
|
|
134
|
-
if (props.variant === 'current') {
|
|
134
|
+
if (props.variant === 'current' && dayEnd.value > props.now) {
|
|
135
135
|
end = props.now;
|
|
136
136
|
} else if (props.end > dayEnd.value) {
|
|
137
137
|
end = dayEnd.value - dayDurationOffset.value;
|
|
@@ -9,13 +9,8 @@
|
|
|
9
9
|
gap="0"
|
|
10
10
|
:wrap="false"
|
|
11
11
|
>
|
|
12
|
-
<FSCol
|
|
13
|
-
height="100%"
|
|
14
|
-
:width="$props.firstColumnWidth"
|
|
15
|
-
>
|
|
16
|
-
</FSCol>
|
|
17
|
-
|
|
18
12
|
<FSAgendaHoursRow
|
|
13
|
+
:firstColumnWidth="$props.firstColumnWidth"
|
|
19
14
|
:displayNow="$props.nowIsInSelectedRange"
|
|
20
15
|
:modelValue="nowHour"
|
|
21
16
|
/>
|
|
@@ -9,13 +9,8 @@
|
|
|
9
9
|
gap="0"
|
|
10
10
|
:wrap="false"
|
|
11
11
|
>
|
|
12
|
-
<FSCol
|
|
13
|
-
height="100%"
|
|
14
|
-
:width="$props.firstColumnWidth"
|
|
15
|
-
>
|
|
16
|
-
</FSCol>
|
|
17
|
-
|
|
18
12
|
<FSAgendaHoursRow
|
|
13
|
+
:firstColumnWidth="$props.firstColumnWidth"
|
|
19
14
|
:displayNow="$props.nowIsInSelectedRange"
|
|
20
15
|
:modelValue="nowHour"
|
|
21
16
|
/>
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
<script lang="ts">
|
|
43
43
|
import { computed, defineComponent, type PropType } from "vue";
|
|
44
44
|
|
|
45
|
-
import { DateRules, IconRules, NumberRules, TextRules, TimeRules, TimeStepRules } from "../../models";
|
|
45
|
+
import { DateRules, IconRules, NumberRules, TextRules, TimeRules, TimeStepRules, AutocompleteRules } from "../../models";
|
|
46
46
|
import { useMagicFieldProvider } from "../../composables";
|
|
47
47
|
import { MagicFieldType } from "../../models/magicFields";
|
|
48
48
|
|
|
@@ -104,6 +104,8 @@ export default defineComponent({
|
|
|
104
104
|
return [TimeRules.required()];
|
|
105
105
|
case MagicFieldType.TimeStepField:
|
|
106
106
|
return [TimeStepRules.required()];
|
|
107
|
+
case MagicFieldType.PlotPerField:
|
|
108
|
+
return [AutocompleteRules.required()];
|
|
107
109
|
}
|
|
108
110
|
return [];
|
|
109
111
|
});
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
</template>
|
|
47
47
|
|
|
48
48
|
<script lang="ts">
|
|
49
|
-
import { ref, defineComponent,
|
|
49
|
+
import { ref, defineComponent, type PropType, watch } from "vue";
|
|
50
50
|
|
|
51
51
|
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui";
|
|
52
52
|
|
|
@@ -71,7 +71,7 @@ export default defineComponent({
|
|
|
71
71
|
},
|
|
72
72
|
props: {
|
|
73
73
|
modelValue: {
|
|
74
|
-
type: String as PropType<
|
|
74
|
+
type: String as PropType<string>,
|
|
75
75
|
required: true
|
|
76
76
|
},
|
|
77
77
|
editable: {
|
|
@@ -118,9 +118,9 @@ export default defineComponent({
|
|
|
118
118
|
emit('update:modelValue', period.item.default);
|
|
119
119
|
});
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
watch(() => props.modelValue, () => {
|
|
122
122
|
selectedPeriod.value = getPeriod(props.modelValue);
|
|
123
|
-
});
|
|
123
|
+
}, { immediate: true });
|
|
124
124
|
|
|
125
125
|
return {
|
|
126
126
|
availablePeriod,
|
|
@@ -100,7 +100,7 @@ export default defineComponent({
|
|
|
100
100
|
if (isNaN(parseInt(props.modelValue[3]))) {
|
|
101
101
|
return 0;
|
|
102
102
|
}
|
|
103
|
-
return parseInt(props.modelValue[3])
|
|
103
|
+
return parseInt(props.modelValue[3]);
|
|
104
104
|
});
|
|
105
105
|
|
|
106
106
|
const time = computed((): number => {
|
|
@@ -113,19 +113,19 @@ export default defineComponent({
|
|
|
113
113
|
const onUpdateDay = (value: number): void => {
|
|
114
114
|
const hours = Math.floor(value / (60 * 60 * 1000));
|
|
115
115
|
const minutes = Math.floor(value / (60 * 1000) % 60);
|
|
116
|
-
emit("update:modelValue", [`${minutes}`, `${hours}`, `${value}`, `${month.value
|
|
116
|
+
emit("update:modelValue", [`${minutes}`, `${hours}`, `${value}`, `${month.value}`, "*"]);
|
|
117
117
|
};
|
|
118
118
|
|
|
119
119
|
const onUpdateHours = (value: number): void => {
|
|
120
120
|
const hours = Math.floor(value / (60 * 60 * 1000));
|
|
121
121
|
const minutes = Math.floor(value / (60 * 1000) % 60);
|
|
122
|
-
emit("update:modelValue", [`${minutes}`, `${hours}`, `${day.value}`, `${month.value
|
|
122
|
+
emit("update:modelValue", [`${minutes}`, `${hours}`, `${day.value}`, `${month.value}`, "*"]);
|
|
123
123
|
};
|
|
124
124
|
|
|
125
125
|
const onUpdateMonth = (value: number): void => {
|
|
126
126
|
const hours = Math.floor(value / (60 * 60 * 1000));
|
|
127
127
|
const minutes = Math.floor(value / (60 * 1000) % 60);
|
|
128
|
-
emit("update:modelValue", [`${minutes}`, `${hours}`, `${day.value}`, `${value
|
|
128
|
+
emit("update:modelValue", [`${minutes}`, `${hours}`, `${day.value}`, `${value}`, "*"]);
|
|
129
129
|
};
|
|
130
130
|
|
|
131
131
|
return {
|
|
@@ -696,6 +696,7 @@ import { useRouter } from "vue-router";
|
|
|
696
696
|
import { ColorEnum, type FSDataTableColumn, type FSDataTableFilter, type FSDataTableOrder, type FSToggle } from "@dative-gpi/foundation-shared-components/models";
|
|
697
697
|
import { useBreakpoints, useColors, useSlots } from "@dative-gpi/foundation-shared-components/composables";
|
|
698
698
|
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
699
|
+
import { useRouting } from "@dative-gpi/foundation-shared-services/composables";
|
|
699
700
|
import { uuidv4 } from "@dative-gpi/bones-ui/tools/uuid"
|
|
700
701
|
|
|
701
702
|
import { alphanumericSort, containsSearchTerm, sizeToVar } from "../../utils";
|
|
@@ -888,6 +889,7 @@ export default defineComponent({
|
|
|
888
889
|
},
|
|
889
890
|
emits: ["update:modelValue", "update:headers", "update:showFilters", "update:filters", "update:mode", "update:sortBy", "update:rowsPerPage", "update:page", "update:include", "update:items", "click:row"],
|
|
890
891
|
setup(props, { emit }) {
|
|
892
|
+
const { handleRoutingEvent } = useRouting();
|
|
891
893
|
const { isExtraSmall } = useBreakpoints();
|
|
892
894
|
const { $tr } = useTranslationsProvider();
|
|
893
895
|
const { getColors } = useColors();
|
|
@@ -1107,12 +1109,7 @@ export default defineComponent({
|
|
|
1107
1109
|
clickable: true,
|
|
1108
1110
|
row: (event: PointerEvent, row: any) => {
|
|
1109
1111
|
if (props.itemTo && router) {
|
|
1110
|
-
|
|
1111
|
-
window.open(router.resolve(props.itemTo(row.item)).href, "_blank");
|
|
1112
|
-
}
|
|
1113
|
-
else {
|
|
1114
|
-
router.push(props.itemTo(row.item));
|
|
1115
|
-
}
|
|
1112
|
+
handleRoutingEvent(event, props.itemTo(row.item), true);
|
|
1116
1113
|
}
|
|
1117
1114
|
else {
|
|
1118
1115
|
emit("click:row", row.item);
|
|
@@ -36,7 +36,8 @@ export default defineComponent({
|
|
|
36
36
|
const dashboardVariableTypes = computed((): { id: DashboardVariableType; label: string }[] => ([
|
|
37
37
|
{ id: DashboardVariableType.Number, label: $tr("ui.dashboard-variable-type.number", "Number") },
|
|
38
38
|
{ id: DashboardVariableType.String, label: $tr("ui.dashboard-variable-type.string", "String") },
|
|
39
|
-
{ id: DashboardVariableType.TimeStep, label: $tr("ui.dashboard-variable-type.time-step", "Time step")
|
|
39
|
+
{ id: DashboardVariableType.TimeStep, label: $tr("ui.dashboard-variable-type.time-step", "Time step")},
|
|
40
|
+
{ id: DashboardVariableType.PlotPer, label: $tr("ui.dashboard-variable-type.plot-per", "Plot per")}
|
|
40
41
|
]));
|
|
41
42
|
|
|
42
43
|
return {
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSAutocompleteField
|
|
3
|
+
:label="label ?? $tr('ui.common.aggregation-type','Aggregation')"
|
|
4
|
+
:items="aggregationTypeItems"
|
|
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 { AggregationType } from "@dative-gpi/foundation-shared-domain/enums";
|
|
15
|
+
|
|
16
|
+
import { getEnumEntries } from "@dative-gpi/foundation-shared-domain/tools";
|
|
17
|
+
import { aggregationTypeLabel } 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<AggregationType>,
|
|
28
|
+
required: false
|
|
29
|
+
},
|
|
30
|
+
label : {
|
|
31
|
+
type: String,
|
|
32
|
+
required: false
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
emits: ['update:modelValue'],
|
|
36
|
+
setup() {
|
|
37
|
+
|
|
38
|
+
const aggregationTypeItems = computed(()=>{
|
|
39
|
+
return getEnumEntries(AggregationType).filter(f=>f.value != AggregationType.None).map((f)=>{
|
|
40
|
+
return {
|
|
41
|
+
id: f.value,
|
|
42
|
+
label: aggregationTypeLabel(f.value)
|
|
43
|
+
}
|
|
44
|
+
})
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
aggregationTypeItems
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
</script>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSToggleSet
|
|
3
|
+
:hideHeader="true"
|
|
4
|
+
:values="axisTypeItems"
|
|
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 {AxisType} from "@dative-gpi/foundation-shared-domain/enums";
|
|
15
|
+
|
|
16
|
+
import { getEnumEntries } from "@dative-gpi/foundation-shared-domain/tools";
|
|
17
|
+
import { axisTypeLabel } from "@dative-gpi/foundation-shared-components/tools";
|
|
18
|
+
|
|
19
|
+
import FSToggleSet from "@dative-gpi/foundation-shared-components/components/FSToggleSet.vue";
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
export default defineComponent({
|
|
23
|
+
components: {
|
|
24
|
+
FSToggleSet
|
|
25
|
+
},
|
|
26
|
+
props: {
|
|
27
|
+
modelValue: {
|
|
28
|
+
type: Number as PropType<AxisType>,
|
|
29
|
+
required: false
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
emits: ['update:modelValue'],
|
|
33
|
+
setup() {
|
|
34
|
+
|
|
35
|
+
const axisTypeItems = computed(()=>{
|
|
36
|
+
return getEnumEntries(AxisType).map((f)=>{
|
|
37
|
+
return {
|
|
38
|
+
id: f.value,
|
|
39
|
+
label: axisTypeLabel(f.value)
|
|
40
|
+
}
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
axisTypeItems
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
</script>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSAutocompleteField
|
|
3
|
+
:label="label ?? $tr('ui.common.display-as','Display as')"
|
|
4
|
+
:items="displayAsItems"
|
|
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 {DisplayAs} from "@dative-gpi/foundation-shared-domain/enums";
|
|
15
|
+
|
|
16
|
+
import { getEnumEntries } from "@dative-gpi/foundation-shared-domain/tools";
|
|
17
|
+
import { displayAsLabel } 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<DisplayAs>,
|
|
28
|
+
required: false
|
|
29
|
+
},
|
|
30
|
+
label: {
|
|
31
|
+
type: String,
|
|
32
|
+
required: false
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
},
|
|
36
|
+
emits: ['update:modelValue'],
|
|
37
|
+
setup() {
|
|
38
|
+
|
|
39
|
+
const displayAsItems = computed(()=>{
|
|
40
|
+
return getEnumEntries(DisplayAs).filter(f=>f.value != DisplayAs.None).map((f)=>{
|
|
41
|
+
return {
|
|
42
|
+
id: f.value,
|
|
43
|
+
label: displayAsLabel(f.value)
|
|
44
|
+
}
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
displayAsItems,
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
</script>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSAutocompleteField
|
|
3
|
+
:label="label ?? $tr('ui.common.filter-type','Filter type')"
|
|
4
|
+
:toggleSet="true"
|
|
5
|
+
:items="filterTypeItems"
|
|
6
|
+
:modelValue="modelValue"
|
|
7
|
+
@update:modelValue="$emit('update:modelValue', $event)"
|
|
8
|
+
v-bind="$attrs"
|
|
9
|
+
/>
|
|
10
|
+
</template>
|
|
11
|
+
|
|
12
|
+
<script lang="ts">
|
|
13
|
+
import { computed, defineComponent, type PropType } from "vue";
|
|
14
|
+
|
|
15
|
+
import {FilterType} from "@dative-gpi/foundation-shared-domain/enums";
|
|
16
|
+
|
|
17
|
+
import { getEnumEntries } from "@dative-gpi/foundation-shared-domain/tools";
|
|
18
|
+
import { filterTypeLabel } from "@dative-gpi/foundation-shared-components/tools";
|
|
19
|
+
|
|
20
|
+
import FSAutocompleteField from "@dative-gpi/foundation-shared-components/components/fields/FSAutocompleteField.vue";
|
|
21
|
+
|
|
22
|
+
export default defineComponent({
|
|
23
|
+
components: {
|
|
24
|
+
FSAutocompleteField
|
|
25
|
+
},
|
|
26
|
+
props: {
|
|
27
|
+
modelValue: {
|
|
28
|
+
type: Number as PropType<FilterType>,
|
|
29
|
+
required: false,
|
|
30
|
+
default : FilterType.None
|
|
31
|
+
},
|
|
32
|
+
label: {
|
|
33
|
+
type: String,
|
|
34
|
+
required: false
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
emits: ['update:modelValue'],
|
|
38
|
+
setup() {
|
|
39
|
+
|
|
40
|
+
const filterTypeItems = computed(()=>{
|
|
41
|
+
return getEnumEntries(FilterType).filter(f=>f.value != FilterType.None).map((f)=>{
|
|
42
|
+
return {
|
|
43
|
+
id: f.value,
|
|
44
|
+
label: filterTypeLabel(f.value)
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
filterTypeItems
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
})
|
|
54
|
+
</script>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSAutocompleteField
|
|
3
|
+
:label="label ?? $tr('ui.common.heat-rule','Heat rule')"
|
|
4
|
+
:items="heatmapRuleItems"
|
|
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 {HeatmapRule} from "@dative-gpi/foundation-shared-domain/enums";
|
|
15
|
+
|
|
16
|
+
import { getEnumEntries } from "@dative-gpi/foundation-shared-domain/tools";
|
|
17
|
+
import { heatmapRuleLabel } from "@dative-gpi/foundation-shared-components/tools";
|
|
18
|
+
|
|
19
|
+
import FSAutocompleteField from "@dative-gpi/foundation-shared-components/components/fields/FSAutocompleteField.vue";
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
export default defineComponent({
|
|
23
|
+
components: {
|
|
24
|
+
FSAutocompleteField
|
|
25
|
+
},
|
|
26
|
+
props: {
|
|
27
|
+
modelValue: {
|
|
28
|
+
type: Number as PropType<HeatmapRule>,
|
|
29
|
+
required: false
|
|
30
|
+
},
|
|
31
|
+
label: {
|
|
32
|
+
type: String,
|
|
33
|
+
required: false
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
},
|
|
37
|
+
emits: ['update:modelValue'],
|
|
38
|
+
setup() {
|
|
39
|
+
|
|
40
|
+
const heatmapRuleItems = computed(()=>{
|
|
41
|
+
return getEnumEntries(HeatmapRule).filter(f=>f.value != HeatmapRule.None).map((f)=>{
|
|
42
|
+
return {
|
|
43
|
+
id: f.value,
|
|
44
|
+
label: heatmapRuleLabel(f.value)
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
heatmapRuleItems
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
})
|
|
54
|
+
</script>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSAutocompleteField
|
|
3
|
+
:label="label ?? $tr('ui.common.operation-on','Operation on')"
|
|
4
|
+
:items="operationOnItems"
|
|
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 {OperationOn} from "@dative-gpi/foundation-shared-domain/enums";
|
|
15
|
+
|
|
16
|
+
import { getEnumEntries } from "@dative-gpi/foundation-shared-domain/tools";
|
|
17
|
+
import { operationOnLabel} from "@dative-gpi/foundation-shared-components/tools";
|
|
18
|
+
|
|
19
|
+
import FSAutocompleteField from "@dative-gpi/foundation-shared-components/components/fields/FSAutocompleteField.vue";
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
export default defineComponent({
|
|
23
|
+
components: {
|
|
24
|
+
FSAutocompleteField
|
|
25
|
+
},
|
|
26
|
+
props: {
|
|
27
|
+
modelValue: {
|
|
28
|
+
type: Number as PropType<OperationOn>,
|
|
29
|
+
required: false
|
|
30
|
+
},
|
|
31
|
+
label : {
|
|
32
|
+
type: String,
|
|
33
|
+
required: false
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
emits: ['update:modelValue'],
|
|
37
|
+
setup() {
|
|
38
|
+
|
|
39
|
+
const operationOnItems = computed(()=>{
|
|
40
|
+
return getEnumEntries(OperationOn).filter(f=>f.value != OperationOn.None).map((f)=>{
|
|
41
|
+
return {
|
|
42
|
+
id: f.value,
|
|
43
|
+
label: operationOnLabel(f.value)
|
|
44
|
+
}
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
operationOnItems
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
</script>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSAutocompleteField
|
|
3
|
+
:label="label ?? $tr('ui.common.planning-type','Planning type')"
|
|
4
|
+
:items="planningTypeItems"
|
|
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 {PlanningType} from "@dative-gpi/foundation-shared-domain/enums";
|
|
15
|
+
|
|
16
|
+
import { getEnumEntries } from "@dative-gpi/foundation-shared-domain/tools";
|
|
17
|
+
import { planningTypeLabel } from "@dative-gpi/foundation-shared-components/tools";
|
|
18
|
+
|
|
19
|
+
import FSAutocompleteField from "@dative-gpi/foundation-shared-components/components/fields/FSAutocompleteField.vue";
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
export default defineComponent({
|
|
23
|
+
components: {
|
|
24
|
+
FSAutocompleteField
|
|
25
|
+
},
|
|
26
|
+
props: {
|
|
27
|
+
modelValue: {
|
|
28
|
+
type: Number as PropType<PlanningType>,
|
|
29
|
+
required: false
|
|
30
|
+
},
|
|
31
|
+
label: {
|
|
32
|
+
type: String,
|
|
33
|
+
required: false
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
emits: ['update:modelValue'],
|
|
37
|
+
setup() {
|
|
38
|
+
|
|
39
|
+
const planningTypeItems = computed(()=>{
|
|
40
|
+
return getEnumEntries(PlanningType).filter(f=>f.value != PlanningType.None).map((f)=>{
|
|
41
|
+
return {
|
|
42
|
+
id: f.value,
|
|
43
|
+
label: planningTypeLabel(f.value)
|
|
44
|
+
}
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
planningTypeItems
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
</script>
|
|
@@ -0,0 +1,52 @@
|
|
|
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>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSSelectField
|
|
3
|
+
:items="entityTypes"
|
|
4
|
+
:clearable="false"
|
|
5
|
+
:modelValue="$props.modelValue"
|
|
6
|
+
@update:modelValue="$emit('update:modelValue', $event)"
|
|
7
|
+
v-bind="$attrs"
|
|
8
|
+
/>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<script lang="ts">
|
|
12
|
+
import type { PropType} from "vue";
|
|
13
|
+
import { computed, defineComponent } from "vue";
|
|
14
|
+
|
|
15
|
+
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
16
|
+
import { EntityType } from "@dative-gpi/foundation-shared-domain/enums";
|
|
17
|
+
|
|
18
|
+
import FSSelectField from "@dative-gpi/foundation-shared-components/components/fields/FSSelectField.vue";
|
|
19
|
+
|
|
20
|
+
export default defineComponent({
|
|
21
|
+
name: "FSSelectEntityType",
|
|
22
|
+
components: {
|
|
23
|
+
FSSelectField
|
|
24
|
+
},
|
|
25
|
+
props: {
|
|
26
|
+
modelValue: {
|
|
27
|
+
type: Number as PropType<EntityType>,
|
|
28
|
+
required: false,
|
|
29
|
+
default: EntityType.Device
|
|
30
|
+
},
|
|
31
|
+
useNone: {
|
|
32
|
+
type: Boolean,
|
|
33
|
+
required: false,
|
|
34
|
+
default: false
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
emits: ["update:modelValue"],
|
|
38
|
+
setup(props) {
|
|
39
|
+
const { $tr } = useTranslationsProvider();
|
|
40
|
+
|
|
41
|
+
const entityTypes = computed((): { id: EntityType; label: string }[] => {
|
|
42
|
+
const items = [
|
|
43
|
+
{ id: EntityType.Model, label: $tr("ui.entity-type.models", "Models") },
|
|
44
|
+
{ id: EntityType.Device, label: $tr("ui.entity-type.devices", "Devices") },
|
|
45
|
+
{ id: EntityType.Group, label: $tr("ui.entity-type.groups", "Groups") },
|
|
46
|
+
{ id: EntityType.Location, label: $tr("ui.entity-type.locations", "Locations") }
|
|
47
|
+
];
|
|
48
|
+
if (props.useNone) {
|
|
49
|
+
items.unshift({ id: EntityType.None, label: $tr("ui.entity-type.none", "None") });
|
|
50
|
+
}
|
|
51
|
+
return items;
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
return {
|
|
55
|
+
entityTypes
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
</script>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSAutocompleteField
|
|
3
|
+
:label="label ?? $tr('ui.common.serie-type','Serie type')"
|
|
4
|
+
:items="serieTypeItems"
|
|
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 {SerieType} from "@dative-gpi/foundation-shared-domain/enums";
|
|
15
|
+
|
|
16
|
+
import { getEnumEntries } from "@dative-gpi/foundation-shared-domain/tools";
|
|
17
|
+
import { serieTypeLabel } from "@dative-gpi/foundation-shared-components/tools";
|
|
18
|
+
|
|
19
|
+
import FSAutocompleteField from "@dative-gpi/foundation-shared-components/components/fields/FSAutocompleteField.vue";
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
export default defineComponent({
|
|
23
|
+
components: {
|
|
24
|
+
FSAutocompleteField
|
|
25
|
+
},
|
|
26
|
+
props: {
|
|
27
|
+
modelValue: {
|
|
28
|
+
type: Number as PropType<SerieType>,
|
|
29
|
+
required: false
|
|
30
|
+
},
|
|
31
|
+
label: {
|
|
32
|
+
type: String,
|
|
33
|
+
required: false
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
emits: ['update:modelValue'],
|
|
37
|
+
setup() {
|
|
38
|
+
|
|
39
|
+
const serieTypeItems = computed(()=>{
|
|
40
|
+
return getEnumEntries(SerieType).filter(f=>f.value != SerieType.None).map((f)=>{
|
|
41
|
+
return {
|
|
42
|
+
id: f.value,
|
|
43
|
+
label: serieTypeLabel(f.value)
|
|
44
|
+
}
|
|
45
|
+
})
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
serieTypeItems
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
</script>
|
|
@@ -10,6 +10,7 @@ const FIELDS = {
|
|
|
10
10
|
[MagicFieldType.IconField] : defineAsyncComponent(() => import("../components/fields/FSIconField.vue")),
|
|
11
11
|
[MagicFieldType.TimeField] : defineAsyncComponent(() => import("../components/fields/FSTimeField.vue")),
|
|
12
12
|
[MagicFieldType.TimeStepField] : defineAsyncComponent(() => import("../components/fields/FSTimeStepField.vue")),
|
|
13
|
+
[MagicFieldType.PlotPerField] : defineAsyncComponent(() => import("../components/selects/chartSelectors/FSPlotPerSelector.vue")),
|
|
13
14
|
};
|
|
14
15
|
|
|
15
16
|
export const useMagicFieldProvider = () => {
|
package/models/magicFields.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dative-gpi/foundation-shared-components",
|
|
3
3
|
"sideEffects": false,
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.109",
|
|
5
5
|
"description": "",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"author": "",
|
|
11
11
|
"license": "ISC",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@dative-gpi/foundation-shared-domain": "1.0.
|
|
14
|
-
"@dative-gpi/foundation-shared-services": "1.0.
|
|
13
|
+
"@dative-gpi/foundation-shared-domain": "1.0.109",
|
|
14
|
+
"@dative-gpi/foundation-shared-services": "1.0.109"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@dative-gpi/bones-ui": "^1.0.0",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"sass": "1.71.1",
|
|
36
36
|
"sass-loader": "13.3.2"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "4c6fede4689135f15a5af1ed120a816c1aed111c"
|
|
39
39
|
}
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
.fs-agenda-hours-row {
|
|
2
|
-
transform: var(--fs-agenda-hours-row-transform);
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.fs-agenda-hours-row-markers {
|
|
6
|
-
transform: translateX(calc(-2.4% + 1px)); // 1px is the border width
|
|
7
|
-
}
|
|
8
|
-
|
|
9
1
|
.fs-agenda-hours-row-marker {
|
|
10
2
|
height: 4px;
|
|
11
3
|
border-right: solid 1px var(--fs-agenda-hours-row-marker-color);
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
.fs-dialog-mobile > .v-overlay__content {
|
|
2
|
-
flex-direction: column-reverse !important;
|
|
3
|
-
|
|
4
2
|
max-height: 100vh !important;
|
|
5
3
|
max-width: 100vw !important;
|
|
6
|
-
height: 100% !important;
|
|
7
4
|
width: 100% !important;
|
|
8
5
|
margin: 0 !important;
|
|
6
|
+
position: absolute;
|
|
7
|
+
bottom: 0;
|
|
9
8
|
}
|