@dative-gpi/foundation-shared-components 1.0.108 → 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/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/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
|
@@ -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
|
});
|
|
@@ -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);
|