bfg-common 1.5.42 → 1.5.44

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 (197) 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/scss/common/normalize.scss +339 -339
  7. package/components/atoms/TheIcon3.vue +50 -50
  8. package/components/atoms/collapse/CollapseNav.vue +165 -165
  9. package/components/atoms/dropdown/dropdown/Dropdown.vue +168 -168
  10. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  11. package/components/atoms/perPage/PerPage.vue +58 -58
  12. package/components/atoms/stack/StackBlock.vue +185 -185
  13. package/components/atoms/table/dataGrid/DataGrid.vue +1 -1
  14. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  15. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  16. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  17. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  18. package/components/atoms/tooltip/Signpost.vue +227 -227
  19. package/components/common/accordion/Recursion.vue +222 -222
  20. package/components/common/browse/BrowseNew.vue +237 -237
  21. package/components/common/browse/BrowseOld.vue +217 -217
  22. package/components/common/browse/blocks/contents/Files.vue +37 -37
  23. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  24. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  25. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  26. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  27. package/components/common/browse/lib/models/interfaces.ts +5 -5
  28. package/components/common/context/Context.vue +111 -111
  29. package/components/common/context/lib/models/interfaces.ts +31 -31
  30. package/components/common/context/recursion/Recursion.vue +87 -87
  31. package/components/common/context/recursion/RecursionNew.vue +238 -238
  32. package/components/common/context/recursion/RecursionOld.vue +228 -228
  33. package/components/common/details/DetailsItem.vue +109 -109
  34. package/components/common/diagramMain/DiagramMain.vue +897 -897
  35. package/components/common/diagramMain/Header.vue +214 -214
  36. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  37. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  38. package/components/common/diagramMain/lib/models/types.ts +21 -21
  39. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  40. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  41. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  42. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  43. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  44. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  45. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  46. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  47. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  48. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  49. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  50. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  51. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  52. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  53. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  54. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  55. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  56. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  57. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  58. package/components/common/diagramMain/port/Ports.vue +47 -47
  59. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  60. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  61. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  62. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +336 -336
  63. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +311 -311
  64. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  65. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  66. package/components/common/pages/home/StatusContent.vue +49 -49
  67. package/components/common/pages/home/headline/Headline.vue +45 -45
  68. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  69. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  70. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  71. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  72. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  73. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  74. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  75. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  76. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  77. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  78. package/components/common/pages/packages/Packages.vue +208 -208
  79. package/components/common/pages/shortcuts/block/BlockNew.vue +96 -96
  80. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  81. package/components/common/portlets/customAttributes/Portlet.vue +667 -667
  82. package/components/common/portlets/tag/Portlet.vue +433 -433
  83. package/components/common/recursionTree/RecursionTree.vue +223 -223
  84. package/components/common/select/button/ButtonDropdown.vue +108 -108
  85. package/components/common/spiceConsole/Drawer.vue +370 -370
  86. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  87. package/components/common/split/horizontal/HorizontalNew.vue +376 -376
  88. package/components/common/split/horizontal/HorizontalOld.vue +337 -337
  89. package/components/common/split/vertical/Vertical.vue +160 -160
  90. package/components/common/tools/Actions.vue +188 -188
  91. package/components/common/vm/actions/add/Add.vue +774 -772
  92. package/components/common/vm/actions/add/lib/config/steps.ts +247 -247
  93. package/components/common/vm/actions/clone/Clone.vue +798 -668
  94. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -178
  95. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +634 -634
  96. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  97. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +275 -275
  98. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +274 -274
  99. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +177 -177
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +410 -410
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +99 -99
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +164 -164
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +368 -368
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +232 -232
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +250 -250
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +286 -286
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +84 -84
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  135. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  136. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  137. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  138. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  139. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +81 -81
  140. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  141. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  142. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  143. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  144. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  145. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  146. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  147. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  148. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  149. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  150. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  151. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  152. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  153. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  154. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  155. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  156. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  157. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  158. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  159. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  160. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  161. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  162. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  163. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  164. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  165. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  166. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  167. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  168. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  169. package/components/common/vm/actions/common/lib/models/interfaces.ts +1 -0
  170. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -51
  171. package/components/common/vm/actions/common/select/createType/CreateType.vue +74 -74
  172. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  173. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  174. package/components/common/vm/actions/common/select/template/Template.vue +65 -65
  175. package/components/common/vm/actions/common/select/template/TemplateTreeView.vue +88 -88
  176. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  177. package/components/common/wizards/datastore/add/lib/config/steps.ts +138 -138
  178. package/components/common/wizards/datastore/add/nfs/accessibility/Accessibility.vue +60 -60
  179. package/components/common/wizards/datastore/add/readyComplete/ReadyComplete.vue +92 -92
  180. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +105 -105
  181. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  182. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  183. package/components/common/wizards/vm/migrate/select/network/table/network/Network.vue +150 -150
  184. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  185. package/components/common/wizards/vm/migrate/select/priority/Priority.vue +43 -43
  186. package/composables/productNameLocal.ts +30 -30
  187. package/composables/useAppVersion.ts +21 -21
  188. package/lib/models/store/interfaces.ts +1 -0
  189. package/lib/models/store/vm/interfaces.ts +2 -0
  190. package/package.json +1 -1
  191. package/plugins/date.ts +233 -233
  192. package/plugins/directives.ts +24 -24
  193. package/public/spice-console/lib/images/bitmap.js +203 -203
  194. package/public/spice-console/network/spicechannel.js +383 -383
  195. package/store/main/mutations.ts +7 -7
  196. package/store/main/state.ts +7 -7
  197. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -9,6 +9,7 @@ export interface API_UI_I_Response<T> {
9
9
  response: {
10
10
  _data: T
11
11
  status: number
12
+ ok: boolean
12
13
  }
13
14
  }
14
15
  export interface API_UI_I_Error {
@@ -250,4 +250,6 @@ export interface API_UI_I_VmReadyToComplete {
250
250
  video_card: API_UI_I_VmReadyToCompleteVideoCard
251
251
  passthrough_pci_devices: API_UI_I_VmReadyToCompletePciDevice[]
252
252
  }
253
+ compute_resource?: string
254
+ location?: string
253
255
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bfg-common",
3
3
  "private": false,
4
- "version": "1.5.42",
4
+ "version": "1.5.44",
5
5
  "scripts": {
6
6
  "build": "nuxt build",
7
7
  "dev": "nuxt dev --port=3002",
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,24 +1,24 @@
1
- import type { DirectiveBinding } from '@vue/runtime-core'
2
-
3
- export default defineNuxtPlugin((nuxtApp) => {
4
- nuxtApp.vueApp.directive('development', {
5
- mounted(el: HTMLElement, binding: DirectiveBinding) {
6
- if (!binding.value) return
7
-
8
- el.setAttribute('title', 'In development')
9
- el.setAttribute('disabled', 'true')
10
- el.style.opacity = '0.6'
11
- el.style.cursor = 'not-allowed'
12
-
13
- el.addEventListener(
14
- 'click',
15
- (e: MouseEvent) => {
16
- e.preventDefault()
17
- e.stopPropagation()
18
- return false
19
- },
20
- true
21
- )
22
- },
23
- })
24
- })
1
+ import type { DirectiveBinding } from '@vue/runtime-core'
2
+
3
+ export default defineNuxtPlugin((nuxtApp) => {
4
+ nuxtApp.vueApp.directive('development', {
5
+ mounted(el: HTMLElement, binding: DirectiveBinding) {
6
+ if (!binding.value) return
7
+
8
+ el.setAttribute('title', 'In development')
9
+ el.setAttribute('disabled', 'true')
10
+ el.style.opacity = '0.6'
11
+ el.style.cursor = 'not-allowed'
12
+
13
+ el.addEventListener(
14
+ 'click',
15
+ (e: MouseEvent) => {
16
+ e.preventDefault()
17
+ e.stopPropagation()
18
+ return false
19
+ },
20
+ true
21
+ )
22
+ },
23
+ })
24
+ })