bfg-common 1.4.720 → 1.4.721

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 (134) hide show
  1. package/assets/localization/local_be.json +2 -2
  2. package/assets/localization/local_en.json +2 -2
  3. package/assets/localization/local_hy.json +2 -2
  4. package/assets/localization/local_kk.json +2 -2
  5. package/assets/localization/local_ru.json +2 -2
  6. package/assets/localization/local_zh.json +2 -2
  7. package/assets/scss/common/normalize.scss +355 -361
  8. package/components/atoms/TheIcon3.vue +50 -50
  9. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  10. package/components/atoms/stack/StackBlock.vue +185 -185
  11. package/components/atoms/table/dataGrid/DataGrid.vue +1696 -1696
  12. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  13. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +91 -91
  14. package/components/common/browse/BrowseNew.vue +237 -237
  15. package/components/common/browse/BrowseOld.vue +217 -217
  16. package/components/common/browse/blocks/contents/Files.vue +37 -37
  17. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  18. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  19. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  20. package/components/common/context/lib/models/interfaces.ts +30 -30
  21. package/components/common/context/recursion/Recursion.vue +86 -86
  22. package/components/common/context/recursion/RecursionOld.vue +213 -213
  23. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  24. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  25. package/components/common/layout/theHeader/lib/models/enums.ts +0 -1
  26. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +2 -5
  27. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +150 -150
  28. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +284 -300
  29. package/components/common/modals/confirmByInput/ConfirmByInput.vue +206 -206
  30. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  31. package/components/common/monitor/overview/filters/Filters.vue +235 -232
  32. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +250 -240
  33. package/components/common/monitor/overview/filters/customIntervalModal/lib/config/dateChecker.ts +62 -52
  34. package/components/common/pages/home/StatusContent.vue +49 -49
  35. package/components/common/pages/home/headline/Headline.vue +44 -44
  36. package/components/common/pages/home/headline/HeadlineNew.vue +71 -71
  37. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  38. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  39. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  40. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  41. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  42. package/components/common/pages/home/widgets/hosts/HostsNew.vue +100 -100
  43. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  44. package/components/common/pages/home/widgets/services/lib/config/config.ts +108 -108
  45. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  46. package/components/common/pages/home/widgets/vms/VmsNew.vue +101 -101
  47. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  48. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  49. package/components/common/recursionTree/RecursionTree.vue +212 -223
  50. package/components/common/select/button/ButtonDropdown.vue +108 -108
  51. package/components/common/selectLanguage/lib/config/config.ts +0 -5
  52. package/components/common/spiceConsole/Drawer.vue +370 -370
  53. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  54. package/components/common/split/vertical/Vertical.vue +160 -160
  55. package/components/common/vm/actions/add/Add.vue +616 -616
  56. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  57. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +267 -267
  58. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +269 -269
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +161 -161
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +165 -165
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +55 -70
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +42 -50
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +147 -147
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +281 -281
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceNew.vue +85 -85
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +91 -91
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +35 -35
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +48 -48
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +30 -30
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +46 -46
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  111. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  116. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  117. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  118. package/components/common/vm/actions/editSettings/EditSettings.vue +232 -232
  119. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +183 -183
  120. package/components/common/vm/actions/editSettings/new/New.vue +177 -177
  121. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  122. package/composables/productNameLocal.ts +30 -30
  123. package/composables/useAppVersion.ts +21 -21
  124. package/composables/useLocal.ts +0 -5
  125. package/layouts/auth.vue +0 -1
  126. package/package.json +1 -1
  127. package/plugins/date.ts +233 -233
  128. package/plugins/recursion.ts +311 -311
  129. package/public/spice-console/lib/images/bitmap.js +203 -203
  130. package/public/spice-console/network/spicechannel.js +383 -383
  131. package/store/main/mutations.ts +7 -7
  132. package/store/main/state.ts +7 -7
  133. package/store/tasks/mappers/recentTasks.ts +64 -64
  134. package/assets/scss/clarity/local_ar.json +0 -2914
@@ -1,240 +1,250 @@
1
- <template>
2
- <atoms-modal
3
- width="580px"
4
- class="add-permission"
5
- :show="true"
6
- :title="titleIntervalModal"
7
- :second-title="selectedItem"
8
- test-id="overview-custom-interval-modal"
9
- @hide="onHide"
10
- @submit="onSubmit"
11
- >
12
- <template #modalBody>
13
- <atoms-alert
14
- v-show="alertShow"
15
- status="alert-danger"
16
- :items="alertItems"
17
- test-id="overview-alert"
18
- @remove="alertShow = false"
19
- />
20
-
21
- <table>
22
- <tbody>
23
- <tr>
24
- <td class="text-right">
25
- <label class="custom-time-label">
26
- <span class="custom-time-label-text text-capitalize">
27
- {{ localization.common.from }}:
28
- </span>
29
- </label>
30
- </td>
31
- <td>
32
- <div class="flex-align-center input-row-container">
33
- <input
34
- id="current-date-from"
35
- v-model.lazy="currentDateFrom"
36
- data-id="current-date-from-input"
37
- type="text"
38
- class="chart-option-setting-row custom-time-input first-from"
39
- />
40
- <div class="section-datepicker">
41
- <atoms-datepicker
42
- v-model="dateFrom"
43
- :lang="props.currentLang"
44
- class="chart-option-setting-row custom-time-input"
45
- test-id="overview-first-date-datepicker"
46
- @update="onUpdateDateFrom"
47
- />
48
- </div>
49
- <input
50
- id="current-time-from"
51
- v-model="currentTimeFrom"
52
- data-id="current-time-from-input"
53
- type="text"
54
- class="chart-option-setting-row custom-time-input"
55
- />
56
- </div>
57
- </td>
58
- </tr>
59
- <tr>
60
- <td class="text-right">
61
- <label class="custom-time-label">
62
- <span class="custom-time-label-text text-capitalize">
63
- {{ localization.common.to }}:
64
- </span>
65
- </label>
66
- </td>
67
- <td>
68
- <div class="flex-align-center input-row-container">
69
- <input
70
- id="current-date-to"
71
- v-model.lazy="currentDateTo"
72
- data-id="current-date-to-input"
73
- type="text"
74
- class="chart-option-setting-row custom-time-input first-from"
75
- />
76
- <div class="section-datepicker">
77
- <atoms-datepicker
78
- v-model="dateTo"
79
- :lang="props.currentLang"
80
- class="chart-option-setting-row custom-time-input"
81
- test-id="overview-first-date-to-datepicker"
82
- @update="onUpdateDateTo"
83
- />
84
- </div>
85
- <input
86
- id="current-time-to"
87
- v-model="currentTimeTo"
88
- data-id="current-time-to-input"
89
- type="text"
90
- class="chart-option-setting-row custom-time-input"
91
- />
92
- </div>
93
- </td>
94
- </tr>
95
- <tr>
96
- <td></td>
97
- <td class="text-format-date">
98
- (date and time are in ISO 8601 format)
99
- </td>
100
- </tr>
101
- </tbody>
102
- </table>
103
- </template>
104
- </atoms-modal>
105
- </template>
106
-
107
- <script setup lang="ts">
108
- import { format } from 'date-fns'
109
- import type { UI_I_Localization } from '~/lib/models/interfaces'
110
- import { checkDateFunc } from '~/components/common/monitor/overview/filters/customIntervalModal/lib/config/dateChecker'
111
-
112
- const props = defineProps<{
113
- formatDate: string
114
- selectedPeriods: number[]
115
- currentLang: string
116
- }>()
117
-
118
- const emits = defineEmits<{
119
- (event: 'hide'): void
120
- (event: 'submit', value: number[]): void
121
- }>()
122
-
123
- const { $formattedDate, $formattedTime, $isDate, $getUnixByDate } = useNuxtApp()
124
-
125
- const localization = computed<UI_I_Localization>(() => useLocal())
126
-
127
- const titleIntervalModal = ref<string>(
128
- `${localization.value.common.timeRange}:`
129
- )
130
-
131
- const selectedItem = ref<string>('')
132
-
133
- const onHide = (): void => {
134
- getCurrentTime()
135
- emits('hide')
136
- }
137
-
138
- const yesterday = new Date().setDate(new Date().getDate() - 1)
139
- const dateFrom = ref<number>(yesterday)
140
- const dateTo = ref<number>(new Date().getTime())
141
-
142
- const currentDateFrom = ref<string>('')
143
- const currentDateTo = ref<string>('')
144
- const currentTimeFrom = ref<string>('')
145
- const currentTimeTo = ref<string>('')
146
-
147
- const getCurrentTime = (): void => {
148
- if (!props.selectedPeriods.length) {
149
- currentDateFrom.value = $formattedDate(yesterday, props.formatDate)
150
- currentDateTo.value = $formattedDate(new Date(), props.formatDate)
151
-
152
- const currentTime = format(new Date(), 'H:mm:ss')
153
- currentTimeFrom.value = currentTime
154
- currentTimeTo.value = currentTime
155
-
156
- return
157
- }
158
-
159
- currentDateFrom.value = $formattedDate(
160
- props.selectedPeriods[0],
161
- props.formatDate
162
- )
163
- currentDateTo.value = $formattedDate(
164
- props.selectedPeriods[1],
165
- props.formatDate
166
- )
167
- currentTimeFrom.value = $formattedTime(props.selectedPeriods[0], '', true)
168
- currentTimeTo.value = $formattedTime(props.selectedPeriods[1], '', true)
169
- }
170
-
171
- const onUpdateDateFrom = (val: number): void => {
172
- if (!val) return
173
-
174
- currentDateFrom.value = $formattedDate(new Date(val), props.formatDate)
175
- }
176
- watch(currentDateFrom, (newValue) => {
177
- if (!newValue) return
178
-
179
- if ($isDate(newValue)) dateFrom.value = $getUnixByDate(newValue)
180
- })
181
-
182
- const onUpdateDateTo = (val: number): void => {
183
- if (!val) return
184
-
185
- currentDateTo.value = $formattedDate(new Date(val), props.formatDate)
186
- }
187
- watch(currentDateTo, (newValue) => {
188
- if (!newValue) return
189
-
190
- if ($isDate(newValue)) dateTo.value = $getUnixByDate(newValue)
191
- })
192
-
193
- const alertShow = ref<boolean>(false)
194
- const alertItems = ref<string[]>([])
195
-
196
- const onSubmit = (): void => {
197
- alertItems.value = []
198
- alertShow.value = false
199
-
200
- if (!dateFrom.value || !dateTo.value) return
201
-
202
- const result = checkDateFunc(
203
- localization.value,
204
- currentDateFrom.value,
205
- currentDateTo.value,
206
- currentTimeFrom.value,
207
- currentTimeTo.value
208
- )
209
-
210
- if (typeof result === 'string') {
211
- alertShow.value = true
212
- alertItems.value.push(result)
213
- return
214
- }
215
-
216
- emits('submit', [result[0], result[1]])
217
- onHide()
218
- }
219
-
220
- onMounted(() => {
221
- selectedItem.value = location.hostname
222
- getCurrentTime()
223
- onSubmit()
224
- })
225
- </script>
226
-
227
- <style scoped lang="scss">
228
- .input-row-container {
229
- padding-left: 5px;
230
-
231
- .custom-time-input {
232
- max-width: 120px;
233
- margin-right: 15px;
234
- }
235
- }
236
- .text-format-date {
237
- display: inline-block;
238
- margin-top: 5px;
239
- }
240
- </style>
1
+ <template>
2
+ <atoms-modal
3
+ width="580px"
4
+ class="add-permission"
5
+ :show="true"
6
+ :title="titleIntervalModal"
7
+ :second-title="selectedItem"
8
+ test-id="overview-custom-interval-modal"
9
+ @hide="onHide"
10
+ @submit="onSubmit"
11
+ >
12
+ <template #modalBody>
13
+ <atoms-alert
14
+ v-show="alertShow"
15
+ status="alert-danger"
16
+ :items="alertItems"
17
+ test-id="overview-alert"
18
+ @remove="alertShow = false"
19
+ />
20
+
21
+ <table>
22
+ <tbody>
23
+ <tr>
24
+ <td class="text-right">
25
+ <label class="custom-time-label">
26
+ <span class="custom-time-label-text text-capitalize">
27
+ {{ localization.common.from }}:
28
+ </span>
29
+ </label>
30
+ </td>
31
+ <td>
32
+ <div class="flex-align-center input-row-container">
33
+ <input
34
+ id="current-date-from"
35
+ v-model.lazy="currentDateFrom"
36
+ data-id="current-date-from-input"
37
+ type="text"
38
+ class="chart-option-setting-row custom-time-input first-from"
39
+ />
40
+ <div class="section-datepicker">
41
+ <atoms-datepicker
42
+ v-model="dateFrom"
43
+ :lang="props.currentLang"
44
+ class="chart-option-setting-row custom-time-input"
45
+ test-id="overview-first-date-datepicker"
46
+ @update="onUpdateDateFrom"
47
+ />
48
+ </div>
49
+ <input
50
+ id="current-time-from"
51
+ v-model="currentTimeFrom"
52
+ data-id="current-time-from-input"
53
+ type="text"
54
+ class="chart-option-setting-row custom-time-input"
55
+ />
56
+ </div>
57
+ </td>
58
+ </tr>
59
+ <tr>
60
+ <td class="text-right">
61
+ <label class="custom-time-label">
62
+ <span class="custom-time-label-text text-capitalize">
63
+ {{ localization.common.to }}:
64
+ </span>
65
+ </label>
66
+ </td>
67
+ <td>
68
+ <div class="flex-align-center input-row-container">
69
+ <input
70
+ id="current-date-to"
71
+ v-model.lazy="currentDateTo"
72
+ data-id="current-date-to-input"
73
+ type="text"
74
+ class="chart-option-setting-row custom-time-input first-from"
75
+ />
76
+ <div class="section-datepicker">
77
+ <atoms-datepicker
78
+ v-model="dateTo"
79
+ :lang="props.currentLang"
80
+ class="chart-option-setting-row custom-time-input"
81
+ test-id="overview-first-date-to-datepicker"
82
+ @update="onUpdateDateTo"
83
+ />
84
+ </div>
85
+ <input
86
+ id="current-time-to"
87
+ v-model="currentTimeTo"
88
+ data-id="current-time-to-input"
89
+ type="text"
90
+ class="chart-option-setting-row custom-time-input"
91
+ />
92
+ </div>
93
+ </td>
94
+ </tr>
95
+ <tr>
96
+ <td></td>
97
+ <td class="text-format-date">
98
+ (date and time are in ISO 8601 format)
99
+ </td>
100
+ </tr>
101
+ </tbody>
102
+ </table>
103
+ </template>
104
+ </atoms-modal>
105
+ </template>
106
+
107
+ <script setup lang="ts">
108
+ import { format } from 'date-fns'
109
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
110
+ import { checkDateFunc } from '~/components/common/monitor/overview/filters/customIntervalModal/lib/config/dateChecker'
111
+
112
+ const props = defineProps<{
113
+ formatDate: string
114
+ selectedPeriods: number[]
115
+ currentLang: string
116
+ validDateEnd: number
117
+ }>()
118
+
119
+ const emits = defineEmits<{
120
+ (event: 'hide'): void
121
+ (event: 'submit', value: number[]): void
122
+ }>()
123
+
124
+ const { $formattedDate, $formattedTime, $isDate, $getUnixByDate } = useNuxtApp()
125
+
126
+ const localization = computed<UI_I_Localization>(() => useLocal())
127
+
128
+ const titleIntervalModal = ref<string>(
129
+ `${localization.value.common.timeRange}:`
130
+ )
131
+
132
+ const selectedItem = ref<string>('')
133
+
134
+ const onHide = (): void => {
135
+ getCurrentTime()
136
+ emits('hide')
137
+ }
138
+
139
+ const yesterday = new Date().setDate(new Date().getDate() - 1)
140
+ const dateFrom = ref<number>(yesterday)
141
+ const dateTo = ref<number>(new Date().getTime())
142
+
143
+ const currentDateFrom = ref<string>('')
144
+ const currentDateTo = ref<string>('')
145
+ const currentTimeFrom = ref<string>('')
146
+ const currentTimeTo = ref<string>('')
147
+
148
+ const getCurrentTime = (): void => {
149
+ if (!props.selectedPeriods.length) {
150
+ currentDateFrom.value = $formattedDate(yesterday, props.formatDate)
151
+ currentDateTo.value = $formattedDate(props.validDateEnd, props.formatDate)
152
+
153
+ currentTimeFrom.value = format(new Date(), 'H:mm:ss')
154
+ currentTimeTo.value = format(props.validDateEnd, 'H:mm:ss')
155
+
156
+ return
157
+ }
158
+
159
+ currentDateFrom.value = $formattedDate(
160
+ props.selectedPeriods[0],
161
+ props.formatDate
162
+ )
163
+ currentDateTo.value = $formattedDate(
164
+ props.selectedPeriods[1],
165
+ props.formatDate
166
+ )
167
+ currentTimeFrom.value = $formattedTime(props.selectedPeriods[0], '', true)
168
+ currentTimeTo.value = $formattedTime(props.selectedPeriods[1], '', true)
169
+ }
170
+
171
+ const onUpdateDateFrom = (val: number): void => {
172
+ if (!val) return
173
+
174
+ currentDateFrom.value = $formattedDate(new Date(val), props.formatDate)
175
+ }
176
+ watch(currentDateFrom, (newValue) => {
177
+ if (!newValue) return
178
+
179
+ if ($isDate(newValue)) dateFrom.value = $getUnixByDate(newValue)
180
+ })
181
+
182
+ const onUpdateDateTo = (val: number): void => {
183
+ if (!val) return
184
+
185
+ currentDateTo.value = $formattedDate(new Date(val), props.formatDate)
186
+ }
187
+ watch(currentDateTo, (newValue) => {
188
+ if (!newValue) return
189
+
190
+ if ($isDate(newValue)) dateTo.value = $getUnixByDate(newValue)
191
+ })
192
+
193
+ const alertShow = ref<boolean>(false)
194
+ const alertItems = ref<string[]>([])
195
+
196
+ const onSubmit = (): void => {
197
+ alertItems.value = []
198
+ alertShow.value = false
199
+
200
+ if (!dateFrom.value || !dateTo.value) return
201
+
202
+ const result = checkDateFunc(
203
+ localization.value,
204
+ currentDateFrom.value,
205
+ currentDateTo.value,
206
+ currentTimeFrom.value,
207
+ currentTimeTo.value,
208
+ props.validDateEnd,
209
+ props.formatDate
210
+ )
211
+
212
+ if (typeof result === 'string') {
213
+ alertShow.value = true
214
+ alertItems.value.push(result)
215
+ return
216
+ }
217
+
218
+ emits('submit', [result[0], result[1]])
219
+ onHide()
220
+ }
221
+
222
+ watch(
223
+ () => [props.selectedPeriods, props.currentLang],
224
+ (): void => {
225
+ getCurrentTime()
226
+ },
227
+ { deep: true }
228
+ )
229
+
230
+ onMounted(() => {
231
+ selectedItem.value = location.hostname
232
+ getCurrentTime()
233
+ onSubmit()
234
+ })
235
+ </script>
236
+
237
+ <style scoped lang="scss">
238
+ .input-row-container {
239
+ padding-left: 5px;
240
+
241
+ .custom-time-input {
242
+ max-width: 120px;
243
+ margin-right: 15px;
244
+ }
245
+ }
246
+ .text-format-date {
247
+ display: inline-block;
248
+ margin-top: 5px;
249
+ }
250
+ </style>
@@ -1,52 +1,62 @@
1
- import type { UI_I_Localization } from '~/lib/models/interfaces'
2
-
3
- const isMoreThanOneMonth = (startDate: number, endDate: number): boolean => {
4
- const start = new Date(startDate)
5
- const end = new Date(endDate)
6
- const yearDiff = end.getFullYear() - start.getFullYear()
7
- const monthDiff = end.getMonth() - start.getMonth()
8
-
9
- return (
10
- yearDiff > 0 ||
11
- (yearDiff === 0 && monthDiff > 1) ||
12
- (yearDiff === 0 && monthDiff === 1 && end.getDate() >= start.getDate())
13
- )
14
- }
15
-
16
- export const checkDateFunc = (
17
- localization: UI_I_Localization,
18
- dateFrom: string,
19
- dateTo: string,
20
- timeFrom: string,
21
- timeTo: string
22
- ): string | number[] => {
23
- const { $isDate, $getUnixByDate } = useNuxtApp()
24
-
25
- let result = ''
26
- const startDate = dateFrom + ' ' + timeFrom
27
- const unixStartDate = $getUnixByDate(startDate)
28
- const endDate = dateTo + ' ' + timeTo
29
- const unixEndDate = $getUnixByDate(endDate)
30
-
31
- if (
32
- !$isDate(unixStartDate) ||
33
- !$isDate(unixEndDate) ||
34
- !timeFrom ||
35
- !timeTo
36
- ) {
37
- result = localization.inventoryMonitor.invalidTimeEntry
38
- return result
39
- }
40
-
41
- if (unixEndDate > new Date().getTime())
42
- result = localization.inventoryMonitor.oneOfSelectedDatesIsInTheFuture
43
- else if (unixEndDate === unixStartDate)
44
- result = localization.inventoryMonitor.timeToShouldBeLaterTimeFrom
45
- else if (unixEndDate - unixStartDate <= 3600000)
46
- result = localization.inventoryMonitor.timeRangeShouldNotBeSmallerThanHour
47
- else if (isMoreThanOneMonth(unixStartDate, unixEndDate))
48
- result = localization.inventoryMonitor.timeRangeShouldNotBeMoreThanMonth
49
- else return [unixStartDate, unixEndDate]
50
-
51
- return result
52
- }
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+
3
+ const isMoreThanOneMonth = (startDate: number, endDate: number): boolean => {
4
+ const date1 = new Date(startDate)
5
+ const date2 = new Date(endDate)
6
+
7
+ const nextMonth = new Date(date1)
8
+ nextMonth.setMonth(date1.getMonth() + 1)
9
+
10
+ return nextMonth < date2
11
+ }
12
+
13
+ export const checkDateFunc = (
14
+ localization: UI_I_Localization,
15
+ dateFrom: string,
16
+ dateTo: string,
17
+ timeFrom: string,
18
+ timeTo: string,
19
+ unixValidEnd: number,
20
+ formatDate: string
21
+ ): string | number[] => {
22
+ const { $isDate, $getUnixByDate } = useNuxtApp()
23
+
24
+ let result = ''
25
+ const startDate = dateFrom + ' ' + timeFrom
26
+ const unixStartDate = $getUnixByDate(startDate)
27
+ const endDate = dateTo + ' ' + timeTo
28
+ const unixEndDate = $getUnixByDate(endDate)
29
+
30
+ if (
31
+ !$isDate(unixStartDate) ||
32
+ !$isDate(unixEndDate) ||
33
+ !timeFrom ||
34
+ !timeTo
35
+ ) {
36
+ result = localization.inventoryMonitor.invalidTimeEntry
37
+ return result
38
+ }
39
+
40
+ if (unixEndDate > unixValidEnd) {
41
+ const { $formattedDatetime } = useNuxtApp()
42
+
43
+ const currentShowValidEnd = $formattedDatetime(
44
+ new Date(unixValidEnd),
45
+ formatDate,
46
+ true
47
+ )
48
+ result =
49
+ localization.inventoryMonitor.timeRangeShouldNotBeMoreThanValidTo.replace(
50
+ '{0}',
51
+ currentShowValidEnd
52
+ )
53
+ } else if (unixEndDate === unixStartDate)
54
+ result = localization.inventoryMonitor.timeToShouldBeLaterTimeFrom
55
+ else if (unixEndDate - unixStartDate <= 3600000)
56
+ result = localization.inventoryMonitor.timeRangeShouldNotBeSmallerThanHour
57
+ else if (isMoreThanOneMonth(unixStartDate, unixEndDate))
58
+ result = localization.inventoryMonitor.timeRangeShouldNotBeMoreThanMonth
59
+ else return [unixStartDate, unixEndDate]
60
+
61
+ return result
62
+ }