bfg-common 1.5.708 → 1.5.709

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-1.svg +2 -3
  3. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  5. package/assets/img/icons/icons-sprite-light-1.svg +3 -4
  6. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  7. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  8. package/assets/localization/local_be.json +46 -3
  9. package/assets/localization/local_en.json +46 -3
  10. package/assets/localization/local_hy.json +46 -3
  11. package/assets/localization/local_kk.json +46 -3
  12. package/assets/localization/local_ru.json +48 -5
  13. package/assets/localization/local_zh.json +46 -3
  14. package/assets/scss/common/icons/icons-1.scss +1 -1
  15. package/assets/scss/common/icons/icons-2.scss +18 -0
  16. package/assets/scss/common/theme.scss +2 -0
  17. package/assets/scss/components/auth.scss +32 -5
  18. package/components/atoms/TheIcon3.vue +50 -50
  19. package/components/atoms/collapse/CollapseNav.vue +170 -170
  20. package/components/atoms/dropdown/tree/Tree.vue +2 -0
  21. package/components/atoms/perPage/PerPage.vue +58 -58
  22. package/components/atoms/switch/Switch.vue +7 -1
  23. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  24. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  25. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  26. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  27. package/components/atoms/wizard/Wizard.vue +1 -1
  28. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  29. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  30. package/components/common/certificate/Certificate.vue +27 -0
  31. package/components/common/certificate/CertificateInfo.vue +139 -0
  32. package/components/common/certificate/Tools.vue +59 -0
  33. package/components/common/certificate/lib/config/tabsPannel.ts +22 -0
  34. package/components/common/certificate/lib/models/interfaces.ts +9 -0
  35. package/components/common/certificate/lib/models/types.ts +1 -0
  36. package/components/common/certificate/modals/renew/New.vue +64 -0
  37. package/components/common/certificate/modals/renew/Old.vue +122 -0
  38. package/components/common/certificate/modals/renew/Renew.vue +67 -0
  39. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  40. package/components/common/diagramMain/port/Port.vue +580 -580
  41. package/components/common/help/navbar/left/lib/utils/constructAccordion.ts +2 -1
  42. package/components/common/help/navbar/right/Right.vue +86 -23
  43. package/components/common/layout/theHeader/TheHeader.vue +186 -191
  44. package/components/common/layout/theHeader/TheHeaderNew.vue +3 -7
  45. package/components/common/layout/theHeader/TheHeaderOld.vue +3 -7
  46. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  47. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  48. package/components/common/layout/theHeader/modals/reconnect/ReconnectOld.vue +2 -0
  49. package/components/common/layout/theHeader/userMenu/UserMenu.vue +109 -113
  50. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +12 -21
  51. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +36 -43
  52. package/components/common/layout/theHeader/userMenu/modals/changePassword/Old.vue +0 -2
  53. package/components/common/layout/theHeader/userMenu/modals/changePassword/lib/utils.ts +1 -1
  54. package/components/common/layout/theHeader/userMenu/modals/preferences/Preferences.vue +81 -86
  55. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesNew.vue +113 -102
  56. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +2 -4
  57. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +114 -115
  58. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/{ChangeLanguageNew.vue → New.vue} +65 -89
  59. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/{ChangeLanguageOld.vue → Old.vue} +66 -91
  60. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/DefaultConsole.vue +8 -7
  61. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/{DefaultConsoleNew.vue → New.vue} +3 -3
  62. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/{DefaultConsoleOld.vue → Old.vue} +2 -2
  63. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/Inventory.vue +7 -8
  64. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/{InventoryNew.vue → New.vue} +3 -2
  65. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/{InventoryOld.vue → Old.vue} +2 -2
  66. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  67. package/components/common/layout/theHeader/userMenu/modals/preferences/security/New.vue +277 -12
  68. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Old.vue +30 -56
  69. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Security.vue +65 -6
  70. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/{TimeFormatNew.vue → New.vue} +3 -3
  71. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/{TimeFormatOld.vue → Old.vue} +2 -2
  72. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/TimeFormat.vue +8 -8
  73. package/components/common/layout/theHeader/userMenu/modals/preferences/view/{ViewNew.vue → New.vue} +12 -3
  74. package/components/common/layout/theHeader/userMenu/modals/preferences/view/{ViewOld.vue → Old.vue} +2 -2
  75. package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +33 -45
  76. package/components/common/monitor/advanced/graphView/GraphView.vue +8 -0
  77. package/components/common/monitor/advanced/tools/Tools.vue +5 -1
  78. package/components/common/pages/auth/TheFooter.vue +104 -0
  79. package/components/common/pages/backups/DetailView.vue +52 -52
  80. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  81. package/components/common/pages/backups/modals/Modals.vue +243 -243
  82. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  83. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  84. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  85. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  86. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  87. package/components/common/pages/files/lib/models/enums.ts +10 -0
  88. package/components/common/pages/hardwareHealth/historyTestimony/tools/Tools.vue +7 -2
  89. package/components/common/pages/hardwareHealth/tableView/TableView.vue +8 -0
  90. package/components/common/pages/hardwareHealth/tableView/lib/config/sensorTable.ts +13 -1
  91. package/components/common/pages/hardwareHealth/toolsPanel/lib/config/actionsPanel.ts +4 -4
  92. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  93. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  94. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  95. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  96. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  97. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  98. package/components/common/pages/tasks/table/expandDetails/ExpandDetails.vue +1 -1
  99. package/components/common/qr/Qr.vue +69 -0
  100. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  101. package/components/common/select/radio/RadioGroup.vue +137 -137
  102. package/components/common/selectLanguage/SelectLanguage.vue +200 -200
  103. package/components/common/spiceConsole/Drawer.vue +420 -420
  104. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  105. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  106. package/components/common/split/horizontal/New.vue +0 -2
  107. package/components/common/split/vertical/New.vue +2 -1
  108. package/components/common/tools/Actions.vue +207 -207
  109. package/components/common/treeView/TreeView.vue +52 -52
  110. package/components/common/vm/actions/add/New.vue +1 -1
  111. package/components/common/vm/actions/add/Old.vue +1 -1
  112. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  113. package/components/common/vm/actions/clone/new/New.vue +438 -438
  114. package/components/common/vm/actions/clone/old/Old.vue +1 -0
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/New.vue +10 -34
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/Old.vue +15 -37
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +49 -50
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/coresPerSocket/CoresPerSocket.vue +1 -1
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces.ts +3 -1
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +13 -7
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/New.vue +7 -4
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +52 -45
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/Old.vue +5 -8
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIo.vue +1 -3
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/New.vue +2 -2
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/Old.vue +2 -2
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +1 -1
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/New.vue +1 -2
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/Old.vue +1 -2
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/New.vue +1 -1
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +1 -1
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/Old.vue +1 -1
  135. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  136. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  137. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  138. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  139. package/components/common/vm/actions/common/select/options/Old.vue +1 -2
  140. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  141. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  142. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  143. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  144. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  145. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  146. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  147. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  148. package/components/common/wizards/common/compatibility/New.vue +1 -1
  149. package/components/common/wizards/common/compatibility/Old.vue +1 -1
  150. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  151. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  152. package/components/common/wizards/common/steps/name/New.vue +221 -221
  153. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  154. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  155. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  156. package/components/common/wizards/datastore/add/Add.vue +228 -228
  157. package/components/common/wizards/datastore/add/lib/config/createDatastore.ts +1 -0
  158. package/components/common/wizards/datastore/add/lib/models/interfaces.ts +1 -0
  159. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  160. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +5 -0
  161. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceOld.vue +5 -0
  162. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/AdvancedOptions.vue +43 -0
  163. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +114 -0
  164. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/Old.vue +114 -0
  165. package/components/common/wizards/datastore/add/steps/nameAndDevice/table/old/Old.vue +2 -3
  166. package/components/common/wizards/datastore/add/steps/readyComplete/lib/config/propertiesDetails.ts +8 -1
  167. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  168. package/components/common/wizards/vm/migrate/lib/models/enums.ts +2 -2
  169. package/components/common/wizards/vm/migrate/steps/selectStorage/SelectStorage.vue +4 -4
  170. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/lib/config/diskTable.ts +6 -2
  171. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/old/lib/config/diskTable.ts +18 -12
  172. package/composables/useAppVersion.ts +21 -21
  173. package/composables/useEnvLanguage.ts +7 -8
  174. package/composables/useLocal.ts +6 -6
  175. package/composables/useLocalCommon.ts +39 -39
  176. package/lib/models/interfaces.ts +1 -0
  177. package/package.json +3 -4
  178. package/plugins/console.ts +21 -21
  179. package/plugins/date.ts +14 -37
  180. package/plugins/mouse.ts +21 -21
  181. package/plugins/panelStates.ts +70 -70
  182. package/plugins/text.ts +59 -59
  183. package/public/spice-console/application/clientgui.js +854 -854
  184. package/public/spice-console/application/packetfactory.js +211 -211
  185. package/public/spice-console/application/virtualmouse.js +147 -147
  186. package/public/spice-console/lib/images/bitmap.js +203 -203
  187. package/public/spice-console/network/spicechannel.js +440 -440
  188. package/public/spice-console/process/cursorprocess.js +128 -128
  189. package/public/spice-console/process/inputprocess.js +227 -227
  190. package/public/spice-console/process/mainprocess.js +212 -212
  191. package/public/spice-console/run.js +210 -210
  192. package/store/main/getters.ts +2 -2
  193. package/store/main/mutations.ts +7 -7
  194. package/store/main/state.ts +7 -7
  195. package/store/tasks/mappers/recentTasks.ts +123 -123
  196. package/store/tasks/mutations.ts +82 -82
  197. package/components/common/qrcode/Qrcode.vue +0 -56
@@ -1,85 +1,85 @@
1
- import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
2
- import type { API_UI_I_Error } from '~/lib/models/store/interfaces'
3
- import type { UI_T_Project } from '~/lib/models/types'
4
- import { UI_E_Kind } from '~/lib/models/enums'
5
-
6
- export const checkValidityName = async ({
7
- name,
8
- wizard,
9
- project,
10
- sendMessage,
11
- datacenterId,
12
- }: {
13
- name: string
14
- wizard: Wizard
15
- project: UI_T_Project
16
- sendMessage: (message: string) => void
17
- datacenterId?: string
18
- }): Promise<void> => {
19
- wizard.setLoader(true)
20
- const url = buildValidationUrl(name, project, datacenterId)
21
-
22
- const { error } = await useMyFetch<null, API_UI_I_Error>(url, {
23
- method: 'GET',
24
- })
25
-
26
- wizard.setLoader(false)
27
-
28
- if (error.value && error.value.data.error_code !== 0) {
29
- const existError = error.value.data?.error_message || error.value.data
30
- sendMessage(existError)
31
- return
32
- }
33
- sendMessage('')
34
- }
35
-
36
- const buildValidationUrl = (
37
- name: string,
38
- project: UI_T_Project,
39
- datacenterId?: string
40
- ): string => {
41
- if (project === 'procurator') {
42
- const params = new URLSearchParams({ name })
43
- return `/ui/ds/validate?${params.toString()}`
44
- }
45
-
46
- const params = new URLSearchParams()
47
- params.set('name', name)
48
- params.set('kind', String(UI_E_Kind.STORAGE_VALIDATION_NAME))
49
- if (datacenterId) params.set('datacenter', datacenterId)
50
-
51
- return `/ui/object/validate_name_datacenter?${params.toString()}`
52
- }
53
-
54
- export const validateNameAndGenerateDataId = (
55
- name: string,
56
- _errorMessage: string,
57
- defaultDataId?: string
58
- ): string => {
59
- let baseDataId = defaultDataId || 'storage-name-alert-error'
60
-
61
- const patterns = [
62
- {
63
- regex: /^[a-zA-Z0-9_\-\.]+$/,
64
- error_message:
65
- /invalid name, must only contain letters, numbers, and '_', '-' '.' symbols/,
66
- suffix: '-invalid-name-symbols',
67
- },
68
- {
69
- regex: /^.{3,64}$/,
70
- error_message:
71
- /invalid name length, must be between: \d+ and \d+ characters/,
72
- suffix: '-invalid-name-length',
73
- },
74
- ]
75
-
76
- // Проверка error_message на соответствие шаблонам
77
-
78
- for (const pattern of patterns) {
79
- if (!pattern.regex.test(name)) {
80
- return `${baseDataId}${pattern.suffix}`
81
- }
82
- }
83
-
84
- return baseDataId
85
- }
1
+ import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
2
+ import type { API_UI_I_Error } from '~/lib/models/store/interfaces'
3
+ import type { UI_T_Project } from '~/lib/models/types'
4
+ import { UI_E_Kind } from '~/lib/models/enums'
5
+
6
+ export const checkValidityName = async ({
7
+ name,
8
+ wizard,
9
+ project,
10
+ sendMessage,
11
+ datacenterId,
12
+ }: {
13
+ name: string
14
+ wizard: Wizard
15
+ project: UI_T_Project
16
+ sendMessage: (message: string) => void
17
+ datacenterId?: string
18
+ }): Promise<void> => {
19
+ wizard.setLoader(true)
20
+ const url = buildValidationUrl(name, project, datacenterId)
21
+
22
+ const { error } = await useMyFetch<null, API_UI_I_Error>(url, {
23
+ method: 'GET',
24
+ })
25
+
26
+ wizard.setLoader(false)
27
+
28
+ if (error.value && error.value.data.error_code !== 0) {
29
+ const existError = error.value.data?.error_message || error.value.data
30
+ sendMessage(existError)
31
+ return
32
+ }
33
+ sendMessage('')
34
+ }
35
+
36
+ const buildValidationUrl = (
37
+ name: string,
38
+ project: UI_T_Project,
39
+ datacenterId?: string
40
+ ): string => {
41
+ if (project === 'procurator') {
42
+ const params = new URLSearchParams({ name })
43
+ return `/ui/ds/validate?${params.toString()}`
44
+ }
45
+
46
+ const params = new URLSearchParams()
47
+ params.set('name', name)
48
+ params.set('kind', String(UI_E_Kind.STORAGE_VALIDATION_NAME))
49
+ if (datacenterId) params.set('datacenter', datacenterId)
50
+
51
+ return `/ui/object/validate_name_datacenter?${params.toString()}`
52
+ }
53
+
54
+ export const validateNameAndGenerateDataId = (
55
+ name: string,
56
+ _errorMessage: string,
57
+ defaultDataId?: string
58
+ ): string => {
59
+ let baseDataId = defaultDataId || 'storage-name-alert-error'
60
+
61
+ const patterns = [
62
+ {
63
+ regex: /^[a-zA-Z0-9_\-\.]+$/,
64
+ error_message:
65
+ /invalid name, must only contain letters, numbers, and '_', '-' '.' symbols/,
66
+ suffix: '-invalid-name-symbols',
67
+ },
68
+ {
69
+ regex: /^.{3,64}$/,
70
+ error_message:
71
+ /invalid name length, must be between: \d+ and \d+ characters/,
72
+ suffix: '-invalid-name-length',
73
+ },
74
+ ]
75
+
76
+ // Проверка error_message на соответствие шаблонам
77
+
78
+ for (const pattern of patterns) {
79
+ if (!pattern.regex.test(name)) {
80
+ return `${baseDataId}${pattern.suffix}`
81
+ }
82
+ }
83
+
84
+ return baseDataId
85
+ }
@@ -76,6 +76,11 @@
76
76
  @main-filter="emits('main-filter', $event)"
77
77
  />
78
78
  </div>
79
+
80
+ <common-wizards-datastore-add-steps-name-and-device-advanced-options
81
+ v-model="formModelLocal.level"
82
+ :dev-names-count="formModelLocal.dev_names.length"
83
+ />
79
84
  </div>
80
85
  </template>
81
86
 
@@ -90,6 +90,11 @@
90
90
  @main-filter="emits('main-filter', $event)"
91
91
  />
92
92
  </div>
93
+
94
+ <common-wizards-datastore-add-steps-name-and-device-advanced-options
95
+ v-model="formModelLocal.level"
96
+ :dev-names-count="formModelLocal.dev_names.length"
97
+ />
93
98
  </div>
94
99
  </template>
95
100
 
@@ -0,0 +1,43 @@
1
+ <template>
2
+ <component
3
+ :is="currentComponent"
4
+ v-model="model"
5
+ :dev-names-count="props.devNamesCount"
6
+ />
7
+ </template>
8
+
9
+ <script setup lang="ts">
10
+ import type { UI_I_CreateDatastoreForm } from '~/components/common/wizards/datastore/add/lib/models/interfaces'
11
+
12
+ const { $store }: any = useNuxtApp()
13
+
14
+ const model = defineModel<UI_I_CreateDatastoreForm['level']>({ required: true })
15
+
16
+ const props = defineProps<{
17
+ devNamesCount: number
18
+ }>()
19
+
20
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
21
+ const currentComponent = computed(() =>
22
+ isNewView.value
23
+ ? defineAsyncComponent(() => import('./New.vue'))
24
+ : defineAsyncComponent(() => import('./Old.vue'))
25
+ )
26
+
27
+ watch(
28
+ () => props.devNamesCount,
29
+ (newValue) => {
30
+ if (newValue < 2) {
31
+ if (model.value !== 'linear') model.value = 'linear'
32
+ } else if (newValue < 3) {
33
+ if (!['linear', 'raid0', 'raid1'].includes(model.value))
34
+ model.value = 'linear'
35
+ } else if (newValue < 4) {
36
+ if (!['linear', 'raid0', 'raid1', 'raid5'].includes(model.value))
37
+ model.value = 'linear'
38
+ }
39
+ }
40
+ )
41
+ </script>
42
+
43
+ <style scoped lang="scss"></style>
@@ -0,0 +1,114 @@
1
+ <template>
2
+ <div class="advanced-options-wrap clr-form-control">
3
+ <b
4
+ class="advanced-options-label btn btn-link"
5
+ @click="isShowAdvancedOptions = !isShowAdvancedOptions"
6
+ >
7
+ {{ localization.common.advancedOptions }}
8
+ </b>
9
+ <div v-show="isShowAdvancedOptions" class="advanced-options compact">
10
+ <div class="radio">
11
+ <input
12
+ v-model="model"
13
+ id="advanced-option-liner"
14
+ data-id="advanced-option-liner"
15
+ type="radio"
16
+ value="linear"
17
+ />
18
+ <label for="advanced-option-liner"> Linear </label>
19
+ </div>
20
+ <div :class="['radio', { disabled: props.devNamesCount < 2 }]">
21
+ <input
22
+ v-model="model"
23
+ id="advanced-option-raid0"
24
+ :disabled="props.devNamesCount < 2"
25
+ data-id="advanced-option-raid0"
26
+ type="radio"
27
+ value="raid0"
28
+ />
29
+ <label for="advanced-option-raid0"> Raid0 </label>
30
+ </div>
31
+ <div :class="['radio', { disabled: props.devNamesCount < 2 }]">
32
+ <input
33
+ v-model="model"
34
+ id="advanced-option-raid1"
35
+ :disabled="props.devNamesCount < 2"
36
+ data-id="advanced-option-raid1"
37
+ type="radio"
38
+ value="raid1"
39
+ />
40
+ <label for="advanced-option-raid1"> Raid1 </label>
41
+ </div>
42
+ <div :class="['radio', { disabled: props.devNamesCount < 3 }]">
43
+ <input
44
+ v-model="model"
45
+ id="advanced-option-raid5"
46
+ :disabled="props.devNamesCount < 3"
47
+ data-id="advanced-option-raid5"
48
+ type="radio"
49
+ value="raid5"
50
+ />
51
+ <label for="advanced-option-raid5"> Raid5 </label>
52
+ </div>
53
+ <div :class="['radio', { disabled: props.devNamesCount < 4 }]">
54
+ <input
55
+ v-model="model"
56
+ id="advanced-option-raid6"
57
+ :disabled="props.devNamesCount < 4"
58
+ data-id="advanced-option-raid6"
59
+ type="radio"
60
+ value="raid6"
61
+ />
62
+ <label for="advanced-option-raid6"> Raid6 </label>
63
+ </div>
64
+ <div :class="['radio', { disabled: props.devNamesCount < 4 }]">
65
+ <input
66
+ v-model="model"
67
+ id="advanced-option-raid10"
68
+ :disabled="props.devNamesCount < 4"
69
+ data-id="advanced-option-raid10"
70
+ type="radio"
71
+ value="raid10"
72
+ />
73
+ <label for="advanced-option-raid10"> Raid10 </label>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </template>
78
+
79
+ <script setup lang="ts">
80
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
81
+ import type { UI_I_CreateDatastoreForm } from '~/components/common/wizards/datastore/add/lib/models/interfaces'
82
+
83
+ const model = defineModel<UI_I_CreateDatastoreForm['level']>({ required: true })
84
+
85
+ const props = defineProps<{
86
+ devNamesCount: number
87
+ }>()
88
+
89
+ const localization = computed<UI_I_Localization>(() => useLocal())
90
+
91
+ const isShowAdvancedOptions = ref<boolean>(false)
92
+ </script>
93
+
94
+ <style scoped lang="scss">
95
+ .advanced-options-wrap {
96
+ display: flex;
97
+ gap: 10px;
98
+
99
+ .advanced-options-label {
100
+ margin: 0;
101
+ padding: 0;
102
+ line-height: normal;
103
+ height: auto;
104
+ }
105
+
106
+ .radio {
107
+ margin-bottom: 5px;
108
+ }
109
+ input[type='radio']:focus:checked + label::before,
110
+ input[type='radio']:focus + label::before {
111
+ box-shadow: inset 0 0 0 0.25rem #0094d2;
112
+ }
113
+ }
114
+ </style>
@@ -0,0 +1,114 @@
1
+ <template>
2
+ <div class="advanced-options-wrap clr-form-control">
3
+ <b
4
+ class="advanced-options-label btn btn-link"
5
+ @click="isShowAdvancedOptions = !isShowAdvancedOptions"
6
+ >
7
+ {{ localization.common.advancedOptions }}
8
+ </b>
9
+ <div v-show="isShowAdvancedOptions" class="advanced-options compact">
10
+ <div class="radio">
11
+ <input
12
+ v-model="model"
13
+ id="advanced-option-liner"
14
+ data-id="advanced-option-liner"
15
+ type="radio"
16
+ value="linear"
17
+ />
18
+ <label for="advanced-option-liner"> Linear </label>
19
+ </div>
20
+ <div :class="['radio', { disabled: props.devNamesCount < 2 }]">
21
+ <input
22
+ v-model="model"
23
+ id="advanced-option-raid0"
24
+ :disabled="props.devNamesCount < 2"
25
+ data-id="advanced-option-raid0"
26
+ type="radio"
27
+ value="raid0"
28
+ />
29
+ <label for="advanced-option-raid0"> Raid0 </label>
30
+ </div>
31
+ <div :class="['radio', { disabled: props.devNamesCount < 2 }]">
32
+ <input
33
+ v-model="model"
34
+ id="advanced-option-raid1"
35
+ :disabled="props.devNamesCount < 2"
36
+ data-id="advanced-option-raid1"
37
+ type="radio"
38
+ value="raid1"
39
+ />
40
+ <label for="advanced-option-raid1"> Raid1 </label>
41
+ </div>
42
+ <div :class="['radio', { disabled: props.devNamesCount < 3 }]">
43
+ <input
44
+ v-model="model"
45
+ id="advanced-option-raid5"
46
+ :disabled="props.devNamesCount < 3"
47
+ data-id="advanced-option-raid5"
48
+ type="radio"
49
+ value="raid5"
50
+ />
51
+ <label for="advanced-option-raid5"> Raid5 </label>
52
+ </div>
53
+ <div :class="['radio', { disabled: props.devNamesCount < 4 }]">
54
+ <input
55
+ v-model="model"
56
+ id="advanced-option-raid6"
57
+ :disabled="props.devNamesCount < 4"
58
+ data-id="advanced-option-raid6"
59
+ type="radio"
60
+ value="raid6"
61
+ />
62
+ <label for="advanced-option-raid6"> Raid6 </label>
63
+ </div>
64
+ <div :class="['radio', { disabled: props.devNamesCount < 4 }]">
65
+ <input
66
+ v-model="model"
67
+ id="advanced-option-raid10"
68
+ :disabled="props.devNamesCount < 4"
69
+ data-id="advanced-option-raid10"
70
+ type="radio"
71
+ value="raid10"
72
+ />
73
+ <label for="advanced-option-raid10"> Raid10 </label>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </template>
78
+
79
+ <script setup lang="ts">
80
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
81
+ import type { UI_I_CreateDatastoreForm } from '~/components/common/wizards/datastore/add/lib/models/interfaces'
82
+
83
+ const model = defineModel<UI_I_CreateDatastoreForm['level']>({ required: true })
84
+
85
+ const props = defineProps<{
86
+ devNamesCount: number
87
+ }>()
88
+
89
+ const localization = computed<UI_I_Localization>(() => useLocal())
90
+
91
+ const isShowAdvancedOptions = ref<boolean>(false)
92
+ </script>
93
+
94
+ <style scoped lang="scss">
95
+ .advanced-options-wrap {
96
+ display: flex;
97
+ gap: 10px;
98
+
99
+ .advanced-options-label {
100
+ margin: 0;
101
+ padding: 0;
102
+ line-height: normal;
103
+ height: auto;
104
+ }
105
+
106
+ .radio {
107
+ margin-bottom: 5px;
108
+ }
109
+ input[type='radio']:focus:checked + label::before,
110
+ input[type='radio']:focus + label::before {
111
+ box-shadow: inset 0 0 0 0.25rem #0094d2;
112
+ }
113
+ }
114
+ </style>
@@ -18,8 +18,7 @@
18
18
  hide-page-size
19
19
  @sorting="onSorting"
20
20
  @main-filter="emits('main-filter', $event)"
21
- >
22
- </atoms-table-data-grid>
21
+ />
23
22
  </div>
24
23
  </template>
25
24
 
@@ -92,7 +91,7 @@ watch(
92
91
  .data-table {
93
92
  height: inherit;
94
93
  :deep(.datagrid-outer-wrapper) {
95
- height: 400px;
94
+ max-height: 400px;
96
95
  }
97
96
  }
98
97
  }
@@ -112,7 +112,7 @@ const sharedStormDetailsFunc = (
112
112
  localization: UI_I_Localization,
113
113
  data: UI_I_CreateDatastoreForm
114
114
  ): UI_I_DetailsItem[] => {
115
- const { name, dev_names } = data
115
+ const { name, dev_names, level } = data
116
116
 
117
117
  return [
118
118
  {
@@ -132,6 +132,13 @@ const sharedStormDetailsFunc = (
132
132
  items: [],
133
133
  testId: 'view-selected-lun-disks-in-complete',
134
134
  },
135
+ {
136
+ label: localization.common.advancedOptions,
137
+ value: level,
138
+ items: [],
139
+ testId: 'view-advanced-options-in-complete',
140
+ iconClassName: '',
141
+ },
135
142
  ],
136
143
  actions: [],
137
144
  },
@@ -1,43 +1,43 @@
1
- import type { UI_I_Localization } from '~/lib/models/interfaces'
2
- import type { UI_T_Project } from '~/lib/models/types'
3
- import type { UI_I_RadioOption } from '~/components/common/select/radio/lib/models/interfaces'
4
-
5
- export const datastoreTypesFunc = (
6
- localization: UI_I_Localization,
7
- _project?: UI_T_Project
8
- ): UI_I_RadioOption[] => {
9
- return [
10
- {
11
- id: 'datastore-type-shared-storm',
12
- label: localization.common.stormSharedStorage,
13
- value: 2,
14
- disabled: false,
15
- description: localization.common.sharedStormDesc,
16
- isTooltip: false,
17
- tooltipContent: localization.common.stormSharedStorageHelpDesc,
18
- testId: 'datastore-type-shared-storm',
19
- },
20
- {
21
- id: 'datastore-type-nfs',
22
- label: localization.common.nfs,
23
- value: 4,
24
- disabled: false,
25
- description: localization.common.nfsDesc,
26
- isTooltip: false,
27
- tooltipContent: localization.common.nfsHelpDesc,
28
- testId: 'datastore-type-nfs',
29
- },
30
- ]
31
-
32
- // if (project === 'procurator') {
33
- // types.unshift({
34
- // label: localization.common.localStorage,
35
- // value: 1,
36
- // disabled: false,
37
- // description: localization.common.localDesc,
38
- // isTooltip: false,
39
- // tooltipContent: localization.common.localStorageHelpDesc,
40
- // testId: 'datastore-type-local',
41
- // })
42
- // }
43
- }
1
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
+ import type { UI_T_Project } from '~/lib/models/types'
3
+ import type { UI_I_RadioOption } from '~/components/common/select/radio/lib/models/interfaces'
4
+
5
+ export const datastoreTypesFunc = (
6
+ localization: UI_I_Localization,
7
+ _project?: UI_T_Project
8
+ ): UI_I_RadioOption[] => {
9
+ return [
10
+ {
11
+ id: 'datastore-type-shared-storm',
12
+ label: localization.common.stormSharedStorage,
13
+ value: 2,
14
+ disabled: false,
15
+ description: localization.common.sharedStormDesc,
16
+ isTooltip: false,
17
+ tooltipContent: localization.common.stormSharedStorageHelpDesc,
18
+ testId: 'datastore-type-shared-storm',
19
+ },
20
+ {
21
+ id: 'datastore-type-nfs',
22
+ label: localization.common.nfs,
23
+ value: 4,
24
+ disabled: false,
25
+ description: localization.common.nfsDesc,
26
+ isTooltip: false,
27
+ tooltipContent: localization.common.nfsHelpDesc,
28
+ testId: 'datastore-type-nfs',
29
+ },
30
+ ]
31
+
32
+ // if (project === 'procurator') {
33
+ // types.unshift({
34
+ // label: localization.common.localStorage,
35
+ // value: 1,
36
+ // disabled: false,
37
+ // description: localization.common.localDesc,
38
+ // isTooltip: false,
39
+ // tooltipContent: localization.common.localStorageHelpDesc,
40
+ // testId: 'datastore-type-local',
41
+ // })
42
+ // }
43
+ }
@@ -1,6 +1,6 @@
1
1
  export enum UI_E_VmMigrationType {
2
- resource = 'changeComputeResourceOriginalStorage',
3
- storage = 'changeStorageComputeResource',
2
+ resource = 'changeComputeResourceOnly',
3
+ storage = 'changeStorageOnly',
4
4
  'resource-storage' = 'changeComputeResourceAndStorage',
5
5
  server = '',
6
6
  }
@@ -80,10 +80,10 @@ const onApplyChanges = (): void => {
80
80
  /* TODO сделать рефакторинг потом */
81
81
  model.value.configure.disks.forEach((disk) => {
82
82
  const selectedDisk = selectedPerDisks.value.find(
83
- (selected) =>
84
- selected.virtual_machine === disk.virtual_machine &&
85
- selected.file === disk.file &&
86
- selected.extra.datastore_id === disk.extra.datastore_id
83
+ (selectedDisk) =>
84
+ selectedDisk.virtual_machine === disk.virtual_machine &&
85
+ selectedDisk.extra.disk_source === disk.extra.disk_source &&
86
+ selectedDisk.extra.datastore_id === disk.extra.datastore_id
87
87
  )!
88
88
 
89
89
  if (selectedDisk) {
@@ -158,12 +158,16 @@ export const getBodyDataFunc = (
158
158
  bodyData: UI_I_StorageConfigurePerDiskItem[],
159
159
  localization: UI_I_Localization
160
160
  ): UI_I_DataTableBody[] => {
161
- const { $binary }: any = useNuxtApp()
162
161
 
163
162
  return bodyData.map((disk, index: number) => {
164
163
  const diskFormat =
165
164
  index === 0 ? 'N/A' : UI_E_SelectStorageDiskFormat[disk.disk_format]
166
165
 
166
+ const file =
167
+ disk.extra.disk_source === 'meta'
168
+ ? disk.file
169
+ : `${disk.extra.disk_source} (${disk.extra.disk_size} ${localization.common.mb} )`
170
+
167
171
  const diskSharingKey = disk.extra.sharing
168
172
  ? E_DiskSharing.Active
169
173
  : E_DiskSharing.Inactive
@@ -198,7 +202,7 @@ export const getBodyDataFunc = (
198
202
  },
199
203
  {
200
204
  col: 'col2',
201
- text: disk.file,
205
+ text: file,
202
206
  },
203
207
  {
204
208
  col: 'col3',