bfg-common 1.5.64 → 1.5.66

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 (44) hide show
  1. package/assets/localization/local_be.json +11 -2
  2. package/assets/localization/local_en.json +11 -2
  3. package/assets/localization/local_hy.json +11 -2
  4. package/assets/localization/local_kk.json +11 -2
  5. package/assets/localization/local_ru.json +11 -2
  6. package/assets/localization/local_zh.json +11 -2
  7. package/components/common/accordion/Recursion.vue +6 -6
  8. package/components/common/monitor/advanced/tools/chartOptionsModal/actions/lib/utils/optionsActions.ts +5 -1
  9. package/components/common/monitor/advanced/tools/lib/config/advancedToolbar.ts +21 -5
  10. package/components/common/vm/actions/add/Add.vue +205 -194
  11. package/components/common/vm/actions/add/New.vue +485 -0
  12. package/components/common/vm/actions/add/Old.vue +371 -0
  13. package/components/common/vm/actions/add/{FolderTreeView.vue → folderTreeView/FolderTreeView.vue} +16 -27
  14. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -0
  15. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -0
  16. package/components/common/vm/actions/add/lib/config/steps.ts +19 -3
  17. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +29 -37
  18. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +5 -5
  19. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +3 -3
  20. package/components/common/vm/actions/common/select/compatibility/Compatibility.vue +21 -83
  21. package/components/common/vm/actions/common/select/compatibility/New.vue +165 -0
  22. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -0
  23. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +45 -75
  24. package/components/common/vm/actions/common/select/computeResource/New.vue +141 -0
  25. package/components/common/vm/actions/common/select/computeResource/Old.vue +99 -0
  26. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -0
  27. package/components/common/vm/actions/common/select/computeResource/treeView/Old.vue +48 -0
  28. package/components/common/vm/actions/common/select/computeResource/{TreeView.vue → treeView/TreeView.vue} +28 -34
  29. package/components/common/vm/actions/common/select/createType/CreateType.vue +15 -51
  30. package/components/common/vm/actions/common/select/createType/New.vue +84 -0
  31. package/components/common/vm/actions/common/select/createType/Old.vue +70 -0
  32. package/components/common/vm/actions/common/select/createType/lib/config/items.ts +24 -4
  33. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -0
  34. package/components/common/vm/actions/common/select/name/Name.vue +24 -93
  35. package/components/common/vm/actions/common/select/name/New.vue +246 -0
  36. package/components/common/vm/actions/common/select/name/Old.vue +119 -0
  37. package/components/common/vm/actions/common/select/storage/new/New.vue +116 -86
  38. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +156 -3
  39. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +6 -0
  40. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -0
  41. package/components/common/vm/actions/common/select/template/Template.vue +2 -3
  42. package/components/common/vm/actions/common/select/template/TemplateTreeView.vue +1 -1
  43. package/package.json +1 -1
  44. /package/components/common/vm/actions/common/select/storage/{StorageOld.vue → Old.vue} +0 -0
@@ -0,0 +1,371 @@
1
+ <template>
2
+ <div class="add-vm">
3
+ <atoms-wizard
4
+ show
5
+ :wizard="props.wizard"
6
+ :selected-scheme="props.selectedScheme"
7
+ :title="localization.common.newVirtualMachine2"
8
+ :localization="localization"
9
+ test-id="new-virtual-machine-wizard"
10
+ @change-steps="emits('change-steps', $event)"
11
+ @hide="emits('hide')"
12
+ @submit="emits('finish')"
13
+ >
14
+ <template #modalBody="{ selectedStep }">
15
+ <div class="add-vm-content">
16
+ <common-vm-actions-common-select-create-type
17
+ v-show="selectedStep.id === dynamicSteps.creationType"
18
+ v-model="selectedCreateType"
19
+ :import-from-v-m-warev-sphere="props.importFromVMWarevSphere"
20
+ />
21
+ <common-vm-actions-common-select-template
22
+ v-show="selectedStep.id === dynamicSteps.selectTemplate"
23
+ :template-submit="props.templateSubmit"
24
+ :templates-tree="props.templatesTree"
25
+ @submit="emits('change-template', $event)"
26
+ />
27
+ <common-vm-actions-common-select-name
28
+ v-show="
29
+ selectedStep.id === dynamicSteps.selectName ||
30
+ selectedStep.id === dynamicSteps.selectNameFolder
31
+ "
32
+ :show="
33
+ selectedStep.id === dynamicSteps.selectName ||
34
+ selectedStep.id === dynamicSteps.selectNameFolder
35
+ "
36
+ :name-form-submit="props.nameFormSubmit"
37
+ :project="props.project"
38
+ :data-center="props.dataCenter"
39
+ @submit="emits('change-name', $event)"
40
+ @check-name="emits('check-name', $event)"
41
+ />
42
+ <!-- change-name ...$event -->
43
+ <common-vm-actions-common-select-compute-resource
44
+ v-if="props.isSphere"
45
+ v-show="selectedStep.id === dynamicSteps.selectComputeResource"
46
+ v-model="vmForm.computeResource"
47
+ :compute-resource-submit="props.computeResourceSubmit"
48
+ :data-center="vmForm.dataCenter"
49
+ :compute-resource="props.computeResource"
50
+ :compute-resource-tree="props.computeResourceTree"
51
+ @submit="emits('change-compute-resource', $event)"
52
+ @select-compute-resource-tree="
53
+ emits('select-compute-resource-tree', $event)
54
+ "
55
+ @get-compute-resource-tree="
56
+ emits('get-compute-resource-tree', $event)
57
+ "
58
+ @show-compute-resource-tree="
59
+ emits('show-compute-resource-tree', $event)
60
+ "
61
+ @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
62
+ />
63
+ <common-vm-actions-common-select-storage
64
+ v-show="selectedStep.id === dynamicSteps.selectStorage"
65
+ :storage-submit="props.storageSubmit"
66
+ :datastore="props.datastore"
67
+ :storage="props.vmtSettings?.storage"
68
+ :get-datastore-table-func="props.getDatastoreTableFunc"
69
+ @submit="emits('change-storage', $event)"
70
+ />
71
+ <common-vm-actions-common-select-options
72
+ v-show="selectedStep.id === dynamicSteps.selectOptions"
73
+ @change="emits('change-select-options', $event)"
74
+ />
75
+ <common-vm-actions-common-select-compatibility
76
+ v-show="selectedStep.id === dynamicSteps.compatibility"
77
+ :options="props.compatibility"
78
+ :error-validation-fields="props.errorValidationFields"
79
+ @change="emits('change-compatibility', $event)"
80
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
81
+ />
82
+ <common-vm-actions-common-select-os
83
+ v-show="
84
+ selectedStep.id === dynamicSteps.selectGuestOSMachineType ||
85
+ selectedStep.id === dynamicSteps.selectGuestOS
86
+ "
87
+ v-model:machine-type="vmForm.guestMachineType"
88
+ v-model:guest-os-family="vmForm.guestOsFamily"
89
+ v-model:guest-os-version="vmForm.guestOsVersion"
90
+ :families-options="props.guestOsFamilies"
91
+ :versions-options="props.guestOsVersions"
92
+ :machine-types-options="props.machineTypes"
93
+ :error-validation-fields="props.errorValidationFields"
94
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
95
+ />
96
+ <common-vm-actions-common-customize-hardware
97
+ v-show="selectedStep.id === dynamicSteps.customizeHardware"
98
+ :project="props.project"
99
+ :vm-name="vmForm.name"
100
+ :guest-machine-type="vmForm.guestMachineType"
101
+ :guest-os-family="vmForm.guestOsFamily"
102
+ :guest-os-version="vmForm.guestOsVersion"
103
+ :storage="vmForm.storage"
104
+ :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
105
+ :cd-dvd-drives-for-boot-options="
106
+ props.virtualHardwareCdDvdDrivesLocal
107
+ "
108
+ :networks-for-boot-options="props.virtualHardwareNetworksLocal"
109
+ :cd-dvd-drives="props.virtualHardwareCdDvdDrivesLocal"
110
+ :customize-hardware-submit="props.customizeHardwareSubmit"
111
+ :max-cpus="props.maxCpus"
112
+ :max-memory="props.maxMemory"
113
+ :cpu-models="props.cpuModels"
114
+ :selected-nav-item="props.selectedNavItem"
115
+ :nodes="props.nodes"
116
+ :files="props.files"
117
+ :networks-table="props.networksTable"
118
+ :error-validation-fields="props.errorValidationFields"
119
+ :get-datastore-table-func="props.getDatastoreTableFunc"
120
+ :datastore="props.datastore"
121
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
122
+ :passthrough-devices="props.passthroughDevices"
123
+ :mediated-devices="props.mediatedDevices"
124
+ :compute-resource="vmForm.computeResource"
125
+ @change-boot-order="emits('change-boot-order', $event)"
126
+ @send-data="emits('change-customize-hardware', $event)"
127
+ @get-storage="emits('get-storage', $event)"
128
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
129
+ @get-active-device-child="emits('get-active-device-child', $event)"
130
+ @show-datastore-child="emits('show-datastore-child', $event)"
131
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
132
+ @get-networks-table="emits('get-networks-table', $event)"
133
+ @get-pci-devices="emits('get-pci-devices')"
134
+ />
135
+ <common-vm-actions-common-customize-hardware
136
+ v-if="props.vmtSettings"
137
+ v-show="selectedStep.id === dynamicSteps.customizeHardwareTemplate"
138
+ :project="props.project"
139
+ :vm-name="vmForm.name"
140
+ :guest-machine-type="vmForm.guestMachineType"
141
+ :guest-os-family="vmForm.guestOsFamily"
142
+ :guest-os-version="vmForm.guestOsVersion"
143
+ :storage="vmForm.storage"
144
+ :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
145
+ :cd-dvd-drives-for-boot-options="
146
+ props.virtualHardwareCdDvdDrivesLocal
147
+ "
148
+ :networks-for-boot-options="props.virtualHardwareNetworksLocal"
149
+ :cd-dvd-drives="props.vmtSettings.cdDvdDrives || []"
150
+ :hard-disks="props.vmtSettings.hardDisks || []"
151
+ :networks="props.vmtSettings.networks || []"
152
+ :customize-hardware-submit="props.customizeHardwareSubmit"
153
+ :max-cpus="props.maxCpus"
154
+ :max-memory="props.maxMemory"
155
+ :cpu-models="props.cpuModels"
156
+ :cpu="props.vmtSettings.cpu"
157
+ :memory="props.vmtSettings.memory"
158
+ :video-card="props.vmtSettings.videoCard"
159
+ :usb-controller="props.vmtSettings.usbController"
160
+ :pci-devices="props.vmtSettings.pciDevices"
161
+ :hard-disks-for-edit="props.vmtSettings.hardDisks || []"
162
+ :options="props.vmtSettings.options"
163
+ :selected-nav-item="props.selectedNavItem"
164
+ :nodes="props.nodes"
165
+ :files="props.files"
166
+ :networks-table="props.networksTable"
167
+ :error-validation-fields="props.errorValidationFields"
168
+ :get-datastore-table-func="props.getDatastoreTableFunc"
169
+ :datastore="props.datastore"
170
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
171
+ :passthrough-devices="props.passthroughDevices"
172
+ :mediated-devices="props.mediatedDevices"
173
+ :compute-resource="vmForm.computeResource"
174
+ is-clone
175
+ @change-boot-order="emits('change-boot-order', $event)"
176
+ @send-data="emits('change-customize-hardware', $event)"
177
+ @get-storage="emits('get-storage', $event)"
178
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
179
+ @get-active-device-child="emits('get-active-device-child', $event)"
180
+ @show-datastore-child="emits('show-datastore-child', $event)"
181
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
182
+ @get-networks-table="emits('get-networks-table', $event)"
183
+ @get-pci-devices="emits('get-pci-devices')"
184
+ />
185
+ <common-ready-to-complete
186
+ v-if="selectedStep.id === dynamicSteps.readyComplete"
187
+ :data="props.readyCompleteTableInfo"
188
+ />
189
+ <span
190
+ v-if="selectedStep.id > dynamicSteps.compatibility"
191
+ class="vm-hardware-version"
192
+ >{{ props.compatibilityInfo }}</span
193
+ >
194
+ </div>
195
+ </template>
196
+
197
+ <template #modalFooterContent>
198
+ <div v-if="props.isShowPowerOn" class="power-on-by-default-wrap">
199
+ <input
200
+ id="power-on-by-default"
201
+ v-model="isPowerOnByDefault"
202
+ data-id="power-on-by-default"
203
+ type="checkbox"
204
+ />
205
+ <label for="power-on-by-default" class="label-text-normal">{{
206
+ localization.common.powerOnByDefault
207
+ }}</label>
208
+ </div>
209
+ </template>
210
+ </atoms-wizard>
211
+ </div>
212
+ </template>
213
+
214
+ <script setup lang="ts">
215
+ import type {
216
+ UI_I_Localization,
217
+ UI_I_ArbitraryObject,
218
+ } from '~/lib/models/interfaces'
219
+ import type { UI_T_Project } from '~/lib/models/types'
220
+ import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
221
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
222
+ import type {
223
+ UI_I_DatastoreTableItem,
224
+ UI_I_FolderOrFileTreePayload,
225
+ } from '~/lib/models/store/storage/interfaces'
226
+ import type {
227
+ API_UI_I_Error,
228
+ UI_I_ErrorValidationField,
229
+ } from '~/lib/models/store/interfaces'
230
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
231
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
232
+ import type {
233
+ // UI_T_AddVmFinishFunc,
234
+ UI_T_SelectedNavItem,
235
+ } from '~/components/common/vm/actions/common/lib/models/types'
236
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
237
+ import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
238
+ import type {
239
+ // UI_I_Capabilities,
240
+ UI_I_VmForm,
241
+ } from '~/components/common/vm/actions/common/lib/models/interfaces'
242
+ import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
243
+ import type {
244
+ UI_I_SendDataNewCdDvdDrive,
245
+ UI_I_SendDataNewHardDisk,
246
+ UI_I_SendDataNewNetwork,
247
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
248
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
249
+ import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
250
+ import type {
251
+ UI_I_MediatedDevice,
252
+ UI_I_PciDevice,
253
+ UI_I_VmSettings,
254
+ } from '~/lib/models/store/vm/interfaces'
255
+ import { dynamicSteps } from '~/components/common/vm/actions/add/lib/config/steps'
256
+ import Wizard from '~/components/atoms/wizard/lib/utils/utils'
257
+
258
+ const vmForm = defineModel<UI_I_VmForm>('vmForm', {
259
+ required: true,
260
+ })
261
+ const selectedCreateType = defineModel<string>('selectedCreateType', {
262
+ required: true,
263
+ })
264
+ const isPowerOnByDefault = defineModel<boolean>('isPowerOnByDefault', {
265
+ required: true,
266
+ })
267
+
268
+ const props = defineProps<{
269
+ project: UI_T_Project
270
+ nodes: UI_I_FileTreeNode[]
271
+ files: UI_I_FileTreeNode[]
272
+ networksTable: UI_I_NetworkTableItem[]
273
+ datastore: UI_I_DatastoreTableItem[]
274
+ errorValidationFields: UI_I_ErrorValidationField[]
275
+ readyCompleteTableInfo: UI_I_TableInfoItem[]
276
+ vmCpuHelpTextSecond: string
277
+ importFromVMWarevSphere: string
278
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
279
+ passthroughDevices: UI_I_PciDevice[]
280
+ mediatedDevices: UI_I_MediatedDevice[]
281
+ templatesTree: UI_I_TreeNode[]
282
+ wizard: Wizard
283
+ selectedScheme: number[]
284
+ templateSubmit: null | Function
285
+ nameFormSubmit: null | Function
286
+ storageSubmit: null | Function
287
+ customizeHardwareSubmit: null | Function
288
+ isSphere: boolean
289
+ compatibility: UI_I_OptionItem[]
290
+ guestOsFamilies: UI_I_OptionItem[]
291
+ guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
292
+ machineTypes: UI_I_OptionItem[]
293
+ virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
294
+ virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
295
+ virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
296
+ maxCpus: number
297
+ maxMemory: number
298
+ cpuModels: UI_I_OptionItem[]
299
+ selectedNavItem: UI_T_SelectedNavItem
300
+ compatibilityInfo: string
301
+ isShowPowerOn: boolean
302
+ computeResourceSubmit?: null | Function // для сферы
303
+ dataCenter?: UI_I_TreeNode // для сферы
304
+ computeResource?: UI_I_TreeNode // для сферы
305
+ computeResourceTree?: UI_I_TreeNode[] // для сферы
306
+ vmtSettings?: UI_I_VmSettings | null // для шаблонов
307
+ }>()
308
+
309
+ const emits = defineEmits<{
310
+ (event: 'check-name', value: [string, (error: API_UI_I_Error) => void]): void
311
+ (event: 'get-storage', value: UI_I_TablePayload): void
312
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
313
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
314
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
315
+ (event: 'remove-error-by-title', value: string): void
316
+ (event: 'get-networks-table', value: UI_I_TablePayload): void
317
+ (event: 'get-pci-devices'): void
318
+ (event: 'change-steps', value: UI_I_WizardStep[]): void
319
+ (event: 'finish'): void
320
+ (event: 'change-template', value: UI_I_TreeNode): void
321
+ (event: 'change-name', value: [string, UI_I_TreeNode | null]): void
322
+ (
323
+ event: 'check-name',
324
+ value: [[string, UI_I_TreeNode | null], (error: any) => void]
325
+ ): void
326
+ (event: 'change-storage', value: UI_I_DatastoreTableItem | null): void
327
+ (event: 'change-select-options', value: string[]): void
328
+ (event: 'change-compatibility', value: UI_I_OptionItem): void
329
+ (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
330
+ (
331
+ event: 'change-customize-hardware',
332
+ value: UI_I_SendDataCustomizeHardware
333
+ ): void
334
+ (event: 'hide'): void
335
+ (event: 'clear-compute-resource-tree'): void // для сферы
336
+ (event: 'change-compute-resource', value: UI_I_TreeNode): void // для сферы
337
+ (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void // для сферы
338
+ (
339
+ event: 'get-compute-resource-tree',
340
+ value: { id: string | number; cb: () => void }
341
+ ): void // для сферы
342
+ (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void // для сферы
343
+ }>()
344
+
345
+ const localization = computed<UI_I_Localization>(() => useLocal())
346
+ </script>
347
+
348
+ <style scoped lang="scss">
349
+ :deep(.modal-body) {
350
+ display: flex;
351
+ flex-direction: column;
352
+ }
353
+ .add-vm-content {
354
+ display: flex;
355
+ flex-direction: column;
356
+ flex: 1;
357
+ }
358
+ .vm-hardware-version {
359
+ align-self: flex-end;
360
+ margin-top: auto;
361
+ }
362
+ .power-on-by-default-wrap {
363
+ display: flex;
364
+ align-items: center;
365
+ margin-right: auto;
366
+
367
+ input {
368
+ margin-right: 6px;
369
+ }
370
+ }
371
+ </style>
@@ -1,19 +1,18 @@
1
1
  <template>
2
- <div class="tree-view">
3
- <atoms-loader-pre-loader
4
- v-show="loading"
5
- id="loader"
6
- class="absolute-center tree-view__loading"
7
- :show="true"
8
- />
9
- <common-recursion-tree
10
- :nodes="nodes"
11
- class="recursion-tree"
12
- @get-nodes="showNodes($event)"
13
- @select-node="selectNode"
14
- @contextmenu.prevent
15
- />
16
- </div>
2
+ <common-vm-actions-add-folder-tree-view-new
3
+ v-if="isNewView"
4
+ :nodes="nodes"
5
+ :loading="loading"
6
+ @show-nodes="showNodes"
7
+ @select-node="selectNode"
8
+ />
9
+ <common-vm-actions-add-folder-tree-view-old
10
+ v-else
11
+ :nodes="nodes"
12
+ :loading="loading"
13
+ @show-nodes="showNodes"
14
+ @select-node="selectNode"
15
+ />
17
16
  </template>
18
17
 
19
18
  <script setup lang="ts">
@@ -26,7 +25,8 @@ const emits = defineEmits<{
26
25
  (event: 'select-node', value: UI_I_TreeNode): void
27
26
  }>()
28
27
 
29
- const { $store } = useNuxtApp()
28
+ const { $store }: any = useNuxtApp()
29
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
30
30
 
31
31
  const nodes = computed<UI_I_TreeNode[]>(
32
32
  () => $store.getters['inventory/getFolderTree'] || []
@@ -69,15 +69,4 @@ onUnmounted(() => {
69
69
  </script>
70
70
 
71
71
  <style scoped lang="scss">
72
- .tree-view {
73
- &__loading {
74
- :deep(.spinner.spinner-inverse) {
75
- position: static;
76
- width: 45px;
77
- height: 45px;
78
- min-width: 45px;
79
- min-height: 45px;
80
- }
81
- }
82
- }
83
72
  </style>
@@ -0,0 +1,40 @@
1
+ <template>
2
+ <div class="tree-view">
3
+ <ui-tree
4
+ :nodes="props.nodes"
5
+ :expand-all="false"
6
+ :is-loading="props.loading"
7
+ @toggle-node="onShowNodes"
8
+ @select-node="emits('select-node', $event)"
9
+ >
10
+ <template #content="{ node }">
11
+ <div class="flex-align-center">
12
+ <span :class="['node-icon', node.iconClassName]"></span>
13
+ <span class="node-name">{{ node.name }}</span>
14
+ </div>
15
+ </template>
16
+ </ui-tree>
17
+ </div>
18
+ </template>
19
+
20
+ <script setup lang="ts">
21
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
22
+
23
+ const props = defineProps<{
24
+ loading: boolean
25
+ nodes: UI_I_TreeNode[]
26
+ }>()
27
+ const emits = defineEmits<{
28
+ (event: 'select-node', value: UI_I_TreeNode): void
29
+ (event: 'show-nodes', value: {
30
+ node: UI_I_TreeNode
31
+ cb: () => void
32
+ }): void
33
+ }>()
34
+
35
+ const onShowNodes = (node: UI_I_TreeNode) => {
36
+ emits('show-nodes', { node, cb: (): void => {} })
37
+ }
38
+ </script>
39
+
40
+ <style scoped lang="scss"></style>
@@ -0,0 +1,50 @@
1
+ <template>
2
+ <div class="tree-view">
3
+ <atoms-loader-pre-loader
4
+ v-show="props.loading"
5
+ id="loader"
6
+ class="absolute-center tree-view__loading"
7
+ :show="true"
8
+ />
9
+ <common-recursion-tree
10
+ :nodes="props.nodes"
11
+ class="recursion-tree"
12
+ @get-nodes="emits('show-nodes', $event)"
13
+ @select-node="emits('select-node', $event)"
14
+ @contextmenu.prevent
15
+ />
16
+ </div>
17
+ </template>
18
+
19
+ <script setup lang="ts">
20
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
21
+
22
+ const props = defineProps<{
23
+ loading: boolean
24
+ nodes: UI_I_TreeNode[]
25
+ }>()
26
+ const emits = defineEmits<{
27
+ (event: 'select-node', value: UI_I_TreeNode): void
28
+ (
29
+ event: 'show-nodes',
30
+ value: {
31
+ node: UI_I_TreeNode
32
+ cb: () => void
33
+ }
34
+ ): void
35
+ }>()
36
+ </script>
37
+
38
+ <style scoped lang="scss">
39
+ .tree-view {
40
+ &__loading {
41
+ :deep(.spinner.spinner-inverse) {
42
+ position: static;
43
+ width: 45px;
44
+ height: 45px;
45
+ min-width: 45px;
46
+ min-height: 45px;
47
+ }
48
+ }
49
+ }
50
+ </style>
@@ -14,7 +14,8 @@ export const dynamicSteps = {
14
14
  selectGuestOSMachineType: 8,
15
15
  selectGuestOS: 9,
16
16
  customizeHardware: 10,
17
- readyComplete: 11,
17
+ customizeHardwareTemplate: 11,
18
+ readyComplete: 12,
18
19
  }
19
20
 
20
21
  export const stepsFunc = (
@@ -169,6 +170,21 @@ export const stepsFunc = (
169
170
  },
170
171
  },
171
172
  },
173
+ {
174
+ id: dynamicSteps.customizeHardwareTemplate,
175
+ stepName: '',
176
+ title: localization.common.customizeHardware,
177
+ subTitle: localization.common.configureVirtualMachineHardware,
178
+ status: UI_E_WIZARD_STATUS.INACTIVE,
179
+ isValid: true,
180
+ testId: 'vm-select-customize-hardware',
181
+ fields: {
182
+ customizeHardware: {
183
+ field: '',
184
+ alert: '',
185
+ },
186
+ },
187
+ },
172
188
  {
173
189
  id: dynamicSteps.readyComplete,
174
190
  stepName: '',
@@ -230,7 +246,7 @@ export const stepsSchemeInitial = [
230
246
  dynamicSteps.selectName,
231
247
  dynamicSteps.selectStorage,
232
248
  dynamicSteps.selectOptions,
233
- dynamicSteps.customizeHardware,
249
+ dynamicSteps.customizeHardwareTemplate,
234
250
  dynamicSteps.readyComplete,
235
251
  ],
236
252
  // Deploy from template with Customize the operating system and this virtual machine's hardware (Procurator)
@@ -241,7 +257,7 @@ export const stepsSchemeInitial = [
241
257
  dynamicSteps.selectStorage,
242
258
  dynamicSteps.selectOptions,
243
259
  dynamicSteps.selectGuestOSMachineType,
244
- dynamicSteps.customizeHardware,
260
+ dynamicSteps.customizeHardwareTemplate,
245
261
  dynamicSteps.readyComplete,
246
262
  ],
247
263
  ]