bfg-common 1.4.719 → 1.4.720

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/clarity/local_ar.json +2914 -0
  8. package/assets/scss/common/normalize.scss +361 -355
  9. package/components/atoms/TheIcon3.vue +50 -50
  10. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  11. package/components/atoms/stack/StackBlock.vue +185 -185
  12. package/components/atoms/table/dataGrid/DataGrid.vue +1696 -1696
  13. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  14. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +91 -91
  15. package/components/common/browse/BrowseNew.vue +237 -237
  16. package/components/common/browse/BrowseOld.vue +217 -217
  17. package/components/common/browse/blocks/contents/Files.vue +37 -37
  18. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  19. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  20. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  21. package/components/common/context/lib/models/interfaces.ts +30 -30
  22. package/components/common/context/recursion/Recursion.vue +86 -86
  23. package/components/common/context/recursion/RecursionOld.vue +213 -213
  24. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  25. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  26. package/components/common/layout/theHeader/lib/models/enums.ts +1 -0
  27. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +5 -2
  28. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +150 -150
  29. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +300 -284
  30. package/components/common/modals/confirmByInput/ConfirmByInput.vue +206 -206
  31. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  32. package/components/common/monitor/overview/filters/Filters.vue +232 -235
  33. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +240 -242
  34. package/components/common/monitor/overview/filters/customIntervalModal/lib/config/dateChecker.ts +52 -62
  35. package/components/common/pages/home/StatusContent.vue +49 -49
  36. package/components/common/pages/home/headline/Headline.vue +44 -44
  37. package/components/common/pages/home/headline/HeadlineNew.vue +71 -71
  38. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  39. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  40. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  41. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  42. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  43. package/components/common/pages/home/widgets/hosts/HostsNew.vue +100 -100
  44. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  45. package/components/common/pages/home/widgets/services/lib/config/config.ts +108 -108
  46. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  47. package/components/common/pages/home/widgets/vms/VmsNew.vue +101 -101
  48. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  49. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  50. package/components/common/recursionTree/RecursionTree.vue +223 -212
  51. package/components/common/select/button/ButtonDropdown.vue +108 -108
  52. package/components/common/selectLanguage/lib/config/config.ts +5 -0
  53. package/components/common/spiceConsole/Drawer.vue +370 -370
  54. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  55. package/components/common/split/vertical/Vertical.vue +160 -160
  56. package/components/common/vm/actions/add/Add.vue +616 -616
  57. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  58. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +267 -267
  59. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +269 -269
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +161 -161
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +165 -165
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -55
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -42
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +147 -147
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +281 -281
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceNew.vue +85 -85
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +91 -91
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +35 -35
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +48 -48
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +30 -30
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +46 -46
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  111. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  116. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  117. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  118. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  119. package/components/common/vm/actions/editSettings/EditSettings.vue +232 -232
  120. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +183 -183
  121. package/components/common/vm/actions/editSettings/new/New.vue +177 -177
  122. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  123. package/composables/productNameLocal.ts +30 -30
  124. package/composables/useAppVersion.ts +21 -21
  125. package/composables/useLocal.ts +5 -0
  126. package/layouts/auth.vue +1 -0
  127. package/package.json +1 -1
  128. package/plugins/date.ts +233 -233
  129. package/plugins/recursion.ts +311 -311
  130. package/public/spice-console/lib/images/bitmap.js +203 -203
  131. package/public/spice-console/network/spicechannel.js +383 -383
  132. package/store/main/mutations.ts +7 -7
  133. package/store/main/state.ts +7 -7
  134. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,242 +1,240 @@
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
- onMounted(() => {
223
- selectedItem.value = location.hostname
224
- getCurrentTime()
225
- onSubmit()
226
- })
227
- </script>
228
-
229
- <style scoped lang="scss">
230
- .input-row-container {
231
- padding-left: 5px;
232
-
233
- .custom-time-input {
234
- max-width: 120px;
235
- margin-right: 15px;
236
- }
237
- }
238
- .text-format-date {
239
- display: inline-block;
240
- margin-top: 5px;
241
- }
242
- </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
+ }>()
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,62 +1,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
- }
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
+ }