bfg-common 1.5.534 → 1.5.535

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 (133) 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_ru.json +1 -1
  7. package/components/atoms/TheIcon3.vue +50 -50
  8. package/components/atoms/collapse/CollapseNav.vue +170 -170
  9. package/components/atoms/perPage/PerPage.vue +58 -58
  10. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  11. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  12. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  13. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  14. package/components/common/backup/storage/actions/add/Add.vue +251 -251
  15. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  16. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  17. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  18. package/components/common/browse/lib/models/interfaces.ts +5 -5
  19. package/components/common/diagramMain/network/Contents.vue +497 -497
  20. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  21. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  22. package/components/common/pages/backups/DetailView.vue +52 -52
  23. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  24. package/components/common/pages/backups/modals/Modals.vue +243 -243
  25. package/components/common/pages/backups/modals/createBackup/CreateBackup.vue +195 -195
  26. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  27. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  28. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  29. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  30. package/components/common/pages/backups/modals/restore/disks/Disks.vue +27 -27
  31. package/components/common/pages/backups/modals/restore/disks/tableView/lib/config/table.ts +117 -117
  32. package/components/common/pages/backups/modals/restore/name/Name.vue +166 -166
  33. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  34. package/components/common/pages/backups/modals/restore/networks/Networks.vue +70 -67
  35. package/components/common/pages/backups/modals/restore/networks/table/Table.vue +214 -214
  36. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +25 -25
  37. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  38. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  39. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  40. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  41. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  42. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  43. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  44. package/components/common/select/radio/RadioGroup.vue +137 -137
  45. package/components/common/spiceConsole/Drawer.vue +420 -420
  46. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  47. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  48. package/components/common/tools/Actions.vue +207 -207
  49. package/components/common/treeView/TreeView.vue +52 -52
  50. package/components/common/vm/actions/add/Add.vue +945 -895
  51. package/components/common/vm/actions/add/New.vue +689 -695
  52. package/components/common/vm/actions/add/Old.vue +400 -414
  53. package/components/common/vm/actions/add/lib/config/steps.ts +347 -347
  54. package/components/common/vm/actions/clone/Clone.vue +806 -754
  55. package/components/common/vm/actions/clone/{cloneNew/CloneNew.vue → new/New.vue} +454 -434
  56. package/components/common/vm/actions/clone/{cloneOld/CloneOld.vue → old/Old.vue} +375 -382
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +368 -368
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +427 -427
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +99 -93
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  67. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  68. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  69. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  70. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  71. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  72. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  73. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  74. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  75. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  76. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  77. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  78. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  79. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  80. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  81. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  82. package/components/common/vm/actions/register/Register.vue +352 -285
  83. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  84. package/components/common/wizards/common/steps/computeResource/ComputeResource.vue +85 -95
  85. package/components/common/wizards/common/steps/computeResource/New.vue +92 -88
  86. package/components/common/wizards/common/steps/computeResource/Old.vue +102 -81
  87. package/components/common/wizards/common/steps/computeResource/compatibility/Compatibility.vue +31 -0
  88. package/components/common/wizards/common/steps/computeResource/compatibility/New.vue +98 -0
  89. package/components/common/wizards/{vm/common/validation/compatibility/Compatibility.vue → common/steps/computeResource/compatibility/Old.vue} +54 -62
  90. package/components/common/wizards/common/steps/computeResource/compatibility/lib/models/enums.ts +6 -0
  91. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  92. package/components/common/wizards/common/steps/name/New.vue +221 -221
  93. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  94. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  95. package/components/common/wizards/common/steps/name/location/Location.vue +85 -85
  96. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  97. package/components/common/wizards/datastore/add/Add.vue +228 -228
  98. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  99. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  100. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +6 -6
  101. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  102. package/components/common/wizards/vm/migrate/select/storage/Storage.vue +3 -3
  103. package/composables/useAppVersion.ts +21 -21
  104. package/composables/useLocal.ts +6 -6
  105. package/composables/useLocalCommon.ts +39 -39
  106. package/package.json +2 -2
  107. package/plugins/console.ts +21 -21
  108. package/plugins/date.ts +233 -233
  109. package/plugins/mouse.ts +21 -21
  110. package/plugins/panelStates.ts +70 -70
  111. package/plugins/text.ts +59 -59
  112. package/public/spice-console/application/clientgui.js +854 -854
  113. package/public/spice-console/application/packetfactory.js +211 -211
  114. package/public/spice-console/application/virtualmouse.js +147 -147
  115. package/public/spice-console/lib/images/bitmap.js +203 -203
  116. package/public/spice-console/network/spicechannel.js +440 -440
  117. package/public/spice-console/process/cursorprocess.js +121 -121
  118. package/public/spice-console/process/inputprocess.js +227 -227
  119. package/public/spice-console/process/mainprocess.js +210 -210
  120. package/public/spice-console/run.js +210 -210
  121. package/store/main/mutations.ts +7 -7
  122. package/store/main/state.ts +7 -7
  123. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +0 -143
  124. package/components/common/vm/actions/common/select/computeResource/New.vue +0 -184
  125. package/components/common/vm/actions/common/select/computeResource/Old.vue +0 -99
  126. package/components/common/vm/actions/common/select/computeResource/lib/ComputeResource.spec.ts +0 -479
  127. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +0 -51
  128. package/components/common/vm/actions/common/select/computeResource/treeView/Old.vue +0 -51
  129. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +0 -131
  130. package/components/common/wizards/common/compatibility/Compatibility.vue +0 -13
  131. package/components/common/wizards/common/compatibility/New.vue +0 -10
  132. package/components/common/wizards/common/compatibility/Old.vue +0 -10
  133. package/components/common/wizards/vm/common/validation/lib/models/enums.ts +0 -5
@@ -1,382 +1,375 @@
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="selectedStep.id === dynamicSteps.selectComputeResource"
55
+ v-model="computeResource"
56
+ :node="computeResourceTreeLocal"
57
+ :alert-messages="props.computeResourceAlert"
58
+ :is-loading="props.isLoadingComputeTree"
59
+ :compatibility-text="props.compatibilityText"
60
+ />
61
+ <common-vm-actions-common-select-storage
62
+ v-show="selectedStep.id === props.dynamicSteps.selectStorage"
63
+ :storage-submit="props.storageSubmit"
64
+ :datastore="props.datastore"
65
+ :is-datastore-loading="props.isDatastoreLoading"
66
+ :storage="vmForm.storage"
67
+ :get-datastore-table-func="props.getDatastoreTableFunc"
68
+ @submit="emits('change-storage', $event)"
69
+ />
70
+ <common-vm-actions-common-select-options
71
+ v-show="selectedStep.id === props.dynamicSteps.selectOptions"
72
+ :is-create-template="props.isNewVmFromTemplate"
73
+ @change="emits('change-select-options', $event)"
74
+ />
75
+ <common-vm-actions-common-select-os
76
+ v-show="
77
+ selectedStep.id === props.dynamicSteps.selectGuestOSMachineType
78
+ "
79
+ v-model:machine-type="vmForm.guestMachineType"
80
+ v-model:guest-os-family="vmForm.guestOsFamily"
81
+ v-model:guest-os-version="vmForm.guestOsVersion"
82
+ :families-options="props.guestOsFamilies"
83
+ :versions-options="props.guestOsVersions"
84
+ :machine-types-options="props.machineTypes"
85
+ :error-validation-fields="props.errorValidationFields"
86
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
87
+ />
88
+ <common-vm-actions-common-customize-hardware
89
+ v-show="selectedStep.id === props.dynamicSteps.customizeHardware"
90
+ v-model:vm-name="vmName"
91
+ v-model:guest-machine-type="props.vmSettings.guestMachineType"
92
+ v-model:guest-os-family="props.vmSettings.guestOsFamily"
93
+ v-model:guest-os-version="props.vmSettings.guestOsVersion"
94
+ :storage="vmForm.storage"
95
+ :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
96
+ :cd-dvd-drives-for-boot-options="
97
+ props.virtualHardwareCdDvdDrivesLocal
98
+ "
99
+ :networks-for-boot-options="props.virtualHardwareNetworksLocal"
100
+ :cd-dvd-drives="props.vmSettings.cdDvdDrives"
101
+ :hard-disks="props.vmSettings.hardDisks"
102
+ :networks="props.vmSettings.networks"
103
+ :customize-hardware-submit="props.customizeHardwareSubmit"
104
+ :max-cpus="props.vmSettings.maxCpus"
105
+ :max-memory="props.vmSettings.maxMemory"
106
+ :cpu-models="props.vmSettings.cpuModels"
107
+ :cpu="props.vmSettings.cpu"
108
+ :memory="props.vmSettings.memory"
109
+ :video-card="props.vmSettings.videoCard"
110
+ :usb-controller="props.vmSettings.usbController"
111
+ :pci-devices="props.vmSettings.pciDevices"
112
+ :selected-nav-item="props.selectedNavItem"
113
+ :hard-disks-for-edit="props.vmSettings.hardDisks"
114
+ :options="props.vmSettings.options"
115
+ :nodes="props.nodes"
116
+ :files="props.files"
117
+ :networks-table="props.networksTable"
118
+ :error-validation-fields="props.errorValidationFields"
119
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
120
+ :passthrough-devices="props.passthroughDevices"
121
+ :mediated-devices="props.mediatedDevices"
122
+ :get-datastore-table-func="props.getDatastoreTableFunc"
123
+ :datastore="props.datastore"
124
+ :is-datastore-loading="props.isDatastoreLoading"
125
+ :project="props.project"
126
+ is-clone
127
+ @change-boot-order="emits('change-boot-order', $event)"
128
+ @send-data="emits('change-customize-hardware', $event)"
129
+ @get-storage="emits('get-storage', $event)"
130
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
131
+ @get-active-device-child="emits('get-active-device-child', $event)"
132
+ @show-datastore-child="emits('show-datastore-child', $event)"
133
+ @get-networks-table="emits('get-networks-table', $event)"
134
+ @get-pci-devices="emits('get-pci-devices')"
135
+ />
136
+ <common-ready-to-complete
137
+ v-show="selectedStep.id === props.dynamicSteps.readyComplete"
138
+ :data="props.readyCompleteTableInfo"
139
+ />
140
+ </div>
141
+ </template>
142
+ </atoms-wizard>
143
+ </div>
144
+ </template>
145
+
146
+ <script setup lang="ts">
147
+ import type { UI_I_WizardStep } from '~/node_modules/bfg-uikit/components/ui/wizard/lib/models/interfaces'
148
+ import Wizard from '~/node_modules/bfg-uikit/components/ui/wizard/lib/utils/utils'
149
+ import type {
150
+ UI_I_DatastoreTableItem,
151
+ UI_I_FolderOrFileTreePayload,
152
+ } from '~/lib/models/store/storage/interfaces'
153
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
154
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
155
+ import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
156
+ import type {
157
+ UI_I_ArbitraryObject,
158
+ UI_I_Localization,
159
+ } from '~/lib/models/interfaces'
160
+ import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
161
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
162
+ import type {
163
+ UI_I_SendDataNewCdDvdDrive,
164
+ UI_I_SendDataNewHardDisk,
165
+ UI_I_SendDataNewNetwork,
166
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
167
+ import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
168
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
169
+ import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
170
+ import type { UI_T_Project } from '~/lib/models/types'
171
+ import type {
172
+ UI_I_MediatedDevice,
173
+ UI_I_PciDevice,
174
+ UI_I_VmSettings,
175
+ } from '~/lib/models/store/vm/interfaces'
176
+ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
177
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
178
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
179
+ import type { UI_I_NameTestIds } from '~/components/common/wizards/common/steps/name/lib/models/interfaces'
180
+ import type { UI_I_VmForm } from '~/components/common/vm/actions/common/lib/models/interfaces'
181
+ import { dynamicSteps } from '~/components/common/vm/actions/add/lib/config/steps'
182
+
183
+ const vmForm = defineModel<UI_I_VmForm>('vm-form')
184
+ const schedulerTaskForm = defineModel<UI_I_ScheduleNewTasksForm>(
185
+ 'scheduler-task-form'
186
+ )
187
+ const vmName = defineModel<string>('vm-name')
188
+ const computeResource = defineModel<UI_I_TreeNode | undefined>(
189
+ 'compute-resource'
190
+ )
191
+ const location = defineModel<UI_I_TreeNode | null>('location')
192
+ const props = withDefaults(
193
+ defineProps<{
194
+ project: UI_T_Project
195
+ vmSettings: UI_I_VmSettings | null
196
+ nodes: UI_I_FileTreeNode[]
197
+ files: UI_I_FileTreeNode[]
198
+ networksTable: UI_I_NetworkTableItem[]
199
+ datastore: UI_I_DatastoreTableItem[]
200
+ isDatastoreLoading: boolean
201
+ errorValidationFields: UI_I_ErrorValidationField[]
202
+ readyCompleteTableInfo: UI_I_TableInfoItem[]
203
+ vmCpuHelpTextSecond: string
204
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
205
+ passthroughDevices: UI_I_PciDevice[]
206
+ mediatedDevices: UI_I_MediatedDevice[]
207
+ nameRequestUrl: string
208
+ wizard: Wizard
209
+ selectedScheme: number[]
210
+ selectedVirtualMachine: string
211
+ isNewVmFromTemplate: boolean | undefined
212
+ computeResourceTree: UI_I_TreeNode[] | undefined // для сферы
213
+ locationNodes: UI_I_TreeNode[] | undefined // для сферы
214
+ title: string
215
+ nameFormSubmit: null | Function
216
+ storageSubmit: null | Function
217
+ customizeHardwareSubmit: null | Function
218
+ selectedNavItem: UI_T_SelectedNavItem
219
+ allowedLocationKinds: number[]
220
+ isSphere: boolean
221
+ locationDescription: string
222
+ nameTestIds: UI_I_NameTestIds
223
+ virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
224
+ virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
225
+ virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
226
+ guestOsFamilies: UI_I_OptionItem[]
227
+ guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
228
+ machineTypes: UI_I_OptionItem[]
229
+ dynamicSteps: UI_I_ArbitraryObject<number>
230
+ isLoading: boolean
231
+ isLoadingComputeTree?: boolean // для сферы
232
+ computeResourceAlert?: string[] // для сферы
233
+ compatibilityText?: [string, string] // для сферы
234
+ }>(),
235
+ {
236
+ isLoadingComputeTree: false,
237
+ computeResourceAlert: () => [],
238
+ compatibilityText: () => [],
239
+ }
240
+ )
241
+
242
+ const emits = defineEmits<{
243
+ (event: 'get-storage', value: UI_I_TablePayload): void
244
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
245
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
246
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
247
+ (event: 'remove-error-by-title', value: string): void
248
+ (event: 'get-networks-table', value: UI_I_TablePayload): void
249
+ (event: 'get-pci-devices'): void
250
+ (event: 'change-steps', value: UI_I_WizardStep[]): void
251
+ (event: 'change-name', value: [string, UI_I_TreeNode | null]): void
252
+ (event: 'change-storage', value: UI_I_DatastoreTableItem | null): void
253
+ (event: 'change-select-options', value: string[]): void
254
+ (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
255
+ (
256
+ event: 'change-customize-hardware',
257
+ value: UI_I_SendDataCustomizeHardware
258
+ ): void
259
+ (event: 'hide'): void
260
+ (event: 'finish'): void
261
+ }>()
262
+
263
+ const localization = computed<UI_I_Localization>(() => useLocal())
264
+
265
+ const computeResourceTreeLocal = computed<UI_I_TreeNode | null>(() => { // для сферы
266
+ return props.computeResourceTree?.[0] || null
267
+ })
268
+ </script>
269
+
270
+ <style scoped lang="scss">
271
+ :deep(.has-solid.close-icon.clr-icon) {
272
+ width: 20px;
273
+ top: 0;
274
+ }
275
+ .vm-context {
276
+ padding: 16px 15px 10px 10px;
277
+ height: 100%;
278
+ display: flex;
279
+ flex-direction: column;
280
+
281
+ .context-title-wrap {
282
+ padding-bottom: 3px;
283
+ border-bottom: 1px solid #a6a6a6;
284
+
285
+ h4 {
286
+ font-weight: 700;
287
+ font-size: 13px;
288
+ color: var(--vm-context-title);
289
+ }
290
+ p {
291
+ font-weight: 400;
292
+ font-size: 13px;
293
+ color: var(--vm-context-sub-title);
294
+ }
295
+ }
296
+
297
+ .finish-block {
298
+ padding: 18px 24px 24px 24px;
299
+
300
+ .add-hosts-ready-to-complete-mt-12 {
301
+ margin-top: 12px;
302
+
303
+ .add-hosts-ready-to-complete-bold {
304
+ line-height: 18px;
305
+ font-weight: 700;
306
+ }
307
+ }
308
+ }
309
+
310
+ .vm-hardware-version {
311
+ align-self: flex-end;
312
+ margin-top: auto;
313
+ }
314
+ }
315
+
316
+ :deep(.modal .modal-dialog .modal-content .modal-footer) {
317
+ flex: unset;
318
+ height: unset;
319
+ min-height: unset;
320
+ }
321
+ :deep(.wizard-modal-titlebar h3) {
322
+ color: #000;
323
+ font-size: 24px;
324
+ font-weight: 200;
325
+ line-height: 27px;
326
+ margin: 0;
327
+ padding: 0;
328
+ }
329
+ :deep(.clr-wizard-stepnav-item) {
330
+ padding-left: 0;
331
+ }
332
+ :deep(.clr-wizard-stepnav
333
+ .clr-wizard-stepnav-item
334
+ button
335
+ .clr-wizard-stepnav-link-title) {
336
+ width: 189px;
337
+ font-weight: 700;
338
+ font-size: 13px;
339
+ }
340
+
341
+ #vm-wizard-notification {
342
+ h3 {
343
+ color: var(--global-font-color7);
344
+ margin-top: 6px;
345
+ }
346
+ p {
347
+ color: var(--global-font-color6);
348
+ line-height: 16px;
349
+ }
350
+ }
351
+
352
+ .power-on-by-default-wrap {
353
+ display: flex;
354
+ align-items: center;
355
+
356
+ input {
357
+ margin-right: 6px;
358
+ }
359
+ }
360
+
361
+ .new-task-form {
362
+ padding: 0 25px 0 5px;
363
+ }
364
+ </style>
365
+
366
+ <style>
367
+ :root {
368
+ --vm-context-title: #333;
369
+ --vm-context-sub-title: #000;
370
+ }
371
+ :root.dark-theme {
372
+ --vm-context-title: #adbbc4;
373
+ --vm-context-sub-title: #adbbc4;
374
+ }
375
+ </style>