bfg-common 1.5.164 → 1.5.166

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 (131) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/assets/localization/local_be.json +4 -3
  7. package/assets/localization/local_en.json +5 -4
  8. package/assets/localization/local_hy.json +4 -3
  9. package/assets/localization/local_kk.json +4 -3
  10. package/assets/localization/local_ru.json +5 -4
  11. package/assets/localization/local_zh.json +2 -1
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/modal/Modal.vue +0 -1
  14. package/components/atoms/perPage/PerPage.vue +58 -58
  15. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  16. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  17. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  18. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  19. package/components/common/context/lib/models/interfaces.ts +31 -31
  20. package/components/common/context/recursion/RecursionNew.vue +238 -238
  21. package/components/common/diagramMain/DiagramMain.vue +897 -897
  22. package/components/common/diagramMain/Header.vue +214 -214
  23. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  24. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  25. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  26. package/components/common/pages/home/headline/Headline.vue +45 -45
  27. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  28. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  29. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  30. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  31. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  32. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  33. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  34. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  35. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  36. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  37. package/components/common/pages/packages/Packages.vue +208 -208
  38. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  39. package/components/common/readyToComplete/New.vue +66 -66
  40. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  41. package/components/common/recursionTree/RecursionTree.vue +223 -223
  42. package/components/common/select/button/ButtonDropdown.vue +108 -108
  43. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  44. package/components/common/vm/actions/add/Add.vue +785 -785
  45. package/components/common/vm/actions/add/New.vue +556 -556
  46. package/components/common/vm/actions/add/Old.vue +371 -371
  47. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  48. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  49. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  50. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  51. package/components/common/vm/actions/clone/Clone.vue +810 -810
  52. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  53. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +626 -626
  54. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +375 -375
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +149 -149
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +74 -74
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  85. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  86. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  87. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  88. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  89. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  90. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  91. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  92. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  93. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  99. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  100. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  101. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +134 -134
  102. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  103. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  104. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  105. package/components/common/vm/actions/common/select/createType/New.vue +84 -84
  106. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  107. package/components/common/vm/actions/common/select/name/Name.vue +167 -167
  108. package/components/common/vm/actions/common/select/os/New.vue +122 -122
  109. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  110. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  111. package/components/common/vm/actions/common/select/storage/Storage.vue +129 -129
  112. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +326 -326
  113. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  114. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  115. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  116. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  117. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  118. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  119. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +137 -137
  120. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  121. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  122. package/composables/productNameLocal.ts +30 -30
  123. package/composables/useAppVersion.ts +21 -21
  124. package/lib/models/store/vm/interfaces.ts +142 -0
  125. package/package.json +1 -1
  126. package/plugins/date.ts +233 -233
  127. package/public/spice-console/lib/images/bitmap.js +203 -203
  128. package/public/spice-console/network/spicechannel.js +383 -383
  129. package/store/main/mutations.ts +7 -7
  130. package/store/main/state.ts +7 -7
  131. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,556 +1,556 @@
1
- <template>
2
- <ui-wizard
3
- show
4
- :steps="props.wizard.steps"
5
- :selected-scheme="props.selectedScheme"
6
- :title="localization.common.newVirtualMachine2"
7
- :texts="texts"
8
- @change-steps="emits('change-steps', $event)"
9
- @hide="emits('hide')"
10
- @submit="emits('finish')"
11
- >
12
- <template #content="{ selectedStep }">
13
- <!-- 41 = 25 (subtitle height) + 16 (margin-bottom)-->
14
- <ui-wizard-block
15
- v-if="selectedStep.id === dynamicSteps.creationType"
16
- :sub-title-height="41"
17
- >
18
- <template #subTitle>
19
- <div class="subtitle-block">
20
- <ui-wizard-subtitle
21
- :sub-title="localization.vmWizard.howWouldYouLikeCreateVm"
22
- />
23
- </div>
24
- </template>
25
- <template #content>
26
- <common-vm-actions-common-select-create-type
27
- v-model="selectedCreateType"
28
- :import-from-v-m-warev-sphere="props.importFromVMWarevSphere"
29
- />
30
- </template>
31
- </ui-wizard-block>
32
- <ui-wizard-block v-if="selectedStep.id === dynamicSteps.selectTemplate">
33
- <template #content>
34
- <common-vm-actions-common-select-template
35
- :template-submit="props.templateSubmit"
36
- :templates-tree="props.templatesTree"
37
- @submit="emits('change-template', $event)"
38
- />
39
- </template>
40
- </ui-wizard-block>
41
- <!-- 41 = 25 (subtitle height) + 16 (margin-bottom)-->
42
- <ui-wizard-block
43
- v-if="
44
- selectedStep.id === dynamicSteps.selectName ||
45
- selectedStep.id === dynamicSteps.selectNameFolder
46
- "
47
- :sub-title-height="heightName"
48
- >
49
- <template #subTitle>
50
- <div ref="subTitleBlockName" class="subtitle-block">
51
- <div id="name-alert-wrapper"></div>
52
- <ui-wizard-subtitle
53
- :sub-title="
54
- localization.vmWizard.specifyUniqueNameAndTargetLocationForVm
55
- "
56
- />
57
- </div>
58
- </template>
59
- <template #content>
60
- <common-vm-actions-common-select-name
61
- :show="
62
- selectedStep.id === dynamicSteps.selectName ||
63
- selectedStep.id === dynamicSteps.selectNameFolder
64
- "
65
- :name-form-submit="props.nameFormSubmit"
66
- :project="props.project"
67
- :data-center="props.dataCenter"
68
- @submit="emits('change-name', $event)"
69
- @check-name="emits('check-name', $event)"
70
- />
71
- </template>
72
- </ui-wizard-block>
73
- <ui-wizard-block
74
- v-if="
75
- props.isSphere &&
76
- selectedStep.id === dynamicSteps.selectComputeResource
77
- "
78
- :sub-title-height="heightComputeResource"
79
- >
80
- <template #subTitle>
81
- <div ref="subTitleBlockComputeResource" class="subtitle-block">
82
- <div id="compute-resource-alert-wrapper"></div>
83
- <ui-wizard-subtitle
84
- :sub-title="
85
- localization.vmWizard
86
- .selectDestinationComputeResourceForThisOperation
87
- "
88
- />
89
- </div>
90
- </template>
91
- <template #content>
92
- <common-vm-actions-common-select-compute-resource
93
- v-model="vmForm.computeResource"
94
- :compute-resource-submit="props.computeResourceSubmit"
95
- :data-center="vmForm.dataCenter"
96
- :compute-resource="props.computeResource"
97
- :compute-resource-tree="props.computeResourceTree"
98
- @submit="emits('change-compute-resource', $event)"
99
- @select-compute-resource-tree="
100
- emits('select-compute-resource-tree', $event)
101
- "
102
- @get-compute-resource-tree="
103
- emits('get-compute-resource-tree', $event)
104
- "
105
- @show-compute-resource-tree="
106
- emits('show-compute-resource-tree', $event)
107
- "
108
- @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
109
- />
110
- </template>
111
- </ui-wizard-block>
112
- <ui-wizard-block
113
- v-if="selectedStep.id === dynamicSteps.selectStorage"
114
- :sub-title-height="heightStorage"
115
- >
116
- <template #subTitle>
117
- <div ref="subTitleBlockStorage" class="subtitle-block">
118
- <div id="storage-alert-wrapper"></div>
119
- <ui-wizard-subtitle
120
- :sub-title="
121
- localization.vmWizard.selectStorageForConfigurationDiskFiles
122
- "
123
- />
124
- </div>
125
- </template>
126
- <template #content>
127
- <common-vm-actions-common-select-storage
128
- :storage-submit="props.storageSubmit"
129
- :datastore="props.datastore"
130
- :get-datastore-table-func="props.getDatastoreTableFunc"
131
- :storage="props.vmtSettings?.storage"
132
- @submit="emits('change-storage', $event)"
133
- />
134
- </template>
135
- </ui-wizard-block>
136
- <ui-wizard-block v-if="selectedStep.id === dynamicSteps.selectOptions">
137
- <template #content>
138
- <common-vm-actions-common-select-options
139
- @change="emits('change-select-options', $event)"
140
- />
141
- </template>
142
- </ui-wizard-block>
143
- <ui-wizard-block
144
- v-if="selectedStep.id === dynamicSteps.compatibility"
145
- :sub-title-height="heightCompatibility"
146
- >
147
- <template #subTitle>
148
- <div ref="subTitleBlockCompatibility" class="subtitle-block">
149
- <div id="compatibility-alert-wrapper"></div>
150
- <ui-wizard-subtitle
151
- :sub-title="localization.vmWizard.compatibilitySubTitle"
152
- />
153
- </div>
154
- </template>
155
- <template #content>
156
- <common-vm-actions-common-select-compatibility
157
- :options="props.compatibility"
158
- :error-validation-fields="props.errorValidationFields"
159
- @change="emits('change-compatibility', $event)"
160
- @remove-error-by-title="emits('remove-error-by-title', $event)"
161
- />
162
- </template>
163
- </ui-wizard-block>
164
- <ui-wizard-block
165
- v-if="
166
- selectedStep.id === dynamicSteps.selectGuestOSMachineType ||
167
- selectedStep.id === dynamicSteps.selectGuestOS
168
- "
169
- :sub-title-height="heightOs"
170
- >
171
- <template #subTitle>
172
- <div ref="subTitleBlockOs" class="subtitle-block">
173
- <div id="compatibility-alert-wrapper"></div>
174
- <ui-wizard-subtitle
175
- :sub-title="localization.common.chooseGuestOSInstalledVM"
176
- />
177
- </div>
178
- </template>
179
- <template #content>
180
- <div class="select-block-wrap overflow-auto h-full flex flex-col">
181
- <common-vm-actions-common-select-os
182
- v-model:machine-type="vmForm.guestMachineType"
183
- v-model:guest-os-family="vmForm.guestOsFamily"
184
- v-model:guest-os-version="vmForm.guestOsVersion"
185
- :families-options="props.guestOsFamilies"
186
- :versions-options="props.guestOsVersions"
187
- :machine-types-options="props.machineTypes"
188
- :error-validation-fields="props.errorValidationFields"
189
- @remove-error-by-title="emits('remove-error-by-title', $event)"
190
- />
191
- <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-4">
192
- <span class="vm-hardware-version">{{
193
- props.compatibilityInfo
194
- }}</span>
195
- </div>
196
- </div>
197
- </template>
198
- </ui-wizard-block>
199
- <ui-wizard-block
200
- v-if="selectedStep.id === dynamicSteps.customizeHardware"
201
- >
202
- <template #content>
203
- <div
204
- class="select-block-wrap overflow-auto h-full flex flex-col pr-8"
205
- >
206
- <common-vm-actions-common-customize-hardware
207
- :project="props.project"
208
- :vm-name="vmForm.name"
209
- :guest-machine-type="vmForm.guestMachineType"
210
- :guest-os-family="vmForm.guestOsFamily"
211
- :guest-os-version="vmForm.guestOsVersion"
212
- :storage="vmForm.storage"
213
- :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
214
- :cd-dvd-drives-for-boot-options="
215
- props.virtualHardwareCdDvdDrivesLocal
216
- "
217
- :networks-for-boot-options="props.virtualHardwareNetworksLocal"
218
- :cd-dvd-drives="props.virtualHardwareCdDvdDrivesLocal"
219
- :customize-hardware-submit="props.customizeHardwareSubmit"
220
- :max-cpus="props.maxCpus"
221
- :max-memory="props.maxMemory"
222
- :cpu-models="props.cpuModels"
223
- :selected-nav-item="props.selectedNavItem"
224
- :nodes="props.nodes"
225
- :files="props.files"
226
- :networks-table="props.networksTable"
227
- :error-validation-fields="props.errorValidationFields"
228
- :get-datastore-table-func="props.getDatastoreTableFunc"
229
- :datastore="props.datastore"
230
- :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
231
- :passthrough-devices="props.passthroughDevices"
232
- :mediated-devices="props.mediatedDevices"
233
- :compute-resource="vmForm.computeResource"
234
- @change-boot-order="emits('change-boot-order', $event)"
235
- @send-data="emits('change-customize-hardware', $event)"
236
- @get-storage="emits('get-storage', $event)"
237
- @get-folders-or-files="emits('get-folders-or-files', $event)"
238
- @get-active-device-child="
239
- emits('get-active-device-child', $event)
240
- "
241
- @show-datastore-child="emits('show-datastore-child', $event)"
242
- @remove-error-by-title="emits('remove-error-by-title', $event)"
243
- @get-networks-table="emits('get-networks-table', $event)"
244
- @get-pci-devices="emits('get-pci-devices')"
245
- />
246
- <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-4">
247
- <span class="vm-hardware-version">{{
248
- props.compatibilityInfo
249
- }}</span>
250
- </div>
251
- </div>
252
- </template>
253
- </ui-wizard-block>
254
- <ui-wizard-block
255
- v-if="
256
- selectedStep.id === dynamicSteps.customizeHardwareTemplate &&
257
- props.vmtSettings
258
- "
259
- >
260
- <template #content>
261
- <div
262
- class="select-block-wrap overflow-auto h-full flex flex-col pr-8"
263
- >
264
- <common-vm-actions-common-customize-hardware
265
- :project="props.project"
266
- :vm-name="vmForm.name"
267
- :guest-machine-type="vmForm.guestMachineType"
268
- :guest-os-family="vmForm.guestOsFamily"
269
- :guest-os-version="vmForm.guestOsVersion"
270
- :storage="vmForm.storage"
271
- :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
272
- :cd-dvd-drives-for-boot-options="
273
- props.virtualHardwareCdDvdDrivesLocal
274
- "
275
- :networks-for-boot-options="props.virtualHardwareNetworksLocal"
276
- :cd-dvd-drives="props.vmtSettings.cdDvdDrives || []"
277
- :hard-disks="props.vmtSettings.hardDisks || []"
278
- :networks="props.vmtSettings.networks || []"
279
- :customize-hardware-submit="props.customizeHardwareSubmit"
280
- :max-cpus="props.maxCpus"
281
- :max-memory="props.maxMemory"
282
- :cpu-models="props.cpuModels"
283
- :cpu="props.vmtSettings.cpu"
284
- :memory="props.vmtSettings.memory"
285
- :video-card="props.vmtSettings.videoCard"
286
- :usb-controller="props.vmtSettings.usbController"
287
- :pci-devices="props.vmtSettings.pciDevices"
288
- :hard-disks-for-edit="props.vmtSettings.hardDisks || []"
289
- :options="props.vmtSettings.options"
290
- :selected-nav-item="props.selectedNavItem"
291
- :nodes="props.nodes"
292
- :files="props.files"
293
- :networks-table="props.networksTable"
294
- :error-validation-fields="props.errorValidationFields"
295
- :get-datastore-table-func="props.getDatastoreTableFunc"
296
- :datastore="props.datastore"
297
- :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
298
- :passthrough-devices="props.passthroughDevices"
299
- :mediated-devices="props.mediatedDevices"
300
- :compute-resource="vmForm.computeResource"
301
- is-clone
302
- @change-boot-order="emits('change-boot-order', $event)"
303
- @send-data="emits('change-customize-hardware', $event)"
304
- @get-storage="emits('get-storage', $event)"
305
- @get-folders-or-files="emits('get-folders-or-files', $event)"
306
- @get-active-device-child="
307
- emits('get-active-device-child', $event)
308
- "
309
- @show-datastore-child="emits('show-datastore-child', $event)"
310
- @remove-error-by-title="emits('remove-error-by-title', $event)"
311
- @get-networks-table="emits('get-networks-table', $event)"
312
- @get-pci-devices="emits('get-pci-devices')"
313
- />
314
- <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-4">
315
- <span class="vm-hardware-version">{{
316
- props.compatibilityInfo
317
- }}</span>
318
- </div>
319
- </div>
320
- </template>
321
- </ui-wizard-block>
322
- <ui-wizard-block v-if="selectedStep.id === dynamicSteps.readyComplete">
323
- <template #content>
324
- <div
325
- class="select-block-wrap overflow-auto h-full flex flex-col pr-8"
326
- >
327
- <div v-if="props.isShowPowerOn" class="power-on-by-default-wrap">
328
- <ui-checkbox
329
- v-model="isPowerOnByDefault"
330
- test-id="power-on-by-default"
331
- :label-text="localization.common.powerOnByDefault"
332
- />
333
- </div>
334
-
335
- <div class="divider my-4"></div>
336
-
337
- <common-ready-to-complete
338
- v-if="selectedStep.id === dynamicSteps.readyComplete"
339
- :data="props.readyCompleteTableInfo"
340
- />
341
- <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-4">
342
- <span class="vm-hardware-version">{{
343
- props.compatibilityInfo
344
- }}</span>
345
- </div>
346
- </div>
347
- </template>
348
- </ui-wizard-block>
349
- </template>
350
- </ui-wizard>
351
- </template>
352
-
353
- <script setup lang="ts">
354
- import { useElementSize } from '@vueuse/core'
355
- import type { UI_I_WizardTexts } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
356
- import type {
357
- UI_I_Localization,
358
- UI_I_ArbitraryObject,
359
- } from '~/lib/models/interfaces'
360
- import type { UI_T_Project } from '~/lib/models/types'
361
- import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
362
- import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
363
- import type {
364
- UI_I_DatastoreTableItem,
365
- UI_I_FolderOrFileTreePayload,
366
- } from '~/lib/models/store/storage/interfaces'
367
- import type {
368
- API_UI_I_Error,
369
- UI_I_ErrorValidationField,
370
- } from '~/lib/models/store/interfaces'
371
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
372
- import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
373
- import type {
374
- // UI_T_AddVmFinishFunc,
375
- UI_T_SelectedNavItem,
376
- } from '~/components/common/vm/actions/common/lib/models/types'
377
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
378
- import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
379
- import type {
380
- // UI_I_Capabilities,
381
- UI_I_VmForm,
382
- } from '~/components/common/vm/actions/common/lib/models/interfaces'
383
- import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
384
- import type {
385
- UI_I_SendDataNewCdDvdDrive,
386
- UI_I_SendDataNewHardDisk,
387
- UI_I_SendDataNewNetwork,
388
- } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
389
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
390
- import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
391
- import type {
392
- UI_I_MediatedDevice,
393
- UI_I_PciDevice,
394
- UI_I_VmSettings,
395
- } from '~/lib/models/store/vm/interfaces'
396
- import { dynamicSteps } from '~/components/common/vm/actions/add/lib/config/steps'
397
- import Wizard from '~/components/atoms/wizard/lib/utils/utils'
398
-
399
- const vmForm = defineModel<UI_I_VmForm>('vmForm', {
400
- required: true,
401
- })
402
- const selectedCreateType = defineModel<string>('selectedCreateType', {
403
- required: true,
404
- })
405
- const isPowerOnByDefault = defineModel<boolean>('isPowerOnByDefault', {
406
- required: true,
407
- })
408
-
409
- const props = defineProps<{
410
- project: UI_T_Project
411
- nodes: UI_I_FileTreeNode[]
412
- files: UI_I_FileTreeNode[]
413
- networksTable: UI_I_NetworkTableItem[]
414
- datastore: UI_I_DatastoreTableItem[]
415
- errorValidationFields: UI_I_ErrorValidationField[]
416
- readyCompleteTableInfo: UI_I_TableInfoItem[]
417
- vmCpuHelpTextSecond: string
418
- importFromVMWarevSphere: string
419
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
420
- passthroughDevices: UI_I_PciDevice[]
421
- mediatedDevices: UI_I_MediatedDevice[]
422
- templatesTree: UI_I_TreeNode[]
423
- wizard: Wizard
424
- selectedScheme: number[]
425
- templateSubmit: null | Function
426
- nameFormSubmit: null | Function
427
- storageSubmit: null | Function
428
- customizeHardwareSubmit: null | Function
429
- isSphere: boolean
430
- compatibility: UI_I_OptionItem[]
431
- guestOsFamilies: UI_I_OptionItem[]
432
- guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
433
- machineTypes: UI_I_OptionItem[]
434
- virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
435
- virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
436
- virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
437
- maxCpus: number
438
- maxMemory: number
439
- cpuModels: UI_I_OptionItem[]
440
- selectedNavItem: UI_T_SelectedNavItem
441
- compatibilityInfo: string
442
- isShowPowerOn: boolean
443
- computeResourceSubmit: null | Function // для сферы
444
- dataCenter?: UI_I_TreeNode // для сферы
445
- computeResource?: UI_I_TreeNode // для сферы
446
- computeResourceTree?: UI_I_TreeNode[] // для сферы
447
- vmtSettings?: UI_I_VmSettings | null // для шаблонов
448
- }>()
449
-
450
- const emits = defineEmits<{
451
- (event: 'check-name', value: [string, (error: API_UI_I_Error) => void]): void
452
- (event: 'get-storage', value: UI_I_TablePayload): void
453
- (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
454
- (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
455
- (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
456
- (event: 'remove-error-by-title', value: string): void
457
- (event: 'get-networks-table', value: UI_I_TablePayload): void
458
- (event: 'get-pci-devices'): void
459
- (event: 'change-steps', value: UI_I_WizardStep[]): void
460
- (event: 'finish'): void
461
- (event: 'change-template', value: UI_I_TreeNode): void
462
- (event: 'change-name', value: [string, UI_I_TreeNode | null]): void
463
- (
464
- event: 'check-name',
465
- value: [[string, UI_I_TreeNode | null], (error: any) => void]
466
- ): void
467
- (event: 'change-storage', value: UI_I_DatastoreTableItem | null): void
468
- (event: 'change-select-options', value: string[]): void
469
- (event: 'change-compatibility', value: UI_I_OptionItem): void
470
- (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
471
- (
472
- event: 'change-customize-hardware',
473
- value: UI_I_SendDataCustomizeHardware
474
- ): void
475
- (event: 'hide'): void
476
- (event: 'clear-compute-resource-tree'): void // для сферы
477
- (event: 'change-compute-resource', value: UI_I_TreeNode): void // для сферы
478
- (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void // для сферы
479
- (
480
- event: 'get-compute-resource-tree',
481
- value: { id: string | number; cb: () => void }
482
- ): void // для сферы
483
- (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void // для сферы
484
- }>()
485
-
486
- const localization = computed<UI_I_Localization>(() => useLocal())
487
-
488
- const texts = computed<UI_I_WizardTexts>(() => ({
489
- cancel: localization.value.common.cancel,
490
- back: localization.value.common.backCap,
491
- processing: localization.value.common.processing,
492
- next: localization.value.common.next,
493
- finish: localization.value.common.create,
494
- incompleteTitle: localization.value.common.incompleteProcess,
495
- incompleteMessage: localization.value.common.incompleteProcessMessage,
496
- incompleteCancel: localization.value.common.cancel,
497
- incompleteLeave: localization.value.common.leave,
498
- }))
499
-
500
- const subTitleBlockName = ref<HTMLElement | null>(null)
501
- const { height: heightName } = useElementSize(subTitleBlockName)
502
- const subTitleBlockComputeResource = ref<HTMLElement | null>(null)
503
- const { height: heightComputeResource } = useElementSize(
504
- subTitleBlockComputeResource
505
- )
506
- const subTitleBlockStorage = ref<HTMLElement | null>(null)
507
- const { height: heightStorage } = useElementSize(subTitleBlockStorage)
508
- const subTitleBlockCompatibility = ref<HTMLElement | null>(null)
509
- const { height: heightCompatibility } = useElementSize(
510
- subTitleBlockCompatibility
511
- )
512
- const subTitleBlockOs = ref<HTMLElement | null>(null)
513
- const { height: heightOs } = useElementSize(subTitleBlockOs)
514
- </script>
515
-
516
- <style>
517
- :root {
518
- --ready-to-complate-run-bg-color: #e9ebed66;
519
- --ready-to-complate-run-border-color: #e9ebed;
520
- }
521
- :root.dark-theme {
522
- --ready-to-complate-run-bg-color: #e9ebed0f;
523
- --ready-to-complate-run-border-color: #e9ebed1f;
524
- }
525
- </style>
526
- <style scoped lang="scss">
527
- .subtitle-block {
528
- display: flex;
529
- flex-direction: column;
530
- row-gap: 16px;
531
- border-bottom: 1px solid var(--wizard-line);
532
- padding-bottom: 12px;
533
- //margin-bottom: 16px;
534
- }
535
- .select-block-wrap {
536
- .vm-hardware-version-wrap {
537
- align-items: flex-end;
538
-
539
- .vm-hardware-version {
540
- font-size: 13px;
541
- color: #9da6ad; // for light and dark
542
- }
543
- }
544
- }
545
-
546
- .power-on-by-default-wrap {
547
- padding: 12px;
548
- border-radius: 8px;
549
- background-color: var(--ready-to-complate-run-bg-color);
550
- }
551
- .divider {
552
- width: 100%;
553
- min-height: 1px;
554
- background-color: var(--ready-to-complate-run-border-color);
555
- }
556
- </style>
1
+ <template>
2
+ <ui-wizard
3
+ show
4
+ :steps="props.wizard.steps"
5
+ :selected-scheme="props.selectedScheme"
6
+ :title="localization.common.newVirtualMachine2"
7
+ :texts="texts"
8
+ @change-steps="emits('change-steps', $event)"
9
+ @hide="emits('hide')"
10
+ @submit="emits('finish')"
11
+ >
12
+ <template #content="{ selectedStep }">
13
+ <!-- 41 = 25 (subtitle height) + 16 (margin-bottom)-->
14
+ <ui-wizard-block
15
+ v-if="selectedStep.id === dynamicSteps.creationType"
16
+ :sub-title-height="41"
17
+ >
18
+ <template #subTitle>
19
+ <div class="subtitle-block">
20
+ <ui-wizard-subtitle
21
+ :sub-title="localization.vmWizard.howWouldYouLikeCreateVm"
22
+ />
23
+ </div>
24
+ </template>
25
+ <template #content>
26
+ <common-vm-actions-common-select-create-type
27
+ v-model="selectedCreateType"
28
+ :import-from-v-m-warev-sphere="props.importFromVMWarevSphere"
29
+ />
30
+ </template>
31
+ </ui-wizard-block>
32
+ <ui-wizard-block v-if="selectedStep.id === dynamicSteps.selectTemplate">
33
+ <template #content>
34
+ <common-vm-actions-common-select-template
35
+ :template-submit="props.templateSubmit"
36
+ :templates-tree="props.templatesTree"
37
+ @submit="emits('change-template', $event)"
38
+ />
39
+ </template>
40
+ </ui-wizard-block>
41
+ <!-- 41 = 25 (subtitle height) + 16 (margin-bottom)-->
42
+ <ui-wizard-block
43
+ v-if="
44
+ selectedStep.id === dynamicSteps.selectName ||
45
+ selectedStep.id === dynamicSteps.selectNameFolder
46
+ "
47
+ :sub-title-height="heightName"
48
+ >
49
+ <template #subTitle>
50
+ <div ref="subTitleBlockName" class="subtitle-block">
51
+ <div id="name-alert-wrapper"></div>
52
+ <ui-wizard-subtitle
53
+ :sub-title="
54
+ localization.vmWizard.specifyUniqueNameAndTargetLocationForVm
55
+ "
56
+ />
57
+ </div>
58
+ </template>
59
+ <template #content>
60
+ <common-vm-actions-common-select-name
61
+ :show="
62
+ selectedStep.id === dynamicSteps.selectName ||
63
+ selectedStep.id === dynamicSteps.selectNameFolder
64
+ "
65
+ :name-form-submit="props.nameFormSubmit"
66
+ :project="props.project"
67
+ :data-center="props.dataCenter"
68
+ @submit="emits('change-name', $event)"
69
+ @check-name="emits('check-name', $event)"
70
+ />
71
+ </template>
72
+ </ui-wizard-block>
73
+ <ui-wizard-block
74
+ v-if="
75
+ props.isSphere &&
76
+ selectedStep.id === dynamicSteps.selectComputeResource
77
+ "
78
+ :sub-title-height="heightComputeResource"
79
+ >
80
+ <template #subTitle>
81
+ <div ref="subTitleBlockComputeResource" class="subtitle-block">
82
+ <div id="compute-resource-alert-wrapper"></div>
83
+ <ui-wizard-subtitle
84
+ :sub-title="
85
+ localization.vmWizard
86
+ .selectDestinationComputeResourceForThisOperation
87
+ "
88
+ />
89
+ </div>
90
+ </template>
91
+ <template #content>
92
+ <common-vm-actions-common-select-compute-resource
93
+ v-model="vmForm.computeResource"
94
+ :compute-resource-submit="props.computeResourceSubmit"
95
+ :data-center="vmForm.dataCenter"
96
+ :compute-resource="props.computeResource"
97
+ :compute-resource-tree="props.computeResourceTree"
98
+ @submit="emits('change-compute-resource', $event)"
99
+ @select-compute-resource-tree="
100
+ emits('select-compute-resource-tree', $event)
101
+ "
102
+ @get-compute-resource-tree="
103
+ emits('get-compute-resource-tree', $event)
104
+ "
105
+ @show-compute-resource-tree="
106
+ emits('show-compute-resource-tree', $event)
107
+ "
108
+ @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
109
+ />
110
+ </template>
111
+ </ui-wizard-block>
112
+ <ui-wizard-block
113
+ v-if="selectedStep.id === dynamicSteps.selectStorage"
114
+ :sub-title-height="heightStorage"
115
+ >
116
+ <template #subTitle>
117
+ <div ref="subTitleBlockStorage" class="subtitle-block">
118
+ <div id="storage-alert-wrapper"></div>
119
+ <ui-wizard-subtitle
120
+ :sub-title="
121
+ localization.vmWizard.selectStorageForConfigurationDiskFiles
122
+ "
123
+ />
124
+ </div>
125
+ </template>
126
+ <template #content>
127
+ <common-vm-actions-common-select-storage
128
+ :storage-submit="props.storageSubmit"
129
+ :datastore="props.datastore"
130
+ :get-datastore-table-func="props.getDatastoreTableFunc"
131
+ :storage="props.vmtSettings?.storage"
132
+ @submit="emits('change-storage', $event)"
133
+ />
134
+ </template>
135
+ </ui-wizard-block>
136
+ <ui-wizard-block v-if="selectedStep.id === dynamicSteps.selectOptions">
137
+ <template #content>
138
+ <common-vm-actions-common-select-options
139
+ @change="emits('change-select-options', $event)"
140
+ />
141
+ </template>
142
+ </ui-wizard-block>
143
+ <ui-wizard-block
144
+ v-if="selectedStep.id === dynamicSteps.compatibility"
145
+ :sub-title-height="heightCompatibility"
146
+ >
147
+ <template #subTitle>
148
+ <div ref="subTitleBlockCompatibility" class="subtitle-block">
149
+ <div id="compatibility-alert-wrapper"></div>
150
+ <ui-wizard-subtitle
151
+ :sub-title="localization.vmWizard.compatibilitySubTitle"
152
+ />
153
+ </div>
154
+ </template>
155
+ <template #content>
156
+ <common-vm-actions-common-select-compatibility
157
+ :options="props.compatibility"
158
+ :error-validation-fields="props.errorValidationFields"
159
+ @change="emits('change-compatibility', $event)"
160
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
161
+ />
162
+ </template>
163
+ </ui-wizard-block>
164
+ <ui-wizard-block
165
+ v-if="
166
+ selectedStep.id === dynamicSteps.selectGuestOSMachineType ||
167
+ selectedStep.id === dynamicSteps.selectGuestOS
168
+ "
169
+ :sub-title-height="heightOs"
170
+ >
171
+ <template #subTitle>
172
+ <div ref="subTitleBlockOs" class="subtitle-block">
173
+ <div id="compatibility-alert-wrapper"></div>
174
+ <ui-wizard-subtitle
175
+ :sub-title="localization.common.chooseGuestOSInstalledVM"
176
+ />
177
+ </div>
178
+ </template>
179
+ <template #content>
180
+ <div class="select-block-wrap overflow-auto h-full flex flex-col">
181
+ <common-vm-actions-common-select-os
182
+ v-model:machine-type="vmForm.guestMachineType"
183
+ v-model:guest-os-family="vmForm.guestOsFamily"
184
+ v-model:guest-os-version="vmForm.guestOsVersion"
185
+ :families-options="props.guestOsFamilies"
186
+ :versions-options="props.guestOsVersions"
187
+ :machine-types-options="props.machineTypes"
188
+ :error-validation-fields="props.errorValidationFields"
189
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
190
+ />
191
+ <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-4">
192
+ <span class="vm-hardware-version">{{
193
+ props.compatibilityInfo
194
+ }}</span>
195
+ </div>
196
+ </div>
197
+ </template>
198
+ </ui-wizard-block>
199
+ <ui-wizard-block
200
+ v-if="selectedStep.id === dynamicSteps.customizeHardware"
201
+ >
202
+ <template #content>
203
+ <div
204
+ class="select-block-wrap overflow-auto h-full flex flex-col pr-8"
205
+ >
206
+ <common-vm-actions-common-customize-hardware
207
+ :project="props.project"
208
+ :vm-name="vmForm.name"
209
+ :guest-machine-type="vmForm.guestMachineType"
210
+ :guest-os-family="vmForm.guestOsFamily"
211
+ :guest-os-version="vmForm.guestOsVersion"
212
+ :storage="vmForm.storage"
213
+ :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
214
+ :cd-dvd-drives-for-boot-options="
215
+ props.virtualHardwareCdDvdDrivesLocal
216
+ "
217
+ :networks-for-boot-options="props.virtualHardwareNetworksLocal"
218
+ :cd-dvd-drives="props.virtualHardwareCdDvdDrivesLocal"
219
+ :customize-hardware-submit="props.customizeHardwareSubmit"
220
+ :max-cpus="props.maxCpus"
221
+ :max-memory="props.maxMemory"
222
+ :cpu-models="props.cpuModels"
223
+ :selected-nav-item="props.selectedNavItem"
224
+ :nodes="props.nodes"
225
+ :files="props.files"
226
+ :networks-table="props.networksTable"
227
+ :error-validation-fields="props.errorValidationFields"
228
+ :get-datastore-table-func="props.getDatastoreTableFunc"
229
+ :datastore="props.datastore"
230
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
231
+ :passthrough-devices="props.passthroughDevices"
232
+ :mediated-devices="props.mediatedDevices"
233
+ :compute-resource="vmForm.computeResource"
234
+ @change-boot-order="emits('change-boot-order', $event)"
235
+ @send-data="emits('change-customize-hardware', $event)"
236
+ @get-storage="emits('get-storage', $event)"
237
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
238
+ @get-active-device-child="
239
+ emits('get-active-device-child', $event)
240
+ "
241
+ @show-datastore-child="emits('show-datastore-child', $event)"
242
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
243
+ @get-networks-table="emits('get-networks-table', $event)"
244
+ @get-pci-devices="emits('get-pci-devices')"
245
+ />
246
+ <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-4">
247
+ <span class="vm-hardware-version">{{
248
+ props.compatibilityInfo
249
+ }}</span>
250
+ </div>
251
+ </div>
252
+ </template>
253
+ </ui-wizard-block>
254
+ <ui-wizard-block
255
+ v-if="
256
+ selectedStep.id === dynamicSteps.customizeHardwareTemplate &&
257
+ props.vmtSettings
258
+ "
259
+ >
260
+ <template #content>
261
+ <div
262
+ class="select-block-wrap overflow-auto h-full flex flex-col pr-8"
263
+ >
264
+ <common-vm-actions-common-customize-hardware
265
+ :project="props.project"
266
+ :vm-name="vmForm.name"
267
+ :guest-machine-type="vmForm.guestMachineType"
268
+ :guest-os-family="vmForm.guestOsFamily"
269
+ :guest-os-version="vmForm.guestOsVersion"
270
+ :storage="vmForm.storage"
271
+ :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
272
+ :cd-dvd-drives-for-boot-options="
273
+ props.virtualHardwareCdDvdDrivesLocal
274
+ "
275
+ :networks-for-boot-options="props.virtualHardwareNetworksLocal"
276
+ :cd-dvd-drives="props.vmtSettings.cdDvdDrives || []"
277
+ :hard-disks="props.vmtSettings.hardDisks || []"
278
+ :networks="props.vmtSettings.networks || []"
279
+ :customize-hardware-submit="props.customizeHardwareSubmit"
280
+ :max-cpus="props.maxCpus"
281
+ :max-memory="props.maxMemory"
282
+ :cpu-models="props.cpuModels"
283
+ :cpu="props.vmtSettings.cpu"
284
+ :memory="props.vmtSettings.memory"
285
+ :video-card="props.vmtSettings.videoCard"
286
+ :usb-controller="props.vmtSettings.usbController"
287
+ :pci-devices="props.vmtSettings.pciDevices"
288
+ :hard-disks-for-edit="props.vmtSettings.hardDisks || []"
289
+ :options="props.vmtSettings.options"
290
+ :selected-nav-item="props.selectedNavItem"
291
+ :nodes="props.nodes"
292
+ :files="props.files"
293
+ :networks-table="props.networksTable"
294
+ :error-validation-fields="props.errorValidationFields"
295
+ :get-datastore-table-func="props.getDatastoreTableFunc"
296
+ :datastore="props.datastore"
297
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
298
+ :passthrough-devices="props.passthroughDevices"
299
+ :mediated-devices="props.mediatedDevices"
300
+ :compute-resource="vmForm.computeResource"
301
+ is-clone
302
+ @change-boot-order="emits('change-boot-order', $event)"
303
+ @send-data="emits('change-customize-hardware', $event)"
304
+ @get-storage="emits('get-storage', $event)"
305
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
306
+ @get-active-device-child="
307
+ emits('get-active-device-child', $event)
308
+ "
309
+ @show-datastore-child="emits('show-datastore-child', $event)"
310
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
311
+ @get-networks-table="emits('get-networks-table', $event)"
312
+ @get-pci-devices="emits('get-pci-devices')"
313
+ />
314
+ <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-4">
315
+ <span class="vm-hardware-version">{{
316
+ props.compatibilityInfo
317
+ }}</span>
318
+ </div>
319
+ </div>
320
+ </template>
321
+ </ui-wizard-block>
322
+ <ui-wizard-block v-if="selectedStep.id === dynamicSteps.readyComplete">
323
+ <template #content>
324
+ <div
325
+ class="select-block-wrap overflow-auto h-full flex flex-col pr-8"
326
+ >
327
+ <div v-if="props.isShowPowerOn" class="power-on-by-default-wrap">
328
+ <ui-checkbox
329
+ v-model="isPowerOnByDefault"
330
+ test-id="power-on-by-default"
331
+ :label-text="localization.common.powerOnByDefault"
332
+ />
333
+ </div>
334
+
335
+ <div class="divider my-4"></div>
336
+
337
+ <common-ready-to-complete
338
+ v-if="selectedStep.id === dynamicSteps.readyComplete"
339
+ :data="props.readyCompleteTableInfo"
340
+ />
341
+ <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-4">
342
+ <span class="vm-hardware-version">{{
343
+ props.compatibilityInfo
344
+ }}</span>
345
+ </div>
346
+ </div>
347
+ </template>
348
+ </ui-wizard-block>
349
+ </template>
350
+ </ui-wizard>
351
+ </template>
352
+
353
+ <script setup lang="ts">
354
+ import { useElementSize } from '@vueuse/core'
355
+ import type { UI_I_WizardTexts } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
356
+ import type {
357
+ UI_I_Localization,
358
+ UI_I_ArbitraryObject,
359
+ } from '~/lib/models/interfaces'
360
+ import type { UI_T_Project } from '~/lib/models/types'
361
+ import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
362
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
363
+ import type {
364
+ UI_I_DatastoreTableItem,
365
+ UI_I_FolderOrFileTreePayload,
366
+ } from '~/lib/models/store/storage/interfaces'
367
+ import type {
368
+ API_UI_I_Error,
369
+ UI_I_ErrorValidationField,
370
+ } from '~/lib/models/store/interfaces'
371
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
372
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
373
+ import type {
374
+ // UI_T_AddVmFinishFunc,
375
+ UI_T_SelectedNavItem,
376
+ } from '~/components/common/vm/actions/common/lib/models/types'
377
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
378
+ import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
379
+ import type {
380
+ // UI_I_Capabilities,
381
+ UI_I_VmForm,
382
+ } from '~/components/common/vm/actions/common/lib/models/interfaces'
383
+ import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
384
+ import type {
385
+ UI_I_SendDataNewCdDvdDrive,
386
+ UI_I_SendDataNewHardDisk,
387
+ UI_I_SendDataNewNetwork,
388
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
389
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
390
+ import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
391
+ import type {
392
+ UI_I_MediatedDevice,
393
+ UI_I_PciDevice,
394
+ UI_I_VmSettings,
395
+ } from '~/lib/models/store/vm/interfaces'
396
+ import { dynamicSteps } from '~/components/common/vm/actions/add/lib/config/steps'
397
+ import Wizard from '~/components/atoms/wizard/lib/utils/utils'
398
+
399
+ const vmForm = defineModel<UI_I_VmForm>('vmForm', {
400
+ required: true,
401
+ })
402
+ const selectedCreateType = defineModel<string>('selectedCreateType', {
403
+ required: true,
404
+ })
405
+ const isPowerOnByDefault = defineModel<boolean>('isPowerOnByDefault', {
406
+ required: true,
407
+ })
408
+
409
+ const props = defineProps<{
410
+ project: UI_T_Project
411
+ nodes: UI_I_FileTreeNode[]
412
+ files: UI_I_FileTreeNode[]
413
+ networksTable: UI_I_NetworkTableItem[]
414
+ datastore: UI_I_DatastoreTableItem[]
415
+ errorValidationFields: UI_I_ErrorValidationField[]
416
+ readyCompleteTableInfo: UI_I_TableInfoItem[]
417
+ vmCpuHelpTextSecond: string
418
+ importFromVMWarevSphere: string
419
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
420
+ passthroughDevices: UI_I_PciDevice[]
421
+ mediatedDevices: UI_I_MediatedDevice[]
422
+ templatesTree: UI_I_TreeNode[]
423
+ wizard: Wizard
424
+ selectedScheme: number[]
425
+ templateSubmit: null | Function
426
+ nameFormSubmit: null | Function
427
+ storageSubmit: null | Function
428
+ customizeHardwareSubmit: null | Function
429
+ isSphere: boolean
430
+ compatibility: UI_I_OptionItem[]
431
+ guestOsFamilies: UI_I_OptionItem[]
432
+ guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
433
+ machineTypes: UI_I_OptionItem[]
434
+ virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
435
+ virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
436
+ virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
437
+ maxCpus: number
438
+ maxMemory: number
439
+ cpuModels: UI_I_OptionItem[]
440
+ selectedNavItem: UI_T_SelectedNavItem
441
+ compatibilityInfo: string
442
+ isShowPowerOn: boolean
443
+ computeResourceSubmit: null | Function // для сферы
444
+ dataCenter?: UI_I_TreeNode // для сферы
445
+ computeResource?: UI_I_TreeNode // для сферы
446
+ computeResourceTree?: UI_I_TreeNode[] // для сферы
447
+ vmtSettings?: UI_I_VmSettings | null // для шаблонов
448
+ }>()
449
+
450
+ const emits = defineEmits<{
451
+ (event: 'check-name', value: [string, (error: API_UI_I_Error) => void]): void
452
+ (event: 'get-storage', value: UI_I_TablePayload): void
453
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
454
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
455
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
456
+ (event: 'remove-error-by-title', value: string): void
457
+ (event: 'get-networks-table', value: UI_I_TablePayload): void
458
+ (event: 'get-pci-devices'): void
459
+ (event: 'change-steps', value: UI_I_WizardStep[]): void
460
+ (event: 'finish'): void
461
+ (event: 'change-template', value: UI_I_TreeNode): void
462
+ (event: 'change-name', value: [string, UI_I_TreeNode | null]): void
463
+ (
464
+ event: 'check-name',
465
+ value: [[string, UI_I_TreeNode | null], (error: any) => void]
466
+ ): void
467
+ (event: 'change-storage', value: UI_I_DatastoreTableItem | null): void
468
+ (event: 'change-select-options', value: string[]): void
469
+ (event: 'change-compatibility', value: UI_I_OptionItem): void
470
+ (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
471
+ (
472
+ event: 'change-customize-hardware',
473
+ value: UI_I_SendDataCustomizeHardware
474
+ ): void
475
+ (event: 'hide'): void
476
+ (event: 'clear-compute-resource-tree'): void // для сферы
477
+ (event: 'change-compute-resource', value: UI_I_TreeNode): void // для сферы
478
+ (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void // для сферы
479
+ (
480
+ event: 'get-compute-resource-tree',
481
+ value: { id: string | number; cb: () => void }
482
+ ): void // для сферы
483
+ (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void // для сферы
484
+ }>()
485
+
486
+ const localization = computed<UI_I_Localization>(() => useLocal())
487
+
488
+ const texts = computed<UI_I_WizardTexts>(() => ({
489
+ cancel: localization.value.common.cancel,
490
+ back: localization.value.common.backCap,
491
+ processing: localization.value.common.processing,
492
+ next: localization.value.common.next,
493
+ finish: localization.value.common.create,
494
+ incompleteTitle: localization.value.common.incompleteProcess,
495
+ incompleteMessage: localization.value.common.incompleteProcessMessage,
496
+ incompleteCancel: localization.value.common.cancel,
497
+ incompleteLeave: localization.value.common.leave,
498
+ }))
499
+
500
+ const subTitleBlockName = ref<HTMLElement | null>(null)
501
+ const { height: heightName } = useElementSize(subTitleBlockName)
502
+ const subTitleBlockComputeResource = ref<HTMLElement | null>(null)
503
+ const { height: heightComputeResource } = useElementSize(
504
+ subTitleBlockComputeResource
505
+ )
506
+ const subTitleBlockStorage = ref<HTMLElement | null>(null)
507
+ const { height: heightStorage } = useElementSize(subTitleBlockStorage)
508
+ const subTitleBlockCompatibility = ref<HTMLElement | null>(null)
509
+ const { height: heightCompatibility } = useElementSize(
510
+ subTitleBlockCompatibility
511
+ )
512
+ const subTitleBlockOs = ref<HTMLElement | null>(null)
513
+ const { height: heightOs } = useElementSize(subTitleBlockOs)
514
+ </script>
515
+
516
+ <style>
517
+ :root {
518
+ --ready-to-complate-run-bg-color: #e9ebed66;
519
+ --ready-to-complate-run-border-color: #e9ebed;
520
+ }
521
+ :root.dark-theme {
522
+ --ready-to-complate-run-bg-color: #e9ebed0f;
523
+ --ready-to-complate-run-border-color: #e9ebed1f;
524
+ }
525
+ </style>
526
+ <style scoped lang="scss">
527
+ .subtitle-block {
528
+ display: flex;
529
+ flex-direction: column;
530
+ row-gap: 16px;
531
+ border-bottom: 1px solid var(--wizard-line);
532
+ padding-bottom: 12px;
533
+ //margin-bottom: 16px;
534
+ }
535
+ .select-block-wrap {
536
+ .vm-hardware-version-wrap {
537
+ align-items: flex-end;
538
+
539
+ .vm-hardware-version {
540
+ font-size: 13px;
541
+ color: #9da6ad; // for light and dark
542
+ }
543
+ }
544
+ }
545
+
546
+ .power-on-by-default-wrap {
547
+ padding: 12px;
548
+ border-radius: 8px;
549
+ background-color: var(--ready-to-complate-run-bg-color);
550
+ }
551
+ .divider {
552
+ width: 100%;
553
+ min-height: 1px;
554
+ background-color: var(--ready-to-complate-run-border-color);
555
+ }
556
+ </style>