@dative-gpi/foundation-shared-components 0.1.120 → 1.0.0
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/assets/images/map/imagery.png +0 -0
- package/assets/images/map/map.png +0 -0
- package/components/FSAccordion.vue +2 -1
- package/components/FSAccordionPanel.vue +20 -1
- package/components/FSBadge.vue +7 -3
- package/components/FSBreadcrumbs.vue +4 -2
- package/components/FSButton.vue +15 -8
- package/components/FSCalendar.vue +5 -2
- package/components/FSCalendarTwin.vue +6 -3
- package/components/FSCard.vue +4 -2
- package/components/FSCardPlaceholder.vue +80 -0
- package/components/FSCheckbox.vue +10 -7
- package/components/FSChip.vue +4 -2
- package/components/FSClickable.vue +5 -3
- package/components/FSClock.vue +18 -4
- package/components/FSCol.vue +12 -5
- package/components/FSColor.vue +4 -2
- package/components/FSColorIcon.vue +5 -3
- package/components/FSDialog.vue +28 -87
- package/components/FSDialogContent.vue +133 -0
- package/components/FSDialogForm.vue +25 -236
- package/components/FSDialogFormBody.vue +273 -0
- package/components/FSDialogMenu.vue +5 -2
- package/components/FSDialogMultiForm.vue +21 -197
- package/components/FSDialogMultiFormBody.vue +231 -0
- package/components/FSDialogSubmit.vue +4 -2
- package/components/FSDivider.vue +6 -4
- package/components/FSEditImage.vue +16 -9
- package/components/FSErrorToast.vue +2 -1
- package/components/FSFadeOut.vue +1 -1
- package/components/FSForm.vue +7 -7
- package/components/FSGrid.vue +4 -2
- package/components/FSGridMosaic.vue +3 -2
- package/components/FSIcon.vue +3 -2
- package/components/FSIconCard.vue +10 -3
- package/components/FSIconCheck.vue +2 -1
- package/components/FSIconFlag.vue +2 -1
- package/components/FSImage.vue +2 -1
- package/components/FSImageCard.vue +72 -0
- package/components/FSLabel.vue +4 -2
- package/components/FSLink.vue +5 -3
- package/components/FSLoader.vue +2 -1
- package/components/FSOptionGroup.vue +28 -20
- package/components/FSOptionItem.vue +8 -18
- package/components/FSPagination.vue +4 -2
- package/components/FSRadio.vue +23 -11
- package/components/FSRadioGroup.vue +23 -10
- package/components/FSRow.vue +8 -1
- package/components/FSSlideGroup.vue +27 -6
- package/components/FSSlider.vue +4 -2
- package/components/FSSpan.vue +2 -1
- package/components/FSSwitch.vue +13 -10
- package/components/FSTab.vue +4 -2
- package/components/FSTabs.vue +5 -14
- package/components/FSTag.vue +11 -4
- package/components/FSTagGroup.vue +4 -2
- package/components/FSText.vue +4 -2
- package/components/FSToggleSet.vue +30 -17
- package/components/FSTooltip.vue +15 -4
- package/components/FSWindow.vue +2 -2
- package/components/FSWrapGroup.vue +2 -1
- package/components/autocompletes/FSAutoCompleteAddress.vue +104 -0
- package/components/autocompletes/FSAutocompleteLanguage.vue +18 -26
- package/components/autocompletes/FSAutocompleteTag.vue +138 -0
- package/components/autocompletes/FSAutocompleteTimeZone.vue +19 -30
- package/components/buttons/FSButtonAdd.vue +28 -0
- package/components/buttons/FSButtonAddIcon.vue +28 -0
- package/components/buttons/FSButtonAddLabel.vue +27 -0
- package/components/buttons/FSButtonAddMini.vue +27 -0
- package/components/buttons/FSButtonFile.vue +4 -4
- package/components/buttons/FSButtonFileIcon.vue +4 -4
- package/components/buttons/FSButtonFileLabel.vue +4 -4
- package/components/buttons/FSButtonFileMini.vue +4 -4
- package/components/deviceOrganisations/FSConnectivity.vue +3 -2
- package/components/deviceOrganisations/FSConnectivityCard.vue +3 -2
- package/components/deviceOrganisations/FSStatus.vue +3 -2
- package/components/deviceOrganisations/FSStatusCard.vue +3 -2
- package/components/deviceOrganisations/FSStatusesCarousel.vue +3 -2
- package/components/deviceOrganisations/FSStatusesRow.vue +3 -2
- package/components/deviceOrganisations/FSWorstAlert.vue +5 -4
- package/components/deviceOrganisations/FSWorstAlertCard.vue +4 -2
- package/components/fields/FSAutocompleteField.vue +210 -97
- package/components/fields/FSBaseField.vue +2 -1
- package/components/fields/FSColorField.vue +65 -94
- package/components/fields/FSDateField.vue +12 -25
- package/components/fields/FSDateRangeField.vue +15 -27
- package/components/fields/FSDateTimeField.vue +22 -32
- package/components/fields/FSDateTimeRangeField.vue +43 -51
- package/components/fields/FSGradientField.vue +143 -0
- package/components/fields/FSIconField.vue +9 -6
- package/components/fields/FSMagicConfigField.vue +154 -0
- package/components/fields/FSMagicField.vue +185 -0
- package/components/fields/FSNumberField.vue +3 -1
- package/components/fields/FSPasswordField.vue +10 -10
- package/components/fields/FSRichTextField.vue +136 -50
- package/components/fields/FSSearchField.vue +41 -62
- package/components/fields/FSSelectField.vue +148 -53
- package/components/fields/FSTagField.vue +19 -16
- package/components/fields/FSTermField.vue +192 -186
- package/components/fields/FSTextArea.vue +4 -4
- package/components/fields/FSTextField.vue +29 -6
- package/components/fields/FSTimeField.vue +55 -20
- package/components/fields/FSTimeSlotField.vue +6 -5
- package/components/fields/FSTranslateField.vue +234 -0
- package/components/fields/FSTranslateRichTextField.vue +185 -0
- package/components/fields/FSTreeViewField.vue +520 -0
- package/components/lists/FSDataIteratorItem.vue +18 -3
- package/components/lists/FSDataTableUI.vue +138 -51
- package/components/lists/FSFilterButton.vue +4 -2
- package/components/lists/FSHiddenButton.vue +4 -2
- package/components/map/FSMap.vue +598 -0
- package/components/map/FSMapEditPointAddressOverlay.vue +164 -0
- package/components/map/FSMapLayerButton.vue +77 -0
- package/components/map/FSMapOverlay.vue +150 -0
- package/components/selects/FSSelectAutoRefresh.vue +62 -0
- package/components/selects/FSSelectDashboardVariableType.vue +47 -0
- package/components/selects/FSSelectDateSetting.vue +39 -37
- package/components/selects/FSSelectDays.vue +62 -0
- package/components/tiles/FSDashboardOrganisationTileUI.vue +7 -5
- package/components/tiles/FSDashboardOrganisationTypeTileUI.vue +7 -5
- package/components/tiles/FSDashboardShallowTileUI.vue +7 -5
- package/components/tiles/FSDeviceOrganisationTileUI.vue +11 -12
- package/components/tiles/FSFolderTileUI.vue +8 -6
- package/components/tiles/FSGroupTileUI.vue +13 -15
- package/components/tiles/{FSSimpleIconTileUI.vue → FSSimpleTileUI.vue} +29 -15
- package/components/tiles/FSTile.vue +5 -11
- package/components/tiles/FSUserOrganisationTileUI.vue +2 -1
- package/components/toggleSets/FSToggleSetPosition.vue +61 -0
- package/composables/index.ts +5 -1
- package/composables/useAddress.ts +158 -0
- package/composables/useAutocomplete.ts +4 -3
- package/composables/useColors.ts +8 -25
- package/composables/useDebounce.ts +2 -1
- package/composables/useMagicFieldProvider.ts +22 -0
- package/composables/useRules.ts +4 -12
- package/composables/useSlots.ts +46 -26
- package/composables/useTables.ts +29 -0
- package/composables/useTreeView.ts +48 -0
- package/elements/FSFormElement.ts +2 -1
- package/icons/flags/France.vue +21 -5
- package/icons/flags/Germany.vue +16 -4
- package/icons/flags/GreatBritain.vue +25 -6
- package/icons/flags/Italy.vue +21 -5
- package/icons/flags/Portugal.vue +225 -51
- package/icons/flags/Spain.vue +2781 -543
- package/icons/flags/UnitedStates.vue +31 -7
- package/icons/widgetTemplates/DevicesWidget.vue +189 -189
- package/icons/widgetTemplates/ProfileWidget.vue +9 -9
- package/icons/widgetTemplates/TextWidget.vue +6 -6
- package/models/breadcrumbs.ts +1 -1
- package/models/deviceAlerts.ts +1 -1
- package/models/deviceConnectivities.ts +1 -1
- package/models/index.ts +2 -0
- package/models/magicFields.ts +9 -0
- package/models/map.ts +18 -0
- package/models/richTextVariable.ts +5 -0
- package/models/rules.ts +11 -2
- package/models/tables.ts +30 -21
- package/models/variableNode.ts +104 -0
- package/package.json +21 -18
- package/plugins/colorPlugin.ts +2 -2
- package/plugins/index.ts +2 -1
- package/plugins/mapsPlugin.ts +37 -0
- package/shims-plugin.d.ts +2 -2
- package/shims-window.d.ts +3 -0
- package/styles/components/fs_button.scss +5 -0
- package/styles/components/fs_card.scss +0 -1
- package/styles/components/fs_col.scss +1 -0
- package/styles/components/fs_color_field.scss +12 -2
- package/styles/components/fs_data_iterator_item.scss +19 -6
- package/styles/components/fs_dialog.scss +12 -22
- package/styles/components/fs_gradient_field.scss +16 -0
- package/styles/components/fs_image_card.scss +18 -0
- package/styles/components/fs_magic_config_field.scss +13 -0
- package/styles/components/fs_map.scss +129 -0
- package/styles/components/fs_map_overlay.scss +38 -0
- package/styles/components/fs_meta_field.scss +6 -0
- package/styles/components/fs_option_group.scss +1 -0
- package/styles/components/fs_radio.scss +1 -1
- package/styles/components/fs_rich_text_field.scss +17 -5
- package/styles/components/fs_row.scss +1 -1
- package/styles/components/fs_select_field.scss +9 -14
- package/styles/components/fs_text.scss +1 -1
- package/styles/components/fs_time_field.scss +0 -4
- package/styles/components/fs_translate_field.scss +3 -0
- package/styles/components/fs_tree_view_field.scss +53 -0
- package/styles/components/index.scss +8 -1
- package/styles/globals/overrides.scss +54 -8
- package/styles/globals/scrollbars.scss +2 -2
- package/themes/default.ts +1 -1
- package/utils/gradient.ts +1601 -0
- package/utils/index.ts +3 -1
- package/utils/leafletMarkers.ts +23 -0
- package/utils/lexical.ts +3 -1
- package/components/selects/FSSelectTimeZone.vue +0 -67
- package/styles/components/fs_date_field.scss +0 -8
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<FSBaseField
|
|
3
|
-
:label="$props.label"
|
|
4
3
|
:description="$props.description"
|
|
5
4
|
:hideHeader="$props.hideHeader"
|
|
6
5
|
:required="$props.required"
|
|
7
6
|
:editable="$props.editable"
|
|
7
|
+
:label="$props.label"
|
|
8
8
|
:messages="messages"
|
|
9
9
|
>
|
|
10
10
|
<FSForm
|
|
@@ -17,19 +17,20 @@
|
|
|
17
17
|
:lastPeriod="$props.lastPeriod"
|
|
18
18
|
:editable="$props.editable"
|
|
19
19
|
:variant="$props.variant"
|
|
20
|
-
:
|
|
21
|
-
|
|
20
|
+
:hideHeader="true"
|
|
21
|
+
:modelValue="innerDateSetting"
|
|
22
|
+
@update:modelValue="innerDateSettingChange"
|
|
22
23
|
/>
|
|
23
24
|
<FSNumberField
|
|
24
|
-
v-if="pastSettings.includes(
|
|
25
|
+
v-if="pastSettings.includes(innerDateSetting)"
|
|
25
26
|
:rules="[NumberRules.required(), NumberRules.min(0)]"
|
|
26
27
|
:editable="$props.editable"
|
|
27
28
|
:hideHeader="true"
|
|
28
|
-
:modelValue="
|
|
29
|
-
@update:modelValue="
|
|
29
|
+
:modelValue="innerDateValue"
|
|
30
|
+
@update:modelValue="innerDateValueChange"
|
|
30
31
|
/>
|
|
31
32
|
<template
|
|
32
|
-
v-else-if="
|
|
33
|
+
v-else-if="innerDateSetting === DateSetting.Expression"
|
|
33
34
|
>
|
|
34
35
|
<FSRow
|
|
35
36
|
align="center-left"
|
|
@@ -42,8 +43,8 @@
|
|
|
42
43
|
:rules="[TextRules.required(), DateRules.validateExpression($props.variant)]"
|
|
43
44
|
:editable="$props.editable"
|
|
44
45
|
:hideHeader="true"
|
|
45
|
-
:modelValue="
|
|
46
|
-
@update:modelValue="
|
|
46
|
+
:modelValue="innerStartDate"
|
|
47
|
+
@update:modelValue="innerStartDateChange"
|
|
47
48
|
/>
|
|
48
49
|
</FSRow>
|
|
49
50
|
<FSRow
|
|
@@ -57,17 +58,17 @@
|
|
|
57
58
|
:rules="[TextRules.required(), DateRules.validateExpression($props.variant)]"
|
|
58
59
|
:editable="$props.editable"
|
|
59
60
|
:hideHeader="true"
|
|
60
|
-
:modelValue="
|
|
61
|
-
@update:modelValue="
|
|
61
|
+
:modelValue="innerEndDate"
|
|
62
|
+
@update:modelValue="innerEndDateChange"
|
|
62
63
|
/>
|
|
63
64
|
</FSRow>
|
|
64
65
|
</template>
|
|
65
66
|
<FSDateTimeRangeField
|
|
66
|
-
v-else-if="
|
|
67
|
+
v-else-if="innerDateSetting === DateSetting.Pick"
|
|
67
68
|
:rules="[DateRules.required()]"
|
|
68
69
|
:editable="$props.editable"
|
|
69
70
|
:hideHeader="true"
|
|
70
|
-
:modelValue="[parseForPicker(
|
|
71
|
+
:modelValue="[parseForPicker(innerStartDate)!, parseForPicker(innerEndDate)!]"
|
|
71
72
|
@update:modelValue="onPickDates"
|
|
72
73
|
/>
|
|
73
74
|
</FSRow>
|
|
@@ -76,7 +77,7 @@
|
|
|
76
77
|
</template>
|
|
77
78
|
|
|
78
79
|
<script lang="ts">
|
|
79
|
-
import { computed, defineComponent,
|
|
80
|
+
import { computed, defineComponent, type PropType, ref, watch } from "vue";
|
|
80
81
|
import _ from "lodash";
|
|
81
82
|
|
|
82
83
|
import { DateRules, NumberRules, TextRules } from "@dative-gpi/foundation-shared-components/models";
|
|
@@ -165,10 +166,10 @@ export default defineComponent({
|
|
|
165
166
|
const { parseForPicker,formatFromPicker, formatCurrentForPicker } = useAppTimeZone();
|
|
166
167
|
const { getMessages } = useRules();
|
|
167
168
|
|
|
168
|
-
const
|
|
169
|
-
const
|
|
170
|
-
const
|
|
171
|
-
const
|
|
169
|
+
const innerDateSetting = ref<DateSetting>(DateSetting.PastDays);
|
|
170
|
+
const innerDateValue = ref<number>(1);
|
|
171
|
+
const innerStartDate = ref<string>("now - 1d");
|
|
172
|
+
const innerEndDate = ref<string>("now");
|
|
172
173
|
|
|
173
174
|
const valid = ref<boolean>(false);
|
|
174
175
|
|
|
@@ -185,12 +186,12 @@ export default defineComponent({
|
|
|
185
186
|
getMessages(props.startDate, props.rules).concat(getMessages(props.endDate, props.rules));
|
|
186
187
|
});
|
|
187
188
|
|
|
188
|
-
const
|
|
189
|
+
const innerStartDateChange = (value: string) => {
|
|
189
190
|
debouncedStartDate(value);
|
|
190
191
|
};
|
|
191
192
|
|
|
192
193
|
const onStartDateChange = (value: string) => {
|
|
193
|
-
|
|
194
|
+
innerStartDate.value = value;
|
|
194
195
|
if (valid.value) {
|
|
195
196
|
emit("update:startDate", value);
|
|
196
197
|
}
|
|
@@ -198,12 +199,12 @@ export default defineComponent({
|
|
|
198
199
|
|
|
199
200
|
const debouncedStartDate = _.debounce(onStartDateChange, 1000);
|
|
200
201
|
|
|
201
|
-
const
|
|
202
|
+
const innerEndDateChange = (value: string) => {
|
|
202
203
|
debouncedEndDate(value);
|
|
203
204
|
};
|
|
204
205
|
|
|
205
206
|
const onEndDateChange = (value: string) => {
|
|
206
|
-
|
|
207
|
+
innerEndDate.value = value;
|
|
207
208
|
if (valid.value) {
|
|
208
209
|
emit("update:endDate", value);
|
|
209
210
|
}
|
|
@@ -211,255 +212,255 @@ export default defineComponent({
|
|
|
211
212
|
|
|
212
213
|
const debouncedEndDate = _.debounce(onEndDateChange, 1000);
|
|
213
214
|
|
|
214
|
-
const
|
|
215
|
-
|
|
215
|
+
const innerDateSettingChange = (value: DateSetting) => {
|
|
216
|
+
innerDateSetting.value = value;
|
|
216
217
|
switch (value) {
|
|
217
218
|
case DateSetting.None:
|
|
218
219
|
return;
|
|
219
220
|
case DateSetting.PastHours:
|
|
220
|
-
|
|
221
|
-
|
|
221
|
+
innerStartDate.value = `now - ${innerDateValue.value}h`;
|
|
222
|
+
innerEndDate.value = "now";
|
|
222
223
|
break;
|
|
223
224
|
case DateSetting.PastDays:
|
|
224
|
-
|
|
225
|
-
|
|
225
|
+
innerStartDate.value = `now - ${innerDateValue.value}d`;
|
|
226
|
+
innerEndDate.value = "now";
|
|
226
227
|
break;
|
|
227
228
|
case DateSetting.PastWeeks:
|
|
228
|
-
|
|
229
|
-
|
|
229
|
+
innerStartDate.value = `now - ${innerDateValue.value}w`;
|
|
230
|
+
innerEndDate.value = "now";
|
|
230
231
|
break;
|
|
231
232
|
case DateSetting.PastMonths:
|
|
232
|
-
|
|
233
|
-
|
|
233
|
+
innerStartDate.value = `now - ${innerDateValue.value}M`;
|
|
234
|
+
innerEndDate.value = "now";
|
|
234
235
|
break;
|
|
235
236
|
case DateSetting.PastYears:
|
|
236
|
-
|
|
237
|
-
|
|
237
|
+
innerStartDate.value = `now - ${innerDateValue.value}y`;
|
|
238
|
+
innerEndDate.value = "now";
|
|
238
239
|
break;
|
|
239
240
|
case DateSetting.CurrentHour:
|
|
240
|
-
|
|
241
|
-
|
|
241
|
+
innerStartDate.value = "now/h";
|
|
242
|
+
innerEndDate.value = "now";
|
|
242
243
|
break;
|
|
243
244
|
case DateSetting.CurrentDay:
|
|
244
|
-
|
|
245
|
-
|
|
245
|
+
innerStartDate.value = "now/d";
|
|
246
|
+
innerEndDate.value = "now";
|
|
246
247
|
break;
|
|
247
248
|
case DateSetting.CurrentWeek:
|
|
248
|
-
|
|
249
|
-
|
|
249
|
+
innerStartDate.value = "now/w";
|
|
250
|
+
innerEndDate.value = "now";
|
|
250
251
|
break;
|
|
251
252
|
case DateSetting.CurrentMonth:
|
|
252
|
-
|
|
253
|
-
|
|
253
|
+
innerStartDate.value = "now/M";
|
|
254
|
+
innerEndDate.value = "now";
|
|
254
255
|
break;
|
|
255
256
|
case DateSetting.CurrentYear:
|
|
256
|
-
|
|
257
|
-
|
|
257
|
+
innerStartDate.value = "now/y";
|
|
258
|
+
innerEndDate.value = "now";
|
|
258
259
|
break;
|
|
259
260
|
case DateSetting.LastDay:
|
|
260
|
-
|
|
261
|
-
|
|
261
|
+
innerStartDate.value = `now - 1d/d`;
|
|
262
|
+
innerEndDate.value = "now/d";
|
|
262
263
|
break;
|
|
263
264
|
case DateSetting.LastWeek:
|
|
264
|
-
|
|
265
|
-
|
|
265
|
+
innerStartDate.value = `now - 1w/w`;
|
|
266
|
+
innerEndDate.value = "now/w";
|
|
266
267
|
break;
|
|
267
268
|
case DateSetting.LastMonth:
|
|
268
|
-
|
|
269
|
-
|
|
269
|
+
innerStartDate.value = `now - 1M/M`;
|
|
270
|
+
innerEndDate.value = "now/M";
|
|
270
271
|
break;
|
|
271
272
|
case DateSetting.LastYear:
|
|
272
|
-
|
|
273
|
-
|
|
273
|
+
innerStartDate.value = `now - 1y/y`;
|
|
274
|
+
innerEndDate.value = "now/y";
|
|
274
275
|
break;
|
|
275
276
|
case DateSetting.SinceLastDay:
|
|
276
|
-
|
|
277
|
-
|
|
277
|
+
innerStartDate.value = `now - 1d/d`;
|
|
278
|
+
innerEndDate.value = "now";
|
|
278
279
|
break;
|
|
279
280
|
case DateSetting.SinceLastWeek:
|
|
280
|
-
|
|
281
|
-
|
|
281
|
+
innerStartDate.value = `now - 1w/w`;
|
|
282
|
+
innerEndDate.value = "now";
|
|
282
283
|
break;
|
|
283
284
|
case DateSetting.SinceLastMonth:
|
|
284
|
-
|
|
285
|
-
|
|
285
|
+
innerStartDate.value = `now - 1M/M`;
|
|
286
|
+
innerEndDate.value = "now";
|
|
286
287
|
break;
|
|
287
288
|
case DateSetting.SinceLastYear:
|
|
288
|
-
|
|
289
|
-
|
|
289
|
+
innerStartDate.value = `now - 1y/y`;
|
|
290
|
+
innerEndDate.value = "now";
|
|
290
291
|
break;
|
|
291
292
|
case DateSetting.LastPeriod:
|
|
292
|
-
|
|
293
|
-
|
|
293
|
+
innerStartDate.value = "from - to + from";
|
|
294
|
+
innerEndDate.value = "from";
|
|
294
295
|
break;
|
|
295
296
|
case DateSetting.MinutesBeforeAfter:
|
|
296
|
-
|
|
297
|
-
|
|
297
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}m`;
|
|
298
|
+
innerEndDate.value = `alertend + ${innerDateValue.value}m`;
|
|
298
299
|
break;
|
|
299
300
|
case DateSetting.HoursBeforeAfter:
|
|
300
|
-
|
|
301
|
-
|
|
301
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}h`;
|
|
302
|
+
innerEndDate.value = `alertend + ${innerDateValue.value}h`;
|
|
302
303
|
break;
|
|
303
304
|
case DateSetting.DaysBeforeAfter:
|
|
304
|
-
|
|
305
|
-
|
|
305
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}d`;
|
|
306
|
+
innerEndDate.value = `alertend + ${innerDateValue.value}d`;
|
|
306
307
|
break;
|
|
307
308
|
case DateSetting.WeeksBeforeAfter:
|
|
308
|
-
|
|
309
|
-
|
|
309
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}w`;
|
|
310
|
+
innerEndDate.value = `alertend + ${innerDateValue.value}w`;
|
|
310
311
|
break;
|
|
311
312
|
case DateSetting.MinutesBefore:
|
|
312
|
-
|
|
313
|
-
|
|
313
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}m`;
|
|
314
|
+
innerEndDate.value = "alertend";
|
|
314
315
|
break;
|
|
315
316
|
case DateSetting.HoursBefore:
|
|
316
|
-
|
|
317
|
-
|
|
317
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}h`;
|
|
318
|
+
innerEndDate.value = "alertend";
|
|
318
319
|
break;
|
|
319
320
|
case DateSetting.DaysBefore:
|
|
320
|
-
|
|
321
|
-
|
|
321
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}d`;
|
|
322
|
+
innerEndDate.value = "alertend";
|
|
322
323
|
break;
|
|
323
324
|
case DateSetting.WeeksBefore:
|
|
324
|
-
|
|
325
|
-
|
|
325
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}w`;
|
|
326
|
+
innerEndDate.value = "alertend";
|
|
326
327
|
break;
|
|
327
328
|
case DateSetting.Expression:
|
|
328
329
|
if (props.variant === "before-after") {
|
|
329
|
-
|
|
330
|
-
|
|
330
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}d`;
|
|
331
|
+
innerEndDate.value = "alertend";
|
|
331
332
|
}
|
|
332
333
|
else {
|
|
333
|
-
|
|
334
|
-
|
|
334
|
+
innerStartDate.value = `now - ${innerDateValue.value}d`;
|
|
335
|
+
innerEndDate.value = "now";
|
|
335
336
|
}
|
|
336
337
|
break;
|
|
337
338
|
case DateSetting.Pick:
|
|
338
|
-
|
|
339
|
-
|
|
339
|
+
innerEndDate.value = formatCurrentForPicker(0);
|
|
340
|
+
innerStartDate.value = formatCurrentForPicker(-1);
|
|
340
341
|
break;
|
|
341
342
|
}
|
|
342
|
-
emit("update:startDate",
|
|
343
|
-
emit("update:endDate",
|
|
343
|
+
emit("update:startDate", innerStartDate.value);
|
|
344
|
+
emit("update:endDate", innerEndDate.value);
|
|
344
345
|
};
|
|
345
346
|
|
|
346
|
-
const
|
|
347
|
-
|
|
347
|
+
const innerDateValueChange = (value: number) => {
|
|
348
|
+
innerDateValue.value = value ? value : 1;
|
|
348
349
|
|
|
349
|
-
switch (
|
|
350
|
+
switch (innerDateSetting.value) {
|
|
350
351
|
case DateSetting.None:
|
|
351
352
|
return;
|
|
352
353
|
case DateSetting.PastHours:
|
|
353
|
-
|
|
354
|
-
|
|
354
|
+
innerStartDate.value = `now - ${innerDateValue.value}h`;
|
|
355
|
+
innerEndDate.value = "now";
|
|
355
356
|
break;
|
|
356
357
|
case DateSetting.PastDays:
|
|
357
|
-
|
|
358
|
-
|
|
358
|
+
innerStartDate.value = `now - ${innerDateValue.value}d`;
|
|
359
|
+
innerEndDate.value = "now";
|
|
359
360
|
break;
|
|
360
361
|
case DateSetting.PastWeeks:
|
|
361
|
-
|
|
362
|
-
|
|
362
|
+
innerStartDate.value = `now - ${innerDateValue.value}w`;
|
|
363
|
+
innerEndDate.value = "now";
|
|
363
364
|
break;
|
|
364
365
|
case DateSetting.PastMonths:
|
|
365
|
-
|
|
366
|
-
|
|
366
|
+
innerStartDate.value = `now - ${innerDateValue.value}M`;
|
|
367
|
+
innerEndDate.value = "now";
|
|
367
368
|
break;
|
|
368
369
|
case DateSetting.PastYears:
|
|
369
|
-
|
|
370
|
-
|
|
370
|
+
innerStartDate.value = `now - ${innerDateValue.value}y`;
|
|
371
|
+
innerEndDate.value = "now";
|
|
371
372
|
break;
|
|
372
373
|
case DateSetting.MinutesBeforeAfter:
|
|
373
|
-
|
|
374
|
-
|
|
374
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}m`;
|
|
375
|
+
innerEndDate.value = `alertend + ${innerDateValue.value}m`;
|
|
375
376
|
break;
|
|
376
377
|
case DateSetting.HoursBeforeAfter:
|
|
377
|
-
|
|
378
|
-
|
|
378
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}h`;
|
|
379
|
+
innerEndDate.value = `alertend + ${innerDateValue.value}h`;
|
|
379
380
|
break;
|
|
380
381
|
case DateSetting.DaysBeforeAfter:
|
|
381
|
-
|
|
382
|
-
|
|
382
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}d`;
|
|
383
|
+
innerEndDate.value = `alertend + ${innerDateValue.value}d`;
|
|
383
384
|
break;
|
|
384
385
|
case DateSetting.WeeksBeforeAfter:
|
|
385
|
-
|
|
386
|
-
|
|
386
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}w`;
|
|
387
|
+
innerEndDate.value = `alertend + ${innerDateValue.value}w`;
|
|
387
388
|
break;
|
|
388
389
|
case DateSetting.MinutesBefore:
|
|
389
|
-
|
|
390
|
-
|
|
390
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}m`;
|
|
391
|
+
innerEndDate.value = "alertend";
|
|
391
392
|
break;
|
|
392
393
|
case DateSetting.HoursBefore:
|
|
393
|
-
|
|
394
|
-
|
|
394
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}h`;
|
|
395
|
+
innerEndDate.value = "alertend";
|
|
395
396
|
break;
|
|
396
397
|
case DateSetting.DaysBefore:
|
|
397
|
-
|
|
398
|
-
|
|
398
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}d`;
|
|
399
|
+
innerEndDate.value = "alertend";
|
|
399
400
|
break;
|
|
400
401
|
case DateSetting.WeeksBefore:
|
|
401
|
-
|
|
402
|
-
|
|
402
|
+
innerStartDate.value = `alertstart - ${innerDateValue.value}w`;
|
|
403
|
+
innerEndDate.value = "alertend";
|
|
403
404
|
break;
|
|
404
405
|
}
|
|
405
|
-
emit("update:startDate",
|
|
406
|
-
emit("update:endDate",
|
|
406
|
+
emit("update:startDate", innerStartDate.value);
|
|
407
|
+
emit("update:endDate", innerEndDate.value);
|
|
407
408
|
};
|
|
408
409
|
|
|
409
410
|
const onPickDates = (value: number[] | null) => {
|
|
410
411
|
if (!value) {
|
|
411
|
-
|
|
412
|
-
|
|
412
|
+
innerEndDate.value = formatCurrentForPicker(0);
|
|
413
|
+
innerStartDate.value = formatCurrentForPicker(-1);
|
|
413
414
|
if (valid.value) {
|
|
414
|
-
emit("update:startDate",
|
|
415
|
-
emit("update:endDate",
|
|
415
|
+
emit("update:startDate", innerStartDate.value);
|
|
416
|
+
emit("update:endDate", innerEndDate.value);
|
|
416
417
|
}
|
|
417
418
|
}
|
|
418
419
|
else {
|
|
419
|
-
if (value && value[0] != null && formatFromPicker(value[0]) !==
|
|
420
|
-
|
|
420
|
+
if (value && value[0] != null && formatFromPicker(value[0]) !== innerStartDate.value) {
|
|
421
|
+
innerStartDate.value = formatFromPicker(value[0]);
|
|
421
422
|
if (valid.value) {
|
|
422
|
-
emit("update:startDate",
|
|
423
|
+
emit("update:startDate", innerStartDate.value);
|
|
423
424
|
}
|
|
424
425
|
}
|
|
425
|
-
if (value && value[1] != null && formatFromPicker(value[1]) !==
|
|
426
|
-
|
|
426
|
+
if (value && value[1] != null && formatFromPicker(value[1]) !== innerEndDate.value) {
|
|
427
|
+
innerEndDate.value = formatFromPicker(value[1]);
|
|
427
428
|
if (valid.value) {
|
|
428
|
-
emit("update:endDate",
|
|
429
|
+
emit("update:endDate", innerEndDate.value);
|
|
429
430
|
}
|
|
430
431
|
}
|
|
431
432
|
}
|
|
432
433
|
};
|
|
433
434
|
|
|
434
435
|
const reset = (): void => {
|
|
435
|
-
|
|
436
|
-
|
|
436
|
+
innerStartDate.value = props.startDate;
|
|
437
|
+
innerEndDate.value = props.endDate;
|
|
437
438
|
|
|
438
439
|
if (props.variant === "before-after") {
|
|
439
440
|
if (props.endDate === "alertend") {
|
|
440
441
|
let match = /^alertstart-([\d]+)([mhdw])$/g.exec(props.startDate.replaceAll(" ", ""));
|
|
441
442
|
if (match != null) {
|
|
442
|
-
|
|
443
|
+
innerDateValue.value = parseInt(match[1]);
|
|
443
444
|
switch (match[2]) {
|
|
444
445
|
case 'm': {
|
|
445
|
-
|
|
446
|
+
innerDateSetting.value = DateSetting.MinutesBefore;
|
|
446
447
|
return;
|
|
447
448
|
}
|
|
448
449
|
case 'h': {
|
|
449
|
-
|
|
450
|
+
innerDateSetting.value = DateSetting.HoursBefore;
|
|
450
451
|
return;
|
|
451
452
|
}
|
|
452
453
|
case 'd': {
|
|
453
|
-
|
|
454
|
+
innerDateSetting.value = DateSetting.DaysBefore;
|
|
454
455
|
return;
|
|
455
456
|
}
|
|
456
457
|
case 'w': {
|
|
457
|
-
|
|
458
|
+
innerDateSetting.value = DateSetting.WeeksBefore;
|
|
458
459
|
return;
|
|
459
460
|
}
|
|
460
461
|
default: {
|
|
461
|
-
|
|
462
|
-
|
|
462
|
+
innerDateSetting.value = DateSetting.Expression;
|
|
463
|
+
innerDateValue.value = 1;
|
|
463
464
|
return;
|
|
464
465
|
}
|
|
465
466
|
}
|
|
@@ -473,113 +474,113 @@ export default defineComponent({
|
|
|
473
474
|
let startMatch = /^alertstart-([\d]+)([mhdw])$/g.exec(props.startDate.replaceAll(" ", ""));
|
|
474
475
|
let endMatch = /^alertend\+([\d]+)([mhdw])$/g.exec(props.endDate.replaceAll(" ", ""));
|
|
475
476
|
if (startMatch != null && endMatch != null && startMatch[1] === endMatch[1] && startMatch[2] === endMatch[2]) {
|
|
476
|
-
|
|
477
|
+
innerDateValue.value = parseInt(startMatch[1]);
|
|
477
478
|
switch(startMatch[2]) {
|
|
478
479
|
case 'm': {
|
|
479
|
-
|
|
480
|
+
innerDateSetting.value = DateSetting.MinutesBeforeAfter;
|
|
480
481
|
return;
|
|
481
482
|
}
|
|
482
483
|
case 'h': {
|
|
483
|
-
|
|
484
|
+
innerDateSetting.value = DateSetting.HoursBeforeAfter;
|
|
484
485
|
return;
|
|
485
486
|
}
|
|
486
487
|
case 'd': {
|
|
487
|
-
|
|
488
|
+
innerDateSetting.value = DateSetting.DaysBeforeAfter;
|
|
488
489
|
return;
|
|
489
490
|
}
|
|
490
491
|
case 'w': {
|
|
491
|
-
|
|
492
|
+
innerDateSetting.value = DateSetting.WeeksBeforeAfter;
|
|
492
493
|
return;
|
|
493
494
|
}
|
|
494
495
|
default: {
|
|
495
|
-
|
|
496
|
-
|
|
496
|
+
innerDateSetting.value = DateSetting.Expression;
|
|
497
|
+
innerDateValue.value = 1;
|
|
497
498
|
return;
|
|
498
499
|
}
|
|
499
500
|
}
|
|
500
501
|
}
|
|
501
502
|
}
|
|
502
503
|
|
|
503
|
-
|
|
504
|
-
|
|
504
|
+
innerDateSetting.value = DateSetting.Expression;
|
|
505
|
+
innerDateValue.value = 1;
|
|
505
506
|
return;
|
|
506
507
|
}
|
|
507
508
|
|
|
508
509
|
if (props.lastPeriod && props.endDate === "from" && props.startDate === "from - to + from") {
|
|
509
|
-
|
|
510
|
+
innerDateSetting.value = DateSetting.LastPeriod;
|
|
510
511
|
return;
|
|
511
512
|
}
|
|
512
513
|
if (props.endDate === "now/d" && props.startDate === "now - 1d/d") {
|
|
513
|
-
|
|
514
|
+
innerDateSetting.value = DateSetting.LastDay;
|
|
514
515
|
return;
|
|
515
516
|
}
|
|
516
517
|
if (props.endDate === "now/w" && props.startDate === "now - 1w/w") {
|
|
517
|
-
|
|
518
|
+
innerDateSetting.value = DateSetting.LastWeek;
|
|
518
519
|
return;
|
|
519
520
|
}
|
|
520
521
|
if (props.endDate === "now/M" && props.startDate === "now - 1M/M") {
|
|
521
|
-
|
|
522
|
+
innerDateSetting.value = DateSetting.LastMonth;
|
|
522
523
|
return;
|
|
523
524
|
}
|
|
524
525
|
if (props.endDate === "now/y" && props.startDate === "now - 1y/y") {
|
|
525
|
-
|
|
526
|
+
innerDateSetting.value = DateSetting.LastYear;
|
|
526
527
|
return;
|
|
527
528
|
}
|
|
528
529
|
|
|
529
530
|
if (props.endDate === "now") {
|
|
530
531
|
let match = /^now-1([dwMy])\/([dwMy])$/g.exec(props.startDate.replaceAll(" ", ""));
|
|
531
532
|
if (match != null) {
|
|
532
|
-
|
|
533
|
+
innerDateValue.value = 1;
|
|
533
534
|
switch (match[1]) {
|
|
534
535
|
case 'd': {
|
|
535
|
-
|
|
536
|
+
innerDateSetting.value = DateSetting.SinceLastDay;
|
|
536
537
|
return;
|
|
537
538
|
}
|
|
538
539
|
case 'w': {
|
|
539
|
-
|
|
540
|
+
innerDateSetting.value = DateSetting.SinceLastWeek;
|
|
540
541
|
return;
|
|
541
542
|
}
|
|
542
543
|
case 'M': {
|
|
543
|
-
|
|
544
|
+
innerDateSetting.value = DateSetting.SinceLastMonth;
|
|
544
545
|
return;
|
|
545
546
|
}
|
|
546
547
|
case 'y': {
|
|
547
|
-
|
|
548
|
+
innerDateSetting.value = DateSetting.SinceLastYear;
|
|
548
549
|
return;
|
|
549
550
|
}
|
|
550
551
|
default: {
|
|
551
|
-
|
|
552
|
+
innerDateSetting.value = DateSetting.Expression;
|
|
552
553
|
return;
|
|
553
554
|
}
|
|
554
555
|
}
|
|
555
556
|
}
|
|
556
557
|
match = /^now-([\d]+)([hdwMy])$/g.exec(props.startDate.replaceAll(" ", ""));
|
|
557
558
|
if (match != null) {
|
|
558
|
-
|
|
559
|
+
innerDateValue.value = parseInt(match[1]);
|
|
559
560
|
switch (match[2]) {
|
|
560
561
|
case 'h': {
|
|
561
|
-
|
|
562
|
+
innerDateSetting.value = DateSetting.PastHours;
|
|
562
563
|
return;
|
|
563
564
|
}
|
|
564
565
|
case 'd': {
|
|
565
|
-
|
|
566
|
+
innerDateSetting.value = DateSetting.PastDays;
|
|
566
567
|
return;
|
|
567
568
|
}
|
|
568
569
|
case 'w': {
|
|
569
|
-
|
|
570
|
+
innerDateSetting.value = DateSetting.PastWeeks;
|
|
570
571
|
return;
|
|
571
572
|
}
|
|
572
573
|
case 'M': {
|
|
573
|
-
|
|
574
|
+
innerDateSetting.value = DateSetting.PastMonths;
|
|
574
575
|
return;
|
|
575
576
|
}
|
|
576
577
|
case 'y': {
|
|
577
|
-
|
|
578
|
+
innerDateSetting.value = DateSetting.PastYears;
|
|
578
579
|
return;
|
|
579
580
|
}
|
|
580
581
|
default: {
|
|
581
|
-
|
|
582
|
-
|
|
582
|
+
innerDateSetting.value = DateSetting.Expression;
|
|
583
|
+
innerDateValue.value = 1;
|
|
583
584
|
return;
|
|
584
585
|
}
|
|
585
586
|
}
|
|
@@ -587,30 +588,30 @@ export default defineComponent({
|
|
|
587
588
|
|
|
588
589
|
match = /^now\/([hdwMy])$/g.exec(props.startDate.replaceAll(" ", ""));
|
|
589
590
|
if (match != null) {
|
|
590
|
-
|
|
591
|
+
innerDateValue.value = 1;
|
|
591
592
|
switch (match[1]) {
|
|
592
593
|
case 'h': {
|
|
593
|
-
|
|
594
|
+
innerDateSetting.value = DateSetting.CurrentHour;
|
|
594
595
|
return;
|
|
595
596
|
}
|
|
596
597
|
case 'd': {
|
|
597
|
-
|
|
598
|
+
innerDateSetting.value = DateSetting.CurrentDay;
|
|
598
599
|
return;
|
|
599
600
|
}
|
|
600
601
|
case 'w': {
|
|
601
|
-
|
|
602
|
+
innerDateSetting.value = DateSetting.CurrentWeek;
|
|
602
603
|
return;
|
|
603
604
|
}
|
|
604
605
|
case 'M': {
|
|
605
|
-
|
|
606
|
+
innerDateSetting.value = DateSetting.CurrentMonth;
|
|
606
607
|
return;
|
|
607
608
|
}
|
|
608
609
|
case 'y': {
|
|
609
|
-
|
|
610
|
+
innerDateSetting.value = DateSetting.CurrentYear;
|
|
610
611
|
return;
|
|
611
612
|
}
|
|
612
613
|
default: {
|
|
613
|
-
|
|
614
|
+
innerDateSetting.value = DateSetting.Expression;
|
|
614
615
|
return;
|
|
615
616
|
}
|
|
616
617
|
}
|
|
@@ -618,24 +619,29 @@ export default defineComponent({
|
|
|
618
619
|
}
|
|
619
620
|
|
|
620
621
|
if (parseForPicker(props.endDate) != null && parseForPicker(props.startDate) != null) {
|
|
621
|
-
|
|
622
|
-
|
|
622
|
+
innerDateSetting.value = DateSetting.Pick;
|
|
623
|
+
innerDateValue.value = 1;
|
|
623
624
|
return;
|
|
624
625
|
}
|
|
625
626
|
|
|
626
|
-
|
|
627
|
-
|
|
627
|
+
innerDateSetting.value = DateSetting.Expression;
|
|
628
|
+
innerDateValue.value = 1;
|
|
628
629
|
};
|
|
629
630
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
631
|
+
watch([() => props.startDate, () => props.endDate], () => {
|
|
632
|
+
if (
|
|
633
|
+
innerStartDate.value !== props.startDate ||
|
|
634
|
+
innerEndDate.value !== props.endDate
|
|
635
|
+
) {
|
|
636
|
+
reset();
|
|
637
|
+
}
|
|
638
|
+
}, { immediate: true });
|
|
633
639
|
|
|
634
640
|
return {
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
641
|
+
innerDateSetting,
|
|
642
|
+
innerDateValue,
|
|
643
|
+
innerStartDate,
|
|
644
|
+
innerEndDate,
|
|
639
645
|
pastSettings,
|
|
640
646
|
DateSetting,
|
|
641
647
|
NumberRules,
|
|
@@ -643,10 +649,10 @@ export default defineComponent({
|
|
|
643
649
|
TextRules,
|
|
644
650
|
messages,
|
|
645
651
|
valid,
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
652
|
+
innerDateSettingChange,
|
|
653
|
+
innerDateValueChange,
|
|
654
|
+
innerStartDateChange,
|
|
655
|
+
innerEndDateChange,
|
|
650
656
|
parseForPicker,
|
|
651
657
|
onPickDates
|
|
652
658
|
};
|