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,382 +1,378 @@
1
- <template>
2
- <div class="clone-vm">
3
- <atoms-wizard
4
- :wizard="props.wizard"
5
- :selected-scheme="props.selectedScheme"
6
- :title="props.title"
7
- :localization="localization"
8
- show
9
- @change-steps="emits('change-steps', $event)"
10
- @hide="emits('hide')"
11
- @submit="emits('finish')"
12
- >
13
- <template #modalBody="{ selectedStep }">
14
- <atoms-loader
15
- v-show="!props.vmSettings || props.isLoading"
16
- id="loader"
17
- test-id="clone-vm-loader"
18
- />
19
- <div v-if="props.vmSettings" class="vm-context">
20
- <common-pages-scheduled-tasks-modals-common-new-task-form
21
- v-show="selectedStep.id === props.dynamicSteps.scheduledTasks"
22
- v-model="schedulerTaskForm"
23
- :target="props.selectedVirtualMachine"
24
- class="new-task-form"
25
- />
26
- <common-wizards-common-steps-name
27
- v-show="
28
- selectedStep.id === props.dynamicSteps.selectName ||
29
- selectedStep.id === props.dynamicSteps.selectNameFolder
30
- "
31
- v-model:name="vmForm.name"
32
- v-model:location="location"
33
- :show="
34
- selectedStep.id === props.dynamicSteps.selectName ||
35
- selectedStep.id === props.dynamicSteps.selectNameFolder
36
- "
37
- :name-form-submit="props.nameFormSubmit"
38
- :name-request-url="props.nameRequestUrl"
39
- :validation-description="
40
- localization.common.enterValidLocationVirtualMachine
41
- "
42
- :name-exist-validation-description="
43
- localization.common.vmNameExistInSelectedLocation
44
- "
45
- :test-ids="props.nameTestIds"
46
- :has-location="props.project === 'sphere'"
47
- :location-nodes="props.locationNodes"
48
- :allowed-location-kinds="props.allowedLocationKinds"
49
- :location-description="props.locationDescription"
50
- @submit="emits('change-name', $event)"
51
- />
52
- <common-vm-actions-common-select-compute-resource
53
- v-if="props.isSphere"
54
- v-show="
55
- selectedStep.id === props.dynamicSteps.selectComputeResource
56
- "
57
- v-model="computeResource"
58
- :compute-resource-submit="props.computeResourceSubmit"
59
- :data-center="vmForm.dataCenter"
60
- :compute-resource="computeResource"
61
- :compute-resource-tree="props.computeResourceTree"
62
- @submit="emits('change-compute-resource', $event)"
63
- @select-compute-resource-tree="
64
- emits('select-compute-resource-tree-local', $event)
65
- "
66
- @get-compute-resource-tree="
67
- emits('get-compute-resource-tree', $event)
68
- "
69
- @show-compute-resource-tree="
70
- emits('show-compute-resource-tree', $event)
71
- "
72
- @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
73
- />
74
- <common-vm-actions-common-select-storage
75
- v-show="selectedStep.id === props.dynamicSteps.selectStorage"
76
- :storage-submit="props.storageSubmit"
77
- :datastore="props.datastore"
78
- :is-datastore-loading="props.isDatastoreLoading"
79
- :storage="vmForm.storage"
80
- :get-datastore-table-func="props.getDatastoreTableFunc"
81
- @submit="emits('change-storage', $event)"
82
- />
83
- <common-vm-actions-common-select-options
84
- v-show="selectedStep.id === props.dynamicSteps.selectOptions"
85
- :is-create-template="props.isNewVmFromTemplate"
86
- @change="emits('change-select-options', $event)"
87
- />
88
- <common-vm-actions-common-select-os
89
- v-show="
90
- selectedStep.id === props.dynamicSteps.selectGuestOSMachineType
91
- "
92
- v-model:machine-type="vmForm.guestMachineType"
93
- v-model:guest-os-family="vmForm.guestOsFamily"
94
- v-model:guest-os-version="vmForm.guestOsVersion"
95
- :families-options="props.guestOsFamilies"
96
- :versions-options="props.guestOsVersions"
97
- :machine-types-options="props.machineTypes"
98
- :error-validation-fields="props.errorValidationFields"
99
- @remove-error-by-title="emits('remove-error-by-title', $event)"
100
- />
101
- <common-vm-actions-common-customize-hardware
102
- v-show="selectedStep.id === props.dynamicSteps.customizeHardware"
103
- v-model:vm-name="vmName"
104
- v-model:guest-machine-type="props.vmSettings.guestMachineType"
105
- v-model:guest-os-family="props.vmSettings.guestOsFamily"
106
- v-model:guest-os-version="props.vmSettings.guestOsVersion"
107
- :storage="vmForm.storage"
108
- :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
109
- :cd-dvd-drives-for-boot-options="
110
- props.virtualHardwareCdDvdDrivesLocal
111
- "
112
- :networks-for-boot-options="props.virtualHardwareNetworksLocal"
113
- :cd-dvd-drives="props.vmSettings.cdDvdDrives"
114
- :hard-disks="props.vmSettings.hardDisks"
115
- :networks="props.vmSettings.networks"
116
- :customize-hardware-submit="props.customizeHardwareSubmit"
117
- :max-cpus="props.vmSettings.maxCpus"
118
- :max-memory="props.vmSettings.maxMemory"
119
- :cpu-models="props.vmSettings.cpuModels"
120
- :cpu="props.vmSettings.cpu"
121
- :memory="props.vmSettings.memory"
122
- :video-card="props.vmSettings.videoCard"
123
- :usb-controller="props.vmSettings.usbController"
124
- :pci-devices="props.vmSettings.pciDevices"
125
- :selected-nav-item="props.selectedNavItem"
126
- :hard-disks-for-edit="props.vmSettings.hardDisks"
127
- :options="props.vmSettings.options"
128
- :nodes="props.nodes"
129
- :files="props.files"
130
- :networks-table="props.networksTable"
131
- :error-validation-fields="props.errorValidationFields"
132
- :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
133
- :passthrough-devices="props.passthroughDevices"
134
- :mediated-devices="props.mediatedDevices"
135
- :get-datastore-table-func="props.getDatastoreTableFunc"
136
- :datastore="props.datastore"
137
- :is-datastore-loading="props.isDatastoreLoading"
138
- :project="props.project"
139
- is-clone
140
- @change-boot-order="emits('change-boot-order', $event)"
141
- @send-data="emits('change-customize-hardware', $event)"
142
- @get-storage="emits('get-storage', $event)"
143
- @get-folders-or-files="emits('get-folders-or-files', $event)"
144
- @get-active-device-child="emits('get-active-device-child', $event)"
145
- @show-datastore-child="emits('show-datastore-child', $event)"
146
- @get-networks-table="emits('get-networks-table', $event)"
147
- @get-pci-devices="emits('get-pci-devices')"
148
- />
149
- <common-ready-to-complete
150
- v-show="selectedStep.id === props.dynamicSteps.readyComplete"
151
- :data="props.readyCompleteTableInfo"
152
- />
153
- </div>
154
- </template>
155
- </atoms-wizard>
156
- </div>
157
- </template>
158
-
159
- <script setup lang="ts">
160
- import type { UI_I_WizardStep } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
161
- import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
162
- import type {
163
- UI_I_DatastoreTableItem,
164
- UI_I_FolderOrFileTreePayload,
165
- } from '~/lib/models/store/storage/interfaces'
166
- import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
167
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
168
- import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
169
- import type {
170
- UI_I_ArbitraryObject,
171
- UI_I_Localization,
172
- } from '~/lib/models/interfaces'
173
- import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
174
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
175
- import type {
176
- UI_I_SendDataNewCdDvdDrive,
177
- UI_I_SendDataNewHardDisk,
178
- UI_I_SendDataNewNetwork,
179
- } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
180
- import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
181
- import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
182
- import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
183
- import type { UI_T_Project } from '~/lib/models/types'
184
- import type {
185
- UI_I_MediatedDevice,
186
- UI_I_PciDevice,
187
- UI_I_VmSettings,
188
- } from '~/lib/models/store/vm/interfaces'
189
- import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
190
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
191
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
192
- import type { UI_I_NameTestIds } from '~/components/common/wizards/common/steps/name/lib/models/interfaces'
193
- import type { UI_I_VmForm } from '~/components/common/vm/actions/common/lib/models/interfaces'
194
-
195
- const vmForm = defineModel<UI_I_VmForm>('vm-form')
196
- const schedulerTaskForm = defineModel<UI_I_ScheduleNewTasksForm>(
197
- 'scheduler-task-form'
198
- )
199
- const vmName = defineModel<string>('vm-name')
200
- const computeResource = defineModel<UI_I_TreeNode | undefined>(
201
- 'compute-resource'
202
- )
203
- const location = defineModel<UI_I_TreeNode | null>('location')
204
- const props = defineProps<{
205
- project: UI_T_Project
206
- vmSettings: UI_I_VmSettings | null
207
- nodes: UI_I_FileTreeNode[]
208
- files: UI_I_FileTreeNode[]
209
- networksTable: UI_I_NetworkTableItem[]
210
- datastore: UI_I_DatastoreTableItem[]
211
- isDatastoreLoading: boolean
212
- errorValidationFields: UI_I_ErrorValidationField[]
213
- readyCompleteTableInfo: UI_I_TableInfoItem[]
214
- vmCpuHelpTextSecond: string
215
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
216
- passthroughDevices: UI_I_PciDevice[]
217
- mediatedDevices: UI_I_MediatedDevice[]
218
- nameRequestUrl: string
219
- wizard: Wizard
220
- selectedScheme: number[]
221
- selectedVirtualMachine: string
222
- isNewVmFromTemplate: boolean | undefined
223
- computeResourceTree: UI_I_TreeNode[] | undefined // для сферы
224
- locationNodes: UI_I_TreeNode[] | undefined // для сферы
225
- title: string
226
- nameFormSubmit: null | Function
227
- computeResourceSubmit: null | Function
228
- storageSubmit: null | Function
229
- customizeHardwareSubmit: null | Function
230
- selectedNavItem: UI_T_SelectedNavItem
231
- allowedLocationKinds: number[]
232
- isSphere: boolean
233
- locationDescription: string
234
- nameTestIds: UI_I_NameTestIds
235
- virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
236
- virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
237
- virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
238
- guestOsFamilies: UI_I_OptionItem[]
239
- guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
240
- machineTypes: UI_I_OptionItem[]
241
- dynamicSteps: UI_I_ArbitraryObject<number>
242
- isLoading: boolean
243
- }>()
244
-
245
- const emits = defineEmits<{
246
- (event: 'get-storage', value: UI_I_TablePayload): void
247
- (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
248
- (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
249
- (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
250
- (event: 'remove-error-by-title', value: string): void
251
- (event: 'get-networks-table', value: UI_I_TablePayload): void
252
- (event: 'get-pci-devices'): void
253
- (
254
- event: 'get-compute-resource-tree',
255
- value: { id: string | number; cb: () => void }
256
- ): void // для сферы
257
- (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void // для сферы
258
- (event: 'clear-compute-resource-tree'): void // для сферы
259
- (event: 'change-steps', value: UI_I_WizardStep[]): void
260
- (event: 'change-name', value: [string, UI_I_TreeNode | null]): void
261
- (event: 'change-storage', value: UI_I_DatastoreTableItem | null): void
262
- (event: 'change-select-options', value: string[]): void
263
- (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
264
- (event: 'change-compute-resource', value: UI_I_TreeNode): void
265
- (
266
- event: 'change-customize-hardware',
267
- value: UI_I_SendDataCustomizeHardware
268
- ): void
269
- (event: 'select-compute-resource-tree-local', value: UI_I_TreeNode): void
270
- (event: 'hide'): void
271
- (event: 'finish'): void
272
- }>()
273
-
274
- const localization = computed<UI_I_Localization>(() => useLocal())
275
- </script>
276
-
277
- <style scoped lang="scss">
278
- :deep(.has-solid.close-icon.clr-icon) {
279
- width: 20px;
280
- top: 0;
281
- }
282
- .vm-context {
283
- padding: 16px 15px 10px 10px;
284
- height: 100%;
285
- display: flex;
286
- flex-direction: column;
287
-
288
- .context-title-wrap {
289
- padding-bottom: 3px;
290
- border-bottom: 1px solid #a6a6a6;
291
-
292
- h4 {
293
- font-weight: 700;
294
- font-size: 13px;
295
- color: var(--vm-context-title);
296
- }
297
- p {
298
- font-weight: 400;
299
- font-size: 13px;
300
- color: var(--vm-context-sub-title);
301
- }
302
- }
303
-
304
- .finish-block {
305
- padding: 18px 24px 24px 24px;
306
-
307
- .add-hosts-ready-to-complete-mt-12 {
308
- margin-top: 12px;
309
-
310
- .add-hosts-ready-to-complete-bold {
311
- line-height: 18px;
312
- font-weight: 700;
313
- }
314
- }
315
- }
316
-
317
- .vm-hardware-version {
318
- align-self: flex-end;
319
- margin-top: auto;
320
- }
321
- }
322
-
323
- :deep(.modal .modal-dialog .modal-content .modal-footer) {
324
- flex: unset;
325
- height: unset;
326
- min-height: unset;
327
- }
328
- :deep(.wizard-modal-titlebar h3) {
329
- color: #000;
330
- font-size: 24px;
331
- font-weight: 200;
332
- line-height: 27px;
333
- margin: 0;
334
- padding: 0;
335
- }
336
- :deep(.clr-wizard-stepnav-item) {
337
- padding-left: 0;
338
- }
339
- :deep(.clr-wizard-stepnav
340
- .clr-wizard-stepnav-item
341
- button
342
- .clr-wizard-stepnav-link-title) {
343
- width: 189px;
344
- font-weight: 700;
345
- font-size: 13px;
346
- }
347
-
348
- #vm-wizard-notification {
349
- h3 {
350
- color: var(--global-font-color7);
351
- margin-top: 6px;
352
- }
353
- p {
354
- color: var(--global-font-color6);
355
- line-height: 16px;
356
- }
357
- }
358
-
359
- .power-on-by-default-wrap {
360
- display: flex;
361
- align-items: center;
362
-
363
- input {
364
- margin-right: 6px;
365
- }
366
- }
367
-
368
- .new-task-form {
369
- padding: 0 25px 0 5px;
370
- }
371
- </style>
372
-
373
- <style>
374
- :root {
375
- --vm-context-title: #333;
376
- --vm-context-sub-title: #000;
377
- }
378
- :root.dark-theme {
379
- --vm-context-title: #adbbc4;
380
- --vm-context-sub-title: #adbbc4;
381
- }
382
- </style>
1
+ <template>
2
+ <div class="clone-vm">
3
+ <atoms-wizard
4
+ :wizard="props.wizard"
5
+ :selected-scheme="props.selectedScheme"
6
+ :title="props.title"
7
+ :localization="localization"
8
+ show
9
+ @change-steps="emits('change-steps', $event)"
10
+ @hide="emits('hide')"
11
+ @submit="emits('finish')"
12
+ >
13
+ <template #modalBody="{ selectedStep }">
14
+ <atoms-loader
15
+ v-show="!props.vmSettings || props.isLoading"
16
+ id="loader"
17
+ test-id="clone-vm-loader"
18
+ />
19
+ <div v-if="props.vmSettings" class="vm-context">
20
+ <common-pages-scheduled-tasks-modals-common-new-task-form
21
+ v-show="selectedStep.id === props.dynamicSteps.scheduledTasks"
22
+ v-model="schedulerTaskForm"
23
+ :target="props.selectedVirtualMachine"
24
+ class="new-task-form"
25
+ />
26
+ <common-wizards-common-steps-name
27
+ v-show="
28
+ selectedStep.id === props.dynamicSteps.selectName ||
29
+ selectedStep.id === props.dynamicSteps.selectNameFolder
30
+ "
31
+ v-model:name="vmForm.name"
32
+ v-model:location="location"
33
+ :show="
34
+ selectedStep.id === props.dynamicSteps.selectName ||
35
+ selectedStep.id === props.dynamicSteps.selectNameFolder
36
+ "
37
+ :name-form-submit="props.nameFormSubmit"
38
+ :name-request-url="props.nameRequestUrl"
39
+ :validation-description="
40
+ localization.common.enterValidLocationVirtualMachine
41
+ "
42
+ :name-exist-validation-description="
43
+ localization.common.vmNameExistInSelectedLocation
44
+ "
45
+ :test-ids="props.nameTestIds"
46
+ :has-location="props.project === 'sphere'"
47
+ :location-nodes="props.locationNodes"
48
+ :allowed-location-kinds="props.allowedLocationKinds"
49
+ :location-description="props.locationDescription"
50
+ @submit="emits('change-name', $event)"
51
+ />
52
+ <common-wizards-common-steps-compute-resource
53
+ v-if="props.isSphere"
54
+ v-show="
55
+ selectedStep.id === props.dynamicSteps.selectComputeResource
56
+ "
57
+ v-model="computeResource"
58
+ :node="computeResourceTreeLocal"
59
+ :alert-messages="props.computeResourceAlert"
60
+ :is-loading="props.isLoadingComputeTree"
61
+ :compatibility-text="props.compatibilityText"
62
+ />
63
+ <common-vm-actions-common-select-storage
64
+ v-show="selectedStep.id === props.dynamicSteps.selectStorage"
65
+ :storage-submit="props.storageSubmit"
66
+ :datastore="props.datastore"
67
+ :is-datastore-loading="props.isDatastoreLoading"
68
+ :storage="vmForm.storage"
69
+ :get-datastore-table-func="props.getDatastoreTableFunc"
70
+ @submit="emits('change-storage', $event)"
71
+ />
72
+ <common-vm-actions-common-select-options
73
+ v-show="selectedStep.id === props.dynamicSteps.selectOptions"
74
+ :is-create-template="props.isNewVmFromTemplate"
75
+ @change="emits('change-select-options', $event)"
76
+ />
77
+ <common-vm-actions-common-select-os
78
+ v-show="
79
+ selectedStep.id === props.dynamicSteps.selectGuestOSMachineType
80
+ "
81
+ v-model:machine-type="vmForm.guestMachineType"
82
+ v-model:guest-os-family="vmForm.guestOsFamily"
83
+ v-model:guest-os-version="vmForm.guestOsVersion"
84
+ :families-options="props.guestOsFamilies"
85
+ :versions-options="props.guestOsVersions"
86
+ :machine-types-options="props.machineTypes"
87
+ :error-validation-fields="props.errorValidationFields"
88
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
89
+ />
90
+ <common-vm-actions-common-customize-hardware
91
+ v-show="selectedStep.id === props.dynamicSteps.customizeHardware"
92
+ v-model:vm-name="vmName"
93
+ v-model:guest-machine-type="props.vmSettings.guestMachineType"
94
+ v-model:guest-os-family="props.vmSettings.guestOsFamily"
95
+ v-model:guest-os-version="props.vmSettings.guestOsVersion"
96
+ :storage="vmForm.storage"
97
+ :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
98
+ :cd-dvd-drives-for-boot-options="
99
+ props.virtualHardwareCdDvdDrivesLocal
100
+ "
101
+ :networks-for-boot-options="props.virtualHardwareNetworksLocal"
102
+ :cd-dvd-drives="props.vmSettings.cdDvdDrives"
103
+ :hard-disks="props.vmSettings.hardDisks"
104
+ :networks="props.vmSettings.networks"
105
+ :customize-hardware-submit="props.customizeHardwareSubmit"
106
+ :max-cpus="props.vmSettings.maxCpus"
107
+ :max-memory="props.vmSettings.maxMemory"
108
+ :cpu-models="props.vmSettings.cpuModels"
109
+ :cpu="props.vmSettings.cpu"
110
+ :memory="props.vmSettings.memory"
111
+ :video-card="props.vmSettings.videoCard"
112
+ :usb-controller="props.vmSettings.usbController"
113
+ :pci-devices="props.vmSettings.pciDevices"
114
+ :selected-nav-item="props.selectedNavItem"
115
+ :hard-disks-for-edit="props.vmSettings.hardDisks"
116
+ :options="props.vmSettings.options"
117
+ :nodes="props.nodes"
118
+ :files="props.files"
119
+ :networks-table="props.networksTable"
120
+ :error-validation-fields="props.errorValidationFields"
121
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
122
+ :passthrough-devices="props.passthroughDevices"
123
+ :mediated-devices="props.mediatedDevices"
124
+ :get-datastore-table-func="props.getDatastoreTableFunc"
125
+ :datastore="props.datastore"
126
+ :is-datastore-loading="props.isDatastoreLoading"
127
+ :project="props.project"
128
+ is-clone
129
+ @change-boot-order="emits('change-boot-order', $event)"
130
+ @send-data="emits('change-customize-hardware', $event)"
131
+ @get-storage="emits('get-storage', $event)"
132
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
133
+ @get-active-device-child="emits('get-active-device-child', $event)"
134
+ @show-datastore-child="emits('show-datastore-child', $event)"
135
+ @get-networks-table="emits('get-networks-table', $event)"
136
+ @get-pci-devices="emits('get-pci-devices')"
137
+ />
138
+ <common-ready-to-complete
139
+ v-show="selectedStep.id === props.dynamicSteps.readyComplete"
140
+ :data="props.readyCompleteTableInfo"
141
+ />
142
+ </div>
143
+ </template>
144
+ </atoms-wizard>
145
+ </div>
146
+ </template>
147
+
148
+ <script setup lang="ts">
149
+ import type { UI_I_WizardStep } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
150
+ import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
151
+ import type {
152
+ UI_I_DatastoreTableItem,
153
+ UI_I_FolderOrFileTreePayload,
154
+ } from '~/lib/models/store/storage/interfaces'
155
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
156
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
157
+ import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
158
+ import type {
159
+ UI_I_ArbitraryObject,
160
+ UI_I_Localization,
161
+ } from '~/lib/models/interfaces'
162
+ import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
163
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
164
+ import type {
165
+ UI_I_SendDataNewCdDvdDrive,
166
+ UI_I_SendDataNewHardDisk,
167
+ UI_I_SendDataNewNetwork,
168
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
169
+ import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
170
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
171
+ import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
172
+ import type { UI_T_Project } from '~/lib/models/types'
173
+ import type {
174
+ UI_I_MediatedDevice,
175
+ UI_I_PciDevice,
176
+ UI_I_VmSettings,
177
+ } from '~/lib/models/store/vm/interfaces'
178
+ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
179
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
180
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
181
+ import type { UI_I_NameTestIds } from '~/components/common/wizards/common/steps/name/lib/models/interfaces'
182
+ import type { UI_I_VmForm } from '~/components/common/vm/actions/common/lib/models/interfaces'
183
+ import { dynamicSteps } from '~/components/common/vm/actions/add/lib/config/steps'
184
+
185
+ const vmForm = defineModel<UI_I_VmForm>('vm-form')
186
+ const schedulerTaskForm = defineModel<UI_I_ScheduleNewTasksForm>(
187
+ 'scheduler-task-form'
188
+ )
189
+ const vmName = defineModel<string>('vm-name')
190
+ const computeResource = defineModel<UI_I_TreeNode | undefined>(
191
+ 'compute-resource'
192
+ )
193
+ const location = defineModel<UI_I_TreeNode | null>('location')
194
+ const props = withDefaults(
195
+ defineProps<{
196
+ project: UI_T_Project
197
+ vmSettings: UI_I_VmSettings | null
198
+ nodes: UI_I_FileTreeNode[]
199
+ files: UI_I_FileTreeNode[]
200
+ networksTable: UI_I_NetworkTableItem[]
201
+ datastore: UI_I_DatastoreTableItem[]
202
+ isDatastoreLoading: boolean
203
+ errorValidationFields: UI_I_ErrorValidationField[]
204
+ readyCompleteTableInfo: UI_I_TableInfoItem[]
205
+ vmCpuHelpTextSecond: string
206
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
207
+ passthroughDevices: UI_I_PciDevice[]
208
+ mediatedDevices: UI_I_MediatedDevice[]
209
+ nameRequestUrl: string
210
+ wizard: Wizard
211
+ selectedScheme: number[]
212
+ selectedVirtualMachine: string
213
+ isNewVmFromTemplate: boolean | undefined
214
+ computeResourceTree: UI_I_TreeNode[] | undefined // для сферы
215
+ locationNodes: UI_I_TreeNode[] | undefined // для сферы
216
+ title: string
217
+ nameFormSubmit: null | Function
218
+ storageSubmit: null | Function
219
+ customizeHardwareSubmit: null | Function
220
+ selectedNavItem: UI_T_SelectedNavItem
221
+ allowedLocationKinds: number[]
222
+ isSphere: boolean
223
+ locationDescription: string
224
+ nameTestIds: UI_I_NameTestIds
225
+ virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
226
+ virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
227
+ virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
228
+ guestOsFamilies: UI_I_OptionItem[]
229
+ guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
230
+ machineTypes: UI_I_OptionItem[]
231
+ dynamicSteps: UI_I_ArbitraryObject<number>
232
+ isLoading: boolean
233
+ isLoadingComputeTree?: boolean // для сферы
234
+ computeResourceAlert?: string[] // для сферы
235
+ compatibilityText?: [string, string] // для сферы
236
+ }>(),
237
+ {
238
+ isLoadingComputeTree: false,
239
+ computeResourceAlert: () => [],
240
+ compatibilityText: () => [],
241
+ }
242
+ )
243
+
244
+ const emits = defineEmits<{
245
+ (event: 'get-storage', value: UI_I_TablePayload): void
246
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
247
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
248
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
249
+ (event: 'remove-error-by-title', value: string): void
250
+ (event: 'get-networks-table', value: UI_I_TablePayload): void
251
+ (event: 'get-pci-devices'): void
252
+ (event: 'change-steps', value: UI_I_WizardStep[]): void
253
+ (event: 'change-name', value: [string, UI_I_TreeNode | null]): void
254
+ (event: 'change-storage', value: UI_I_DatastoreTableItem | null): void
255
+ (event: 'change-select-options', value: string[]): void
256
+ (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
257
+ (
258
+ event: 'change-customize-hardware',
259
+ value: UI_I_SendDataCustomizeHardware
260
+ ): void
261
+ (event: 'hide'): void
262
+ (event: 'finish'): void
263
+ }>()
264
+
265
+ const localization = computed<UI_I_Localization>(() => useLocal())
266
+
267
+ const computeResourceTreeLocal = computed<UI_I_TreeNode | null>(() => {
268
+ // для сферы
269
+ return props.computeResourceTree?.[0] || null
270
+ })
271
+ </script>
272
+
273
+ <style scoped lang="scss">
274
+ :deep(.has-solid.close-icon.clr-icon) {
275
+ width: 20px;
276
+ top: 0;
277
+ }
278
+ .vm-context {
279
+ padding: 16px 15px 10px 10px;
280
+ height: 100%;
281
+ display: flex;
282
+ flex-direction: column;
283
+
284
+ .context-title-wrap {
285
+ padding-bottom: 3px;
286
+ border-bottom: 1px solid #a6a6a6;
287
+
288
+ h4 {
289
+ font-weight: 700;
290
+ font-size: 13px;
291
+ color: var(--vm-context-title);
292
+ }
293
+ p {
294
+ font-weight: 400;
295
+ font-size: 13px;
296
+ color: var(--vm-context-sub-title);
297
+ }
298
+ }
299
+
300
+ .finish-block {
301
+ padding: 18px 24px 24px 24px;
302
+
303
+ .add-hosts-ready-to-complete-mt-12 {
304
+ margin-top: 12px;
305
+
306
+ .add-hosts-ready-to-complete-bold {
307
+ line-height: 18px;
308
+ font-weight: 700;
309
+ }
310
+ }
311
+ }
312
+
313
+ .vm-hardware-version {
314
+ align-self: flex-end;
315
+ margin-top: auto;
316
+ }
317
+ }
318
+
319
+ :deep(.modal .modal-dialog .modal-content .modal-footer) {
320
+ flex: unset;
321
+ height: unset;
322
+ min-height: unset;
323
+ }
324
+ :deep(.wizard-modal-titlebar h3) {
325
+ color: #000;
326
+ font-size: 24px;
327
+ font-weight: 200;
328
+ line-height: 27px;
329
+ margin: 0;
330
+ padding: 0;
331
+ }
332
+ :deep(.clr-wizard-stepnav-item) {
333
+ padding-left: 0;
334
+ }
335
+ :deep(.clr-wizard-stepnav
336
+ .clr-wizard-stepnav-item
337
+ button
338
+ .clr-wizard-stepnav-link-title) {
339
+ width: 189px;
340
+ font-weight: 700;
341
+ font-size: 13px;
342
+ }
343
+
344
+ #vm-wizard-notification {
345
+ h3 {
346
+ color: var(--global-font-color7);
347
+ margin-top: 6px;
348
+ }
349
+ p {
350
+ color: var(--global-font-color6);
351
+ line-height: 16px;
352
+ }
353
+ }
354
+
355
+ .power-on-by-default-wrap {
356
+ display: flex;
357
+ align-items: center;
358
+
359
+ input {
360
+ margin-right: 6px;
361
+ }
362
+ }
363
+
364
+ .new-task-form {
365
+ padding: 0 25px 0 5px;
366
+ }
367
+ </style>
368
+
369
+ <style>
370
+ :root {
371
+ --vm-context-title: #333;
372
+ --vm-context-sub-title: #000;
373
+ }
374
+ :root.dark-theme {
375
+ --vm-context-title: #adbbc4;
376
+ --vm-context-sub-title: #adbbc4;
377
+ }
378
+ </style>