bfg-common 1.5.150 → 1.5.152

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 (121) 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/New.vue +556 -556
  35. package/components/common/vm/actions/add/Old.vue +371 -371
  36. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  37. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  38. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  39. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  40. package/components/common/vm/actions/clone/Clone.vue +801 -801
  41. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  42. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +626 -626
  43. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  44. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  45. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  46. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +99 -99
  47. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  48. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  49. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  50. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  51. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  52. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  53. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +373 -368
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +149 -149
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +74 -74
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  74. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  75. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  76. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  77. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  78. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  79. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  80. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  81. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  82. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  83. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  84. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  85. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  86. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  87. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  88. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  89. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  90. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +134 -134
  91. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  92. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  93. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  94. package/components/common/vm/actions/common/select/createType/New.vue +84 -84
  95. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  96. package/components/common/vm/actions/common/select/name/Name.vue +167 -167
  97. package/components/common/vm/actions/common/select/os/New.vue +122 -122
  98. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  99. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  100. package/components/common/vm/actions/common/select/storage/Storage.vue +131 -131
  101. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +326 -326
  102. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  103. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  104. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  105. package/components/common/wizards/network/add/steps/SelectConnectionType.vue +105 -105
  106. package/components/common/wizards/vm/migrate/Migrate.vue +343 -340
  107. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  108. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  109. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  110. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +137 -137
  111. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  112. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  113. package/composables/productNameLocal.ts +30 -30
  114. package/composables/useAppVersion.ts +21 -21
  115. package/package.json +1 -1
  116. package/plugins/date.ts +233 -233
  117. package/public/spice-console/lib/images/bitmap.js +203 -203
  118. package/public/spice-console/network/spicechannel.js +383 -383
  119. package/store/main/mutations.ts +7 -7
  120. package/store/main/state.ts +7 -7
  121. 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>