bfg-common 1.5.773 → 1.5.775

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 (322) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-1.svg +3 -2
  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 +4 -3
  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 +27 -165
  9. package/assets/localization/local_en.json +27 -165
  10. package/assets/localization/local_hy.json +26 -164
  11. package/assets/localization/local_kk.json +26 -164
  12. package/assets/localization/local_ru.json +33 -171
  13. package/assets/localization/local_zh.json +26 -164
  14. package/assets/scss/common/global.scss +5 -5
  15. package/assets/scss/common/icons/icons-1.scss +1 -1
  16. package/assets/scss/common/icons/icons-2.scss +0 -18
  17. package/assets/scss/common/theme.scss +0 -2
  18. package/assets/scss/components/auth.scss +5 -32
  19. package/components/atoms/TheIcon3.vue +50 -50
  20. package/components/atoms/collapse/CollapseNav.vue +170 -170
  21. package/components/atoms/dropdown/tree/Tree.vue +0 -2
  22. package/components/atoms/nav/NavBar.vue +0 -1
  23. package/components/atoms/perPage/PerPage.vue +58 -58
  24. package/components/atoms/switch/Switch.vue +1 -7
  25. package/components/atoms/table/dataGrid/DataGrid.vue +16 -17
  26. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  27. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  28. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  29. package/components/atoms/wizard/Wizard.vue +1 -1
  30. package/components/common/backup/storage/actions/add/Old.vue +1 -22
  31. package/components/common/backup/storage/actions/add/lib/config/createDatastore.ts +1 -1
  32. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  33. package/components/common/backup/storage/actions/add/steps/typeMode/TypeModeOld.vue +48 -1
  34. package/components/common/backup/storage/actions/add/steps/typeMode/lib/config/typeOptions.ts +20 -20
  35. package/components/common/backup/storage/actions/delete/Delete.vue +15 -37
  36. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  37. package/components/common/diagramMain/Header.vue +0 -4
  38. package/components/common/diagramMain/lib/models/interfaces.ts +0 -2
  39. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  40. package/components/common/diagramMain/modals/viewSettings/info/Info.vue +1 -5
  41. package/components/common/diagramMain/modals/viewSettings/info/InfoOld.vue +0 -16
  42. package/components/common/diagramMain/port/Port.vue +580 -580
  43. package/components/common/graph/graphNew/EmptyBlock.vue +1 -2
  44. package/components/common/help/navbar/left/lib/utils/constructAccordion.ts +1 -2
  45. package/components/common/help/navbar/right/Right.vue +23 -86
  46. package/components/common/layout/theHeader/TheHeader.vue +81 -44
  47. package/components/common/layout/theHeader/{New.vue → TheHeaderNew.vue} +26 -14
  48. package/components/common/layout/theHeader/{Old.vue → TheHeaderOld.vue} +21 -13
  49. package/components/common/layout/theHeader/ThemeSwitch.vue +18 -8
  50. package/components/common/layout/theHeader/feedback/new/email/Email.vue +2 -2
  51. package/components/common/layout/theHeader/helpMenu/{about/About.vue → About.vue} +22 -12
  52. package/components/common/layout/theHeader/helpMenu/HelpMenu.vue +8 -6
  53. package/components/common/layout/theHeader/helpMenu/{about/New.vue → aboutNew/AboutNew.vue} +4 -5
  54. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -0
  55. package/components/common/layout/theHeader/helpMenu/{new/New.vue → helpMenuNew/HelpMenuNew.vue} +1 -1
  56. package/components/common/layout/theHeader/helpMenu/{new → helpMenuNew}/lib/config/dropMenu.ts +1 -1
  57. package/components/common/layout/theHeader/helpMenu/{old/Old.vue → helpMenuOld/HelpMenuOld.vue} +2 -2
  58. package/components/common/layout/theHeader/helpMenu/{old → helpMenuOld}/lib/config/dropMenu.ts +1 -1
  59. package/components/common/layout/theHeader/modals/reconnect/Reconnect.vue +11 -11
  60. package/components/common/layout/theHeader/modals/reconnect/{New.vue → ReconnectNew.vue} +1 -1
  61. package/components/common/layout/theHeader/modals/reconnect/{Old.vue → ReconnectOld.vue} +0 -2
  62. package/components/common/layout/theHeader/userMenu/UserMenu.vue +28 -21
  63. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +21 -12
  64. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +43 -36
  65. package/components/common/layout/theHeader/userMenu/modals/changePassword/Old.vue +2 -0
  66. package/components/common/layout/theHeader/userMenu/modals/changePassword/lib/utils.ts +3 -3
  67. package/components/common/layout/theHeader/userMenu/modals/preferences/Preferences.vue +44 -19
  68. package/components/common/layout/theHeader/userMenu/modals/preferences/{New.vue → PreferencesNew.vue} +16 -24
  69. package/components/common/layout/theHeader/userMenu/modals/preferences/{Old.vue → PreferencesOld.vue} +18 -10
  70. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +18 -17
  71. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/{New.vue → ChangeLanguageNew.vue} +30 -6
  72. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/{Old.vue → ChangeLanguageOld.vue} +30 -5
  73. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/DefaultConsole.vue +20 -8
  74. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/{New.vue → DefaultConsoleNew.vue} +3 -3
  75. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/{Old.vue → DefaultConsoleOld.vue} +2 -2
  76. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/Inventory.vue +21 -7
  77. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/{New.vue → InventoryNew.vue} +2 -3
  78. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/{Old.vue → InventoryOld.vue} +2 -2
  79. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  80. package/components/common/layout/theHeader/userMenu/modals/preferences/security/New.vue +12 -277
  81. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Old.vue +56 -30
  82. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Security.vue +6 -65
  83. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/TimeFormat.vue +22 -9
  84. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/{New.vue → TimeFormatNew.vue} +3 -3
  85. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/{Old.vue → TimeFormatOld.vue} +2 -2
  86. package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +22 -13
  87. package/components/common/layout/theHeader/userMenu/modals/preferences/view/{New.vue → ViewNew.vue} +3 -29
  88. package/components/common/layout/theHeader/userMenu/modals/preferences/view/{Old.vue → ViewOld.vue} +2 -21
  89. package/components/common/layout/theHeader/userMenu/{new/New.vue → userMenuNew/UserMenuNew.vue} +1 -1
  90. package/components/common/layout/theHeader/userMenu/{old/Old.vue → userMenuOld/UserMenuOld.vue} +2 -2
  91. package/components/common/layout/theHeader/userMenu/{old → userMenuOld}/lib/config/dropMenu.ts +1 -1
  92. package/components/common/monitor/advanced/graphView/GraphView.vue +0 -8
  93. package/components/common/monitor/advanced/tools/Tools.vue +1 -5
  94. package/components/common/monitor/overview/OverviewNew.vue +1 -1
  95. package/components/common/pages/backups/DetailView.vue +52 -52
  96. package/components/common/pages/backups/backupsNew/BackupsNew.vue +19 -107
  97. package/components/common/pages/backups/backupsNew/contextMenuView/ContextMenuView.vue +10 -16
  98. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  99. package/components/common/pages/backups/modals/Modals.vue +243 -243
  100. package/components/common/pages/backups/modals/createBackup/CreateBackup.vue +10 -6
  101. package/components/common/pages/backups/modals/createBackup/New.vue +9 -22
  102. package/components/common/pages/backups/modals/createBackup/Old.vue +10 -8
  103. package/components/common/pages/backups/modals/createBackup/configuration/ConfigurationNew.vue +3 -17
  104. package/components/common/pages/backups/modals/createBackup/configuration/backupWindow/BackupWindow.vue +29 -29
  105. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/MaxBandwidth.vue +69 -69
  106. package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue +38 -38
  107. package/components/common/pages/backups/modals/createBackup/datastores/Datastores.vue +0 -6
  108. package/components/common/pages/backups/modals/createBackup/datastores/DatastoresOld.vue +2 -22
  109. package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/lib/config/table.ts +8 -8
  110. package/components/common/pages/backups/modals/createBackup/disks/Disks.vue +0 -6
  111. package/components/common/pages/backups/modals/createBackup/disks/DisksOld.vue +1 -22
  112. package/components/common/pages/backups/modals/createBackup/disks/tableView/new/TableView.vue +1 -1
  113. package/components/common/pages/backups/modals/createBackup/disks/tableView/new/lib/config/table.ts +7 -7
  114. package/components/common/pages/backups/modals/createBackup/general/General.vue +1 -7
  115. package/components/common/pages/backups/modals/createBackup/general/GeneralNew.vue +1 -1
  116. package/components/common/pages/backups/modals/createBackup/general/GeneralOld.vue +0 -17
  117. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +5 -5
  118. package/components/common/pages/backups/modals/createBackup/lib/config/steps.ts +1 -1
  119. package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +2 -11
  120. package/components/common/pages/backups/modals/createBackup/lib/models/interfaces.ts +8 -8
  121. package/components/common/pages/backups/modals/createBackup/lib/validation/validations.ts +14 -6
  122. package/components/common/pages/backups/modals/deleteBackup/DeleteBackup.vue +0 -1
  123. package/components/common/pages/backups/modals/lib/config/restore.ts +0 -1
  124. package/components/common/pages/backups/modals/lib/models/interfaces.ts +1 -2
  125. package/components/common/pages/backups/modals/restore/Restore.vue +26 -25
  126. package/components/common/pages/backups/modals/restore/{Old.vue → RestoreOld.vue} +0 -5
  127. package/components/common/pages/backups/modals/restore/disks/Disks.vue +8 -26
  128. package/components/common/pages/backups/modals/restore/disks/DisksNew.vue +2 -2
  129. package/components/common/pages/backups/modals/restore/disks/DisksOld.vue +2 -2
  130. package/components/common/pages/backups/modals/restore/lib/config/readyToCompleteOptions.ts +14 -46
  131. package/components/common/pages/backups/modals/restore/lib/config/restoreCodes.ts +1 -1
  132. package/components/common/pages/backups/modals/restore/lib/config/steps.ts +20 -42
  133. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  134. package/components/common/pages/backups/modals/restore/types/Types.vue +3 -15
  135. package/components/common/pages/backups/modals/restore/types/{New.vue → TypesNew.vue} +11 -11
  136. package/components/common/pages/backups/modals/restore/types/{Old.vue → TypesOld.vue} +6 -7
  137. package/components/common/pages/backups/modals/restore/types/lib/config/descriptions.ts +0 -1
  138. package/components/common/pages/hardwareHealth/historyTestimony/tools/Tools.vue +2 -7
  139. package/components/common/pages/hardwareHealth/tableView/TableView.vue +0 -8
  140. package/components/common/pages/hardwareHealth/tableView/lib/config/sensorTable.ts +1 -13
  141. package/components/common/pages/hardwareHealth/toolsPanel/lib/config/actionsPanel.ts +4 -4
  142. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  143. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  144. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  145. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  146. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  147. package/components/common/pages/home/widgets/warnings/lib/config/config.ts +2 -2
  148. package/components/common/pages/home/widgets/warnings/table/lib/config/config.ts +2 -2
  149. package/components/common/pages/home/widgets/warnings/table/lib/models/enums.ts +12 -0
  150. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  151. package/components/common/pages/tasks/Tasks.vue +0 -3
  152. package/components/common/pages/tasks/table/Table.vue +1 -4
  153. package/components/common/pages/tasks/table/expandDetails/ExpandDetails.vue +1 -1
  154. package/components/common/pages/tasks/table/lib/config/config.ts +13 -22
  155. package/components/common/qrcode/Qrcode.vue +56 -0
  156. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  157. package/components/common/select/radio/RadioGroup.vue +137 -137
  158. package/components/common/selectLanguage/SelectLanguage.vue +5 -5
  159. package/components/common/spiceConsole/Drawer.vue +420 -420
  160. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  161. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  162. package/components/common/split/horizontal/New.vue +2 -0
  163. package/components/common/split/vertical/New.vue +1 -2
  164. package/components/common/tools/Actions.vue +207 -207
  165. package/components/common/treeView/TreeView.vue +52 -52
  166. package/components/common/vm/actions/add/New.vue +11 -13
  167. package/components/common/vm/actions/add/Old.vue +1 -1
  168. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  169. package/components/common/vm/actions/clone/new/New.vue +438 -438
  170. package/components/common/vm/actions/clone/old/Old.vue +0 -1
  171. package/components/common/vm/actions/common/customizeHardware/virtualHardware/New.vue +36 -12
  172. package/components/common/vm/actions/common/customizeHardware/virtualHardware/Old.vue +37 -15
  173. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +50 -50
  174. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/coresPerSocket/CoresPerSocket.vue +3 -3
  175. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  176. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces.ts +1 -3
  177. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  178. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +7 -13
  179. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/New.vue +4 -7
  180. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +45 -52
  181. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/Old.vue +8 -5
  182. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIo.vue +3 -1
  183. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/New.vue +2 -2
  184. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/Old.vue +2 -2
  185. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +1 -1
  186. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/New.vue +2 -1
  187. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/Old.vue +2 -1
  188. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/New.vue +1 -1
  189. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +1 -1
  190. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/Old.vue +1 -1
  191. package/components/common/vm/actions/common/customizeHardware/vmoptions/New.vue +2 -2
  192. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  193. package/components/common/vm/actions/common/select/compatibility/New.vue +1 -0
  194. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  195. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  196. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  197. package/components/common/vm/actions/common/select/options/Old.vue +2 -1
  198. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  199. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  200. package/components/common/vm/actions/common/select/storage/new/New.vue +1 -1
  201. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  202. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  203. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  204. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  205. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  206. package/components/common/wizards/common/compatibility/New.vue +1 -1
  207. package/components/common/wizards/common/compatibility/Old.vue +1 -1
  208. package/components/common/wizards/common/steps/computeResource/New.vue +1 -9
  209. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  210. package/components/common/wizards/common/steps/name/New.vue +221 -221
  211. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  212. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  213. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  214. package/components/common/wizards/datastore/add/Add.vue +1 -0
  215. package/components/common/wizards/datastore/add/Old.vue +0 -16
  216. package/components/common/wizards/datastore/add/lib/config/createDatastore.ts +0 -1
  217. package/components/common/wizards/datastore/add/lib/models/interfaces.ts +0 -1
  218. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  219. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +0 -5
  220. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceOld.vue +0 -5
  221. package/components/common/wizards/datastore/add/steps/nameAndDevice/table/old/Old.vue +3 -2
  222. package/components/common/wizards/datastore/add/steps/readyComplete/lib/config/propertiesDetails.ts +1 -8
  223. package/components/common/wizards/datastore/add/steps/typeMode/TypeModeOld.vue +48 -1
  224. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  225. package/components/common/wizards/network/add/Add.vue +5 -28
  226. package/components/common/wizards/network/add/lib/config/config.ts +1 -1
  227. package/components/common/wizards/network/add/lib/config/initialData.ts +3 -6
  228. package/components/common/wizards/network/add/lib/config/selectConnectionTypeStep.ts +0 -1
  229. package/components/common/wizards/network/add/steps/portProperties/PortProperties.vue +192 -192
  230. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceNew.vue +1 -2
  231. package/components/common/wizards/network/add/steps/selectTargetDevice/SelectTargetDeviceOld.vue +6 -18
  232. package/components/common/wizards/vm/migrate/lib/models/enums.ts +2 -2
  233. package/components/common/wizards/vm/migrate/steps/computeResource/tableView/old/lib/config/hostTable.ts +1 -1
  234. package/components/common/wizards/vm/migrate/steps/selectStorage/SelectStorage.vue +4 -4
  235. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/lib/config/diskTable.ts +2 -6
  236. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/old/lib/config/diskTable.ts +13 -29
  237. package/composables/deepCopy.ts +21 -0
  238. package/composables/useAppVersion.ts +21 -21
  239. package/composables/useEnvLanguage.ts +8 -7
  240. package/composables/useLocal.ts +6 -6
  241. package/composables/useLocalCommon.ts +39 -39
  242. package/composables/useUniqueId.ts +5 -0
  243. package/lib/config/regExp.ts +1 -1
  244. package/lib/models/enums.ts +0 -28
  245. package/lib/models/interfaces.ts +0 -2
  246. package/lib/models/types.ts +21 -20
  247. package/lib/utils/localizationMapper.ts +2 -1
  248. package/package.json +4 -3
  249. package/plugins/console.ts +21 -21
  250. package/plugins/date.ts +37 -14
  251. package/plugins/mouse.ts +21 -21
  252. package/plugins/panelStates.ts +70 -70
  253. package/plugins/text.ts +59 -59
  254. package/plugins/validation.ts +6 -6
  255. package/public/spice-console/application/clientgui.js +854 -854
  256. package/public/spice-console/application/packetfactory.js +211 -211
  257. package/public/spice-console/application/virtualmouse.js +147 -147
  258. package/public/spice-console/lib/images/bitmap.js +203 -203
  259. package/public/spice-console/network/spicechannel.js +440 -440
  260. package/public/spice-console/process/cursorprocess.js +128 -128
  261. package/public/spice-console/process/inputprocess.js +227 -227
  262. package/public/spice-console/process/mainprocess.js +212 -212
  263. package/public/spice-console/run.js +210 -210
  264. package/store/main/getters.ts +2 -2
  265. package/store/main/mutations.ts +7 -7
  266. package/store/main/state.ts +7 -7
  267. package/store/tasks/actions.ts +1 -1
  268. package/store/tasks/mappers/recentTasks.ts +123 -123
  269. package/store/tasks/mappers/tasks.ts +1 -8
  270. package/store/tasks/mutations.ts +82 -82
  271. package/components/common/backup/storage/actions/add/steps/typeMode/tooltip/Tooltip.vue +0 -33
  272. package/components/common/certificate/Certificate.vue +0 -27
  273. package/components/common/certificate/CertificateInfo.vue +0 -139
  274. package/components/common/certificate/Tools.vue +0 -59
  275. package/components/common/certificate/lib/config/tabsPannel.ts +0 -22
  276. package/components/common/certificate/lib/models/interfaces.ts +0 -9
  277. package/components/common/certificate/lib/models/types.ts +0 -1
  278. package/components/common/certificate/modals/renew/New.vue +0 -64
  279. package/components/common/certificate/modals/renew/Old.vue +0 -122
  280. package/components/common/certificate/modals/renew/Renew.vue +0 -67
  281. package/components/common/layout/console/Console.vue +0 -70
  282. package/components/common/layout/console/lib/models/interfaces.ts +0 -10
  283. package/components/common/layout/theHeader/helpMenu/about/Old.vue +0 -78
  284. package/components/common/pages/auth/TheFooter.vue +0 -104
  285. package/components/common/pages/backups/backupsNew/Skeleton.vue +0 -136
  286. package/components/common/pages/files/lib/models/enums.ts +0 -36
  287. package/components/common/pages/tasks/table/lib/models/interfaces.ts +0 -9
  288. package/components/common/qr/Qr.vue +0 -69
  289. package/components/common/vm/snapshots/DetailView.vue +0 -90
  290. package/components/common/vm/snapshots/Old.vue +0 -71
  291. package/components/common/vm/snapshots/Snapshots.vue +0 -82
  292. package/components/common/vm/snapshots/lib/models/interfaces.ts +0 -5
  293. package/components/common/vm/snapshots/lib/models/types.ts +0 -11
  294. package/components/common/vm/snapshots/modals/confirm/Confirm.vue +0 -48
  295. package/components/common/vm/snapshots/modals/confirm/New.vue +0 -128
  296. package/components/common/vm/snapshots/modals/confirm/Old.vue +0 -140
  297. package/components/common/vm/snapshots/modals/confirm/lib/models/enums.ts +0 -19
  298. package/components/common/vm/snapshots/modals/lib/config/modalTexts.ts +0 -30
  299. package/components/common/vm/snapshots/modals/takeOrEdit/Old.vue +0 -220
  300. package/components/common/vm/snapshots/modals/takeOrEdit/TakeOrEdit.vue +0 -51
  301. package/components/common/vm/snapshots/modals/takeOrEdit/new/New.vue +0 -184
  302. package/components/common/vm/snapshots/modals/takeOrEdit/new/lib/utils/getSnapshotsName.ts +0 -15
  303. package/components/common/vm/snapshots/new/New.vue +0 -471
  304. package/components/common/vm/snapshots/new/Skeleton.vue +0 -136
  305. package/components/common/vm/snapshots/new/contextMenuView/ContextMenuView.vue +0 -103
  306. package/components/common/vm/snapshots/new/contextMenuView/lib/config/contextMenuItems.ts +0 -34
  307. package/components/common/vm/snapshots/new/lib/models/interfaces.ts +0 -12
  308. package/components/common/vm/snapshots/new/lib/utils/contextMenu.ts +0 -29
  309. package/components/common/vm/snapshots/new/lib/utils/details.ts +0 -48
  310. package/components/common/vm/snapshots/tools/Tools.vue +0 -56
  311. package/components/common/vm/snapshots/tools/lib/config/tabsPannel.ts +0 -39
  312. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/AdvancedOptions.vue +0 -43
  313. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +0 -114
  314. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/Old.vue +0 -114
  315. package/components/common/wizards/datastore/add/steps/typeMode/tooltip/Tooltip.vue +0 -33
  316. package/composables/useBrowse.ts +0 -24
  317. package/lib/models/composables/useBrowse/interfaces.ts +0 -4
  318. package/store/inventory/modules/snapshots/lib/models/interfaces.ts +0 -45
  319. /package/components/common/layout/theHeader/helpMenu/{old → helpMenuOld}/lib/models/types.ts +0 -0
  320. /package/components/common/layout/theHeader/userMenu/{new → userMenuNew}/lib/config/dropMenu.ts +0 -0
  321. /package/components/common/layout/theHeader/userMenu/{old → userMenuOld}/lib/models/types.ts +0 -0
  322. /package/components/common/pages/backups/modals/restore/{New.vue → RestoreNew.vue} +0 -0
@@ -29,27 +29,23 @@ import type {
29
29
  import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
30
30
  import { pciDeviceTypeOptionsFunc } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/lib/config/options'
31
31
 
32
- const address = defineModel<string>('address')
33
- const vendorName = defineModel<string>('vendorName')
34
- const className = defineModel<string>('className')
35
- const deviceName = defineModel<string>('deviceName')
36
- const mediatedDevice = defineModel<boolean>('mediatedDevice')
37
- const mediatedDeviceUuid = defineModel<string>('mediatedDeviceUuid')
38
-
39
32
  const props = withDefaults(
40
33
  defineProps<{
41
34
  index: number
35
+ pciDevice: UI_I_SendDataNewPciDevice
42
36
  passthroughDevices: UI_I_PciDevice[]
43
37
  mediatedDevices: UI_I_MediatedDevice[]
44
38
  type: UI_T_PciDeviceType
45
39
  isEdit: boolean
46
40
  state?: string | number
41
+ // errorValidationFields: UI_I_ErrorValidationField<string>[]
47
42
  }>(),
48
43
  {
49
44
  state: undefined,
50
45
  }
51
46
  )
52
47
  const emits = defineEmits<{
48
+ (event: 'send-data', value: UI_I_SendDataNewPciDevice): void
53
49
  (event: 'remove'): void
54
50
  }>()
55
51
 
@@ -68,8 +64,7 @@ const isRunning = computed<boolean>(() => {
68
64
  })
69
65
 
70
66
  const isRemovable = computed<boolean>(() => {
71
- // return !props.isEdit || !isRunning.value
72
- return props.type !== 'edit' || !isRunning.value
67
+ return !props.isEdit || !isRunning.value
73
68
  })
74
69
 
75
70
  const label = computed<string>(() => {
@@ -80,17 +75,16 @@ const label = computed<string>(() => {
80
75
  })
81
76
 
82
77
  const selectedLabel = computed<string>(() => {
83
- if (address.value) {
84
- return `${address.value} | ${deviceName.value}`
78
+ if (props.pciDevice.address) {
79
+ return `${props.pciDevice.address} | ${props.pciDevice.device_name}`
85
80
  }
86
81
  switch (selectedType.value.value) {
87
82
  case 'direct_path_io':
88
- return directPathIo.value
89
- // return `${directPathIo.value?.address} | ${directPathIo.value?.device_name}`
83
+ return `${directPathIo.value?.address} | ${directPathIo.value?.device_name}`
90
84
  case 'dynamic_direct_path_io':
91
85
  return `${dynamicDirectPathIo.value?.address} | ${dynamicDirectPathIo.value?.device_name}`
92
86
  default:
93
- return nvidiaGridProfile.value?.text || ''
87
+ return nvidiaGridProfile.value?.text
94
88
  }
95
89
  })
96
90
 
@@ -105,43 +99,47 @@ pciDeviceTypeOptions.value.forEach((option) => {
105
99
  if (!option.disabled) selectedType.value = option
106
100
  })
107
101
 
108
- const directPathIo = ref<string>('')
102
+ const directPathIo = ref<string>('') /// TODO
109
103
  const dynamicDirectPathIo = ref<UI_I_PciDevice>(props.passthroughDevices[0])
110
104
  const nvidiaGridProfile = ref<UI_I_Option | null>(null)
111
105
 
112
- const setData = (): void => {
113
- const passthroughDevice = props.passthroughDevices.find((device) => {
114
- return (
115
- device.class_name + '_' + device.address ===
116
- className.value + '_' + address.value
117
- )
118
- })
119
- if (passthroughDevice) {
120
- dynamicDirectPathIo.value = passthroughDevice
121
- }
106
+ watch(
107
+ [() => props.pciDevice, () => props.mediatedDevices],
108
+ ([newValue1]) => {
109
+ // const passthroughDevice = props.passthroughDevices.find(
110
+ // (item) => item.address === newValue.address
111
+ // )
112
+ // passthroughDevice && (directPathIo.value = passthroughDevice) // Todo change
113
+ if (newValue1) {
114
+ // directPathIo.value = newValue1
115
+ const passthroughDevice = props.passthroughDevices.find((device) => {
116
+ return (
117
+ device.class_name + '_' + device.address ===
118
+ newValue1.class_name + '_' + newValue1.address
119
+ )
120
+ })
121
+ if (passthroughDevice) {
122
+ dynamicDirectPathIo.value = passthroughDevice
123
+ }
122
124
 
123
- const mediatedDevice = props.mediatedDevices.find((device) => {
124
- return (
125
- device.profile_name + '_' + device.root_device ===
126
- className.value + '_' + address.value
127
- )
128
- })
129
- if (mediatedDevice) {
130
- nvidiaGridProfile.value = {
131
- text: mediatedDevice.human_readable,
132
- value: mediatedDevice.profile_name + '_' + mediatedDevice.root_device,
125
+ const mediatedDevice = props.mediatedDevices.find((device) => {
126
+ return (
127
+ device.profile_name + '_' + device.root_device ===
128
+ newValue1.class_name + '_' + newValue1.address
129
+ )
130
+ })
131
+ if (mediatedDevice) {
132
+ nvidiaGridProfile.value = {
133
+ text: mediatedDevice.human_readable,
134
+ value: mediatedDevice.profile_name + '_' + mediatedDevice.root_device,
135
+ }
136
+
137
+ selectedType.value =
138
+ pciDeviceTypeOptions.value.find(
139
+ (option) => option.value === 'nvidia_grid'
140
+ ) || selectedType.value
141
+ }
133
142
  }
134
-
135
- selectedType.value =
136
- pciDeviceTypeOptions.value.find(
137
- (option) => option.value === 'nvidia_grid'
138
- ) || selectedType.value
139
- }
140
- }
141
- watch(
142
- () => props.mediatedDevices,
143
- () => {
144
- setData() // for edit
145
143
  },
146
144
  { immediate: true, deep: true }
147
145
  )
@@ -192,12 +190,7 @@ const sendData = computed<UI_I_SendDataNewPciDevice>(() => {
192
190
  watch(
193
191
  sendData,
194
192
  (newValue) => {
195
- address.value = newValue.address
196
- vendorName.value = newValue.vendor_name
197
- className.value = newValue.class_name
198
- deviceName.value = newValue.device_name
199
- mediatedDevice.value = newValue.mediated_device
200
- mediatedDeviceUuid.value = newValue.mediated_device_uuid || ''
193
+ emits('send-data', props.type === 'edit' ? props.pciDevice : newValue)
201
194
  },
202
195
  { immediate: true }
203
196
  )
@@ -56,7 +56,6 @@
56
56
  </template>
57
57
 
58
58
  <script setup lang="ts">
59
- import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
60
59
  import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
61
60
  import type { UI_T_PciDeviceType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
62
61
  import type {
@@ -67,13 +66,13 @@ import type {
67
66
  const selectedType = defineModel<UI_I_OptionItem>('selectedType', {
68
67
  required: true,
69
68
  })
70
- const directPathIo = defineModel<string>('directPathIo', {
69
+ const directPathIo = defineModel<UI_I_PciDevice>('directPathIo', {
71
70
  required: true,
72
71
  })
73
- const dynamicDirectPathIo = defineModel<UI_I_PciDevice>('dynamicDirectPathIo', {
72
+ const dynamicDirectPathIo = defineModel<string>('dynamicDirectPathIo', {
74
73
  required: true,
75
74
  })
76
- const nvidiaGridProfile = defineModel<UI_I_Option | null>('nvidiaGridProfile', {
75
+ const nvidiaGridProfile = defineModel<string>('nvidiaGridProfile', {
77
76
  required: true,
78
77
  })
79
78
 
@@ -92,4 +91,8 @@ const emits = defineEmits<{
92
91
  }>()
93
92
  </script>
94
93
 
95
- <style scoped lang="scss"></style>
94
+ <style scoped lang="scss">
95
+ #network-connect {
96
+ margin-right: 4px;
97
+ }
98
+ </style>
@@ -7,7 +7,9 @@
7
7
  </template>
8
8
 
9
9
  <script lang="ts" setup>
10
- const model = defineModel<string>({ required: true })
10
+ import type { UI_I_ConfigureAllPciDevicesItem } from '~/lib/models/store/host/interfaces'
11
+
12
+ const model = defineModel<UI_I_ConfigureAllPciDevicesItem>({ required: true })
11
13
 
12
14
  const props = defineProps<{
13
15
  pciDeviceIndex: number
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <ui-stack-block
3
- :has-children="false"
4
- :test-id="`pci-device-direct-path-io-stack-block-${props.pciDeviceIndex}`"
3
+ :has-children="false"
4
+ :test-id="`pci-device-direct-path-io-stack-block-${props.pciDeviceIndex}`"
5
5
  >
6
6
  <template #stackBlockKey>
7
7
  {{ localization.common.pciDevice }}
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <div>
3
3
  <atoms-stack-block
4
- :has-children="false"
5
- :test-id="`pci-device-direct-path-io-stack-block-${props.pciDeviceIndex}`"
4
+ :has-children="false"
5
+ :test-id="`pci-device-direct-path-io-stack-block-${props.pciDeviceIndex}`"
6
6
  >
7
7
  <template #stackBlockContent>
8
8
  <input
@@ -10,7 +10,7 @@
10
10
  <script lang="ts" setup>
11
11
  import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
12
12
 
13
- const model = defineModel<UI_I_PciDevice>({ required: true })
13
+ const model = defineModel<string>({ required: true })
14
14
 
15
15
  const props = defineProps<{
16
16
  pciDeviceIndex: number
@@ -21,9 +21,10 @@
21
21
 
22
22
  <script lang="ts" setup>
23
23
  import type { UI_I_Localization } from '~/lib/models/interfaces'
24
+ import type { UI_I_ConfigureAllPciDevicesItem } from '~/lib/models/store/host/interfaces'
24
25
  import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
25
26
 
26
- const model = defineModel<UI_I_PciDevice>()
27
+ const model = defineModel<UI_I_ConfigureAllPciDevicesItem>()
27
28
 
28
29
  const props = defineProps<{
29
30
  pciDeviceIndex: number
@@ -28,9 +28,10 @@
28
28
 
29
29
  <script lang="ts" setup>
30
30
  import type { UI_I_Localization } from '~/lib/models/interfaces'
31
+ import type { UI_I_ConfigureAllPciDevicesItem } from '~/lib/models/store/host/interfaces'
31
32
  import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
32
33
 
33
- const model = defineModel<UI_I_PciDevice>()
34
+ const model = defineModel<UI_I_ConfigureAllPciDevicesItem>()
34
35
 
35
36
  const props = defineProps<{
36
37
  pciDeviceIndex: number
@@ -27,7 +27,7 @@
27
27
  import type { UI_I_Localization } from '~/lib/models/interfaces'
28
28
  import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
29
29
 
30
- const model = defineModel<UI_I_Option | null>({ required: true })
30
+ const model = defineModel<string>({ required: true })
31
31
 
32
32
  const props = defineProps<{
33
33
  options: UI_I_Option[]
@@ -11,7 +11,7 @@
11
11
  import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
12
12
  import type { UI_I_MediatedDevice } from '~/lib/models/store/vm/interfaces'
13
13
 
14
- const model = defineModel<UI_I_Option | null>({ required: true })
14
+ const model = defineModel<string>({ required: true })
15
15
 
16
16
  const props = defineProps<{
17
17
  pciDeviceIndex: number
@@ -42,7 +42,7 @@
42
42
  import type { UI_I_Localization } from '~/lib/models/interfaces'
43
43
  import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
44
44
 
45
- const model = defineModel<UI_I_Option | null>({ required: true })
45
+ const model = defineModel<string>({ required: true })
46
46
 
47
47
  const props = defineProps<{
48
48
  options: UI_I_Option[]
@@ -27,7 +27,7 @@
27
27
  :state="props.state"
28
28
  @remove-error-by-title="emits('remove-error-by-title', $event)"
29
29
  />
30
- <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-1">
30
+ <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-4">
31
31
  <span class="vm-hardware-version">
32
32
  {{ props.compatibilityInfo }}
33
33
  </span>
@@ -73,7 +73,7 @@ const emits = defineEmits<{
73
73
  flex-direction: column;
74
74
  gap: 12px;
75
75
  margin-top: 20px;
76
- padding: 0 0 16px;
76
+ padding: 0 0 12px;
77
77
  overflow: auto;
78
78
 
79
79
  .vm-hardware-version-wrap {
@@ -1,156 +1,156 @@
1
- <template>
2
- <div>
3
- <component
4
- :is="currentComponent"
5
- :boot-list="bootList"
6
- :is-disabled="props.isDisabled"
7
- @change-order="onChangeOrder"
8
- @update-boot-list="onBootListUpdate"
9
- />
10
- </div>
11
- </template>
12
-
13
- <script setup lang="ts">
14
- import type { UI_I_BootItem } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/lib/models/interfaces'
15
- import type { UI_I_DropEvent } from '~/components/atoms/list/dragDropList/lib/config/events'
16
- import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
17
-
18
- const model = defineModel<UI_I_CreateVmData>({ required: true })
19
-
20
- const props = defineProps<{
21
- isDisabled: boolean
22
- }>()
23
-
24
- const { $store }: any = useNuxtApp()
25
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
26
- const currentComponent = computed(() =>
27
- isNewView.value
28
- ? defineAsyncComponent(() => import('./New.vue'))
29
- : defineAsyncComponent(() => import('./Old.vue'))
30
- )
31
-
32
- const bootList = ref<UI_I_BootItem[]>([])
33
-
34
- // Используем computed для автоматического обновления bootList при изменении модели
35
- const hardDisksAndNetworks = computed(() => [
36
- model.value.disk_devices?.filter((disk) => disk.device_type !== 'cdrom') ||
37
- [],
38
- model.value.disk_devices?.filter((disk) => disk.device_type === 'cdrom') ||
39
- [],
40
- model.value.network_devices || [],
41
- ])
42
-
43
- // Watcher для обновления bootList при изменении модели
44
- watch(
45
- hardDisksAndNetworks,
46
- ([hardDisks, cdDvdDrives, networks]) => {
47
- const hardDiskItems: UI_I_BootItem[] = hardDisks.map((item, index) => {
48
- const order = item.boot_order || 0
49
- return {
50
- order,
51
- isChecked: !!order,
52
- text: `disk${index}`,
53
- iconClassName: 'icon-disk',
54
- type: 'disk' as const,
55
- name: `${item.source}_${index}`,
56
- testId: `select-disk-value-${index + 1}`,
57
- }
58
- })
59
-
60
- const cdDvdDriveItems: UI_I_BootItem[] = cdDvdDrives.map((item, index) => {
61
- const order = item.boot_order || 0
62
- return {
63
- order,
64
- isChecked: !!order,
65
- text: `cdrom${index}`,
66
- iconClassName: 'icon-disk',
67
- type: 'cdDvd' as const,
68
- name: `${item.source}_${hardDisks.length + index}`,
69
- testId: `select-cd-dvd-value-${index + 1}`,
70
- }
71
- })
72
-
73
- const networkItems: UI_I_BootItem[] = networks.map((item, index) => {
74
- const order = item.boot_order || 0
75
- return {
76
- order,
77
- isChecked: !!order,
78
- text: item.mac || 'undefined',
79
- iconClassName: 'vsphere-icon-network',
80
- type: 'nic' as const,
81
- name: `${item.network}_${index}`,
82
- testId: `select-nic-value-${index + 1}`,
83
- }
84
- })
85
-
86
- bootList.value = [...hardDiskItems, ...cdDvdDriveItems, ...networkItems]
87
- .filter((item) => item.order >= 0)
88
- .sort((a, b) => a.order - b.order)
89
- },
90
- { deep: true, immediate: true }
91
- )
92
-
93
- // Обработчик изменения порядка через drag & drop
94
- const onChangeOrder = (event: UI_I_DropEvent): void => {
95
- const updatedList = [...bootList.value]
96
- const movedItem = updatedList.find((item) => item.name === event.target.name)
97
-
98
- if (!movedItem) return
99
-
100
- // Удаляем элемент из текущей позиции
101
- const fromIndex = updatedList.indexOf(movedItem)
102
- updatedList.splice(fromIndex, 1)
103
-
104
- // Вставляем элемент в новую позицию
105
- updatedList.splice(event.toPosition, 0, movedItem)
106
-
107
- // Обновляем порядок всех элементов
108
- updatedList.forEach((item, index) => {
109
- item.order = index + 1
110
- })
111
-
112
- bootList.value = updatedList
113
- updateModelFromBootList(updatedList)
114
- }
115
-
116
- // Обработчик обновления bootList (при изменении чекбоксов)
117
- const onBootListUpdate = (updatedBootList: UI_I_BootItem[]): void => {
118
- bootList.value = updatedBootList
119
- updateModelFromBootList(updatedBootList)
120
- }
121
-
122
- // Функция для обновления модели на основе bootList
123
- const updateModelFromBootList = (bootItems: UI_I_BootItem[]): void => {
124
- // Сначала сбрасываем все boot_order
125
- model.value.disk_devices?.forEach((disk) => {
126
- disk.boot_order = 0
127
- })
128
- model.value.network_devices?.forEach((network) => {
129
- network.boot_order = 0
130
- })
131
-
132
- // Затем устанавливаем boot_order только для выбранных элементов
133
- let currentOrder = 1
134
- bootItems.forEach((bootItem) => {
135
- if (!bootItem.isChecked) return
136
-
137
- if (bootItem.type === 'nic') {
138
- const [networkName, indexStr] = bootItem.name.split('_')
139
- const index = parseInt(indexStr, 10)
140
- const network = model.value.network_devices?.[index]
141
- if (network && network.network === networkName) {
142
- network.boot_order = currentOrder++
143
- }
144
- } else {
145
- const [source, indexStr] = bootItem.name.split('_')
146
- const index = parseInt(indexStr, 10)
147
- const disk = model.value.disk_devices?.[index]
148
- if (disk && disk.source+'' === source) {
149
- disk.boot_order = currentOrder++
150
- }
151
- }
152
- })
153
- }
154
- </script>
155
-
156
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <div>
3
+ <component
4
+ :is="currentComponent"
5
+ :boot-list="bootList"
6
+ :is-disabled="props.isDisabled"
7
+ @change-order="onChangeOrder"
8
+ @update-boot-list="onBootListUpdate"
9
+ />
10
+ </div>
11
+ </template>
12
+
13
+ <script setup lang="ts">
14
+ import type { UI_I_BootItem } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/lib/models/interfaces'
15
+ import type { UI_I_DropEvent } from '~/components/atoms/list/dragDropList/lib/config/events'
16
+ import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
17
+
18
+ const model = defineModel<UI_I_CreateVmData>({ required: true })
19
+
20
+ const props = defineProps<{
21
+ isDisabled: boolean
22
+ }>()
23
+
24
+ const { $store }: any = useNuxtApp()
25
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
26
+ const currentComponent = computed(() =>
27
+ isNewView.value
28
+ ? defineAsyncComponent(() => import('./New.vue'))
29
+ : defineAsyncComponent(() => import('./Old.vue'))
30
+ )
31
+
32
+ const bootList = ref<UI_I_BootItem[]>([])
33
+
34
+ // Используем computed для автоматического обновления bootList при изменении модели
35
+ const hardDisksAndNetworks = computed(() => [
36
+ model.value.disk_devices?.filter((disk) => disk.device_type !== 'cdrom') ||
37
+ [],
38
+ model.value.disk_devices?.filter((disk) => disk.device_type === 'cdrom') ||
39
+ [],
40
+ model.value.network_devices || [],
41
+ ])
42
+
43
+ // Watcher для обновления bootList при изменении модели
44
+ watch(
45
+ hardDisksAndNetworks,
46
+ ([hardDisks, cdDvdDrives, networks]) => {
47
+ const hardDiskItems: UI_I_BootItem[] = hardDisks.map((item, index) => {
48
+ const order = item.boot_order || 0
49
+ return {
50
+ order,
51
+ isChecked: !!order,
52
+ text: `disk${index}`,
53
+ iconClassName: 'icon-disk',
54
+ type: 'disk' as const,
55
+ name: `${item.source}_${index}`,
56
+ testId: `select-disk-value-${index + 1}`,
57
+ }
58
+ })
59
+
60
+ const cdDvdDriveItems: UI_I_BootItem[] = cdDvdDrives.map((item, index) => {
61
+ const order = item.boot_order || 0
62
+ return {
63
+ order,
64
+ isChecked: !!order,
65
+ text: `cdrom${index}`,
66
+ iconClassName: 'icon-disk',
67
+ type: 'cdDvd' as const,
68
+ name: `${item.source}_${hardDisks.length + index}`,
69
+ testId: `select-cd-dvd-value-${index + 1}`,
70
+ }
71
+ })
72
+
73
+ const networkItems: UI_I_BootItem[] = networks.map((item, index) => {
74
+ const order = item.boot_order || 0
75
+ return {
76
+ order,
77
+ isChecked: !!order,
78
+ text: item.mac || 'undefined',
79
+ iconClassName: 'vsphere-icon-network',
80
+ type: 'nic' as const,
81
+ name: `${item.network}_${index}`,
82
+ testId: `select-nic-value-${index + 1}`,
83
+ }
84
+ })
85
+
86
+ bootList.value = [...hardDiskItems, ...cdDvdDriveItems, ...networkItems]
87
+ .filter((item) => item.order >= 0)
88
+ .sort((a, b) => a.order - b.order)
89
+ },
90
+ { deep: true, immediate: true }
91
+ )
92
+
93
+ // Обработчик изменения порядка через drag & drop
94
+ const onChangeOrder = (event: UI_I_DropEvent): void => {
95
+ const updatedList = [...bootList.value]
96
+ const movedItem = updatedList.find((item) => item.name === event.target.name)
97
+
98
+ if (!movedItem) return
99
+
100
+ // Удаляем элемент из текущей позиции
101
+ const fromIndex = updatedList.indexOf(movedItem)
102
+ updatedList.splice(fromIndex, 1)
103
+
104
+ // Вставляем элемент в новую позицию
105
+ updatedList.splice(event.toPosition, 0, movedItem)
106
+
107
+ // Обновляем порядок всех элементов
108
+ updatedList.forEach((item, index) => {
109
+ item.order = index + 1
110
+ })
111
+
112
+ bootList.value = updatedList
113
+ updateModelFromBootList(updatedList)
114
+ }
115
+
116
+ // Обработчик обновления bootList (при изменении чекбоксов)
117
+ const onBootListUpdate = (updatedBootList: UI_I_BootItem[]): void => {
118
+ bootList.value = updatedBootList
119
+ updateModelFromBootList(updatedBootList)
120
+ }
121
+
122
+ // Функция для обновления модели на основе bootList
123
+ const updateModelFromBootList = (bootItems: UI_I_BootItem[]): void => {
124
+ // Сначала сбрасываем все boot_order
125
+ model.value.disk_devices?.forEach((disk) => {
126
+ disk.boot_order = 0
127
+ })
128
+ model.value.network_devices?.forEach((network) => {
129
+ network.boot_order = 0
130
+ })
131
+
132
+ // Затем устанавливаем boot_order только для выбранных элементов
133
+ let currentOrder = 1
134
+ bootItems.forEach((bootItem) => {
135
+ if (!bootItem.isChecked) return
136
+
137
+ if (bootItem.type === 'nic') {
138
+ const [networkName, indexStr] = bootItem.name.split('_')
139
+ const index = parseInt(indexStr, 10)
140
+ const network = model.value.network_devices?.[index]
141
+ if (network && network.network === networkName) {
142
+ network.boot_order = currentOrder++
143
+ }
144
+ } else {
145
+ const [source, indexStr] = bootItem.name.split('_')
146
+ const index = parseInt(indexStr, 10)
147
+ const disk = model.value.disk_devices?.[index]
148
+ if (disk && disk.source+'' === source) {
149
+ disk.boot_order = currentOrder++
150
+ }
151
+ }
152
+ })
153
+ }
154
+ </script>
155
+
156
+ <style scoped lang="scss"></style>
@@ -172,6 +172,7 @@ const versionsLocal = computed(() => {
172
172
  @container (max-width: 600px) {
173
173
  .version-select-wrap {
174
174
  grid-template-columns: 1fr;
175
+ padding-bottom: 16px;
175
176
  }
176
177
  }
177
178
  }