bfg-common 1.5.161 → 1.5.162

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 (120) 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/RecursionNew.vue +238 -238
  10. package/components/common/diagramMain/DiagramMain.vue +897 -897
  11. package/components/common/diagramMain/Header.vue +214 -214
  12. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  13. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  14. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/utils.ts +1040 -1040
  15. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  16. package/components/common/pages/home/headline/Headline.vue +45 -45
  17. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  18. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  19. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  20. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  21. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  22. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  23. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  24. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  25. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  26. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  27. package/components/common/pages/packages/Packages.vue +208 -208
  28. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  29. package/components/common/readyToComplete/New.vue +66 -66
  30. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  31. package/components/common/recursionTree/RecursionTree.vue +223 -223
  32. package/components/common/select/button/ButtonDropdown.vue +108 -108
  33. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  34. package/components/common/vm/actions/add/Add.vue +785 -785
  35. package/components/common/vm/actions/add/New.vue +556 -556
  36. package/components/common/vm/actions/add/Old.vue +371 -371
  37. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  38. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  39. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  40. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  41. package/components/common/vm/actions/clone/Clone.vue +810 -810
  42. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  43. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +626 -626
  44. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  45. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  46. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  47. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  48. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  49. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  50. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  51. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  52. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  53. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +375 -375
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +149 -149
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +74 -74
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  75. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  76. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  77. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  78. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  79. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  80. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  81. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  82. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  83. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  84. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  85. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  86. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  87. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  88. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  89. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  90. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  91. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +134 -134
  92. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  93. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  94. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  95. package/components/common/vm/actions/common/select/createType/New.vue +84 -84
  96. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  97. package/components/common/vm/actions/common/select/name/Name.vue +167 -167
  98. package/components/common/vm/actions/common/select/os/New.vue +122 -122
  99. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  100. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  101. package/components/common/vm/actions/common/select/storage/Storage.vue +129 -129
  102. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +326 -326
  103. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  104. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  105. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  106. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  107. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  108. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  109. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +137 -137
  110. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  111. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  112. package/composables/productNameLocal.ts +30 -30
  113. package/composables/useAppVersion.ts +21 -21
  114. package/package.json +2 -2
  115. package/plugins/date.ts +233 -233
  116. package/public/spice-console/lib/images/bitmap.js +203 -203
  117. package/public/spice-console/network/spicechannel.js +383 -383
  118. package/store/main/mutations.ts +7 -7
  119. package/store/main/state.ts +7 -7
  120. 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>