@dative-gpi/foundation-shared-components 1.0.35 → 1.0.37-report-v1

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.
Files changed (271) hide show
  1. package/components/FSBreadcrumbs.vue +21 -12
  2. package/components/FSButton.vue +10 -10
  3. package/components/FSCalendar.vue +52 -14
  4. package/components/FSCalendarTwin.vue +96 -40
  5. package/components/FSCard.vue +28 -7
  6. package/components/FSCardPlaceholder.vue +8 -5
  7. package/components/FSChip.vue +12 -2
  8. package/components/FSClickable.vue +12 -13
  9. package/components/FSClock.vue +16 -7
  10. package/components/FSColorIcon.vue +23 -5
  11. package/components/FSDialog.vue +2 -1
  12. package/components/FSDialogContent.vue +12 -11
  13. package/components/FSDialogForm.vue +22 -2
  14. package/components/FSDialogFormBody.vue +47 -28
  15. package/components/FSDialogMenu.vue +17 -8
  16. package/components/FSDialogMultiFormBody.vue +77 -54
  17. package/components/FSDialogRemove.vue +8 -8
  18. package/components/FSDialogSubmit.vue +17 -8
  19. package/components/FSEditImage.vue +1 -1
  20. package/components/FSEditImageUI.vue +20 -10
  21. package/components/FSFadeOut.vue +53 -21
  22. package/components/FSForm.vue +10 -8
  23. package/components/FSGrid.vue +1 -1
  24. package/components/FSIcon.vue +2 -1
  25. package/components/FSIconCard.vue +47 -7
  26. package/components/FSImage.vue +12 -4
  27. package/components/FSImageUI.vue +8 -15
  28. package/components/FSInstantPicker.vue +266 -0
  29. package/components/FSLink.vue +25 -9
  30. package/components/FSLoader.vue +28 -11
  31. package/components/FSOptionGroup.vue +51 -3
  32. package/components/FSPlayButtons.vue +72 -0
  33. package/components/FSProgressBar.vue +94 -0
  34. package/components/FSRouterLink.vue +42 -0
  35. package/components/FSSlideGroup.vue +19 -5
  36. package/components/FSSpan.vue +17 -7
  37. package/components/FSSwitch.vue +57 -27
  38. package/components/FSTab.vue +15 -13
  39. package/components/FSTabs.vue +32 -7
  40. package/components/FSTag.vue +14 -3
  41. package/components/FSTagGroup.vue +1 -1
  42. package/components/FSText.vue +11 -7
  43. package/components/FSWindow.vue +128 -4
  44. package/components/FSWrapGroup.vue +13 -1
  45. package/components/agenda/FSAgenda.vue +223 -0
  46. package/components/agenda/FSAgendaDialogCalendar.vue +76 -0
  47. package/components/agenda/FSAgendaHeader.vue +215 -0
  48. package/components/agenda/FSAgendaHorizontalEvent.vue +174 -0
  49. package/components/agenda/FSAgendaHorizontalTimeLineMarker.vue +46 -0
  50. package/components/agenda/FSAgendaHoursCol.vue +103 -0
  51. package/components/agenda/FSAgendaHoursRow.vue +164 -0
  52. package/components/agenda/FSAgendaVerticalEvent.vue +160 -0
  53. package/components/agenda/FSAgendaVerticalTimeLineMarker.vue +46 -0
  54. package/components/agenda/FSDayAgenda.vue +199 -0
  55. package/components/agenda/FSMonthAgenda.vue +252 -0
  56. package/components/agenda/FSSelectAgendaMode.vue +54 -0
  57. package/components/agenda/FSWeekAgenda.vue +323 -0
  58. package/components/autocompletes/FSAutoCompleteAddress.vue +22 -20
  59. package/components/autocompletes/FSAutocompleteLanguage.vue +7 -1
  60. package/components/autocompletes/FSAutocompleteTimeZone.vue +7 -1
  61. package/components/buttons/FSButtonAdd.vue +1 -1
  62. package/components/buttons/FSButtonAddLabel.vue +1 -1
  63. package/components/buttons/FSButtonCancel.vue +1 -1
  64. package/components/buttons/FSButtonCancelLabel.vue +1 -1
  65. package/components/buttons/FSButtonCopy.vue +1 -1
  66. package/components/buttons/FSButtonCopyLabel.vue +1 -1
  67. package/components/buttons/FSButtonDragIcon.vue +27 -0
  68. package/components/buttons/FSButtonDuplicate.vue +1 -1
  69. package/components/buttons/FSButtonDuplicateLabel.vue +1 -1
  70. package/components/buttons/FSButtonEdit.vue +1 -1
  71. package/components/buttons/FSButtonEditLabel.vue +1 -1
  72. package/components/buttons/FSButtonFile.vue +1 -1
  73. package/components/buttons/FSButtonFileLabel.vue +1 -1
  74. package/components/buttons/FSButtonNext.vue +1 -1
  75. package/components/buttons/FSButtonNextLabel.vue +1 -1
  76. package/components/buttons/FSButtonPrevious.vue +1 -1
  77. package/components/buttons/FSButtonPreviousLabel.vue +1 -1
  78. package/components/buttons/FSButtonRedo.vue +1 -1
  79. package/components/buttons/FSButtonRedoLabel.vue +1 -1
  80. package/components/buttons/FSButtonRemove.vue +1 -1
  81. package/components/buttons/FSButtonRemoveLabel.vue +1 -1
  82. package/components/buttons/FSButtonSave.vue +1 -1
  83. package/components/buttons/FSButtonSaveLabel.vue +1 -1
  84. package/components/buttons/FSButtonSearch.vue +1 -1
  85. package/components/buttons/FSButtonSearchLabel.vue +1 -1
  86. package/components/buttons/FSButtonUndo.vue +1 -1
  87. package/components/buttons/FSButtonUndoLabel.vue +1 -1
  88. package/components/buttons/FSButtonUpdate.vue +1 -1
  89. package/components/buttons/FSButtonUpdateLabel.vue +1 -1
  90. package/components/buttons/FSButtonValidate.vue +1 -1
  91. package/components/buttons/FSButtonValidateLabel.vue +1 -1
  92. package/components/calendar/FSSimpleCalendar.vue +145 -0
  93. package/components/calendar/FSSimpleCalendarHeader.vue +60 -0
  94. package/components/calendar/FSSimpleMonthSelector.vue +138 -0
  95. package/components/deviceOrganisations/FSConnectivity.vue +11 -1
  96. package/components/deviceOrganisations/FSConnectivityCard.vue +19 -47
  97. package/components/deviceOrganisations/FSStatus.vue +11 -1
  98. package/components/deviceOrganisations/FSStatusCard.vue +35 -61
  99. package/components/deviceOrganisations/FSStatusesCarousel.vue +1 -0
  100. package/components/deviceOrganisations/FSStatusesRow.vue +9 -3
  101. package/components/deviceOrganisations/FSWorstAlert.vue +30 -37
  102. package/components/deviceOrganisations/FSWorstAlertCard.vue +36 -85
  103. package/components/fields/FSAutocompleteField.vue +445 -463
  104. package/components/fields/FSAutocompleteTag.vue +1 -1
  105. package/components/fields/FSBaseField.vue +44 -27
  106. package/components/fields/FSColorField.vue +42 -39
  107. package/components/fields/FSCommentField.vue +105 -0
  108. package/components/fields/FSDateField.vue +3 -2
  109. package/components/fields/FSDateRangeField.vue +3 -2
  110. package/components/fields/FSDateTimeField.vue +4 -3
  111. package/components/fields/FSDateTimeRangeField.vue +8 -6
  112. package/components/fields/FSEntityFieldUI.vue +271 -0
  113. package/components/fields/FSGradientField.vue +27 -33
  114. package/components/fields/FSIconField.vue +0 -1
  115. package/components/fields/FSMagicConfigField.vue +10 -3
  116. package/components/fields/FSMagicField.vue +9 -4
  117. package/components/fields/FSNumberField.vue +6 -1
  118. package/components/fields/FSRichTextField.vue +102 -52
  119. package/components/fields/FSSearchField.vue +9 -115
  120. package/components/fields/FSSelectField.vue +477 -252
  121. package/components/fields/FSTagField.vue +1 -1
  122. package/components/fields/FSTermField.vue +42 -17
  123. package/components/fields/FSTextArea.vue +26 -7
  124. package/components/fields/FSTextField.vue +8 -3
  125. package/components/fields/FSTimeRangeField.vue +304 -0
  126. package/components/fields/FSTimeStepField.vue +3 -3
  127. package/components/fields/FSTranslateField.vue +4 -3
  128. package/components/fields/FSTranslateRichTextField.vue +32 -12
  129. package/components/fields/FSTranslateTextArea.vue +233 -0
  130. package/components/fields/periodicField/FSPeriodicDailyField.vue +2 -2
  131. package/components/fields/periodicField/FSPeriodicField.vue +8 -8
  132. package/components/fields/periodicField/FSPeriodicMonthlyField.vue +8 -8
  133. package/components/fields/periodicField/FSPeriodicWeeklyField.vue +23 -13
  134. package/components/fields/periodicField/FSPeriodicYearlyField.vue +6 -6
  135. package/components/lists/FSDataTableUI.vue +173 -103
  136. package/components/lists/FSDraggable.vue +2 -2
  137. package/components/lists/FSFilterButton.vue +7 -11
  138. package/components/lists/FSHeaderButton.vue +4 -4
  139. package/components/lists/FSHiddenButton.vue +3 -5
  140. package/components/lists/FSLoadDataTable.vue +10 -7
  141. package/components/lists/FSSimpleList.vue +234 -0
  142. package/components/lists/FSSimpleListItem.vue +132 -0
  143. package/components/map/FSMap.vue +83 -33
  144. package/components/map/FSMapFeatureGroup.vue +2 -2
  145. package/components/map/FSMapLayerButton.vue +3 -3
  146. package/components/map/FSMapMarker.vue +11 -7
  147. package/components/map/FSMapMarkerClusterGroup.vue +8 -3
  148. package/components/map/FSMapOverlay.vue +37 -20
  149. package/components/map/FSMapPolygon.vue +5 -5
  150. package/components/map/FSMapTileLayer.vue +2 -2
  151. package/components/map/keys.ts +3 -3
  152. package/components/selects/FSSelectAutoRefresh.vue +9 -9
  153. package/components/selects/FSSelectDashboardVariableType.vue +5 -4
  154. package/components/selects/FSSelectDateSetting.vue +3 -2
  155. package/components/selects/FSSelectDays.vue +9 -9
  156. package/components/selects/FSSelectListMode.vue +51 -0
  157. package/components/selects/FSSelectMonths.vue +14 -14
  158. package/components/selects/chartSelectors/FSAggregationSelector.vue +52 -0
  159. package/components/selects/chartSelectors/FSAxisTypeSelector.vue +49 -0
  160. package/components/selects/chartSelectors/FSDisplayAsSelector.vue +53 -0
  161. package/components/selects/chartSelectors/FSFilterTypeSelector.vue +54 -0
  162. package/components/selects/chartSelectors/FSHeatmapRuleSelector.vue +54 -0
  163. package/components/selects/chartSelectors/FSOperationOnSelector.vue +53 -0
  164. package/components/selects/chartSelectors/FSPlanningTypeSelector.vue +53 -0
  165. package/components/selects/chartSelectors/FSPlotPerSelector.vue +52 -0
  166. package/components/selects/chartSelectors/FSSelectEntityType.vue +59 -0
  167. package/components/selects/chartSelectors/FSSerieTypeSelector.vue +53 -0
  168. package/components/tiles/FSAlertTileUI.vue +90 -0
  169. package/components/tiles/FSChartTileUI.vue +111 -0
  170. package/components/tiles/FSCommentTileUI.vue +174 -0
  171. package/components/tiles/FSDeviceOrganisationTileUI.vue +6 -0
  172. package/components/tiles/FSGroupTileUI.vue +2 -2
  173. package/components/tiles/FSLoadTile.vue +2 -0
  174. package/components/tiles/FSLocationTileUI.vue +192 -0
  175. package/components/tiles/FSModelTileUI.vue +18 -0
  176. package/components/tiles/FSSimpleTileUI.vue +9 -4
  177. package/components/tiles/FSTile.vue +93 -74
  178. package/components/tiles/FSUserOrganisationTileUI.vue +1 -1
  179. package/components/toggleSets/FSToggleSetPosition.vue +2 -2
  180. package/components/views/FSBaseView.vue +64 -0
  181. package/components/views/FSEntityView.vue +12 -140
  182. package/components/views/FSSimpleView.vue +29 -0
  183. package/components/views/desktop/FSBaseDefaultDesktopView.vue +135 -0
  184. package/components/views/desktop/FSBaseDesktopView.vue +53 -0
  185. package/components/views/desktop/FSBaseEntityDesktopView.vue +209 -0
  186. package/components/views/mobile/FSBaseDefaultMobileView.vue +133 -0
  187. package/components/views/mobile/FSBaseEntityMobileView.vue +199 -0
  188. package/components/views/mobile/FSBaseMobileView.vue +53 -0
  189. package/composables/useBreakpoints.ts +39 -3
  190. package/composables/useColors.ts +3 -2
  191. package/composables/useMagicFieldProvider.ts +1 -0
  192. package/composables/useSlots.ts +2 -1
  193. package/models/agenda.ts +9 -0
  194. package/models/deviceAlerts.ts +1 -1
  195. package/models/deviceConnectivities.ts +1 -1
  196. package/models/index.ts +1 -0
  197. package/models/magicFields.ts +1 -0
  198. package/models/map.ts +2 -2
  199. package/models/rules.ts +8 -5
  200. package/models/tables.ts +5 -2
  201. package/models/variableNode.ts +8 -5
  202. package/package.json +5 -5
  203. package/styles/components/fs_agenda.scss +36 -0
  204. package/styles/components/fs_agenda_event.scss +41 -0
  205. package/styles/components/fs_agenda_hours_col.scss +4 -0
  206. package/styles/components/fs_agenda_hours_row.scss +5 -0
  207. package/styles/components/fs_agenda_time_line_marker.scss +19 -0
  208. package/styles/components/fs_autocomplete_field.scss +0 -13
  209. package/styles/components/fs_breadcrumbs.scss +18 -36
  210. package/styles/components/fs_button.scss +7 -5
  211. package/styles/components/fs_chip.scss +8 -6
  212. package/styles/components/fs_clickable.scss +18 -23
  213. package/styles/components/fs_clock.scss +0 -10
  214. package/styles/components/fs_color_field.scss +1 -4
  215. package/styles/components/fs_data_iterator_item.scss +12 -10
  216. package/styles/components/fs_data_table.scss +6 -9
  217. package/styles/components/fs_dialog.scss +7 -17
  218. package/styles/components/fs_dialog_menu.scss +4 -2
  219. package/styles/components/fs_edit_image.scss +8 -0
  220. package/styles/components/fs_fade_out.scss +10 -2
  221. package/styles/components/fs_filter_button.scss +1 -6
  222. package/styles/components/fs_gradient_field.scss +11 -11
  223. package/styles/components/fs_hidden_button.scss +2 -7
  224. package/styles/components/fs_image_card.scss +6 -4
  225. package/styles/components/fs_magic_config_field.scss +1 -2
  226. package/styles/components/fs_map.scss +11 -7
  227. package/styles/components/fs_meta_field.scss +3 -5
  228. package/styles/components/fs_option_group.scss +15 -5
  229. package/styles/components/fs_password_field.scss +4 -2
  230. package/styles/components/fs_progress_bar.scss +14 -0
  231. package/styles/components/fs_radio.scss +0 -11
  232. package/styles/components/fs_rich_text_field.scss +1 -9
  233. package/styles/components/fs_select_date_settings.scss +3 -0
  234. package/styles/components/fs_select_field.scss +4 -13
  235. package/styles/components/fs_slide_group.scss +7 -0
  236. package/styles/components/fs_span.scss +13 -4
  237. package/styles/components/fs_switch.scss +1 -0
  238. package/styles/components/fs_tabs.scss +19 -33
  239. package/styles/components/fs_tag.scss +8 -22
  240. package/styles/components/fs_text_area.scss +13 -17
  241. package/styles/components/fs_tile.scss +21 -15
  242. package/styles/components/fs_window.scss +7 -0
  243. package/styles/components/fs_wrap_group.scss +7 -0
  244. package/styles/components/index.scss +6 -4
  245. package/styles/globals/index.scss +1 -5
  246. package/styles/globals/overrides.scss +28 -61
  247. package/styles/globals/scrollbars.scss +10 -0
  248. package/styles/globals/text_fonts.scss +18 -66
  249. package/tools/alertsTools.ts +69 -0
  250. package/tools/chartsTools.ts +427 -0
  251. package/tools/index.ts +4 -0
  252. package/tools/reportsTools.ts +38 -0
  253. package/tools/timeRangeTools.ts +125 -0
  254. package/utils/filter.ts +18 -0
  255. package/utils/index.ts +2 -0
  256. package/utils/leafletMarkers.ts +4 -4
  257. package/utils/operations.ts +69 -0
  258. package/utils/sort.ts +2 -2
  259. package/utils/statuses.ts +1 -1
  260. package/utils/time.ts +17 -17
  261. package/components/fields/FSTimeSlotField.vue +0 -250
  262. package/components/views/FSEntityHeader.vue +0 -350
  263. package/components/views/FSListHeader.vue +0 -83
  264. package/components/views/FSListView.vue +0 -83
  265. package/components/views/FSSkeletonView.vue +0 -100
  266. package/styles/components/fs_icon_field.scss +0 -12
  267. package/styles/components/fs_tag_field.scss +0 -8
  268. package/styles/components/fs_time_field.scss +0 -12
  269. package/styles/components/fs_timeslot_field.scss +0 -12
  270. package/styles/globals/breakpoints.scss +0 -20
  271. package/styles/globals/fixes.scss +0 -5
@@ -0,0 +1,271 @@
1
+ <template>
2
+ <FSBaseField
3
+ :description="$props.description"
4
+ :hideHeader="$props.hideHeader"
5
+ :required="$props.required"
6
+ :editable="$props.editable"
7
+ :label="$props.label"
8
+ :messages="messages"
9
+ >
10
+ <FSCol
11
+ gap="12px"
12
+ >
13
+ <FSRow
14
+ :wrap="false"
15
+ >
16
+ <FSSelectField
17
+ :hideHeader="true"
18
+ :modelValue="$props.entityType"
19
+ @update:modelValue="$emit('update:entityType', $event)"
20
+ :items="actualEntityTypes"
21
+ :clearable="false"
22
+ />
23
+ <template
24
+ v-if="itemsCount > 0"
25
+ >
26
+ <FSButton
27
+ :label="$tr('ui.common.edit', 'Edit')"
28
+ icon="mdi-pencil"
29
+ @click="$emit('click:select')"
30
+ />
31
+ </template>
32
+ <template
33
+ v-else
34
+ >
35
+ <FSButton
36
+ :label="$tr('ui.common.select', 'Select')"
37
+ icon="mdi-plus-circle-multiple-outline"
38
+ @click="$emit('click:select')"
39
+ />
40
+ </template>
41
+ </FSRow>
42
+ <FSRow
43
+ v-if="$props.showCount"
44
+ >
45
+ <template
46
+ v-if="itemsCount > 0"
47
+ >
48
+ <FSColor
49
+ :color="ColorEnum.Primary"
50
+ :border="false"
51
+ width="100%"
52
+ >
53
+ <FSRow
54
+ padding="4px"
55
+ align="center-center"
56
+ >
57
+ <FSIcon
58
+ :icon="entityIcon"
59
+ />
60
+ <FSSpan
61
+ font="text-overline"
62
+ >
63
+ {{ $tr('entity-field.selected', '{0} selected(s)', itemsCount) }}
64
+ </FSSpan>
65
+ </FSRow>
66
+ </FSColor>
67
+ </template>
68
+
69
+ <template
70
+ v-else
71
+ >
72
+ <FSColor
73
+ :color="ColorEnum.Light"
74
+ :border="false"
75
+ width="100%"
76
+ >
77
+ <FSRow
78
+ padding="4px"
79
+ align="center-center"
80
+ >
81
+ <FSIcon
82
+ :icon="entityIcon"
83
+ />
84
+ <FSSpan
85
+ font="text-overline"
86
+ >
87
+ {{ $tr('entity-field.no-entity-selected', 'No entity selected') }}
88
+ </FSSpan>
89
+ </FSRow>
90
+ </FSColor>
91
+ </template>
92
+ </FSRow>
93
+
94
+ <FSFadeOut
95
+ v-if="$props.showEntities && itemsCount > 0"
96
+ :maxHeight="$props.listMaxHeight"
97
+ width="100%"
98
+ >
99
+ <slot
100
+ name="items"
101
+ />
102
+ </FSFadeOut>
103
+ </FSCol>
104
+ </FSBaseField>
105
+ </template>
106
+
107
+
108
+ <script lang="ts">
109
+ import { computed, defineComponent, type PropType } from "vue";
110
+
111
+ import { EntityType } from "@dative-gpi/foundation-shared-domain/enums";
112
+ import { ColorEnum } from "../../models";
113
+ import { useTranslations } from "@dative-gpi/bones-ui";
114
+
115
+ import FSRow from "../FSRow.vue";
116
+ import FSCol from "../FSCol.vue";
117
+ import FSBaseField from "./FSBaseField.vue";
118
+ import FSSelectField from "./FSSelectField.vue";
119
+ import FSButton from "../FSButton.vue";
120
+ import FSIcon from "../FSIcon.vue";
121
+ import FSColor from "../FSColor.vue";
122
+
123
+ export default defineComponent({
124
+ name: "FSEntityFieldUI",
125
+ components: {
126
+ FSBaseField,
127
+ FSSelectField,
128
+ FSButton,
129
+ FSIcon,
130
+ FSColor,
131
+ FSRow,
132
+ FSCol
133
+ },
134
+ props: {
135
+ label: {
136
+ type: String as PropType<string | null>,
137
+ required: false,
138
+ default: null
139
+ },
140
+ description: {
141
+ type: String as PropType<string | null>,
142
+ required: false,
143
+ default: null
144
+ },
145
+ itemsCount: {
146
+ type: Number,
147
+ required: false,
148
+ default: 0
149
+ },
150
+ hideHeader: {
151
+ type: Boolean,
152
+ required: false,
153
+ default: false
154
+ },
155
+ required: {
156
+ type: Boolean,
157
+ required: false,
158
+ default: false
159
+ },
160
+ rules: {
161
+ type: Array as PropType<any[]>,
162
+ required: false,
163
+ default: () => []
164
+ },
165
+ messages: {
166
+ type: Array as PropType<string[]>,
167
+ required: false,
168
+ default: null
169
+ },
170
+ editable: {
171
+ type: Boolean,
172
+ required: false,
173
+ default: true
174
+ },
175
+ entityType: {
176
+ type: Number as PropType<EntityType>,
177
+ required: true
178
+ },
179
+ allowedEntityTypes: {
180
+ type: Array as PropType<EntityType[]>,
181
+ required: false,
182
+ default: () => []
183
+ },
184
+ showEntities: {
185
+ type: Boolean,
186
+ required: false,
187
+ default: true
188
+ },
189
+ showCount: {
190
+ type: Boolean,
191
+ required: false,
192
+ default: true
193
+ },
194
+ listMaxHeight: {
195
+ type: String as PropType<string | null>,
196
+ required: false,
197
+ default: "220px"
198
+ }
199
+ },
200
+ emits: ["update:entityType", "click:select"],
201
+ setup(props) {
202
+ const { $tr } = useTranslations();
203
+
204
+ const actualEntityTypes = computed(() => {
205
+ const items = [
206
+ {
207
+ id: EntityType.Model,
208
+ label: $tr("ui.common.models", "Models")
209
+ },
210
+ {
211
+ id: EntityType.Group,
212
+ label: $tr("ui.common.groups", "Groups")
213
+ },
214
+ {
215
+ id: EntityType.Location,
216
+ label: $tr("ui.common.locations", "Locations")
217
+ },
218
+ {
219
+ id: EntityType.Device,
220
+ label: $tr("ui.common.devices", "Devices")
221
+ },
222
+ {
223
+ id: EntityType.User,
224
+ label: $tr("ui.common.users", "Users")
225
+ },
226
+ {
227
+ id: EntityType.Dashboard,
228
+ label: $tr("ui.common.dashboards", "Dashboards")
229
+ },
230
+ {
231
+ id: EntityType.Folder,
232
+ label: $tr("ui.common.folders", "Folders")
233
+ }
234
+ ];
235
+
236
+ if(props.allowedEntityTypes.length) {
237
+ return items.filter(item => props.allowedEntityTypes.includes(item.id));
238
+ } else {
239
+ return items;
240
+ }
241
+ });
242
+
243
+ const entityIcon = computed(() => {
244
+ switch(props.entityType) {
245
+ case EntityType.Model:
246
+ return "mdi-cube";
247
+ case EntityType.Group:
248
+ return "mdi-account-group";
249
+ case EntityType.Location:
250
+ return "mdi-map-marker";
251
+ case EntityType.Device:
252
+ return "mdi-cellphone";
253
+ case EntityType.User:
254
+ return "mdi-account";
255
+ case EntityType.Dashboard:
256
+ return "mdi-view-dashboard";
257
+ case EntityType.Folder:
258
+ return "mdi-folder";
259
+ default:
260
+ return "mdi-cube";
261
+ }
262
+ });
263
+
264
+ return {
265
+ ColorEnum,
266
+ entityIcon,
267
+ actualEntityTypes
268
+ };
269
+ }
270
+ });
271
+ </script>
@@ -21,44 +21,25 @@
21
21
  />
22
22
  </FSRow>
23
23
  <FSSelectField
24
- class="fs-gradient-select-field"
25
- :clearable="false"
24
+ class="fs-gradient-field-select"
26
25
  :editable="$props.editable"
26
+ :clearable="false"
27
27
  :items="items"
28
- :modelValue="JSON.stringify($props.modelValue)"
29
- @update:modelValue="$emit('update:modelValue', presetGradients[$event])"
28
+ modelValue="custom"
29
+ @update:modelValue="$emit('update:modelValue', allGradients[$event])"
30
30
  >
31
31
  <template
32
- v-slot:selection="{ item }"
32
+ #item-prepend="{ item }"
33
33
  >
34
34
  <FSRow
35
35
  class="fs-gradient-field-preview"
36
- height="fill"
36
+ align="center-center"
37
+ height="12px"
37
38
  width="100%"
38
- :style="{ '--fs-gradient-field-background': `linear-gradient(to right, ${encodeGradientCssColors(JSON.parse(item.value))})` }"
39
- >
40
- <span />
41
- </FSRow>
42
- </template>
43
- <template
44
- v-slot:item="{ item, props }"
45
- >
46
- <v-list-item
47
- v-bind="props"
48
- >
49
- <template
50
- #title
51
- >
52
- <FSRow
53
- class="fs-gradient-field-preview"
54
- height="fill"
55
- width="100%"
56
- :style="{ '--fs-gradient-field-background': `linear-gradient(to right, ${encodeGradientCssColors(presetGradients[item.value])})` }"
57
- >
58
- <span />
59
- </FSRow>
60
- </template>
61
- </v-list-item>
39
+ :style="{
40
+ '--fs-gradient-field-background': `linear-gradient(to right, ${encodeGradientCssColors(allGradients[item.id])})`
41
+ }"
42
+ />
62
43
  </template>
63
44
  </FSSelectField>
64
45
  </FSBaseField>
@@ -66,7 +47,7 @@
66
47
  </template>
67
48
 
68
49
  <script lang="ts">
69
- import { type PropType, defineComponent } from "vue";
50
+ import { type PropType, defineComponent, computed } from "vue";
70
51
 
71
52
  import { groupedGradients } from "../../utils";
72
53
  import { useColors } from "../../composables";
@@ -127,14 +108,27 @@ export default defineComponent({
127
108
  const { getColors } = useColors();
128
109
 
129
110
  const presetGradients = groupedGradients[props.colorCount];
130
- const items = Object.keys(presetGradients)
111
+
112
+ const allGradients = computed<Record<string, string[]>>(() => {
113
+ return {
114
+ 'custom': [
115
+ ...props.modelValue
116
+ ],
117
+ ...presetGradients
118
+ }
119
+ });
120
+
121
+ const items = Object.keys(allGradients.value).map((key) => ({
122
+ id: key,
123
+ label: null
124
+ }));
131
125
 
132
126
  const encodeGradientCssColors = (colors: string[]) => {
133
127
  return colors.map((color) => getColors(color).base).join(", ");
134
128
  };
135
129
 
136
130
  return {
137
- presetGradients,
131
+ allGradients,
138
132
  items,
139
133
  encodeGradientCssColors
140
134
  };
@@ -28,7 +28,6 @@
28
28
  </template>
29
29
  </FSTextField>
30
30
  <FSToggleSet
31
- class="fs-icon-field-set"
32
31
  ref="toggleSetRef"
33
32
  variant="slide"
34
33
  :buttonColor="$props.buttonColor"
@@ -5,7 +5,7 @@
5
5
  <component
6
6
  class="fs-magic-config-field-value"
7
7
  :is="get($props.type)"
8
- :label="$tr('ui.magic-config-field.value', 'Value')"
8
+ :label="$tr('ui.common.value', 'Value')"
9
9
  :editable="$props.editable"
10
10
  :required="true"
11
11
  :rules="rules"
@@ -16,7 +16,7 @@
16
16
  gap="24px"
17
17
  >
18
18
  <FSTranslateField
19
- :label="$tr('ui.magic-config-field.label', 'Label')"
19
+ :label="$tr('ui.common.label', 'Label')"
20
20
  :editable="$props.editable"
21
21
  :modelValue="$props.labelDefault"
22
22
  :translations="$props.translations"
@@ -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
  });
@@ -125,6 +127,8 @@ export default defineComponent({
125
127
  return props.modelValue === "true";
126
128
  case MagicFieldType.TimeStepField:
127
129
  return JSON.parse(props.modelValue);
130
+ case MagicFieldType.PlotPerField:
131
+ return parseInt(props.modelValue);
128
132
  default:
129
133
  return props.modelValue;
130
134
  }
@@ -145,6 +149,9 @@ export default defineComponent({
145
149
  case MagicFieldType.TimeStepField:
146
150
  emit("update:modelValue", JSON.stringify(value));
147
151
  break;
152
+ case MagicFieldType.PlotPerField:
153
+ emit("update:modelValue", value.toString());
154
+ break;
148
155
  default:
149
156
  emit("update:modelValue", value);
150
157
  break;
@@ -62,7 +62,7 @@ import { computed, defineComponent, type PropType } from "vue";
62
62
 
63
63
  import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
64
64
 
65
- import { useAppTimeZone } from "@dative-gpi/foundation-shared-services/composables";
65
+ import { useDateFormat } from "@dative-gpi/foundation-shared-services/composables";
66
66
 
67
67
  import { useMagicFieldProvider } from "../../composables";
68
68
  import { MagicFieldType } from "../../models/magicFields";
@@ -105,7 +105,7 @@ export default defineComponent({
105
105
  },
106
106
  emits: ["update:modelValue"],
107
107
  setup(props, { emit }) {
108
- const { epochToShortTimeFormat } = useAppTimeZone();
108
+ const { epochToShortTimeFormat } = useDateFormat();
109
109
  const { $tr } = useTranslationsProvider();
110
110
  const { get } = useMagicFieldProvider();
111
111
 
@@ -131,6 +131,8 @@ export default defineComponent({
131
131
  return props.modelValue === "true";
132
132
  case MagicFieldType.TimeStepField:
133
133
  return JSON.parse(props.modelValue);
134
+ case MagicFieldType.PlotPerField:
135
+ return parseInt(props.modelValue);
134
136
  default:
135
137
  return props.modelValue;
136
138
  }
@@ -146,9 +148,9 @@ export default defineComponent({
146
148
  return value.toString();
147
149
  case MagicFieldType.Switch:
148
150
  if (value) {
149
- return $tr("ui.magic-field.true", "True");
151
+ return $tr("magic-field.true", "True");
150
152
  }
151
- return $tr("ui.magic-field.false", "False");
153
+ return $tr("magic-field.false", "False");
152
154
  case MagicFieldType.DateTimeField:
153
155
  return epochToShortTimeFormat(parseFloat(value));
154
156
  case MagicFieldType.TimeField:
@@ -175,6 +177,9 @@ export default defineComponent({
175
177
  case MagicFieldType.TimeStepField:
176
178
  emit("update:modelValue", JSON.stringify(value));
177
179
  break;
180
+ case MagicFieldType.PlotPerField:
181
+ emit("update:modelValue", value.toString());
182
+ break;
178
183
  default:
179
184
  emit("update:modelValue", value);
180
185
  break;
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <FSTextField
3
3
  class="fs-number-field"
4
+ minWidth="80px"
4
5
  :editable="$props.editable"
5
6
  :modelValue="$props.modelValue?.toString()"
6
7
  @update:modelValue="onUpdate"
@@ -42,10 +43,14 @@ export default defineComponent({
42
43
  },
43
44
  emits: ["update:modelValue"],
44
45
  setup(_, { emit }) {
45
- const onUpdate = (value: string) => {
46
+ const onUpdate = (value: string | null | undefined) => {
46
47
  if (value === "-") {
47
48
  return;
48
49
  }
50
+ if(value === null || value === undefined) {
51
+ emit("update:modelValue", null);
52
+ return;
53
+ }
49
54
  const match = /[-]?([0-9 ]*[,.]?)?[0-9]*/.exec(value);
50
55
  if (match != null && !isNaN(parseFloat(match[0].replace(",", ".").replace(" ", "")))) {
51
56
  emit("update:modelValue", parseFloat(match[0].replace(",", ".").replace(" ", "")));