bfg-common 1.5.534 → 1.5.536

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 (139) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/assets/localization/local_be.json +5 -1
  7. package/assets/localization/local_en.json +5 -1
  8. package/assets/localization/local_hy.json +5 -1
  9. package/assets/localization/local_kk.json +5 -1
  10. package/assets/localization/local_ru.json +5 -1
  11. package/assets/localization/local_zh.json +5 -1
  12. package/assets/scss/components/auth.scss +15 -1
  13. package/components/atoms/TheIcon3.vue +50 -50
  14. package/components/atoms/collapse/CollapseNav.vue +170 -170
  15. package/components/atoms/perPage/PerPage.vue +58 -58
  16. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  17. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  18. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  19. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  20. package/components/common/backup/storage/actions/add/Add.vue +251 -251
  21. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  22. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  23. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  24. package/components/common/browse/lib/models/interfaces.ts +5 -5
  25. package/components/common/diagramMain/network/Contents.vue +497 -497
  26. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  27. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  28. package/components/common/pages/backups/DetailView.vue +52 -52
  29. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  30. package/components/common/pages/backups/modals/Modals.vue +243 -243
  31. package/components/common/pages/backups/modals/createBackup/CreateBackup.vue +195 -195
  32. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  33. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  34. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  35. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  36. package/components/common/pages/backups/modals/restore/disks/Disks.vue +27 -27
  37. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/table.ts +117 -117
  38. package/components/common/pages/backups/modals/restore/name/Name.vue +166 -166
  39. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  40. package/components/common/pages/backups/modals/restore/networks/Networks.vue +70 -67
  41. package/components/common/pages/backups/modals/restore/networks/table/Table.vue +214 -214
  42. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  43. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  44. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  45. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  46. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  47. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  48. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  49. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  50. package/components/common/select/radio/RadioGroup.vue +137 -137
  51. package/components/common/spiceConsole/Drawer.vue +420 -420
  52. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  53. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  54. package/components/common/tools/Actions.vue +207 -207
  55. package/components/common/treeView/TreeView.vue +52 -52
  56. package/components/common/vm/actions/add/Add.vue +945 -895
  57. package/components/common/vm/actions/add/New.vue +689 -695
  58. package/components/common/vm/actions/add/Old.vue +400 -414
  59. package/components/common/vm/actions/add/lib/config/steps.ts +347 -347
  60. package/components/common/vm/actions/clone/Clone.vue +806 -754
  61. package/components/common/vm/actions/clone/{cloneNew/CloneNew.vue → new/New.vue} +454 -434
  62. package/components/common/vm/actions/clone/{cloneOld/CloneOld.vue → old/Old.vue} +378 -382
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +368 -368
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +427 -427
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  72. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  73. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  74. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  75. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  76. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  77. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  78. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  79. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  80. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  81. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  82. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  83. package/components/common/vm/actions/common/select/storage/Storage.vue +6 -3
  84. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  85. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  86. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  87. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  88. package/components/common/vm/actions/register/Register.vue +352 -285
  89. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  90. package/components/common/wizards/common/steps/computeResource/ComputeResource.vue +85 -95
  91. package/components/common/wizards/common/steps/computeResource/New.vue +92 -88
  92. package/components/common/wizards/common/steps/computeResource/Old.vue +102 -81
  93. package/components/common/wizards/common/steps/computeResource/compatibility/Compatibility.vue +31 -0
  94. package/components/common/wizards/common/steps/computeResource/compatibility/New.vue +98 -0
  95. package/components/common/wizards/{vm/common/validation/compatibility/Compatibility.vue → common/steps/computeResource/compatibility/Old.vue} +54 -62
  96. package/components/common/wizards/common/steps/computeResource/compatibility/lib/models/enums.ts +6 -0
  97. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  98. package/components/common/wizards/common/steps/name/New.vue +221 -221
  99. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  100. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  101. package/components/common/wizards/common/steps/name/location/Location.vue +85 -85
  102. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  103. package/components/common/wizards/datastore/add/Add.vue +228 -228
  104. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  105. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  106. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +6 -6
  107. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  108. package/components/common/wizards/vm/migrate/select/storage/Storage.vue +3 -3
  109. package/composables/useAppVersion.ts +21 -21
  110. package/composables/useLocal.ts +6 -6
  111. package/composables/useLocalCommon.ts +39 -39
  112. package/package.json +1 -1
  113. package/plugins/console.ts +21 -21
  114. package/plugins/date.ts +233 -233
  115. package/plugins/mouse.ts +21 -21
  116. package/plugins/panelStates.ts +70 -70
  117. package/plugins/text.ts +59 -59
  118. package/public/spice-console/application/clientgui.js +854 -854
  119. package/public/spice-console/application/packetfactory.js +211 -211
  120. package/public/spice-console/application/virtualmouse.js +147 -147
  121. package/public/spice-console/lib/images/bitmap.js +203 -203
  122. package/public/spice-console/network/spicechannel.js +440 -440
  123. package/public/spice-console/process/cursorprocess.js +121 -121
  124. package/public/spice-console/process/inputprocess.js +227 -227
  125. package/public/spice-console/process/mainprocess.js +210 -210
  126. package/public/spice-console/run.js +210 -210
  127. package/store/main/mutations.ts +7 -7
  128. package/store/main/state.ts +7 -7
  129. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +0 -143
  130. package/components/common/vm/actions/common/select/computeResource/New.vue +0 -184
  131. package/components/common/vm/actions/common/select/computeResource/Old.vue +0 -99
  132. package/components/common/vm/actions/common/select/computeResource/lib/ComputeResource.spec.ts +0 -479
  133. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +0 -51
  134. package/components/common/vm/actions/common/select/computeResource/treeView/Old.vue +0 -51
  135. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +0 -131
  136. package/components/common/wizards/common/compatibility/Compatibility.vue +0 -13
  137. package/components/common/wizards/common/compatibility/New.vue +0 -10
  138. package/components/common/wizards/common/compatibility/Old.vue +0 -10
  139. package/components/common/wizards/vm/common/validation/lib/models/enums.ts +0 -5
@@ -1,434 +1,454 @@
1
- <template>
2
- <ui-wizard
3
- :steps="props.wizard.steps"
4
- :selected-scheme="props.selectedScheme"
5
- :is-loading="props.wizard.wizardLoader.status"
6
- :title="props.title"
7
- :texts="texts"
8
- test-id="clone-exist-vm"
9
- show
10
- @change-steps="onChangeSteps"
11
- @hide="onHideModal"
12
- @submit="onClone"
13
- >
14
- <template #content="{ selectedStep }">
15
- <ui-wizard-block
16
- v-if="selectedStep.id === props.dynamicSteps.scheduledTasks"
17
- :sub-title-height="height0"
18
- >
19
- <template #subTitle>
20
- <div ref="subTitleBlock0">
21
- <div class="subtitle-block flex flex-col">
22
- <ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
23
- </div>
24
- </div>
25
- </template>
26
- <template #content>
27
- <common-pages-scheduled-tasks-modals-common-new-task-form
28
- v-model="schedulerTaskForm"
29
- :target="props.selectedVirtualMachine"
30
- class="new-task-form"
31
- />
32
- </template>
33
- </ui-wizard-block>
34
-
35
- <ui-wizard-block
36
- v-if="
37
- selectedStep.id === props.dynamicSteps.selectName ||
38
- selectedStep.id === props.dynamicSteps.selectNameFolder
39
- "
40
- :sub-title-height="height1"
41
- >
42
- <template #subTitle>
43
- <div ref="subTitleBlock1">
44
- <div class="subtitle-block flex flex-col">
45
- <div
46
- id="name-alert-wrapper"
47
- :class="[{ 'mb-4': !isNameAlertWrapperEmpty }]"
48
- ></div>
49
- <ui-wizard-subtitle
50
- :sub-title="localization.common.specifyUniqueNameForVm"
51
- />
52
- </div>
53
- </div>
54
- </template>
55
- <template #content>
56
- <common-wizards-common-steps-name
57
- v-model:name="vmForm.name"
58
- v-model:location="location"
59
- :show="
60
- selectedStep.id === props.dynamicSteps.selectName ||
61
- selectedStep.id === props.dynamicSteps.selectNameFolder
62
- "
63
- :name-form-submit="props.nameFormSubmit"
64
- :name-request-url="props.nameRequestUrl"
65
- :has-location="props.project === 'sphere'"
66
- :location-nodes="props.locationNodes"
67
- :allowed-location-kinds="props.allowedLocationKinds"
68
- :location-description="props.locationDescription"
69
- :validation-description="
70
- localization.common.enterValidLocationVirtualMachine
71
- "
72
- :name-exist-validation-description="
73
- localization.common.vmNameExistInSelectedLocation
74
- "
75
- :test-ids="props.nameTestIds"
76
- @submit="emits('change-name', $event)"
77
- @has-errors="isNameAlertWrapperEmpty = $event"
78
- />
79
- </template>
80
- </ui-wizard-block>
81
-
82
- <ui-wizard-block
83
- v-if="selectedStep.id === props.dynamicSteps.selectStorage"
84
- :sub-title-height="height2"
85
- >
86
- <template #subTitle>
87
- <div ref="subTitleBlock2">
88
- <div class="subtitle-block flex flex-col">
89
- <ui-wizard-subtitle
90
- :sub-title="
91
- localization.common.selectStorageConfigurationDiskFiles2
92
- "
93
- />
94
- </div>
95
- </div>
96
- </template>
97
- <template #content>
98
- <common-vm-actions-common-select-storage
99
- :storage-submit="props.storageSubmit"
100
- :datastore="props.datastore"
101
- :is-datastore-loading="props.isDatastoreLoading"
102
- :storage="vmForm.storage"
103
- :get-datastore-table-func="props.getDatastoreTableFunc"
104
- hide-alert
105
- @change-storage="emits('change-storage', $event)"
106
- />
107
- </template>
108
- </ui-wizard-block>
109
-
110
- <ui-wizard-block
111
- v-if="selectedStep.id === props.dynamicSteps.selectOptions"
112
- :sub-title-height="height3"
113
- >
114
- <template #subTitle>
115
- <div ref="subTitleBlock3">
116
- <div class="subtitle-block flex flex-col">
117
- <ui-wizard-subtitle
118
- :sub-title="localization.vmWizard.selectAdvancedOptionsCloning"
119
- />
120
- </div>
121
- </div>
122
- </template>
123
- <template #content>
124
- <common-vm-actions-common-select-options
125
- :is-create-template="props.isNewVmFromTemplate"
126
- @change="emits('change-select-options', $event)"
127
- />
128
- </template>
129
- </ui-wizard-block>
130
-
131
- <ui-wizard-block
132
- v-if="selectedStep.id === props.dynamicSteps.selectGuestOSMachineType"
133
- :sub-title-height="height4"
134
- >
135
- <template #subTitle>
136
- <div ref="subTitleBlock4">
137
- <div class="subtitle-block flex flex-col">
138
- <ui-wizard-subtitle
139
- :sub-title="
140
- localization.common
141
- .chooseGuestOSInstalledVmAndMachineTypeUsedCreateVm
142
- "
143
- />
144
- </div>
145
- </div>
146
- </template>
147
- <template #content>
148
- <common-vm-actions-common-select-os
149
- v-model:machine-type="vmForm.guestMachineType"
150
- v-model:guest-os-family="vmForm.guestOsFamily"
151
- v-model:guest-os-version="vmForm.guestOsVersion"
152
- :families-options="props.guestOsFamilies"
153
- :versions-options="props.guestOsVersions"
154
- :machine-types-options="props.machineTypes"
155
- :error-validation-fields="props.errorValidationFields"
156
- @remove-error-by-title="emits('remove-error-by-title', $event)"
157
- />
158
- </template>
159
- </ui-wizard-block>
160
-
161
- <ui-wizard-block
162
- v-if="selectedStep.id === props.dynamicSteps.customizeHardware"
163
- >
164
- <template #content>
165
- <common-vm-actions-common-customize-hardware
166
- v-model:vm-name="vmName"
167
- v-model:guest-machine-type="props.vmSettings.guestMachineType"
168
- v-model:guest-os-family="props.vmSettings.guestOsFamily"
169
- v-model:guest-os-version="props.vmSettings.guestOsVersion"
170
- :storage="vmForm.storage"
171
- :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
172
- :cd-dvd-drives-for-boot-options="
173
- props.virtualHardwareCdDvdDrivesLocal
174
- "
175
- :networks-for-boot-options="props.virtualHardwareNetworksLocal"
176
- :cd-dvd-drives="props.vmSettings.cdDvdDrives"
177
- :hard-disks="props.vmSettings.hardDisks"
178
- :networks="props.vmSettings.networks"
179
- :customize-hardware-submit="props.customizeHardwareSubmit"
180
- :max-cpus="props.vmSettings.maxCpus"
181
- :max-memory="props.vmSettings.maxMemory"
182
- :cpu-models="props.vmSettings.cpuModels"
183
- :cpu="props.vmSettings.cpu"
184
- :memory="props.vmSettings.memory"
185
- :video-card="props.vmSettings.videoCard"
186
- :usb-controller="props.vmSettings.usbController"
187
- :pci-devices="props.vmSettings.pciDevices"
188
- :selected-nav-item="props.selectedNavItem"
189
- :hard-disks-for-edit="props.vmSettings.hardDisks"
190
- :options="props.vmSettings.options"
191
- :nodes="props.nodes"
192
- :files="props.files"
193
- :networks-table="props.networksTable"
194
- :error-validation-fields="props.errorValidationFields"
195
- :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
196
- :passthrough-devices="props.passthroughDevices"
197
- :mediated-devices="props.mediatedDevices"
198
- :get-datastore-table-func="props.getDatastoreTableFunc"
199
- :datastore="props.datastore"
200
- :is-datastore-loading="props.isDatastoreLoading"
201
- :project="props.project"
202
- is-clone
203
- @change-boot-order="emits('change-boot-order', $event)"
204
- @send-data="emits('change-customize-hardware', $event)"
205
- @get-storage="emits('get-storage', $event)"
206
- @get-folders-or-files="emits('get-folders-or-files', $event)"
207
- @get-active-device-child="emits('get-active-device-child', $event)"
208
- @show-datastore-child="emits('show-datastore-child', $event)"
209
- @get-networks-table="emits('get-networks-table', $event)"
210
- @get-pci-devices="emits('get-pci-devices')"
211
- />
212
- </template>
213
- </ui-wizard-block>
214
-
215
- <ui-wizard-block
216
- v-if="selectedStep.id === props.dynamicSteps.selectComputeResource"
217
- >
218
- <template #content>
219
- <common-vm-actions-common-select-compute-resource
220
- v-if="props.isSphere"
221
- v-model="computeResource"
222
- :compute-resource-submit="props.computeResourceSubmit"
223
- :data-center="vmForm.dataCenter"
224
- :compute-resource="computeResource"
225
- :compute-resource-tree="props.computeResourceTree"
226
- @submit="emits('change-compute-resource', $event)"
227
- @select-compute-resource-tree="
228
- emits('select-compute-resource-tree-local', $event)
229
- "
230
- @get-compute-resource-tree="
231
- emits('get-compute-resource-tree', $event)
232
- "
233
- @show-compute-resource-tree="
234
- emits('show-compute-resource-tree', $event)
235
- "
236
- @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
237
- />
238
- </template>
239
- </ui-wizard-block>
240
-
241
- <ui-wizard-block
242
- v-if="selectedStep.id === props.dynamicSteps.readyComplete"
243
- :sub-title-height="heightReadyComplete"
244
- >
245
- <template #subTitle>
246
- <div ref="subTitleBlockReadyComplete">
247
- <div class="subtitle-block">
248
- <ui-wizard-subtitle
249
- :sub-title="localization.vmWizard.lastCreateSubtitle"
250
- />
251
- </div>
252
- </div>
253
- </template>
254
- <template #content>
255
- <div class="select-block-wrap h-full flex flex-col mt-3">
256
- <common-ready-to-complete :data="props.readyCompleteTableInfo" />
257
- <div
258
- class="vm-hardware-version-wrap justify-end flex flex-1 mt-4 pb-4"
259
- >
260
- <span class="vm-hardware-version">{{
261
- props.compatibilityInfo
262
- }}</span>
263
- </div>
264
- </div>
265
- </template>
266
- </ui-wizard-block>
267
- </template>
268
- </ui-wizard>
269
- </template>
270
-
271
- <script setup lang="ts">
272
- import { useElementSize } from '@vueuse/core'
273
- import type {
274
- UI_I_WizardStep,
275
- UI_I_WizardTexts,
276
- } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
277
- import type Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
278
- import type {
279
- UI_I_ArbitraryObject,
280
- UI_I_Localization,
281
- } from '~/lib/models/interfaces'
282
- import type {
283
- UI_I_SendDataNewCdDvdDrive,
284
- UI_I_SendDataNewHardDisk,
285
- UI_I_SendDataNewNetwork,
286
- } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
287
- import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
288
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
289
- import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
290
- import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
291
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
292
- import type { UI_I_NameTestIds } from '~/components/common/wizards/common/steps/name/lib/models/interfaces'
293
- import type { UI_T_Project } from '~/lib/models/types'
294
- import type { UI_I_VmForm } from '~/components/common/vm/actions/common/lib/models/interfaces'
295
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
296
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
297
- import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
298
- import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
299
- import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
300
- import type {
301
- UI_I_MediatedDevice,
302
- UI_I_PciDevice,
303
- UI_I_VmSettings,
304
- } from '~/lib/models/store/vm/interfaces'
305
- import type {
306
- UI_I_DatastoreTableItem,
307
- UI_I_FolderOrFileTreePayload,
308
- } from '~/lib/models/store/storage/interfaces'
309
- import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
310
-
311
- const vmForm = defineModel<UI_I_VmForm>('vm-form')
312
- const schedulerTaskForm = defineModel<UI_I_ScheduleNewTasksForm>(
313
- 'scheduler-task-form'
314
- )
315
- const vmName = defineModel<string>('vm-name')
316
- const computeResource = defineModel<UI_I_TreeNode | undefined>(
317
- 'compute-resource'
318
- )
319
- const location = defineModel<UI_I_TreeNode | null>('location')
320
- const props = defineProps<{
321
- project: UI_T_Project
322
- vmSettings: UI_I_VmSettings | null
323
- nodes: UI_I_FileTreeNode[]
324
- files: UI_I_FileTreeNode[]
325
- networksTable: UI_I_NetworkTableItem[]
326
- datastore: UI_I_DatastoreTableItem[]
327
- isDatastoreLoading: boolean
328
- errorValidationFields: UI_I_ErrorValidationField[]
329
- readyCompleteTableInfo: UI_I_TableInfoItem[]
330
- vmCpuHelpTextSecond: string
331
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
332
- passthroughDevices: UI_I_PciDevice[]
333
- mediatedDevices: UI_I_MediatedDevice[]
334
- nameRequestUrl: string
335
- wizard: Wizard
336
- selectedScheme: number[]
337
- selectedVirtualMachine: string
338
- isNewVmFromTemplate: boolean | undefined
339
- computeResourceTree: UI_I_TreeNode[] | undefined // для сферы
340
- locationNodes: UI_I_TreeNode[] | undefined // для сферы
341
- title: string
342
- nameFormSubmit: null | Function
343
- computeResourceSubmit: null | Function
344
- storageSubmit: null | Function
345
- customizeHardwareSubmit: null | Function
346
- selectedNavItem: UI_T_SelectedNavItem
347
- allowedLocationKinds: number[]
348
- isSphere: boolean
349
- locationDescription: string
350
- nameTestIds: UI_I_NameTestIds
351
- virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
352
- virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
353
- virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
354
- guestOsFamilies: UI_I_OptionItem[]
355
- guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
356
- machineTypes: UI_I_OptionItem[]
357
- dynamicSteps: UI_I_ArbitraryObject<number>
358
- }>()
359
-
360
- const emits = defineEmits<{
361
- (event: 'get-storage', value: UI_I_TablePayload): void
362
- (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
363
- (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
364
- (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
365
- (event: 'remove-error-by-title', value: string): void
366
- (event: 'get-networks-table', value: UI_I_TablePayload): void
367
- (event: 'get-pci-devices'): void
368
- (
369
- event: 'get-compute-resource-tree',
370
- value: { id: string | number; cb: () => void }
371
- ): void // для сферы
372
- (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void // для сферы
373
- (event: 'clear-compute-resource-tree'): void // для сферы
374
- (event: 'change-steps', value: UI_I_WizardStep[]): void
375
- (event: 'change-name', value: [string, UI_I_TreeNode | null]): void
376
- (event: 'change-storage', value: UI_I_DatastoreTableItem | null): void
377
- (event: 'change-select-options', value: string[]): void
378
- (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
379
- (event: 'change-compute-resource', value: UI_I_TreeNode): void
380
- (
381
- event: 'change-customize-hardware',
382
- value: UI_I_SendDataCustomizeHardware
383
- ): void
384
- (event: 'select-compute-resource-tree-local', value: UI_I_TreeNode): void
385
- (event: 'hide'): void
386
- (event: 'finish'): void
387
- }>()
388
-
389
- const localization = computed<UI_I_Localization>(() => useLocal())
390
-
391
- const texts = computed<UI_I_WizardTexts>(() => ({
392
- cancel: localization.value.common.cancel,
393
- back: localization.value.common.backCap,
394
- processing: localization.value.common.processing,
395
- next: localization.value.common.next,
396
- finish: localization.value.common.clone,
397
- incompleteTitle: localization.value.common.incompleteProcess,
398
- incompleteMessage: localization.value.common.incompleteProcessMessage,
399
- incompleteCancel: localization.value.common.cancel,
400
- incompleteLeave: localization.value.common.leave,
401
- step: localization.value.common.step,
402
- of: localization.value.common.of2,
403
- }))
404
-
405
- const subTitleBlock0 = ref<HTMLElement | null>(null)
406
- const { height: height0 } = useElementSize(subTitleBlock0)
407
-
408
- const subTitleBlock1 = ref<HTMLElement | null>(null)
409
- const { height: height1 } = useElementSize(subTitleBlock1)
410
-
411
- const subTitleBlock2 = ref<HTMLElement | null>(null)
412
- const { height: height2 } = useElementSize(subTitleBlock2)
413
-
414
- const subTitleBlock3 = ref<HTMLElement | null>(null)
415
- const { height: height3 } = useElementSize(subTitleBlock3)
416
-
417
- const subTitleBlock4 = ref<HTMLElement | null>(null)
418
- const { height: height4 } = useElementSize(subTitleBlock4)
419
-
420
- const subTitleBlockReadyComplete = ref<HTMLElement | null>(null)
421
- const { height: heightReadyComplete } = useElementSize(
422
- subTitleBlockReadyComplete
423
- )
424
-
425
- const isNameAlertWrapperEmpty = ref<boolean>(false)
426
-
427
- const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> =>
428
- emits('change-steps', value)
429
-
430
- const onHideModal = (): void => emits('hide')
431
- const onClone = (): void => emits('finish')
432
- </script>
433
-
434
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <ui-wizard
3
+ :steps="props.wizard.steps"
4
+ :selected-scheme="props.selectedScheme"
5
+ :is-loading="props.wizard.wizardLoader.status"
6
+ :title="props.title"
7
+ :texts="texts"
8
+ test-id="clone-exist-vm"
9
+ show
10
+ @change-steps="onChangeSteps"
11
+ @hide="onHideModal"
12
+ @submit="onClone"
13
+ >
14
+ <template #content="{ selectedStep }">
15
+ <ui-wizard-block
16
+ v-if="selectedStep.id === props.dynamicSteps.scheduledTasks"
17
+ :sub-title-height="height0"
18
+ >
19
+ <template #subTitle>
20
+ <div ref="subTitleBlock0">
21
+ <div class="subtitle-block flex flex-col">
22
+ <ui-wizard-subtitle :sub-title="selectedStep.subTitle" />
23
+ </div>
24
+ </div>
25
+ </template>
26
+ <template #content>
27
+ <common-pages-scheduled-tasks-modals-common-new-task-form
28
+ v-model="schedulerTaskForm"
29
+ :target="props.selectedVirtualMachine"
30
+ class="new-task-form"
31
+ />
32
+ </template>
33
+ </ui-wizard-block>
34
+
35
+ <ui-wizard-block
36
+ v-if="
37
+ selectedStep.id === props.dynamicSteps.selectName ||
38
+ selectedStep.id === props.dynamicSteps.selectNameFolder
39
+ "
40
+ :sub-title-height="height1"
41
+ >
42
+ <template #subTitle>
43
+ <div ref="subTitleBlock1">
44
+ <div class="subtitle-block flex flex-col">
45
+ <div
46
+ id="name-alert-wrapper"
47
+ :class="[{ 'mb-4': !isNameAlertWrapperEmpty }]"
48
+ ></div>
49
+ <ui-wizard-subtitle
50
+ :sub-title="localization.common.specifyUniqueNameForVm"
51
+ />
52
+ </div>
53
+ </div>
54
+ </template>
55
+ <template #content>
56
+ <common-wizards-common-steps-name
57
+ v-model:name="vmForm.name"
58
+ v-model:location="location"
59
+ :show="
60
+ selectedStep.id === props.dynamicSteps.selectName ||
61
+ selectedStep.id === props.dynamicSteps.selectNameFolder
62
+ "
63
+ :name-form-submit="props.nameFormSubmit"
64
+ :name-request-url="props.nameRequestUrl"
65
+ :has-location="props.project === 'sphere'"
66
+ :location-nodes="props.locationNodes"
67
+ :allowed-location-kinds="props.allowedLocationKinds"
68
+ :location-description="props.locationDescription"
69
+ :validation-description="
70
+ localization.common.enterValidLocationVirtualMachine
71
+ "
72
+ :name-exist-validation-description="
73
+ localization.common.vmNameExistInSelectedLocation
74
+ "
75
+ :test-ids="props.nameTestIds"
76
+ @submit="emits('change-name', $event)"
77
+ @has-errors="isNameAlertWrapperEmpty = $event"
78
+ />
79
+ </template>
80
+ </ui-wizard-block>
81
+
82
+ <ui-wizard-block
83
+ v-if="selectedStep.id === props.dynamicSteps.selectStorage"
84
+ :sub-title-height="height2"
85
+ >
86
+ <template #subTitle>
87
+ <div ref="subTitleBlock2">
88
+ <div class="subtitle-block flex flex-col">
89
+ <ui-wizard-subtitle
90
+ :sub-title="
91
+ localization.common.selectStorageConfigurationDiskFiles2
92
+ "
93
+ />
94
+ </div>
95
+ </div>
96
+ </template>
97
+ <template #content>
98
+ <common-vm-actions-common-select-storage
99
+ :storage-submit="props.storageSubmit"
100
+ :datastore="props.datastore"
101
+ :is-datastore-loading="props.isDatastoreLoading"
102
+ :storage="vmForm.storage"
103
+ :get-datastore-table-func="props.getDatastoreTableFunc"
104
+ hide-alert
105
+ @change-storage="emits('change-storage', $event)"
106
+ />
107
+ </template>
108
+ </ui-wizard-block>
109
+
110
+ <ui-wizard-block
111
+ v-if="selectedStep.id === props.dynamicSteps.selectOptions"
112
+ :sub-title-height="height3"
113
+ >
114
+ <template #subTitle>
115
+ <div ref="subTitleBlock3">
116
+ <div class="subtitle-block flex flex-col">
117
+ <ui-wizard-subtitle
118
+ :sub-title="localization.vmWizard.selectAdvancedOptionsCloning"
119
+ />
120
+ </div>
121
+ </div>
122
+ </template>
123
+ <template #content>
124
+ <common-vm-actions-common-select-options
125
+ :is-create-template="props.isNewVmFromTemplate"
126
+ @change="emits('change-select-options', $event)"
127
+ />
128
+ </template>
129
+ </ui-wizard-block>
130
+
131
+ <ui-wizard-block
132
+ v-if="selectedStep.id === props.dynamicSteps.selectGuestOSMachineType"
133
+ :sub-title-height="height4"
134
+ >
135
+ <template #subTitle>
136
+ <div ref="subTitleBlock4">
137
+ <div class="subtitle-block flex flex-col">
138
+ <ui-wizard-subtitle
139
+ :sub-title="
140
+ localization.common
141
+ .chooseGuestOSInstalledVmAndMachineTypeUsedCreateVm
142
+ "
143
+ />
144
+ </div>
145
+ </div>
146
+ </template>
147
+ <template #content>
148
+ <common-vm-actions-common-select-os
149
+ v-model:machine-type="vmForm.guestMachineType"
150
+ v-model:guest-os-family="vmForm.guestOsFamily"
151
+ v-model:guest-os-version="vmForm.guestOsVersion"
152
+ :families-options="props.guestOsFamilies"
153
+ :versions-options="props.guestOsVersions"
154
+ :machine-types-options="props.machineTypes"
155
+ :error-validation-fields="props.errorValidationFields"
156
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
157
+ />
158
+ </template>
159
+ </ui-wizard-block>
160
+
161
+ <ui-wizard-block
162
+ v-if="selectedStep.id === props.dynamicSteps.customizeHardware"
163
+ >
164
+ <template #content>
165
+ <common-vm-actions-common-customize-hardware
166
+ v-model:vm-name="vmName"
167
+ v-model:guest-machine-type="props.vmSettings.guestMachineType"
168
+ v-model:guest-os-family="props.vmSettings.guestOsFamily"
169
+ v-model:guest-os-version="props.vmSettings.guestOsVersion"
170
+ :storage="vmForm.storage"
171
+ :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
172
+ :cd-dvd-drives-for-boot-options="
173
+ props.virtualHardwareCdDvdDrivesLocal
174
+ "
175
+ :networks-for-boot-options="props.virtualHardwareNetworksLocal"
176
+ :cd-dvd-drives="props.vmSettings.cdDvdDrives"
177
+ :hard-disks="props.vmSettings.hardDisks"
178
+ :networks="props.vmSettings.networks"
179
+ :customize-hardware-submit="props.customizeHardwareSubmit"
180
+ :max-cpus="props.vmSettings.maxCpus"
181
+ :max-memory="props.vmSettings.maxMemory"
182
+ :cpu-models="props.vmSettings.cpuModels"
183
+ :cpu="props.vmSettings.cpu"
184
+ :memory="props.vmSettings.memory"
185
+ :video-card="props.vmSettings.videoCard"
186
+ :usb-controller="props.vmSettings.usbController"
187
+ :pci-devices="props.vmSettings.pciDevices"
188
+ :selected-nav-item="props.selectedNavItem"
189
+ :hard-disks-for-edit="props.vmSettings.hardDisks"
190
+ :options="props.vmSettings.options"
191
+ :nodes="props.nodes"
192
+ :files="props.files"
193
+ :networks-table="props.networksTable"
194
+ :error-validation-fields="props.errorValidationFields"
195
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
196
+ :passthrough-devices="props.passthroughDevices"
197
+ :mediated-devices="props.mediatedDevices"
198
+ :get-datastore-table-func="props.getDatastoreTableFunc"
199
+ :datastore="props.datastore"
200
+ :is-datastore-loading="props.isDatastoreLoading"
201
+ :project="props.project"
202
+ is-clone
203
+ @change-boot-order="emits('change-boot-order', $event)"
204
+ @send-data="emits('change-customize-hardware', $event)"
205
+ @get-storage="emits('get-storage', $event)"
206
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
207
+ @get-active-device-child="emits('get-active-device-child', $event)"
208
+ @show-datastore-child="emits('show-datastore-child', $event)"
209
+ @get-networks-table="emits('get-networks-table', $event)"
210
+ @get-pci-devices="emits('get-pci-devices')"
211
+ />
212
+ </template>
213
+ </ui-wizard-block>
214
+
215
+ <ui-wizard-block
216
+ v-if="selectedStep.id === props.dynamicSteps.selectComputeResource"
217
+ :sub-title-height="height5"
218
+ >
219
+ <template #subTitle>
220
+ <div ref="subTitleBlock5">
221
+ <div class="subtitle-block">
222
+ <ui-alert
223
+ v-if="props.computeResourceAlert.length"
224
+ :messages="props.computeResourceAlert"
225
+ test-id="computed-resource-alert"
226
+ type="error"
227
+ size="md"
228
+ class="subtitle-block__alert"
229
+ />
230
+ <ui-wizard-subtitle
231
+ :sub-title="
232
+ localization.vmWizard
233
+ .selectDestinationComputeResourceForThisOperation
234
+ "
235
+ />
236
+ </div>
237
+ </div>
238
+ </template>
239
+ <template #content>
240
+ <common-wizards-common-steps-compute-resource
241
+ v-if="props.isSphere"
242
+ v-show="selectedStep.id === props.dynamicSteps.selectComputeResource"
243
+ v-model="computeResource"
244
+ :node="computeResourceTreeLocal"
245
+ :alert-messages="props.computeResourceAlert"
246
+ :is-loading="props.isLoadingComputeTree"
247
+ :compatibility-text="props.compatibilityText"
248
+ />
249
+ </template>
250
+ </ui-wizard-block>
251
+
252
+ <ui-wizard-block
253
+ v-if="selectedStep.id === props.dynamicSteps.readyComplete"
254
+ :sub-title-height="heightReadyComplete"
255
+ >
256
+ <template #subTitle>
257
+ <div ref="subTitleBlockReadyComplete">
258
+ <div class="subtitle-block">
259
+ <ui-wizard-subtitle
260
+ :sub-title="localization.vmWizard.lastCreateSubtitle"
261
+ />
262
+ </div>
263
+ </div>
264
+ </template>
265
+ <template #content>
266
+ <div class="select-block-wrap h-full flex flex-col mt-3">
267
+ <common-ready-to-complete :data="props.readyCompleteTableInfo" />
268
+ <div
269
+ class="vm-hardware-version-wrap justify-end flex flex-1 mt-4 pb-4"
270
+ >
271
+ <span class="vm-hardware-version">{{
272
+ props.compatibilityInfo
273
+ }}</span>
274
+ </div>
275
+ </div>
276
+ </template>
277
+ </ui-wizard-block>
278
+ </template>
279
+ </ui-wizard>
280
+ </template>
281
+
282
+ <script setup lang="ts">
283
+ import { useElementSize } from '@vueuse/core'
284
+ import type {
285
+ UI_I_WizardStep,
286
+ UI_I_WizardTexts,
287
+ } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
288
+ import type Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
289
+ import type {
290
+ UI_I_ArbitraryObject,
291
+ UI_I_Localization,
292
+ } from '~/lib/models/interfaces'
293
+ import type {
294
+ UI_I_SendDataNewCdDvdDrive,
295
+ UI_I_SendDataNewHardDisk,
296
+ UI_I_SendDataNewNetwork,
297
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
298
+ import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
299
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
300
+ import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
301
+ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
302
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
303
+ import type { UI_I_NameTestIds } from '~/components/common/wizards/common/steps/name/lib/models/interfaces'
304
+ import type { UI_T_Project } from '~/lib/models/types'
305
+ import type { UI_I_VmForm } from '~/components/common/vm/actions/common/lib/models/interfaces'
306
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
307
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
308
+ import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
309
+ import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
310
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
311
+ import type {
312
+ UI_I_MediatedDevice,
313
+ UI_I_PciDevice,
314
+ UI_I_VmSettings,
315
+ } from '~/lib/models/store/vm/interfaces'
316
+ import type {
317
+ UI_I_DatastoreTableItem,
318
+ UI_I_FolderOrFileTreePayload,
319
+ } from '~/lib/models/store/storage/interfaces'
320
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
321
+
322
+ const vmForm = defineModel<UI_I_VmForm>('vm-form')
323
+ const schedulerTaskForm = defineModel<UI_I_ScheduleNewTasksForm>(
324
+ 'scheduler-task-form'
325
+ )
326
+ const vmName = defineModel<string>('vm-name')
327
+ const computeResource = defineModel<UI_I_TreeNode | undefined>(
328
+ 'compute-resource'
329
+ )
330
+ const location = defineModel<UI_I_TreeNode | null>('location')
331
+ const props = withDefaults(
332
+ defineProps<{
333
+ project: UI_T_Project
334
+ vmSettings: UI_I_VmSettings | null
335
+ nodes: UI_I_FileTreeNode[]
336
+ files: UI_I_FileTreeNode[]
337
+ networksTable: UI_I_NetworkTableItem[]
338
+ datastore: UI_I_DatastoreTableItem[]
339
+ isDatastoreLoading: boolean
340
+ errorValidationFields: UI_I_ErrorValidationField[]
341
+ readyCompleteTableInfo: UI_I_TableInfoItem[]
342
+ vmCpuHelpTextSecond: string
343
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
344
+ passthroughDevices: UI_I_PciDevice[]
345
+ mediatedDevices: UI_I_MediatedDevice[]
346
+ nameRequestUrl: string
347
+ wizard: Wizard
348
+ selectedScheme: number[]
349
+ selectedVirtualMachine: string
350
+ isNewVmFromTemplate: boolean | undefined
351
+ computeResourceTree: UI_I_TreeNode[] | undefined // для сферы
352
+ locationNodes: UI_I_TreeNode[] | undefined // для сферы
353
+ title: string
354
+ nameFormSubmit: null | Function
355
+ storageSubmit: null | Function
356
+ customizeHardwareSubmit: null | Function
357
+ selectedNavItem: UI_T_SelectedNavItem
358
+ allowedLocationKinds: number[]
359
+ isSphere: boolean
360
+ locationDescription: string
361
+ nameTestIds: UI_I_NameTestIds
362
+ virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
363
+ virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
364
+ virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
365
+ guestOsFamilies: UI_I_OptionItem[]
366
+ guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
367
+ machineTypes: UI_I_OptionItem[]
368
+ dynamicSteps: UI_I_ArbitraryObject<number>
369
+ isLoadingComputeTree?: boolean // для сферы
370
+ computeResourceAlert?: string[] // для сферы
371
+ compatibilityText?: [string, string] // для сферы
372
+ }>(),
373
+ {
374
+ isLoadingComputeTree: false,
375
+ computeResourceAlert: () => [],
376
+ compatibilityText: () => []
377
+ }
378
+ )
379
+
380
+ const emits = defineEmits<{
381
+ (event: 'get-storage', value: UI_I_TablePayload): void
382
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
383
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
384
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
385
+ (event: 'remove-error-by-title', value: string): void
386
+ (event: 'get-networks-table', value: UI_I_TablePayload): void
387
+ (event: 'get-pci-devices'): void
388
+ (event: 'change-steps', value: UI_I_WizardStep[]): void
389
+ (event: 'change-name', value: [string, UI_I_TreeNode | null]): void
390
+ (event: 'change-storage', value: UI_I_DatastoreTableItem | null): void
391
+ (event: 'change-select-options', value: string[]): void
392
+ (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
393
+ (
394
+ event: 'change-customize-hardware',
395
+ value: UI_I_SendDataCustomizeHardware
396
+ ): void
397
+ (event: 'hide'): void
398
+ (event: 'finish'): void
399
+ }>()
400
+
401
+ const localization = computed<UI_I_Localization>(() => useLocal())
402
+
403
+ const computeResourceTreeLocal = computed<UI_I_TreeNode | null>(() => {
404
+ // для сферы
405
+ return props.computeResourceTree?.[0] || null
406
+ })
407
+
408
+ const texts = computed<UI_I_WizardTexts>(() => ({
409
+ cancel: localization.value.common.cancel,
410
+ back: localization.value.common.backCap,
411
+ processing: localization.value.common.processing,
412
+ next: localization.value.common.next,
413
+ finish: localization.value.common.clone,
414
+ incompleteTitle: localization.value.common.incompleteProcess,
415
+ incompleteMessage: localization.value.common.incompleteProcessMessage,
416
+ incompleteCancel: localization.value.common.cancel,
417
+ incompleteLeave: localization.value.common.leave,
418
+ step: localization.value.common.step,
419
+ of: localization.value.common.of2,
420
+ }))
421
+
422
+ const subTitleBlock0 = ref<HTMLElement | null>(null)
423
+ const { height: height0 } = useElementSize(subTitleBlock0)
424
+
425
+ const subTitleBlock1 = ref<HTMLElement | null>(null)
426
+ const { height: height1 } = useElementSize(subTitleBlock1)
427
+
428
+ const subTitleBlock2 = ref<HTMLElement | null>(null)
429
+ const { height: height2 } = useElementSize(subTitleBlock2)
430
+
431
+ const subTitleBlock3 = ref<HTMLElement | null>(null)
432
+ const { height: height3 } = useElementSize(subTitleBlock3)
433
+
434
+ const subTitleBlock4 = ref<HTMLElement | null>(null)
435
+ const { height: height4 } = useElementSize(subTitleBlock4)
436
+
437
+ const subTitleBlock5 = ref<HTMLElement | null>(null)
438
+ const { height: height5 } = useElementSize(subTitleBlock5)
439
+
440
+ const subTitleBlockReadyComplete = ref<HTMLElement | null>(null)
441
+ const { height: heightReadyComplete } = useElementSize(
442
+ subTitleBlockReadyComplete
443
+ )
444
+
445
+ const isNameAlertWrapperEmpty = ref<boolean>(false)
446
+
447
+ const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> =>
448
+ emits('change-steps', value)
449
+
450
+ const onHideModal = (): void => emits('hide')
451
+ const onClone = (): void => emits('finish')
452
+ </script>
453
+
454
+ <style scoped lang="scss"></style>