bfg-common 1.5.442 → 1.5.444

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 (212) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/assets/localization/local_be.json +9 -2
  7. package/assets/localization/local_en.json +19 -12
  8. package/assets/localization/local_hy.json +9 -2
  9. package/assets/localization/local_kk.json +9 -2
  10. package/assets/localization/local_ru.json +9 -2
  11. package/assets/localization/local_zh.json +9 -2
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/perPage/PerPage.vue +58 -58
  15. package/components/atoms/table/dataGrid/DataGrid.vue +1694 -1694
  16. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  17. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  18. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  19. package/components/atoms/wizard/Wizard.vue +2 -2
  20. package/components/atoms/wizard/step/Step.vue +1 -1
  21. package/components/common/backup/storage/actions/add/Add.vue +5 -5
  22. package/components/common/backup/storage/actions/add/Old.vue +1 -1
  23. package/components/common/backup/storage/actions/add/lib/config/steps.ts +2 -2
  24. package/components/common/backup/storage/actions/add/lib/validations.ts +4 -4
  25. package/components/common/backup/storage/actions/add/steps/name/Name.vue +1 -1
  26. package/components/common/backup/storage/actions/add/steps/name/New.vue +1 -1
  27. package/components/common/backup/storage/actions/add/steps/name/Old.vue +1 -1
  28. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigure.vue +1 -1
  29. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigureNew.vue +1 -1
  30. package/components/common/backup/storage/actions/add/steps/nameAndConfigure/NameAndConfigureOld.vue +1 -1
  31. package/components/common/browse/blocks/Container.vue +235 -235
  32. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  33. package/components/common/context/lib/models/interfaces.ts +33 -33
  34. package/components/common/diagramMain/modals/lib/config/networkModal.ts +398 -398
  35. package/components/common/diagramMain/modals/lib/config/portModal.ts +251 -251
  36. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  37. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +5 -5
  38. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +2 -2
  39. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +2 -2
  40. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +5 -5
  41. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +2 -2
  42. package/components/common/diagramMain/port/Port.vue +580 -580
  43. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  44. package/components/common/pages/backups/Backups.vue +102 -102
  45. package/components/common/pages/backups/DetailView.vue +52 -52
  46. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  47. package/components/common/pages/backups/modals/Modals.vue +1 -1
  48. package/components/common/pages/backups/modals/createBackup/CreateBackup.vue +5 -2
  49. package/components/common/pages/backups/modals/createBackup/configuration/Configuration.vue +29 -29
  50. package/components/common/pages/backups/modals/createBackup/configuration/backupWindow/BackupWindow.vue +26 -26
  51. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/MaxBandwidth.vue +66 -66
  52. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  53. package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue +35 -35
  54. package/components/common/pages/backups/modals/createBackup/datastores/Datastores.vue +59 -59
  55. package/components/common/pages/backups/modals/createBackup/datastores/tableView/TableView.vue +95 -95
  56. package/components/common/pages/backups/modals/createBackup/disks/tableView/lib/config/table.ts +117 -117
  57. package/components/common/pages/backups/modals/createBackup/general/General.vue +135 -135
  58. package/components/common/pages/backups/modals/createBackup/lib/config/steps.ts +2 -2
  59. package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +12 -12
  60. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  61. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  62. package/components/common/pages/backups/modals/restore/Restore.vue +3 -3
  63. package/components/common/pages/backups/modals/restore/disks/Disks.vue +27 -27
  64. package/components/common/pages/backups/modals/restore/disks/tableView/TableView.vue +102 -102
  65. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/table.ts +117 -117
  66. package/components/common/pages/backups/modals/restore/lib/config/steps.ts +2 -2
  67. package/components/common/pages/backups/modals/restore/name/Name.vue +160 -160
  68. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  69. package/components/common/pages/backups/modals/restore/networks/Networks.vue +67 -67
  70. package/components/common/pages/backups/modals/restore/networks/table/Table.vue +214 -214
  71. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  72. package/components/common/pages/backups/tools/Tools.vue +75 -75
  73. package/components/common/pages/backups/tools/lib/config/tabs.ts +36 -36
  74. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  75. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  76. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  77. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  78. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  79. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  80. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  81. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  82. package/components/common/select/radio/RadioGroup.vue +137 -137
  83. package/components/common/spiceConsole/Drawer.vue +381 -381
  84. package/components/common/spiceConsole/SpiceConsole.vue +127 -127
  85. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  86. package/components/common/tools/Actions.vue +207 -207
  87. package/components/common/treeView/TreeView.vue +52 -52
  88. package/components/common/vm/actions/add/Add.vue +5 -5
  89. package/components/common/vm/actions/add/New.vue +2 -2
  90. package/components/common/vm/actions/add/Old.vue +2 -2
  91. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  92. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  93. package/components/common/vm/actions/add/lib/config/steps.ts +2 -2
  94. package/components/common/vm/actions/clone/Clone.vue +5 -5
  95. package/components/common/vm/actions/clone/lib/config/steps.ts +2 -2
  96. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +5 -5
  97. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +2 -2
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +2 -0
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +85 -85
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/maximumSize/MaximumSize.vue +23 -23
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +99 -99
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  120. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  121. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  122. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  123. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapOld.vue +44 -44
  124. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  125. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  126. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  127. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  128. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +143 -143
  129. package/components/common/vm/actions/common/select/computeResource/New.vue +184 -184
  130. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +131 -131
  131. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  132. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  133. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  134. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  135. package/components/common/vm/actions/common/select/storage/new/New.vue +320 -320
  136. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  137. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  138. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  139. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  140. package/components/common/vmt/actions/add/Add.vue +5 -5
  141. package/components/common/vmt/actions/add/New.vue +2 -3
  142. package/components/common/vmt/actions/add/Old.vue +2 -2
  143. package/components/common/vmt/actions/add/lib/config/steps.ts +2 -2
  144. package/components/common/wizards/datastore/add/Add.vue +2 -2
  145. package/components/common/wizards/datastore/add/Old.vue +2 -2
  146. package/components/common/wizards/datastore/add/lib/config/steps.ts +2 -2
  147. package/components/common/wizards/datastore/add/lib/utils.ts +1 -1
  148. package/components/common/wizards/datastore/add/lib/validations.ts +3 -3
  149. package/components/common/wizards/datastore/add/steps/_local/Local.vue +1 -1
  150. package/components/common/wizards/datastore/add/steps/_local/createName/CreateName.vue +1 -1
  151. package/components/common/wizards/datastore/add/steps/nameAndConfigure/NameAndConfigure.vue +2 -1
  152. package/components/common/wizards/datastore/add/steps/nameAndConfigure/NameAndConfigureNew.vue +1 -1
  153. package/components/common/wizards/datastore/add/steps/nameAndConfigure/NameAndConfigureOld.vue +1 -1
  154. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDevice.vue +1 -1
  155. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +1 -1
  156. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceOld.vue +1 -1
  157. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  158. package/components/common/wizards/network/add/Add.vue +109 -333
  159. package/components/common/wizards/network/add/AddNew.vue +514 -0
  160. package/components/common/wizards/network/add/AddOld.vue +457 -0
  161. package/components/common/wizards/network/add/lib/config/config.ts +11 -1
  162. package/components/common/wizards/network/add/lib/config/selectConnectionTypeStep.ts +31 -0
  163. package/components/common/wizards/network/add/lib/config/selectSwitch.ts +217 -0
  164. package/components/common/wizards/network/add/lib/config/steps.ts +5 -5
  165. package/components/common/wizards/network/add/lib/models/interfaces.ts +9 -0
  166. package/components/common/wizards/network/add/steps/ConnectionSettings.vue +2 -2
  167. package/components/common/wizards/network/add/steps/IpFourSettings.vue +2 -2
  168. package/components/common/wizards/network/add/steps/PortProperties.vue +2 -2
  169. package/components/common/wizards/network/add/steps/selectConnectionType/SelectConnectionType.vue +35 -0
  170. package/components/common/wizards/network/add/steps/selectConnectionType/SelectConnectionTypeNew.vue +104 -0
  171. package/components/common/wizards/network/add/steps/selectConnectionType/SelectConnectionTypeOld.vue +80 -0
  172. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDevice.vue +183 -0
  173. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceNew.vue +393 -0
  174. package/components/common/wizards/network/add/steps/{SelectedTargetDevice.vue → selectTargetDevice/SelectTargetDeviceOld.vue} +42 -139
  175. package/components/common/wizards/network/add/steps/selectTargetDevice/modals/Modals.vue +55 -0
  176. package/components/common/wizards/network/add/steps/selectTargetDevice/modals/SelectNetwork.vue +64 -0
  177. package/components/common/wizards/network/add/steps/selectTargetDevice/modals/SelectStandardSwitch.vue +64 -0
  178. package/components/common/wizards/network/add/steps/selectTargetDevice/modals/SelectSwitch.vue +64 -0
  179. package/components/common/wizards/network/add/steps/selectTargetDevice/modals/new/SelectNetwork.vue +163 -0
  180. package/components/common/wizards/network/add/steps/selectTargetDevice/modals/new/SelectStandardSwitch.vue +163 -0
  181. package/components/common/wizards/network/add/steps/selectTargetDevice/modals/new/SelectSwitch.vue +163 -0
  182. package/components/common/wizards/network/add/{modals → steps/selectTargetDevice/modals/old}/SelectNetwork.vue +53 -56
  183. package/components/common/wizards/network/add/{modals → steps/selectTargetDevice/modals/old}/SelectStandardSwitch.vue +37 -52
  184. package/components/common/wizards/network/add/{modals → steps/selectTargetDevice/modals/old}/SelectSwitch.vue +38 -42
  185. package/components/common/wizards/network/add/validations/connectionSettings.ts +5 -5
  186. package/components/common/wizards/network/add/validations/createStandardSwitch.ts +4 -4
  187. package/components/common/wizards/network/add/validations/ipFourSettings.ts +5 -5
  188. package/components/common/wizards/network/add/validations/networkValidation.ts +4 -4
  189. package/components/common/wizards/network/add/validations/physicalAdapter.ts +4 -4
  190. package/components/common/wizards/network/add/validations/portProperties.ts +2 -2
  191. package/components/common/wizards/network/add/validations/targetDevice.ts +11 -10
  192. package/components/common/wizards/vm/migrate/Migrate.vue +2 -2
  193. package/components/common/wizards/vm/migrate/lib/config/steps.ts +2 -2
  194. package/components/common/wizards/vm/migrate/lib/validations.ts +3 -3
  195. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  196. package/components/common/wizards/vm/migrate/select/targetServer/new/New.vue +1 -1
  197. package/components/common/wizards/vm/migrate/select/targetServer/targetServer.vue +1 -1
  198. package/components/common/wizards/vm/migrate/select/type/lib/config/typeOptions.ts +45 -45
  199. package/composables/productNameLocal.ts +30 -30
  200. package/composables/useAppVersion.ts +21 -21
  201. package/package.json +2 -2
  202. package/plugins/date.ts +233 -233
  203. package/plugins/panelStates.ts +70 -70
  204. package/plugins/text.ts +59 -59
  205. package/public/spice-console/lib/images/bitmap.js +203 -203
  206. package/public/spice-console/network/spicechannel.js +390 -390
  207. package/store/main/mutations.ts +7 -7
  208. package/store/main/state.ts +7 -7
  209. package/components/atoms/wizard/lib/models/enums.ts +0 -8
  210. package/components/atoms/wizard/lib/models/interfaces.ts +0 -59
  211. package/components/atoms/wizard/lib/utils/utils.ts +0 -954
  212. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +0 -112
package/plugins/date.ts CHANGED
@@ -1,233 +1,233 @@
1
- import { defineNuxtPlugin } from '#app'
2
- import {
3
- format,
4
- // differenceInYears,
5
- // differenceInMonths,
6
- // differenceInDays,
7
- // differenceInHours,
8
- // differenceInMinutes,
9
- // differenceInSeconds,
10
- } from 'date-fns'
11
- import * as localizations from 'date-fns/locale'
12
- import type { UI_T_DateFormat } from '~/lib/models/plugins/date/types'
13
- import type { UI_I_Dateformat } from '~/lib/models/plugins/date/interfaces'
14
- import type { UI_I_ArbitraryObject } from '~/lib/models/interfaces'
15
-
16
- export default defineNuxtPlugin(() => {
17
- // Проверяем переданое является датой
18
- const isDate = (date: string | number) => {
19
- return new Date(date).toString() !== 'Invalid Date'
20
- }
21
-
22
- // Проверяем формат времени браузера равно 24h
23
- const isBrowserLocale24h = () =>
24
- !new Intl.DateTimeFormat(undefined, { hour: 'numeric' })
25
- .format(0)
26
- .match(/AM/)
27
-
28
- // Получаем переводы для даты
29
- const getDateLocalization = (lang?: string) => {
30
- const currentLanguage = lang || useLocalStorage('lang') || 'en_US'
31
- const { be, enUS, hy, kk, ru, zhCN } = localizations
32
- let localization
33
-
34
- switch (currentLanguage) {
35
- case 'be_BY':
36
- localization = be
37
- break
38
- case 'en_US':
39
- localization = enUS
40
- break
41
- case 'hy_AM':
42
- localization = hy
43
- break
44
- case 'kk_KZ':
45
- localization = kk
46
- break
47
- case 'ru_RU':
48
- localization = ru
49
- break
50
- case 'zh_CHS':
51
- localization = zhCN
52
- break
53
- }
54
-
55
- return localization
56
- }
57
-
58
- // Получаем формат даты
59
- const getDateFormat = (lang?: string): UI_T_DateFormat => {
60
- const currentLanguage = lang || useLocalStorage('lang') || 'en_US'
61
- const dateFormats: UI_I_Dateformat = {
62
- be_BY: 'yyyy-MM-dd',
63
- en_US: 'MM-dd-yyyy',
64
- hy_AM: 'yyyy-MM-dd',
65
- kk_KZ: 'dd/MM/yyyy',
66
- ru_RU: 'dd/MM/yyyy',
67
- zh_CHS: 'yyyy-MM-dd',
68
- }
69
-
70
- const dateFormat = ref(dateFormats[currentLanguage])
71
-
72
- window.addEventListener('timeFormatStorageChanged', function handler() {
73
- dateFormat.value = dateFormats[lang || useLocalStorage('lang') || 'en_US'] // TODO нужно проверить когда будем работать без useLocalStorage
74
-
75
- window.removeEventListener('timeFormatStorageChanged', handler)
76
- })
77
-
78
- return dateFormat.value
79
- }
80
-
81
- // Получаем формат времени
82
- const getTimeFormat = (hasSeconds: boolean, timeFormat?: string) => {
83
- let appTimeFormat = timeFormat || useLocalStorage('timeFormat') || 'DEFAULT'
84
- let timeFormatLocal = ''
85
-
86
- if (appTimeFormat === 'DEFAULT') {
87
- const isBrowserTimeFormat24 = isBrowserLocale24h()
88
-
89
- appTimeFormat = isBrowserTimeFormat24 ? '24H' : appTimeFormat
90
- }
91
-
92
- if (appTimeFormat === '24H') {
93
- timeFormatLocal = 'HH:mm'
94
- } else {
95
- timeFormatLocal = 'h:mm aa'
96
- }
97
-
98
- hasSeconds && (timeFormatLocal = timeFormatLocal.replace(':mm', ':mm:ss'))
99
-
100
- return timeFormatLocal
101
- }
102
-
103
- // Форматирование даты из английского в стандартный
104
- const enFormatToStandardFormat = (date: string): string => {
105
- const splitDate = date.split('-')
106
- return [splitDate[2], splitDate[0], splitDate[1]].join('/')
107
- }
108
- const getUnixByDate = (dateTime: string, lang?: string): number => {
109
- const currentFormat: UI_T_DateFormat = getDateFormat(lang)
110
-
111
- const [date, time] = dateTime.split(' ')
112
-
113
- let standardDate = ''
114
- switch (currentFormat) {
115
- case 'dd/MM/yyyy':
116
- standardDate = date.split('/').reverse().join('/')
117
- break
118
- case 'yyyy-MM-dd':
119
- standardDate = date.replaceAll('-', '/')
120
- break
121
- case 'MM-dd-yyyy':
122
- standardDate = enFormatToStandardFormat(date)
123
- break
124
- }
125
-
126
- const standard = time ? standardDate + ' ' + time : standardDate
127
- return new Date(standard).getTime()
128
- }
129
-
130
- // Форматирование даты без временим
131
- const formattedDate = (
132
- date: number | string | Date,
133
- formatDate = '',
134
- lang?: string
135
- ) => {
136
- const formatDateLocal = formatDate || getDateFormat(lang)
137
-
138
- return format(new Date(date), formatDateLocal, {
139
- locale: getDateLocalization(lang),
140
- })
141
- }
142
- // Форматирование временим
143
- const formattedTime = (
144
- date: number | string | Date,
145
- formatDate = '',
146
- hasSeconds = false,
147
- timeFormat?: string
148
- ) => {
149
- const formatDateLocal = formatDate || getTimeFormat(hasSeconds, timeFormat)
150
-
151
- return format(new Date(date), formatDateLocal)
152
- }
153
-
154
- // Форматирование даты с временим
155
- const formattedDatetime = (
156
- date: number | string | Date,
157
- formatDate = '',
158
- hasSeconds = false,
159
- lang?: string,
160
- timeFormat?: string
161
- ) => {
162
- const formatDateLocal = ref(formatDate || getDateFormat(lang))
163
- const formatDatetime = ref(
164
- formatDateLocal.value + ' ' + getTimeFormat(hasSeconds, timeFormat)
165
- )
166
-
167
- window.addEventListener('timeFormatStorageChanged', function handler() {
168
- formatDatetime.value =
169
- formatDateLocal.value + ' ' + getTimeFormat(hasSeconds, timeFormat)
170
-
171
- window.removeEventListener('timeFormatStorageChanged', handler)
172
- })
173
-
174
- return format(new Date(date), formatDatetime.value, {
175
- locale: getDateLocalization(lang),
176
- })
177
- }
178
-
179
- const correctRuUnit = (value: number, type: string): string => {
180
- let result = ''
181
-
182
- const forms: UI_I_ArbitraryObject<string[]> = {
183
- second: ['Секунда', 'Секунды', 'Секунд'],
184
- minute: ['Минута', 'Минуты', 'Минут'],
185
- hour: ['Час', 'Часа', 'Часов'],
186
- day: ['День', 'Дня', 'Дней'],
187
- week: ['Неделя', 'Недели', 'Недель'],
188
- month: ['Месяц', 'Месяца', 'Месяцев'],
189
- year: ['Год', 'Года', 'Лет'],
190
- }
191
-
192
- const isFirstType = value % 10 === 1 && value % 100 !== 11
193
- const isSecondType =
194
- [2, 3, 4].includes(value % 10) && ![12, 13, 14].includes(value % 100)
195
-
196
- if (isFirstType) {
197
- result = forms[type][0]
198
- } else if (isSecondType) {
199
- result = forms[type][1]
200
- } else {
201
- result = forms[type][2]
202
- }
203
-
204
- return result
205
- }
206
-
207
- // Определяем сколько времени осталось
208
- // time = seconds
209
- const timeToTimeLeft = (time: number): number[] => {
210
- const seconds = Math.floor(time % 60)
211
- const minutes = Math.floor((time / 60) % 60)
212
- const hours = Math.floor((time / 60 / 60) % 24)
213
- const days = Math.floor((time / 60 / 60 / 24) % 30)
214
- const months = Math.floor((time / 60 / 60 / 24 / 30) % 12)
215
- const years = Math.floor(time / 60 / 60 / 24 / 30 / 12)
216
-
217
- return [years, months, days, hours, minutes, seconds]
218
- }
219
-
220
- return {
221
- provide: {
222
- isDate,
223
- getTimeFormat,
224
- getDateFormat,
225
- formattedTime,
226
- formattedDate,
227
- formattedDatetime,
228
- getUnixByDate,
229
- correctRuUnit,
230
- timeToTimeLeft,
231
- },
232
- }
233
- })
1
+ import { defineNuxtPlugin } from '#app'
2
+ import {
3
+ format,
4
+ // differenceInYears,
5
+ // differenceInMonths,
6
+ // differenceInDays,
7
+ // differenceInHours,
8
+ // differenceInMinutes,
9
+ // differenceInSeconds,
10
+ } from 'date-fns'
11
+ import * as localizations from 'date-fns/locale'
12
+ import type { UI_T_DateFormat } from '~/lib/models/plugins/date/types'
13
+ import type { UI_I_Dateformat } from '~/lib/models/plugins/date/interfaces'
14
+ import type { UI_I_ArbitraryObject } from '~/lib/models/interfaces'
15
+
16
+ export default defineNuxtPlugin(() => {
17
+ // Проверяем переданое является датой
18
+ const isDate = (date: string | number) => {
19
+ return new Date(date).toString() !== 'Invalid Date'
20
+ }
21
+
22
+ // Проверяем формат времени браузера равно 24h
23
+ const isBrowserLocale24h = () =>
24
+ !new Intl.DateTimeFormat(undefined, { hour: 'numeric' })
25
+ .format(0)
26
+ .match(/AM/)
27
+
28
+ // Получаем переводы для даты
29
+ const getDateLocalization = (lang?: string) => {
30
+ const currentLanguage = lang || useLocalStorage('lang') || 'en_US'
31
+ const { be, enUS, hy, kk, ru, zhCN } = localizations
32
+ let localization
33
+
34
+ switch (currentLanguage) {
35
+ case 'be_BY':
36
+ localization = be
37
+ break
38
+ case 'en_US':
39
+ localization = enUS
40
+ break
41
+ case 'hy_AM':
42
+ localization = hy
43
+ break
44
+ case 'kk_KZ':
45
+ localization = kk
46
+ break
47
+ case 'ru_RU':
48
+ localization = ru
49
+ break
50
+ case 'zh_CHS':
51
+ localization = zhCN
52
+ break
53
+ }
54
+
55
+ return localization
56
+ }
57
+
58
+ // Получаем формат даты
59
+ const getDateFormat = (lang?: string): UI_T_DateFormat => {
60
+ const currentLanguage = lang || useLocalStorage('lang') || 'en_US'
61
+ const dateFormats: UI_I_Dateformat = {
62
+ be_BY: 'yyyy-MM-dd',
63
+ en_US: 'MM-dd-yyyy',
64
+ hy_AM: 'yyyy-MM-dd',
65
+ kk_KZ: 'dd/MM/yyyy',
66
+ ru_RU: 'dd/MM/yyyy',
67
+ zh_CHS: 'yyyy-MM-dd',
68
+ }
69
+
70
+ const dateFormat = ref(dateFormats[currentLanguage])
71
+
72
+ window.addEventListener('timeFormatStorageChanged', function handler() {
73
+ dateFormat.value = dateFormats[lang || useLocalStorage('lang') || 'en_US'] // TODO нужно проверить когда будем работать без useLocalStorage
74
+
75
+ window.removeEventListener('timeFormatStorageChanged', handler)
76
+ })
77
+
78
+ return dateFormat.value
79
+ }
80
+
81
+ // Получаем формат времени
82
+ const getTimeFormat = (hasSeconds: boolean, timeFormat?: string) => {
83
+ let appTimeFormat = timeFormat || useLocalStorage('timeFormat') || 'DEFAULT'
84
+ let timeFormatLocal = ''
85
+
86
+ if (appTimeFormat === 'DEFAULT') {
87
+ const isBrowserTimeFormat24 = isBrowserLocale24h()
88
+
89
+ appTimeFormat = isBrowserTimeFormat24 ? '24H' : appTimeFormat
90
+ }
91
+
92
+ if (appTimeFormat === '24H') {
93
+ timeFormatLocal = 'HH:mm'
94
+ } else {
95
+ timeFormatLocal = 'h:mm aa'
96
+ }
97
+
98
+ hasSeconds && (timeFormatLocal = timeFormatLocal.replace(':mm', ':mm:ss'))
99
+
100
+ return timeFormatLocal
101
+ }
102
+
103
+ // Форматирование даты из английского в стандартный
104
+ const enFormatToStandardFormat = (date: string): string => {
105
+ const splitDate = date.split('-')
106
+ return [splitDate[2], splitDate[0], splitDate[1]].join('/')
107
+ }
108
+ const getUnixByDate = (dateTime: string, lang?: string): number => {
109
+ const currentFormat: UI_T_DateFormat = getDateFormat(lang)
110
+
111
+ const [date, time] = dateTime.split(' ')
112
+
113
+ let standardDate = ''
114
+ switch (currentFormat) {
115
+ case 'dd/MM/yyyy':
116
+ standardDate = date.split('/').reverse().join('/')
117
+ break
118
+ case 'yyyy-MM-dd':
119
+ standardDate = date.replaceAll('-', '/')
120
+ break
121
+ case 'MM-dd-yyyy':
122
+ standardDate = enFormatToStandardFormat(date)
123
+ break
124
+ }
125
+
126
+ const standard = time ? standardDate + ' ' + time : standardDate
127
+ return new Date(standard).getTime()
128
+ }
129
+
130
+ // Форматирование даты без временим
131
+ const formattedDate = (
132
+ date: number | string | Date,
133
+ formatDate = '',
134
+ lang?: string
135
+ ) => {
136
+ const formatDateLocal = formatDate || getDateFormat(lang)
137
+
138
+ return format(new Date(date), formatDateLocal, {
139
+ locale: getDateLocalization(lang),
140
+ })
141
+ }
142
+ // Форматирование временим
143
+ const formattedTime = (
144
+ date: number | string | Date,
145
+ formatDate = '',
146
+ hasSeconds = false,
147
+ timeFormat?: string
148
+ ) => {
149
+ const formatDateLocal = formatDate || getTimeFormat(hasSeconds, timeFormat)
150
+
151
+ return format(new Date(date), formatDateLocal)
152
+ }
153
+
154
+ // Форматирование даты с временим
155
+ const formattedDatetime = (
156
+ date: number | string | Date,
157
+ formatDate = '',
158
+ hasSeconds = false,
159
+ lang?: string,
160
+ timeFormat?: string
161
+ ) => {
162
+ const formatDateLocal = ref(formatDate || getDateFormat(lang))
163
+ const formatDatetime = ref(
164
+ formatDateLocal.value + ' ' + getTimeFormat(hasSeconds, timeFormat)
165
+ )
166
+
167
+ window.addEventListener('timeFormatStorageChanged', function handler() {
168
+ formatDatetime.value =
169
+ formatDateLocal.value + ' ' + getTimeFormat(hasSeconds, timeFormat)
170
+
171
+ window.removeEventListener('timeFormatStorageChanged', handler)
172
+ })
173
+
174
+ return format(new Date(date), formatDatetime.value, {
175
+ locale: getDateLocalization(lang),
176
+ })
177
+ }
178
+
179
+ const correctRuUnit = (value: number, type: string): string => {
180
+ let result = ''
181
+
182
+ const forms: UI_I_ArbitraryObject<string[]> = {
183
+ second: ['Секунда', 'Секунды', 'Секунд'],
184
+ minute: ['Минута', 'Минуты', 'Минут'],
185
+ hour: ['Час', 'Часа', 'Часов'],
186
+ day: ['День', 'Дня', 'Дней'],
187
+ week: ['Неделя', 'Недели', 'Недель'],
188
+ month: ['Месяц', 'Месяца', 'Месяцев'],
189
+ year: ['Год', 'Года', 'Лет'],
190
+ }
191
+
192
+ const isFirstType = value % 10 === 1 && value % 100 !== 11
193
+ const isSecondType =
194
+ [2, 3, 4].includes(value % 10) && ![12, 13, 14].includes(value % 100)
195
+
196
+ if (isFirstType) {
197
+ result = forms[type][0]
198
+ } else if (isSecondType) {
199
+ result = forms[type][1]
200
+ } else {
201
+ result = forms[type][2]
202
+ }
203
+
204
+ return result
205
+ }
206
+
207
+ // Определяем сколько времени осталось
208
+ // time = seconds
209
+ const timeToTimeLeft = (time: number): number[] => {
210
+ const seconds = Math.floor(time % 60)
211
+ const minutes = Math.floor((time / 60) % 60)
212
+ const hours = Math.floor((time / 60 / 60) % 24)
213
+ const days = Math.floor((time / 60 / 60 / 24) % 30)
214
+ const months = Math.floor((time / 60 / 60 / 24 / 30) % 12)
215
+ const years = Math.floor(time / 60 / 60 / 24 / 30 / 12)
216
+
217
+ return [years, months, days, hours, minutes, seconds]
218
+ }
219
+
220
+ return {
221
+ provide: {
222
+ isDate,
223
+ getTimeFormat,
224
+ getDateFormat,
225
+ formattedTime,
226
+ formattedDate,
227
+ formattedDatetime,
228
+ getUnixByDate,
229
+ correctRuUnit,
230
+ timeToTimeLeft,
231
+ },
232
+ }
233
+ })
@@ -1,70 +1,70 @@
1
- import { defineNuxtPlugin } from '#app'
2
- import type { UI_I_PanelOptions } from '~/lib/models/plugins/panelStates/interfaces'
3
-
4
- export default defineNuxtPlugin(() => {
5
- const panelStates = function (): any {
6
- const self: any = {}
7
- let options: UI_I_PanelOptions = {
8
- leftPanelWidth: 20,
9
- topPanelHeight: 80,
10
- isBottomPanelCollapsed: false,
11
- }
12
-
13
- self.setLeftPanelWidth = function (width: number): void {
14
- options.leftPanelWidth = width
15
-
16
- self.setPanelStatesInStorage()
17
- }
18
- self.setTopPanelHeight = function (height: number): void {
19
- options.topPanelHeight = height
20
-
21
- self.setPanelStatesInStorage()
22
- }
23
- self.bottomPanelCollapse = function (collapse: boolean): void {
24
- options.isBottomPanelCollapsed = collapse
25
-
26
- self.setPanelStatesInStorage()
27
- }
28
-
29
- self.setPanelStatesInStorage = function (): void {
30
- useLocalStorage('panelStates', options)
31
- self.emitChanges()
32
- }
33
- self.getPanelStatesOfStorage = function (): UI_I_PanelOptions {
34
- let panelStates = useLocalStorage('panelStates')
35
-
36
- if (!panelStates) {
37
- // const parent = document.getElementById('default-layout-outer')
38
- const parent = document.body
39
- const parentHeight = parent?.clientHeight || 0
40
- const onePercent = parentHeight / 100
41
- const defaultRecentTasksHeight = 250
42
-
43
- options.topPanelHeight =
44
- (parentHeight - defaultRecentTasksHeight - 1.5) / onePercent
45
-
46
- panelStates = options
47
- }
48
-
49
- options = panelStates
50
-
51
- return panelStates
52
- }
53
-
54
- self.cb = (): void => {}
55
- self.on = function (cb: () => any | void): void {
56
- self.cb = cb
57
- }
58
- self.emitChanges = function (): void {
59
- self.cb(options)
60
- }
61
-
62
- return self
63
- }.call({})
64
-
65
- return {
66
- provide: {
67
- panelStates,
68
- },
69
- }
70
- })
1
+ import { defineNuxtPlugin } from '#app'
2
+ import type { UI_I_PanelOptions } from '~/lib/models/plugins/panelStates/interfaces'
3
+
4
+ export default defineNuxtPlugin(() => {
5
+ const panelStates = function (): any {
6
+ const self: any = {}
7
+ let options: UI_I_PanelOptions = {
8
+ leftPanelWidth: 20,
9
+ topPanelHeight: 80,
10
+ isBottomPanelCollapsed: false,
11
+ }
12
+
13
+ self.setLeftPanelWidth = function (width: number): void {
14
+ options.leftPanelWidth = width
15
+
16
+ self.setPanelStatesInStorage()
17
+ }
18
+ self.setTopPanelHeight = function (height: number): void {
19
+ options.topPanelHeight = height
20
+
21
+ self.setPanelStatesInStorage()
22
+ }
23
+ self.bottomPanelCollapse = function (collapse: boolean): void {
24
+ options.isBottomPanelCollapsed = collapse
25
+
26
+ self.setPanelStatesInStorage()
27
+ }
28
+
29
+ self.setPanelStatesInStorage = function (): void {
30
+ useLocalStorage('panelStates', options)
31
+ self.emitChanges()
32
+ }
33
+ self.getPanelStatesOfStorage = function (): UI_I_PanelOptions {
34
+ let panelStates = useLocalStorage('panelStates')
35
+
36
+ if (!panelStates) {
37
+ // const parent = document.getElementById('default-layout-outer')
38
+ const parent = document.body
39
+ const parentHeight = parent?.clientHeight || 0
40
+ const onePercent = parentHeight / 100
41
+ const defaultRecentTasksHeight = 250
42
+
43
+ options.topPanelHeight =
44
+ (parentHeight - defaultRecentTasksHeight - 1.5) / onePercent
45
+
46
+ panelStates = options
47
+ }
48
+
49
+ options = panelStates
50
+
51
+ return panelStates
52
+ }
53
+
54
+ self.cb = (): void => {}
55
+ self.on = function (cb: () => any | void): void {
56
+ self.cb = cb
57
+ }
58
+ self.emitChanges = function (): void {
59
+ self.cb(options)
60
+ }
61
+
62
+ return self
63
+ }.call({})
64
+
65
+ return {
66
+ provide: {
67
+ panelStates,
68
+ },
69
+ }
70
+ })