bfg-common 1.5.111 → 1.5.113

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 (302) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/components/atoms/TheIcon3.vue +50 -50
  3. package/components/atoms/perPage/PerPage.vue +58 -58
  4. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  5. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  6. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  7. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  8. package/components/common/context/lib/models/interfaces.ts +31 -31
  9. package/components/common/context/recursion/Recursion.vue +87 -87
  10. package/components/common/context/recursion/RecursionNew.vue +238 -238
  11. package/components/common/diagramMain/DiagramMain.vue +897 -897
  12. package/components/common/diagramMain/Header.vue +214 -214
  13. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  14. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  15. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/utils.ts +1040 -1040
  16. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  17. package/components/common/pages/home/headline/Headline.vue +45 -45
  18. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  19. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  20. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  21. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  22. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  23. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  24. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  25. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  26. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  27. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  28. package/components/common/pages/packages/Packages.vue +208 -208
  29. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  30. package/components/common/portlets/customAttributes/Portlet.vue +667 -667
  31. package/components/common/portlets/tag/CreateCategory.vue +10 -10
  32. package/components/common/portlets/tag/Portlet.vue +433 -433
  33. package/components/common/portlets/tag/TagAddNew.vue +8 -8
  34. package/components/common/portlets/tag/lib/config/config.ts +1 -0
  35. package/components/common/readyToComplete/New.vue +66 -66
  36. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  37. package/components/common/recursionTree/RecursionTree.vue +223 -223
  38. package/components/common/resource/progressBlock/ProgressBlock.vue +7 -7
  39. package/components/common/resource/simple/Simple.vue +2 -2
  40. package/components/common/resource/simple/lib/models/enums.ts +1 -1
  41. package/components/common/select/button/ButtonDropdown.vue +108 -108
  42. package/components/common/select/input/Input.vue +5 -6
  43. package/components/common/select/radio/RadioGroup.vue +3 -4
  44. package/components/common/selectLanguage/SelectLanguage.vue +27 -27
  45. package/components/common/spiceConsole/Drawer.vue +370 -370
  46. package/components/common/spiceConsole/SpiceConsole.vue +3 -3
  47. package/components/common/spiceConsole/keyboard/Keyboard.vue +8 -8
  48. package/components/common/spiceConsole/keyboard/lib/config/keyboardRows.ts +2 -2
  49. package/components/common/spiceConsole/keyboard/lib/models/interfaces.ts +1 -1
  50. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  51. package/components/common/split/horizontal/HorizontalNew.vue +9 -9
  52. package/components/common/split/horizontal/HorizontalOld.vue +337 -337
  53. package/components/common/split/vertical/Vertical.vue +162 -160
  54. package/components/common/split/vertical/VerticalNew.vue +10 -7
  55. package/components/common/split/vertical/VerticalOld.vue +11 -8
  56. package/components/common/summary/notification/NotificationOld.vue +3 -2
  57. package/components/common/titleBar/titleBarNew/notification/Notification.vue +4 -4
  58. package/components/common/tools/Actions.vue +201 -202
  59. package/components/common/vm/actions/add/Add.vue +785 -785
  60. package/components/common/vm/actions/add/New.vue +556 -556
  61. package/components/common/vm/actions/add/Old.vue +371 -371
  62. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  63. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  64. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  65. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  66. package/components/common/vm/actions/clone/Clone.vue +798 -798
  67. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  68. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +626 -626
  69. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  70. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +276 -275
  71. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +272 -272
  72. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +178 -177
  73. package/components/common/vm/actions/common/customizeHardware/lib/config/navItems.ts +5 -5
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +468 -468
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +99 -99
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +122 -118
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusOld.vue +1 -2
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +198 -198
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +194 -194
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuOld.vue +23 -17
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/coresPerSocket/CoresPerSocketNew.vue +1 -1
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/coresPerSocket/CoresPerSocketOld.vue +1 -1
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/hotPlug/HotPlugNew.vue +1 -1
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/hotPlug/HotPlugOld.vue +7 -6
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +13 -13
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelOld.vue +3 -3
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/SharesNew.vue +1 -1
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/SharesOld.vue +1 -1
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +122 -122
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +7 -3
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +1 -1
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/hotPlug/HotPlugNew.vue +14 -16
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/hotPlug/HotPlugOld.vue +4 -5
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +368 -368
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +266 -266
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +250 -250
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/cache/CacheNew.vue +20 -19
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/cache/CacheOld.vue +1 -0
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/limitIops/LimitIopsNew.vue +32 -33
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +149 -149
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +74 -74
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/StorageModalNew.vue +75 -74
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/StorageModalOld.vue +1 -1
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeNew.vue +19 -20
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/provisioning/ProvisioningNew.vue +1 -1
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +45 -45
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/adapterType/AdapterTypeNew.vue +19 -20
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +2 -2
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +68 -70
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +81 -83
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +4 -1
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  135. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  136. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +83 -85
  137. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  138. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  139. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  140. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  141. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  142. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +80 -82
  143. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  144. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionOld.vue +2 -2
  145. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +57 -57
  146. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerOld.vue +1 -1
  147. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  148. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  149. package/components/common/vm/actions/common/customizeHardware/virtualHardware/reservation/ReservationNew.vue +1 -1
  150. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +105 -105
  151. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  152. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/model/ModelNew.vue +18 -18
  153. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/model/ModelOld.vue +1 -1
  154. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplaysNew.vue +20 -20
  155. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplaysOld.vue +2 -2
  156. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  157. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryOld.vue +6 -2
  158. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  159. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  160. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptions.vue +0 -1
  161. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  162. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  163. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  164. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +43 -43
  165. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  166. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  167. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  168. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +144 -144
  169. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +12 -6
  170. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  171. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/PlaybackCompression.vue +1 -1
  172. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  173. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteOld.vue +3 -3
  174. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  175. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferOld.vue +4 -4
  176. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  177. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/imgCompression/ImgCompression.vue +1 -1
  178. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/jpegCompression/JpegCompression.vue +1 -1
  179. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  180. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +40 -40
  181. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapOld.vue +2 -2
  182. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +100 -103
  183. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  184. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  185. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/streamingMode/StreamingMode.vue +1 -1
  186. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/type/Type.vue +1 -1
  187. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  188. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  189. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  190. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/zlibCompression/ZlibCompression.vue +1 -1
  191. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsNew.vue +28 -29
  192. package/components/common/vm/actions/common/lib/models/types.ts +1 -1
  193. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  194. package/components/common/vm/actions/common/select/compatibility/Compatibility.vue +100 -100
  195. package/components/common/vm/actions/common/select/compatibility/New.vue +165 -165
  196. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  197. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +134 -134
  198. package/components/common/vm/actions/common/select/computeResource/New.vue +141 -141
  199. package/components/common/vm/actions/common/select/computeResource/Old.vue +99 -99
  200. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  201. package/components/common/vm/actions/common/select/computeResource/treeView/Old.vue +51 -48
  202. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  203. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  204. package/components/common/vm/actions/common/select/createType/New.vue +84 -84
  205. package/components/common/vm/actions/common/select/createType/Old.vue +70 -70
  206. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  207. package/components/common/vm/actions/common/select/name/Name.vue +167 -167
  208. package/components/common/vm/actions/common/select/name/New.vue +246 -246
  209. package/components/common/vm/actions/common/select/name/Old.vue +119 -119
  210. package/components/common/vm/actions/common/select/os/New.vue +122 -122
  211. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  212. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  213. package/components/common/vm/actions/common/select/storage/Old.vue +129 -129
  214. package/components/common/vm/actions/common/select/storage/Storage.vue +131 -131
  215. package/components/common/vm/actions/common/select/storage/new/New.vue +193 -193
  216. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +326 -326
  217. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  218. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  219. package/components/common/vm/actions/common/select/template/Template.vue +64 -64
  220. package/components/common/vm/actions/common/select/template/TemplateTreeView.vue +88 -88
  221. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +1 -1
  222. package/components/common/vm/actions/editSettings/lib/config/modal.ts +6 -4
  223. package/components/common/vm/actions/editSettings/lib/models/types.ts +4 -4
  224. package/components/common/vm/actions/editSettings/lib/utils.ts +25 -29
  225. package/components/common/vm/actions/editSettings/new/New.vue +186 -186
  226. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  227. package/components/common/vm/actions/lib/models/types.ts +1 -1
  228. package/components/common/vm/actions/lib/utils.ts +2 -10
  229. package/components/common/wizards/datastore/add/Add.vue +6 -7
  230. package/components/common/wizards/datastore/add/lib/config/steps.ts +138 -138
  231. package/components/common/wizards/datastore/add/lib/validations.ts +1 -1
  232. package/components/common/wizards/datastore/add/local/createName/CreateName.vue +1 -1
  233. package/components/common/wizards/datastore/add/nfs/_kerberosAuthentication/KerberosAuthentication.vue +6 -6
  234. package/components/common/wizards/datastore/add/nfs/accessibility/Accessibility.vue +60 -60
  235. package/components/common/wizards/datastore/add/nfs/accessibility/tablesView/TablesView.vue +5 -5
  236. package/components/common/wizards/datastore/add/nfs/accessibility/tablesView/lib/config/compatibleTable.ts +1 -1
  237. package/components/common/wizards/datastore/add/nfs/configuration/Configuration.vue +5 -14
  238. package/components/common/wizards/datastore/add/nfs/configuration/_serversList/DeletePopover.vue +1 -1
  239. package/components/common/wizards/datastore/add/nfs/configuration/_serversList/ServersList.vue +9 -9
  240. package/components/common/wizards/datastore/add/nfs/configuration/_serversList/lib/config/serversListConfig.ts +10 -7
  241. package/components/common/wizards/datastore/add/nfs/configuration/_serversList/lib/config/tableKeys.ts +1 -1
  242. package/components/common/wizards/datastore/add/nfs/version/Version.vue +1 -4
  243. package/components/common/wizards/datastore/add/nfs/version/lib/config/versionOptions.ts +1 -0
  244. package/components/common/wizards/datastore/add/readyComplete/ReadyComplete.vue +89 -92
  245. package/components/common/wizards/datastore/add/readyComplete/lib/config/propertiesDetails.ts +1 -0
  246. package/components/common/wizards/datastore/add/sharedStorm/SharedStorm.vue +1 -6
  247. package/components/common/wizards/datastore/add/sharedStorm/_version/Version.vue +3 -6
  248. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/DeviceSelection.vue +4 -4
  249. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/config/selectOptions.ts +6 -3
  250. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/models/interfaces.ts +1 -1
  251. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/lib/models/types.ts +1 -1
  252. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/table/Table.vue +8 -8
  253. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/PartitionConfiguration.vue +5 -5
  254. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/sizeGraphic/sizeGraphic.vue +1 -1
  255. package/components/common/wizards/datastore/add/types/Types.vue +0 -4
  256. package/components/common/wizards/datastore/add/types/lib/config/typeOptions.ts +3 -3
  257. package/components/common/wizards/network/add/Add.vue +25 -25
  258. package/components/common/wizards/network/add/lib/models/types.ts +2 -2
  259. package/components/common/wizards/network/add/mappers/mappers.ts +1 -1
  260. package/components/common/wizards/network/add/modals/SelectNetwork.vue +3 -1
  261. package/components/common/wizards/network/add/modals/SelectStandardSwitch.vue +3 -1
  262. package/components/common/wizards/network/add/modals/SelectSwitch.vue +3 -1
  263. package/components/common/wizards/network/add/steps/ConnectionSettings.vue +4 -4
  264. package/components/common/wizards/network/add/steps/IpFourSettings.vue +13 -9
  265. package/components/common/wizards/network/add/steps/PhysicalAdapter.vue +1 -1
  266. package/components/common/wizards/network/add/steps/PortProperties.vue +13 -9
  267. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +105 -105
  268. package/components/common/wizards/network/add/steps/SelectedTargetDevice.vue +15 -15
  269. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  270. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  271. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  272. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +1 -1
  273. package/components/common/wizards/vm/migrate/select/computeResource/lib/config/tabsPannel.ts +1 -0
  274. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +2 -2
  275. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  276. package/components/common/wizards/vm/migrate/select/network/table/network/Network.vue +150 -150
  277. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  278. package/components/common/wizards/vm/migrate/select/priority/Priority.vue +43 -43
  279. package/components/common/wizards/vm/migrate/select/storage/Storage.vue +2 -2
  280. package/components/common/wizards/vm/migrate/select/storage/configure/batch/Batch.vue +2 -2
  281. package/components/common/wizards/vm/migrate/select/storage/configure/batch/table/Table.vue +2 -2
  282. package/components/common/wizards/vm/migrate/select/storage/configure/disk/Disk.vue +1 -1
  283. package/components/common/wizards/vm/migrate/select/storage/configure/disk/table/Table.vue +3 -3
  284. package/components/common/wizards/vm/migrate/select/storage/lib/config/tabsPannel.ts +1 -0
  285. package/components/common/wizards/vm/migrate/select/targetServer/lib/config/tabsPannel.ts +1 -0
  286. package/components/common/wizards/vm/migrate/select/targetServer/lib/models/types.ts +1 -1
  287. package/components/common/wizards/vm/migrate/select/targetServer/saved/Saved.vue +1 -1
  288. package/components/common/wizards/vm/migrate/select/targetServer/targetServer.vue +3 -3
  289. package/composables/productNameLocal.ts +30 -30
  290. package/composables/useAppVersion.ts +21 -21
  291. package/lib/models/store/host/interfaces.ts +1 -1
  292. package/lib/models/store/network/interfaces.ts +1 -1
  293. package/lib/models/store/storage/interfaces.ts +1 -1
  294. package/lib/models/store/vm/interfaces.ts +1 -1
  295. package/package.json +1 -1
  296. package/plugins/date.ts +233 -233
  297. package/plugins/directives.ts +24 -24
  298. package/public/spice-console/lib/images/bitmap.js +203 -203
  299. package/public/spice-console/network/spicechannel.js +383 -383
  300. package/store/main/mutations.ts +7 -7
  301. package/store/main/state.ts +7 -7
  302. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,626 +1,626 @@
1
- <template>
2
- <div class="clone-to-template">
3
- <atoms-wizard
4
- show
5
- :wizard="wizard"
6
- :selected-scheme="selectedScheme"
7
- :title="title"
8
- :localization="localization"
9
- @change-steps="onChangeSteps"
10
- @hide="onHideModal"
11
- @submit="onFinish"
12
- >
13
- <template #modalBody="{ selectedStep }">
14
- <atoms-loader v-show="!vmSettingsLocal" id="loader" />
15
- <div v-if="vmSettingsLocal" class="vm-context">
16
- <common-pages-scheduled-tasks-modals-common-new-task-form
17
- v-show="selectedStep.id === dynamicSteps.scheduledTasks"
18
- v-model="newTaskForm"
19
- :target="selectedVirtualMachine"
20
- class="new-task-form"
21
- />
22
- <common-vm-actions-common-select-name
23
- v-show="selectedStep.id === dynamicSteps.selectName"
24
- :show="selectedStep.id === dynamicSteps.selectName"
25
- :name-form-submit="nameFormSubmit"
26
- :project="props.project"
27
- @submit="onChangeName(...$event)"
28
- @check-name="emits('check-name', $event)"
29
- />
30
- <common-vm-actions-common-select-storage
31
- v-show="selectedStep.id === dynamicSteps.selectStorage"
32
- :storage-submit="storageSubmit"
33
- :datastore="props.datastore"
34
- :storage="vmSettingsLocal.storage"
35
- :get-datastore-table-func="props.getDatastoreTableFunc"
36
- @submit="onChangeStorage"
37
- />
38
- <common-vm-actions-common-customize-hardware
39
- v-show="selectedStep.id === dynamicSteps.customizeHardware"
40
- v-model:vm-name="vmName"
41
- v-model:guest-machine-type="vmSettingsLocal.guestMachineType"
42
- v-model:guest-os-family="vmSettingsLocal.guestOsFamily"
43
- v-model:guest-os-version="vmSettingsLocal.guestOsVersion"
44
- :storage="vmSettingsLocal.storage"
45
- :hard-disks-for-boot-options="virtualHardwareHardDisksLocal"
46
- :cd-dvd-drives-for-boot-options="virtualHardwareCdDvdDrivesLocal"
47
- :networks-for-boot-options="virtualHardwareNetworksLocal"
48
- :cd-dvd-drives="vmSettingsLocal.cdDvdDrives"
49
- :hard-disks="vmSettingsLocal.hardDisks"
50
- :networks="vmSettingsLocal.networks"
51
- :customize-hardware-submit="customizeHardwareSubmit"
52
- :max-cpus="vmSettingsLocal.maxCpus"
53
- :max-memory="vmSettingsLocal.maxMemory"
54
- :cpu-models="vmSettingsLocal.cpuModels"
55
- :cpu="vmSettingsLocal.cpu"
56
- :memory="vmSettingsLocal.memory"
57
- :video-card="vmSettingsLocal.videoCard"
58
- :usb-controller="vmSettingsLocal.usbController"
59
- :pci-devices="vmSettingsLocal.pciDevices"
60
- :selected-nav-item="selectedNavItem"
61
- :hard-disks-for-edit="vmSettingsLocal.hardDisks"
62
- :options="vmSettingsLocal.options"
63
- :nodes="props.nodes"
64
- :files="props.files"
65
- :networks-table="props.networksTable"
66
- :error-validation-fields="props.errorValidationFields"
67
- :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
68
- :passthrough-devices="props.passthroughDevices"
69
- :mediated-devices="props.mediatedDevices"
70
- :get-datastore-table-func="props.getDatastoreTableFunc"
71
- :datastore="props.datastore"
72
- :project="props.project"
73
- is-clone
74
- @change-boot-order="onChangeBootOrder"
75
- @send-data="onChangeCustomizeHardware"
76
- @get-storage="emits('get-storage', $event)"
77
- @get-folders-or-files="emits('get-folders-or-files', $event)"
78
- @get-active-device-child="emits('get-active-device-child', $event)"
79
- @show-datastore-child="emits('show-datastore-child', $event)"
80
- @get-networks-table="emits('get-networks-table', $event)"
81
- @get-pci-devices="emits('get-pci-devices')"
82
- />
83
- <common-ready-to-complete
84
- v-show="selectedStep.id === dynamicSteps.readyComplete"
85
- :data="props.readyCompleteTableInfo"
86
- />
87
- </div>
88
- </template>
89
- </atoms-wizard>
90
- </div>
91
- </template>
92
-
93
- <script setup lang="ts">
94
- import type {
95
- UI_I_DatastoreTableItem,
96
- UI_I_FolderOrFileTreePayload,
97
- } from '~/lib/models/store/storage/interfaces'
98
- import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
99
- import type { API_UI_I_Error } from '~/lib/models/store/interfaces'
100
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
101
- import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
102
- import type { UI_I_Localization } from '~/lib/models/interfaces'
103
- import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
104
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
105
- import type {
106
- UI_I_SendDataCpu,
107
- UI_I_SendDataMemory,
108
- UI_I_SendDataNewCdDvdDrive,
109
- UI_I_SendDataNewHardDisk,
110
- UI_I_SendDataNewNetwork,
111
- } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
112
- import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
113
- import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
114
- import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
115
- import type { UI_T_Project } from '~/lib/models/types'
116
- import type {
117
- UI_I_MediatedDevice,
118
- UI_I_PciDevice,
119
- UI_I_VmSettings,
120
- } from '~/lib/models/store/vm/interfaces'
121
- import type {
122
- I_DynamicSteps,
123
- // UI_I_VmForm,
124
- } from '~/components/common/vm/actions/clone/toTemplate/lib/models/interfaces'
125
- import type {
126
- UI_I_ValidationReturn,
127
- UI_I_WizardStep,
128
- } from '~/components/atoms/wizard/lib/models/interfaces'
129
- import type { UI_I_Capabilities } from '~/components/common/vm/actions/common/lib/models/interfaces'
130
- import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
131
- import {
132
- stepsSchemeInitial,
133
- stepsFunc,
134
- getDynamicSteps,
135
- } from '~/components/common/vm/actions/clone/toTemplate/lib/config/steps'
136
- import Wizard from '~/components/atoms/wizard/lib/utils/utils'
137
- import { mapCapabilities } from '~/components/common/vm/actions/common/lib/utils/capabilities'
138
- import { scheduledTaskDefaultFormFunc } from '~/components/common/pages/scheduledTasks/modals/lib/config/createScheduledTask'
139
-
140
- const props = defineProps<{
141
- project: UI_T_Project
142
- vmSettings: UI_I_VmSettings | null
143
- nodes: UI_I_FileTreeNode[]
144
- files: UI_I_FileTreeNode[]
145
- networksTable: UI_I_NetworkTableItem[]
146
- datastore: UI_I_DatastoreTableItem[]
147
- errorValidationFields: UI_I_ErrorValidationField[]
148
- readyCompleteTableInfo: UI_I_TableInfoItem[]
149
- vmCpuHelpTextSecond: string
150
- finishFunc: any
151
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
152
- validateSendDataFunc: any
153
- passthroughDevices: UI_I_PciDevice[]
154
- mediatedDevices: UI_I_MediatedDevice[]
155
- vmNameInWizard: string
156
- capabilities?: UI_I_Capabilities
157
- schedulerTask?: any // TODO надо interface переместить глобално
158
- selectedVirtualMachine?: UI_I_Capabilities
159
- }>()
160
-
161
- const emits = defineEmits<{
162
- (event: 'check-name', value: [string, (error: API_UI_I_Error) => void]): void
163
- (event: 'get-storage', value: UI_I_TablePayload): void
164
- (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
165
- (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
166
- (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
167
- (event: 'remove-error-by-title', value: string): void
168
- (event: 'get-networks-table', value: UI_I_TablePayload): void
169
- (event: 'get-pci-devices'): void
170
- (event: 'hide'): void
171
- }>()
172
-
173
- const localization = computed<UI_I_Localization>(() => useLocal())
174
-
175
- const isScheduledTasks = computed<boolean>(
176
- () => props.schedulerTask.isSchedulerTask
177
- )
178
-
179
- const title = computed<string>(() => {
180
- const { scheduleNewTasks, scheduleTaskEdit, cloneTemplate } =
181
- localization.value.common
182
-
183
- let result = cloneTemplate
184
- if (isScheduledTasks.value) {
185
- const schedulerMode = props.schedulerTask.editTask
186
- ? scheduleTaskEdit
187
- : scheduleNewTasks
188
-
189
- result = `${schedulerMode} (${cloneTemplate})`
190
- }
191
-
192
- return result
193
- })
194
-
195
- const dynamicSteps = ref<I_DynamicSteps>(
196
- getDynamicSteps(isScheduledTasks.value)
197
- )
198
-
199
- watch(
200
- () => props.capabilities,
201
- () => {
202
- if (props.capabilities) mapCapabilities(props.capabilities)
203
- },
204
- { deep: true, immediate: true }
205
- )
206
-
207
- const wizard: Wizard = new Wizard(
208
- stepsFunc(localization.value, isScheduledTasks.value),
209
- stepsSchemeInitial(isScheduledTasks.value)
210
- )
211
- // TODO move to common
212
- const newTaskForm = ref<UI_I_ScheduleNewTasksForm>(
213
- useDeepCopy(scheduledTaskDefaultFormFunc())
214
- )
215
- watch(
216
- newTaskForm,
217
- (newValue: UI_I_ScheduleNewTasksForm) => {
218
- if (isScheduledTasks.value) wizard.setDisabledNextButton(newValue.isValid)
219
- },
220
- { immediate: true, deep: true }
221
- )
222
-
223
- const selectedScheme = computed<number[]>(() => wizard.selectedScheme.value)
224
-
225
- const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> => {
226
- wizard.changeSteps(value, validationFunc, validateSendData)
227
- }
228
-
229
- const validationFunc = async (
230
- value: UI_I_WizardStep[],
231
- currentStep: UI_I_WizardStep,
232
- nextStep: UI_I_WizardStep
233
- ): Promise<UI_I_ValidationReturn> => {
234
- let stepHasError = false
235
- let stepShouldStop = {
236
- ifOnCurrentStep: false,
237
- ifFromAnyStep: false,
238
- stoppageStepId: -1,
239
- }
240
-
241
- wizard.setLoader(true)
242
- if (
243
- wizard.isValidateForStep(
244
- dynamicSteps.value.selectName,
245
- currentStep.id,
246
- nextStep.id
247
- )
248
- ) {
249
- const nameValidation = await checkName(value)
250
-
251
- value = nameValidation.newValue
252
- stepHasError = stepHasError || nameValidation.stepHasError
253
- } else if (
254
- wizard.isValidateForStep(
255
- dynamicSteps.value.selectStorage,
256
- currentStep.id,
257
- nextStep.id
258
- )
259
- ) {
260
- const storageValidation = await checkStorage(value)
261
-
262
- value = storageValidation.newValue
263
-
264
- stepHasError = stepHasError || storageValidation.stepHasError
265
- } else if (
266
- wizard.isValidateForStep(
267
- dynamicSteps.value.selectOptions,
268
- currentStep.id,
269
- nextStep.id
270
- )
271
- ) {
272
- selectOptionsSubmit.value++
273
- } else if (
274
- wizard.isValidateForStep(
275
- dynamicSteps.value.customizeHardware,
276
- currentStep.id,
277
- nextStep.id
278
- )
279
- ) {
280
- const customizeHardwareValidation = await checkCustomizeHardware(value)
281
-
282
- value = customizeHardwareValidation.newValue
283
-
284
- stepHasError = stepHasError || customizeHardwareValidation.stepHasError
285
- }
286
- wizard.setLoader(false)
287
-
288
- return {
289
- newValue: value,
290
- stepHasError,
291
- stepShouldStop,
292
- }
293
- }
294
- const checkName = async (
295
- value: UI_I_WizardStep[]
296
- ): Promise<UI_I_ValidationReturn> => {
297
- let stepHasError = false
298
-
299
- return new Promise((resolve) => {
300
- nameFormSubmit.value = (isValid: boolean) => {
301
- if (!isValid) {
302
- stepHasError = wizard.setValidation(
303
- dynamicSteps.value.selectName,
304
- 'name',
305
- {
306
- fieldMessage: 'aaa',
307
- alertMessage: 'aaa',
308
- }
309
- )
310
- } else if (wizard.hasMessage(dynamicSteps.value.selectName, 'name')) {
311
- value = wizard.removeValidation(
312
- dynamicSteps.value.selectName,
313
- 'name',
314
- value
315
- )
316
- }
317
-
318
- resolve({
319
- stepHasError,
320
- newValue: value,
321
- })
322
- nameFormSubmit.value = null
323
- }
324
- })
325
- }
326
- const checkStorage = async (
327
- value: UI_I_WizardStep[]
328
- ): Promise<UI_I_ValidationReturn> => {
329
- let stepHasError = false
330
-
331
- return new Promise((resolve) => {
332
- storageSubmit.value = (isValid: boolean) => {
333
- if (!isValid) {
334
- stepHasError = wizard.setValidation(
335
- dynamicSteps.value.selectStorage,
336
- 'storage',
337
- {
338
- fieldMessage: 'aaa',
339
- alertMessage: 'aaa',
340
- }
341
- )
342
- } else if (
343
- wizard.hasMessage(dynamicSteps.value.selectStorage, 'storage')
344
- ) {
345
- value = wizard.removeValidation(
346
- dynamicSteps.value.selectStorage,
347
- 'storage',
348
- value
349
- )
350
- }
351
-
352
- resolve({
353
- stepHasError,
354
- newValue: value,
355
- })
356
- storageSubmit.value = null
357
- }
358
- })
359
- }
360
- const checkCustomizeHardware = async (
361
- value: UI_I_WizardStep[]
362
- ): Promise<UI_I_ValidationReturn> => {
363
- let stepHasError = false
364
-
365
- return new Promise((resolve) => {
366
- customizeHardwareSubmit.value = (isValid: boolean) => {
367
- if (!isValid) {
368
- stepHasError = wizard.setValidation(
369
- dynamicSteps.value.customizeHardware,
370
- 'customizeHardware',
371
- {
372
- fieldMessage: 'aaa',
373
- alertMessage: 'aaa',
374
- }
375
- )
376
- } else if (
377
- wizard.hasMessage(
378
- dynamicSteps.value.customizeHardware,
379
- 'customizeHardware'
380
- )
381
- ) {
382
- value = wizard.removeValidation(
383
- dynamicSteps.value.customizeHardware,
384
- 'customizeHardware',
385
- value
386
- )
387
- }
388
-
389
- resolve({
390
- stepHasError,
391
- newValue: value,
392
- })
393
- storageSubmit.value = null
394
- }
395
- })
396
- }
397
-
398
- const storageIdCash = ref<string | null>(null)
399
- const onChangeName = (name: string): void => {
400
- vmSettingsLocal.value && (vmSettingsLocal.value.name = name)
401
- }
402
- const onChangeStorage = (storage: UI_I_DatastoreTableItem | null): void => {
403
- if (!storage) return
404
-
405
- vmSettingsLocal.value && (vmSettingsLocal.value.storage = storage)
406
- storageIdCash.value = storage.id
407
- }
408
- const customizeHardware = ref<UI_I_SendDataCustomizeHardware | null>(null)
409
- const onChangeCustomizeHardware = (
410
- data: UI_I_SendDataCustomizeHardware
411
- ): void => {
412
- customizeHardware.value = data
413
- }
414
-
415
- const virtualHardwareHardDisksLocal = computed<
416
- UI_I_SendDataNewHardDisk[] | null
417
- >(() => customizeHardware.value?.virtualHardware?.hardDisks || null)
418
- const virtualHardwareNetworksLocal = computed<UI_I_SendDataNewNetwork[] | null>(
419
- () => customizeHardware.value?.virtualHardware?.networks || null
420
- )
421
- const virtualHardwareCdDvdDrivesLocal = computed<
422
- UI_I_SendDataNewCdDvdDrive[] | null
423
- >(() => customizeHardware.value?.virtualHardware?.cdDvdDrives || null)
424
-
425
- const virtualHardwareCpu = computed<UI_I_SendDataCpu | null>(
426
- () => customizeHardware.value?.virtualHardware?.cpu || null
427
- )
428
- const virtualHardwareMemory = computed<UI_I_SendDataMemory | null>(
429
- () => customizeHardware.value?.virtualHardware?.memory || null
430
- )
431
- const virtualHardwareHardDisks = ref<UI_I_SendDataNewHardDisk[] | null>(null)
432
- const virtualHardwareCdDvdDrives = ref<UI_I_SendDataNewCdDvdDrive[] | null>(
433
- null
434
- )
435
- const virtualHardwareNetworks = ref<UI_I_SendDataNewNetwork[] | null>(null)
436
- const onChangeBootOrder = (data: UI_T_ChangeBootOrder): void => {
437
- virtualHardwareHardDisks.value = data[0]
438
- virtualHardwareCdDvdDrives.value = data[1]
439
- virtualHardwareNetworks.value = data[2]
440
- }
441
-
442
- const isPowerOnByDefault = ref<boolean>(true)
443
-
444
- watch(
445
- () => props.vmNameInWizard,
446
- (newValue) => {
447
- vmSettingsLocal.value && (vmSettingsLocal.value.name = newValue)
448
- }
449
- )
450
-
451
- const validateSendData = async (
452
- value: UI_I_WizardStep[]
453
- ): Promise<UI_I_ValidationReturn> => {
454
- wizard.setLoader(true)
455
- let stepHasError = false
456
-
457
- const data = await props.validateSendDataFunc(
458
- vmSettingsLocal.value,
459
- virtualHardwareCpu.value,
460
- virtualHardwareMemory.value,
461
- customizeHardware.value,
462
- virtualHardwareNetworks.value,
463
- virtualHardwareHardDisks.value,
464
- virtualHardwareCdDvdDrives.value,
465
- isPowerOnByDefault.value,
466
- localization.value
467
- )
468
-
469
- wizard.setLoader(false)
470
- if (data) {
471
- stepHasError = true
472
- selectedNavItem.value = data[0]
473
- }
474
-
475
- return {
476
- stepHasError,
477
- newValue: value,
478
- }
479
- }
480
- const onFinish = (): void => {
481
- wizard.setLoader(false)
482
- props
483
- .finishFunc(
484
- vmSettingsLocal.value,
485
- virtualHardwareCpu.value,
486
- virtualHardwareMemory.value,
487
- customizeHardware.value,
488
- virtualHardwareNetworks.value,
489
- virtualHardwareHardDisks.value,
490
- virtualHardwareCdDvdDrives.value,
491
- isPowerOnByDefault.value,
492
- localization.value,
493
- false,
494
- newTaskForm.value,
495
- props.schedulerTask
496
- )
497
- .then(() => {
498
- onHideModal()
499
- wizard.setLoader(false)
500
- })
501
- }
502
-
503
- const selectedNavItem = ref<UI_T_SelectedNavItem>(0)
504
-
505
- const nameFormSubmit = ref<null | Function>(null)
506
- const storageSubmit = ref<null | Function>(null)
507
- const selectOptionsSubmit = ref<number>(0)
508
- const customizeHardwareSubmit = ref<null | Function>(null)
509
-
510
- const vmSettingsLocal = computed<UI_I_VmSettings | null>(() => props.vmSettings)
511
- const vmName = ref<string>(vmSettingsLocal.value?.name || '')
512
- watch(vmSettingsLocal, (newValue) => {
513
- vmName.value = newValue?.name || ''
514
- })
515
-
516
- const onHideModal = (): void => {
517
- emits('hide')
518
- }
519
- </script>
520
-
521
- <style scoped lang="scss">
522
- :deep(.has-solid.close-icon.clr-icon) {
523
- width: 20px;
524
- top: 0;
525
- }
526
- .vm-context {
527
- padding: 16px 15px 10px 10px;
528
- height: 100%;
529
- display: flex;
530
- flex-direction: column;
531
-
532
- .context-title-wrap {
533
- padding-bottom: 3px;
534
- border-bottom: 1px solid #a6a6a6;
535
-
536
- h4 {
537
- font-weight: 700;
538
- font-size: 13px;
539
- color: var(--vm-context-title);
540
- }
541
- p {
542
- font-weight: 400;
543
- font-size: 13px;
544
- color: var(--vm-context-sub-title);
545
- }
546
- }
547
-
548
- .finish-block {
549
- padding: 18px 24px 24px 24px;
550
-
551
- .add-hosts-ready-to-complete-mt-12 {
552
- margin-top: 12px;
553
-
554
- .add-hosts-ready-to-complete-bold {
555
- line-height: 18px;
556
- font-weight: 700;
557
- }
558
- }
559
- }
560
-
561
- .vm-hardware-version {
562
- align-self: flex-end;
563
- margin-top: auto;
564
- }
565
- }
566
-
567
- :deep(.modal .modal-dialog .modal-content .modal-footer) {
568
- flex: unset;
569
- height: unset;
570
- min-height: unset;
571
- }
572
- :deep(.wizard-modal-titlebar h3) {
573
- color: #000;
574
- font-size: 24px;
575
- font-weight: 200;
576
- line-height: 27px;
577
- margin: 0;
578
- padding: 0;
579
- }
580
- :deep(.clr-wizard-stepnav-item) {
581
- padding-left: 0;
582
- }
583
- :deep(.clr-wizard-stepnav
584
- .clr-wizard-stepnav-item
585
- button
586
- .clr-wizard-stepnav-link-title) {
587
- width: 189px;
588
- font-weight: 700;
589
- font-size: 13px;
590
- }
591
-
592
- #vm-wizard-notification {
593
- h3 {
594
- color: var(--global-font-color7);
595
- margin-top: 6px;
596
- }
597
- p {
598
- color: var(--global-font-color6);
599
- line-height: 16px;
600
- }
601
- }
602
-
603
- .power-on-by-default-wrap {
604
- display: flex;
605
- align-items: center;
606
-
607
- input {
608
- margin-right: 6px;
609
- }
610
- }
611
-
612
- .new-task-form {
613
- padding: 0 25px 0 5px;
614
- }
615
- </style>
616
-
617
- <style>
618
- :root {
619
- --vm-context-title: #333;
620
- --vm-context-sub-title: #000;
621
- }
622
- :root.dark-theme {
623
- --vm-context-title: #adbbc4;
624
- --vm-context-sub-title: #adbbc4;
625
- }
626
- </style>
1
+ <template>
2
+ <div class="clone-to-template">
3
+ <atoms-wizard
4
+ show
5
+ :wizard="wizard"
6
+ :selected-scheme="selectedScheme"
7
+ :title="title"
8
+ :localization="localization"
9
+ @change-steps="onChangeSteps"
10
+ @hide="onHideModal"
11
+ @submit="onFinish"
12
+ >
13
+ <template #modalBody="{ selectedStep }">
14
+ <atoms-loader v-show="!vmSettingsLocal" id="loader" />
15
+ <div v-if="vmSettingsLocal" class="vm-context">
16
+ <common-pages-scheduled-tasks-modals-common-new-task-form
17
+ v-show="selectedStep.id === dynamicSteps.scheduledTasks"
18
+ v-model="newTaskForm"
19
+ :target="selectedVirtualMachine"
20
+ class="new-task-form"
21
+ />
22
+ <common-vm-actions-common-select-name
23
+ v-show="selectedStep.id === dynamicSteps.selectName"
24
+ :show="selectedStep.id === dynamicSteps.selectName"
25
+ :name-form-submit="nameFormSubmit"
26
+ :project="props.project"
27
+ @submit="onChangeName(...$event)"
28
+ @check-name="emits('check-name', $event)"
29
+ />
30
+ <common-vm-actions-common-select-storage
31
+ v-show="selectedStep.id === dynamicSteps.selectStorage"
32
+ :storage-submit="storageSubmit"
33
+ :datastore="props.datastore"
34
+ :storage="vmSettingsLocal.storage"
35
+ :get-datastore-table-func="props.getDatastoreTableFunc"
36
+ @submit="onChangeStorage"
37
+ />
38
+ <common-vm-actions-common-customize-hardware
39
+ v-show="selectedStep.id === dynamicSteps.customizeHardware"
40
+ v-model:vm-name="vmName"
41
+ v-model:guest-machine-type="vmSettingsLocal.guestMachineType"
42
+ v-model:guest-os-family="vmSettingsLocal.guestOsFamily"
43
+ v-model:guest-os-version="vmSettingsLocal.guestOsVersion"
44
+ :storage="vmSettingsLocal.storage"
45
+ :hard-disks-for-boot-options="virtualHardwareHardDisksLocal"
46
+ :cd-dvd-drives-for-boot-options="virtualHardwareCdDvdDrivesLocal"
47
+ :networks-for-boot-options="virtualHardwareNetworksLocal"
48
+ :cd-dvd-drives="vmSettingsLocal.cdDvdDrives"
49
+ :hard-disks="vmSettingsLocal.hardDisks"
50
+ :networks="vmSettingsLocal.networks"
51
+ :customize-hardware-submit="customizeHardwareSubmit"
52
+ :max-cpus="vmSettingsLocal.maxCpus"
53
+ :max-memory="vmSettingsLocal.maxMemory"
54
+ :cpu-models="vmSettingsLocal.cpuModels"
55
+ :cpu="vmSettingsLocal.cpu"
56
+ :memory="vmSettingsLocal.memory"
57
+ :video-card="vmSettingsLocal.videoCard"
58
+ :usb-controller="vmSettingsLocal.usbController"
59
+ :pci-devices="vmSettingsLocal.pciDevices"
60
+ :selected-nav-item="selectedNavItem"
61
+ :hard-disks-for-edit="vmSettingsLocal.hardDisks"
62
+ :options="vmSettingsLocal.options"
63
+ :nodes="props.nodes"
64
+ :files="props.files"
65
+ :networks-table="props.networksTable"
66
+ :error-validation-fields="props.errorValidationFields"
67
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
68
+ :passthrough-devices="props.passthroughDevices"
69
+ :mediated-devices="props.mediatedDevices"
70
+ :get-datastore-table-func="props.getDatastoreTableFunc"
71
+ :datastore="props.datastore"
72
+ :project="props.project"
73
+ is-clone
74
+ @change-boot-order="onChangeBootOrder"
75
+ @send-data="onChangeCustomizeHardware"
76
+ @get-storage="emits('get-storage', $event)"
77
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
78
+ @get-active-device-child="emits('get-active-device-child', $event)"
79
+ @show-datastore-child="emits('show-datastore-child', $event)"
80
+ @get-networks-table="emits('get-networks-table', $event)"
81
+ @get-pci-devices="emits('get-pci-devices')"
82
+ />
83
+ <common-ready-to-complete
84
+ v-show="selectedStep.id === dynamicSteps.readyComplete"
85
+ :data="props.readyCompleteTableInfo"
86
+ />
87
+ </div>
88
+ </template>
89
+ </atoms-wizard>
90
+ </div>
91
+ </template>
92
+
93
+ <script setup lang="ts">
94
+ import type {
95
+ UI_I_DatastoreTableItem,
96
+ UI_I_FolderOrFileTreePayload,
97
+ } from '~/lib/models/store/storage/interfaces'
98
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
99
+ import type { API_UI_I_Error } from '~/lib/models/store/interfaces'
100
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
101
+ import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
102
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
103
+ import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
104
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
105
+ import type {
106
+ UI_I_SendDataCpu,
107
+ UI_I_SendDataMemory,
108
+ UI_I_SendDataNewCdDvdDrive,
109
+ UI_I_SendDataNewHardDisk,
110
+ UI_I_SendDataNewNetwork,
111
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
112
+ import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
113
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
114
+ import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
115
+ import type { UI_T_Project } from '~/lib/models/types'
116
+ import type {
117
+ UI_I_MediatedDevice,
118
+ UI_I_PciDevice,
119
+ UI_I_VmSettings,
120
+ } from '~/lib/models/store/vm/interfaces'
121
+ import type {
122
+ I_DynamicSteps,
123
+ // UI_I_VmForm,
124
+ } from '~/components/common/vm/actions/clone/toTemplate/lib/models/interfaces'
125
+ import type {
126
+ UI_I_ValidationReturn,
127
+ UI_I_WizardStep,
128
+ } from '~/components/atoms/wizard/lib/models/interfaces'
129
+ import type { UI_I_Capabilities } from '~/components/common/vm/actions/common/lib/models/interfaces'
130
+ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
131
+ import {
132
+ stepsSchemeInitial,
133
+ stepsFunc,
134
+ getDynamicSteps,
135
+ } from '~/components/common/vm/actions/clone/toTemplate/lib/config/steps'
136
+ import Wizard from '~/components/atoms/wizard/lib/utils/utils'
137
+ import { mapCapabilities } from '~/components/common/vm/actions/common/lib/utils/capabilities'
138
+ import { scheduledTaskDefaultFormFunc } from '~/components/common/pages/scheduledTasks/modals/lib/config/createScheduledTask'
139
+
140
+ const props = defineProps<{
141
+ project: UI_T_Project
142
+ vmSettings: UI_I_VmSettings | null
143
+ nodes: UI_I_FileTreeNode[]
144
+ files: UI_I_FileTreeNode[]
145
+ networksTable: UI_I_NetworkTableItem[]
146
+ datastore: UI_I_DatastoreTableItem[]
147
+ errorValidationFields: UI_I_ErrorValidationField[]
148
+ readyCompleteTableInfo: UI_I_TableInfoItem[]
149
+ vmCpuHelpTextSecond: string
150
+ finishFunc: any
151
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
152
+ validateSendDataFunc: any
153
+ passthroughDevices: UI_I_PciDevice[]
154
+ mediatedDevices: UI_I_MediatedDevice[]
155
+ vmNameInWizard: string
156
+ capabilities?: UI_I_Capabilities
157
+ schedulerTask?: any // TODO надо interface переместить глобално
158
+ selectedVirtualMachine?: UI_I_Capabilities
159
+ }>()
160
+
161
+ const emits = defineEmits<{
162
+ (event: 'check-name', value: [string, (error: API_UI_I_Error) => void]): void
163
+ (event: 'get-storage', value: UI_I_TablePayload): void
164
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
165
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
166
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
167
+ (event: 'remove-error-by-title', value: string): void
168
+ (event: 'get-networks-table', value: UI_I_TablePayload): void
169
+ (event: 'get-pci-devices'): void
170
+ (event: 'hide'): void
171
+ }>()
172
+
173
+ const localization = computed<UI_I_Localization>(() => useLocal())
174
+
175
+ const isScheduledTasks = computed<boolean>(
176
+ () => props.schedulerTask.isSchedulerTask
177
+ )
178
+
179
+ const title = computed<string>(() => {
180
+ const { scheduleNewTasks, scheduleTaskEdit, cloneTemplate } =
181
+ localization.value.common
182
+
183
+ let result = cloneTemplate
184
+ if (isScheduledTasks.value) {
185
+ const schedulerMode = props.schedulerTask.editTask
186
+ ? scheduleTaskEdit
187
+ : scheduleNewTasks
188
+
189
+ result = `${schedulerMode} (${cloneTemplate})`
190
+ }
191
+
192
+ return result
193
+ })
194
+
195
+ const dynamicSteps = ref<I_DynamicSteps>(
196
+ getDynamicSteps(isScheduledTasks.value)
197
+ )
198
+
199
+ watch(
200
+ () => props.capabilities,
201
+ () => {
202
+ if (props.capabilities) mapCapabilities(props.capabilities)
203
+ },
204
+ { deep: true, immediate: true }
205
+ )
206
+
207
+ const wizard: Wizard = new Wizard(
208
+ stepsFunc(localization.value, isScheduledTasks.value),
209
+ stepsSchemeInitial(isScheduledTasks.value)
210
+ )
211
+ // TODO move to common
212
+ const newTaskForm = ref<UI_I_ScheduleNewTasksForm>(
213
+ useDeepCopy(scheduledTaskDefaultFormFunc())
214
+ )
215
+ watch(
216
+ newTaskForm,
217
+ (newValue: UI_I_ScheduleNewTasksForm) => {
218
+ if (isScheduledTasks.value) wizard.setDisabledNextButton(newValue.isValid)
219
+ },
220
+ { immediate: true, deep: true }
221
+ )
222
+
223
+ const selectedScheme = computed<number[]>(() => wizard.selectedScheme.value)
224
+
225
+ const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> => {
226
+ wizard.changeSteps(value, validationFunc, validateSendData)
227
+ }
228
+
229
+ const validationFunc = async (
230
+ value: UI_I_WizardStep[],
231
+ currentStep: UI_I_WizardStep,
232
+ nextStep: UI_I_WizardStep
233
+ ): Promise<UI_I_ValidationReturn> => {
234
+ let stepHasError = false
235
+ let stepShouldStop = {
236
+ ifOnCurrentStep: false,
237
+ ifFromAnyStep: false,
238
+ stoppageStepId: -1,
239
+ }
240
+
241
+ wizard.setLoader(true)
242
+ if (
243
+ wizard.isValidateForStep(
244
+ dynamicSteps.value.selectName,
245
+ currentStep.id,
246
+ nextStep.id
247
+ )
248
+ ) {
249
+ const nameValidation = await checkName(value)
250
+
251
+ value = nameValidation.newValue
252
+ stepHasError = stepHasError || nameValidation.stepHasError
253
+ } else if (
254
+ wizard.isValidateForStep(
255
+ dynamicSteps.value.selectStorage,
256
+ currentStep.id,
257
+ nextStep.id
258
+ )
259
+ ) {
260
+ const storageValidation = await checkStorage(value)
261
+
262
+ value = storageValidation.newValue
263
+
264
+ stepHasError = stepHasError || storageValidation.stepHasError
265
+ } else if (
266
+ wizard.isValidateForStep(
267
+ dynamicSteps.value.selectOptions,
268
+ currentStep.id,
269
+ nextStep.id
270
+ )
271
+ ) {
272
+ selectOptionsSubmit.value++
273
+ } else if (
274
+ wizard.isValidateForStep(
275
+ dynamicSteps.value.customizeHardware,
276
+ currentStep.id,
277
+ nextStep.id
278
+ )
279
+ ) {
280
+ const customizeHardwareValidation = await checkCustomizeHardware(value)
281
+
282
+ value = customizeHardwareValidation.newValue
283
+
284
+ stepHasError = stepHasError || customizeHardwareValidation.stepHasError
285
+ }
286
+ wizard.setLoader(false)
287
+
288
+ return {
289
+ newValue: value,
290
+ stepHasError,
291
+ stepShouldStop,
292
+ }
293
+ }
294
+ const checkName = async (
295
+ value: UI_I_WizardStep[]
296
+ ): Promise<UI_I_ValidationReturn> => {
297
+ let stepHasError = false
298
+
299
+ return new Promise((resolve) => {
300
+ nameFormSubmit.value = (isValid: boolean) => {
301
+ if (!isValid) {
302
+ stepHasError = wizard.setValidation(
303
+ dynamicSteps.value.selectName,
304
+ 'name',
305
+ {
306
+ fieldMessage: 'aaa',
307
+ alertMessage: 'aaa',
308
+ }
309
+ )
310
+ } else if (wizard.hasMessage(dynamicSteps.value.selectName, 'name')) {
311
+ value = wizard.removeValidation(
312
+ dynamicSteps.value.selectName,
313
+ 'name',
314
+ value
315
+ )
316
+ }
317
+
318
+ resolve({
319
+ stepHasError,
320
+ newValue: value,
321
+ })
322
+ nameFormSubmit.value = null
323
+ }
324
+ })
325
+ }
326
+ const checkStorage = async (
327
+ value: UI_I_WizardStep[]
328
+ ): Promise<UI_I_ValidationReturn> => {
329
+ let stepHasError = false
330
+
331
+ return new Promise((resolve) => {
332
+ storageSubmit.value = (isValid: boolean) => {
333
+ if (!isValid) {
334
+ stepHasError = wizard.setValidation(
335
+ dynamicSteps.value.selectStorage,
336
+ 'storage',
337
+ {
338
+ fieldMessage: 'aaa',
339
+ alertMessage: 'aaa',
340
+ }
341
+ )
342
+ } else if (
343
+ wizard.hasMessage(dynamicSteps.value.selectStorage, 'storage')
344
+ ) {
345
+ value = wizard.removeValidation(
346
+ dynamicSteps.value.selectStorage,
347
+ 'storage',
348
+ value
349
+ )
350
+ }
351
+
352
+ resolve({
353
+ stepHasError,
354
+ newValue: value,
355
+ })
356
+ storageSubmit.value = null
357
+ }
358
+ })
359
+ }
360
+ const checkCustomizeHardware = async (
361
+ value: UI_I_WizardStep[]
362
+ ): Promise<UI_I_ValidationReturn> => {
363
+ let stepHasError = false
364
+
365
+ return new Promise((resolve) => {
366
+ customizeHardwareSubmit.value = (isValid: boolean) => {
367
+ if (!isValid) {
368
+ stepHasError = wizard.setValidation(
369
+ dynamicSteps.value.customizeHardware,
370
+ 'customizeHardware',
371
+ {
372
+ fieldMessage: 'aaa',
373
+ alertMessage: 'aaa',
374
+ }
375
+ )
376
+ } else if (
377
+ wizard.hasMessage(
378
+ dynamicSteps.value.customizeHardware,
379
+ 'customizeHardware'
380
+ )
381
+ ) {
382
+ value = wizard.removeValidation(
383
+ dynamicSteps.value.customizeHardware,
384
+ 'customizeHardware',
385
+ value
386
+ )
387
+ }
388
+
389
+ resolve({
390
+ stepHasError,
391
+ newValue: value,
392
+ })
393
+ storageSubmit.value = null
394
+ }
395
+ })
396
+ }
397
+
398
+ const storageIdCash = ref<string | null>(null)
399
+ const onChangeName = (name: string): void => {
400
+ vmSettingsLocal.value && (vmSettingsLocal.value.name = name)
401
+ }
402
+ const onChangeStorage = (storage: UI_I_DatastoreTableItem | null): void => {
403
+ if (!storage) return
404
+
405
+ vmSettingsLocal.value && (vmSettingsLocal.value.storage = storage)
406
+ storageIdCash.value = storage.id
407
+ }
408
+ const customizeHardware = ref<UI_I_SendDataCustomizeHardware | null>(null)
409
+ const onChangeCustomizeHardware = (
410
+ data: UI_I_SendDataCustomizeHardware
411
+ ): void => {
412
+ customizeHardware.value = data
413
+ }
414
+
415
+ const virtualHardwareHardDisksLocal = computed<
416
+ UI_I_SendDataNewHardDisk[] | null
417
+ >(() => customizeHardware.value?.virtualHardware?.hardDisks || null)
418
+ const virtualHardwareNetworksLocal = computed<UI_I_SendDataNewNetwork[] | null>(
419
+ () => customizeHardware.value?.virtualHardware?.networks || null
420
+ )
421
+ const virtualHardwareCdDvdDrivesLocal = computed<
422
+ UI_I_SendDataNewCdDvdDrive[] | null
423
+ >(() => customizeHardware.value?.virtualHardware?.cdDvdDrives || null)
424
+
425
+ const virtualHardwareCpu = computed<UI_I_SendDataCpu | null>(
426
+ () => customizeHardware.value?.virtualHardware?.cpu || null
427
+ )
428
+ const virtualHardwareMemory = computed<UI_I_SendDataMemory | null>(
429
+ () => customizeHardware.value?.virtualHardware?.memory || null
430
+ )
431
+ const virtualHardwareHardDisks = ref<UI_I_SendDataNewHardDisk[] | null>(null)
432
+ const virtualHardwareCdDvdDrives = ref<UI_I_SendDataNewCdDvdDrive[] | null>(
433
+ null
434
+ )
435
+ const virtualHardwareNetworks = ref<UI_I_SendDataNewNetwork[] | null>(null)
436
+ const onChangeBootOrder = (data: UI_T_ChangeBootOrder): void => {
437
+ virtualHardwareHardDisks.value = data[0]
438
+ virtualHardwareCdDvdDrives.value = data[1]
439
+ virtualHardwareNetworks.value = data[2]
440
+ }
441
+
442
+ const isPowerOnByDefault = ref<boolean>(true)
443
+
444
+ watch(
445
+ () => props.vmNameInWizard,
446
+ (newValue) => {
447
+ vmSettingsLocal.value && (vmSettingsLocal.value.name = newValue)
448
+ }
449
+ )
450
+
451
+ const validateSendData = async (
452
+ value: UI_I_WizardStep[]
453
+ ): Promise<UI_I_ValidationReturn> => {
454
+ wizard.setLoader(true)
455
+ let stepHasError = false
456
+
457
+ const data = await props.validateSendDataFunc(
458
+ vmSettingsLocal.value,
459
+ virtualHardwareCpu.value,
460
+ virtualHardwareMemory.value,
461
+ customizeHardware.value,
462
+ virtualHardwareNetworks.value,
463
+ virtualHardwareHardDisks.value,
464
+ virtualHardwareCdDvdDrives.value,
465
+ isPowerOnByDefault.value,
466
+ localization.value
467
+ )
468
+
469
+ wizard.setLoader(false)
470
+ if (data) {
471
+ stepHasError = true
472
+ selectedNavItem.value = data[0]
473
+ }
474
+
475
+ return {
476
+ stepHasError,
477
+ newValue: value,
478
+ }
479
+ }
480
+ const onFinish = (): void => {
481
+ wizard.setLoader(false)
482
+ props
483
+ .finishFunc(
484
+ vmSettingsLocal.value,
485
+ virtualHardwareCpu.value,
486
+ virtualHardwareMemory.value,
487
+ customizeHardware.value,
488
+ virtualHardwareNetworks.value,
489
+ virtualHardwareHardDisks.value,
490
+ virtualHardwareCdDvdDrives.value,
491
+ isPowerOnByDefault.value,
492
+ localization.value,
493
+ false,
494
+ newTaskForm.value,
495
+ props.schedulerTask
496
+ )
497
+ .then(() => {
498
+ onHideModal()
499
+ wizard.setLoader(false)
500
+ })
501
+ }
502
+
503
+ const selectedNavItem = ref<UI_T_SelectedNavItem>(0)
504
+
505
+ const nameFormSubmit = ref<null | Function>(null)
506
+ const storageSubmit = ref<null | Function>(null)
507
+ const selectOptionsSubmit = ref<number>(0)
508
+ const customizeHardwareSubmit = ref<null | Function>(null)
509
+
510
+ const vmSettingsLocal = computed<UI_I_VmSettings | null>(() => props.vmSettings)
511
+ const vmName = ref<string>(vmSettingsLocal.value?.name || '')
512
+ watch(vmSettingsLocal, (newValue) => {
513
+ vmName.value = newValue?.name || ''
514
+ })
515
+
516
+ const onHideModal = (): void => {
517
+ emits('hide')
518
+ }
519
+ </script>
520
+
521
+ <style scoped lang="scss">
522
+ :deep(.has-solid.close-icon.clr-icon) {
523
+ width: 20px;
524
+ top: 0;
525
+ }
526
+ .vm-context {
527
+ padding: 16px 15px 10px 10px;
528
+ height: 100%;
529
+ display: flex;
530
+ flex-direction: column;
531
+
532
+ .context-title-wrap {
533
+ padding-bottom: 3px;
534
+ border-bottom: 1px solid #a6a6a6;
535
+
536
+ h4 {
537
+ font-weight: 700;
538
+ font-size: 13px;
539
+ color: var(--vm-context-title);
540
+ }
541
+ p {
542
+ font-weight: 400;
543
+ font-size: 13px;
544
+ color: var(--vm-context-sub-title);
545
+ }
546
+ }
547
+
548
+ .finish-block {
549
+ padding: 18px 24px 24px 24px;
550
+
551
+ .add-hosts-ready-to-complete-mt-12 {
552
+ margin-top: 12px;
553
+
554
+ .add-hosts-ready-to-complete-bold {
555
+ line-height: 18px;
556
+ font-weight: 700;
557
+ }
558
+ }
559
+ }
560
+
561
+ .vm-hardware-version {
562
+ align-self: flex-end;
563
+ margin-top: auto;
564
+ }
565
+ }
566
+
567
+ :deep(.modal .modal-dialog .modal-content .modal-footer) {
568
+ flex: unset;
569
+ height: unset;
570
+ min-height: unset;
571
+ }
572
+ :deep(.wizard-modal-titlebar h3) {
573
+ color: #000;
574
+ font-size: 24px;
575
+ font-weight: 200;
576
+ line-height: 27px;
577
+ margin: 0;
578
+ padding: 0;
579
+ }
580
+ :deep(.clr-wizard-stepnav-item) {
581
+ padding-left: 0;
582
+ }
583
+ :deep(.clr-wizard-stepnav
584
+ .clr-wizard-stepnav-item
585
+ button
586
+ .clr-wizard-stepnav-link-title) {
587
+ width: 189px;
588
+ font-weight: 700;
589
+ font-size: 13px;
590
+ }
591
+
592
+ #vm-wizard-notification {
593
+ h3 {
594
+ color: var(--global-font-color7);
595
+ margin-top: 6px;
596
+ }
597
+ p {
598
+ color: var(--global-font-color6);
599
+ line-height: 16px;
600
+ }
601
+ }
602
+
603
+ .power-on-by-default-wrap {
604
+ display: flex;
605
+ align-items: center;
606
+
607
+ input {
608
+ margin-right: 6px;
609
+ }
610
+ }
611
+
612
+ .new-task-form {
613
+ padding: 0 25px 0 5px;
614
+ }
615
+ </style>
616
+
617
+ <style>
618
+ :root {
619
+ --vm-context-title: #333;
620
+ --vm-context-sub-title: #000;
621
+ }
622
+ :root.dark-theme {
623
+ --vm-context-title: #adbbc4;
624
+ --vm-context-sub-title: #adbbc4;
625
+ }
626
+ </style>