bfg-common 1.5.387 → 1.5.388

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.
@@ -1,345 +1,345 @@
1
- <template>
2
- <ui-wizard
3
- :steps="props.wizard.steps"
4
- :selected-scheme="props.selectedScheme"
5
- :title="props.title"
6
- :texts="texts"
7
- :is-loading="props.isLoading"
8
- test-id="vmt-add"
9
- show
10
- @change-steps="emits('change-steps', $event)"
11
- @hide="emits('hide')"
12
- @submit="emits('finish')"
13
- >
14
- <template #content="{ selectedStep }">
15
- <!-- <ui-wizard-block-->
16
- <!-- v-if="selectedStep.id === props.dynamicSteps.scheduledTasks"-->
17
- <!-- >-->
18
- <!-- <template #content>-->
19
- <!-- <common-pages-scheduled-tasks-modals-common-new-task-form-->
20
- <!-- v-model="props.newTaskForm"-->
21
- <!-- target="0"-->
22
- <!-- class="new-task-form"-->
23
- <!-- />-->
24
- <!-- </template>-->
25
- <!-- </ui-wizard-block>-->
26
- <ui-wizard-block
27
- v-if="selectedStep.id === props.dynamicSteps.selectName"
28
- :sub-title-height="height0"
29
- >
30
- <template #subTitle>
31
- <div ref="subTitleBlock0" class="subtitle-block">
32
- <div
33
- id="name-alert-wrapper"
34
- :class="[{ 'mb-4': !isNameAlertWrapperEmpty }]"
35
- ></div>
36
- <ui-wizard-subtitle
37
- :sub-title="
38
- localization.vmWizard.specifyUniqueNameAndTargetLocationForVm
39
- "
40
- />
41
- </div>
42
- </template>
43
- <template #content>
44
- <common-vm-actions-common-select-name
45
- :show="selectedStep.id === props.dynamicSteps.selectName"
46
- :name-form-submit="props.nameFormSubmit"
47
- :project="props.project"
48
- @submit="emits('change-name', $event)"
49
- @check-name="emits('check-name', $event)"
50
- @has-errors="isNameAlertWrapperEmpty = $event"
51
- />
52
- </template>
53
- </ui-wizard-block>
54
- <ui-wizard-block
55
- v-if="selectedStep.id === props.dynamicSteps.selectStorage"
56
- :sub-title-height="height2"
57
- >
58
- <template #subTitle>
59
- <div ref="subTitleBlock2">
60
- <div class="subtitle-block">
61
- <div
62
- id="storage-alert-wrapper"
63
- :class="[{ 'mb-4': !isStorageAlertWrapperEmpty }]"
64
- ></div>
65
- <ui-wizard-subtitle
66
- :sub-title="localization.vmt.wizardSubTitle2"
67
- />
68
- </div>
69
- </div>
70
- </template>
71
- <template #content>
72
- <common-vm-actions-common-select-storage
73
- :storage-submit="props.storageSubmit"
74
- :datastore="props.datastore"
75
- :is-datastore-loading="props.isDatastoreLoading"
76
- :get-datastore-table-func="props.getDatastoreTableFunc"
77
- @submit="emits('change-storage', $event)"
78
- @has-errors="isStorageAlertWrapperEmpty = $event"
79
- />
80
- </template>
81
- </ui-wizard-block>
82
-
83
- <ui-wizard-block
84
- v-if="selectedStep.id === props.dynamicSteps.selectGuestOSMachineType"
85
- :sub-title-height="height3"
86
- >
87
- <template #subTitle>
88
- <div ref="subTitleBlock3">
89
- <div class="subtitle-block">
90
- <ui-wizard-subtitle
91
- :sub-title="localization.common.chooseGuestOSInstalledVM"
92
- />
93
- </div>
94
- </div>
95
- </template>
96
- <template #content>
97
- <common-vm-actions-common-select-os
98
- v-model:machine-type="vmtForm.guestMachineType"
99
- v-model:guest-os-family="vmtForm.guestOsFamily"
100
- v-model:guest-os-version="vmtForm.guestOsVersion"
101
- :families-options="props.guestOsFamilies"
102
- :versions-options="props.guestOsVersions"
103
- :machine-types-options="props.machineTypes"
104
- :error-validation-fields="props.errorValidationFields"
105
- @remove-error-by-title="emits('remove-error-by-title', $event)"
106
- />
107
- </template>
108
- </ui-wizard-block>
109
-
110
- <ui-wizard-block
111
- v-if="selectedStep.id === props.dynamicSteps.customizeHardware"
112
- >
113
- <template #content>
114
- <div
115
- class="select-block-wrap overflow-auto h-full flex flex-col pr-8"
116
- >
117
- <common-vm-actions-common-customize-hardware
118
- :project="props.project"
119
- :vm-name="vmtForm.name"
120
- :guest-machine-type="vmtForm.guestMachineType"
121
- :guest-os-family="vmtForm.guestOsFamily"
122
- :guest-os-version="vmtForm.guestOsVersion"
123
- :storage="vmtForm.storage"
124
- :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
125
- :cd-dvd-drives-for-boot-options="
126
- props.virtualHardwareCdDvdDrivesLocal
127
- "
128
- :networks-for-boot-options="props.virtualHardwareNetworksLocal"
129
- :cd-dvd-drives="props.virtualHardwareCdDvdDrivesLocal"
130
- :customize-hardware-submit="props.customizeHardwareSubmit"
131
- :max-cpus="props.maxCpus"
132
- :max-memory="props.maxMemory"
133
- :cpu-models="props.cpuModels"
134
- :selected-nav-item="props.selectedNavItem"
135
- :nodes="props.nodes"
136
- :files="props.files"
137
- :networks-table="props.networksTable"
138
- :error-validation-fields="props.errorValidationFields"
139
- :get-datastore-table-func="props.getDatastoreTableFunc"
140
- :datastore="props.datastore"
141
- :is-datastore-loading="props.isDatastoreLoading"
142
- :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
143
- :passthrough-devices="props.passthroughDevices"
144
- :mediated-devices="props.mediatedDevices"
145
- :compute-resource="vmtForm.computeResource"
146
- @change-boot-order="emits('change-boot-order', $event)"
147
- @send-data="emits('change-customize-hardware', $event)"
148
- @get-storage="emits('get-storage', $event)"
149
- @get-folders-or-files="emits('get-folders-or-files', $event)"
150
- @get-active-device-child="
151
- emits('get-active-device-child', $event)
152
- "
153
- @show-datastore-child="emits('show-datastore-child', $event)"
154
- @remove-error-by-title="emits('remove-error-by-title', $event)"
155
- @get-networks-table="emits('get-networks-table', $event)"
156
- @get-pci-devices="emits('get-pci-devices')"
157
- />
158
- </div>
159
- </template>
160
- </ui-wizard-block>
161
- <ui-wizard-block
162
- v-if="selectedStep.id === props.dynamicSteps.readyComplete"
163
- :sub-title-height="heightLast"
164
- >
165
- <template #subTitle>
166
- <div ref="subTitleBlockLast">
167
- <div class="subtitle-block">
168
- <ui-wizard-subtitle
169
- :sub-title="localization.vmt.wizardSubTitleLast"
170
- />
171
- </div>
172
- </div>
173
- </template>
174
- <template #content>
175
- <div class="mt-3 mb-4">
176
- <common-ready-to-complete
177
- v-if="selectedStep.id === props.dynamicSteps.readyComplete"
178
- :data="props.readyCompleteTableInfo"
179
- />
180
- </div>
181
- </template>
182
- </ui-wizard-block>
183
- </template>
184
- </ui-wizard>
185
- </template>
186
-
187
- <script setup lang="ts">
188
- import { useElementSize } from '@vueuse/core'
189
- import type {
190
- UI_I_DatastoreTableItem,
191
- UI_I_FolderOrFileTreePayload,
192
- } from '~/lib/models/store/storage/interfaces'
193
- import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
194
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
195
- import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
196
- import type {
197
- UI_I_ArbitraryObject,
198
- UI_I_Localization,
199
- } from '~/lib/models/interfaces'
200
- import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
201
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
202
- import type {
203
- UI_I_SendDataNewCdDvdDrive,
204
- UI_I_SendDataNewHardDisk,
205
- UI_I_SendDataNewNetwork,
206
- } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
207
- import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
208
- import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
209
- import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
210
- import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
211
- import type { UI_T_Project } from '~/lib/models/types'
212
- import type {
213
- UI_I_MediatedDevice,
214
- UI_I_PciDevice,
215
- } from '~/lib/models/store/vm/interfaces'
216
- import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
217
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
218
- import type { UI_I_VmtForm } from '~/components/common/vmt/actions/add/lib/models/interfaces'
219
- import type { I_DynamicSteps } from '~/components/common/vmt/actions/add/lib/models/interfaces'
220
- import Wizard from '~/components/atoms/wizard/lib/utils/utils'
221
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
222
-
223
- const vmtForm = defineModel<UI_I_VmtForm>('vmtForm')
224
- const props = defineProps<{
225
- alertMessages: string[]
226
- title: string
227
- wizard: Wizard
228
- dynamicSteps: I_DynamicSteps
229
- newTaskForm: UI_I_ScheduleNewTasksForm
230
- selectedScheme: number[]
231
- nameFormSubmit: Function | null
232
- storageSubmit: Function | null
233
- customizeHardwareSubmit: Function | null
234
- isLoading: boolean
235
- selectedNavItem: UI_T_SelectedNavItem
236
- virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
237
- virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
238
- virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
239
- maxMemory: number
240
- maxCpus: number
241
- machineTypes: UI_I_OptionItem[]
242
- cpuModels: UI_I_OptionItem[]
243
- guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
244
- guestOsFamilies: UI_I_OptionItem[]
245
- project: UI_T_Project
246
- nodes: UI_I_FileTreeNode[]
247
- files: UI_I_FileTreeNode[]
248
- networksTable: UI_I_NetworkTableItem[]
249
- datastore: UI_I_DatastoreTableItem[]
250
- isDatastoreLoading: boolean
251
- errorValidationFields: UI_I_ErrorValidationField[]
252
- readyCompleteTableInfo: UI_I_TableInfoItem[]
253
- vmCpuHelpTextSecond: string
254
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
255
- passthroughDevices: UI_I_PciDevice[]
256
- mediatedDevices: UI_I_MediatedDevice[]
257
- }>()
258
-
259
- const emits = defineEmits<{
260
- (event: 'change-steps', value: UI_I_WizardStep[]): void
261
- (
262
- event: 'check-name',
263
- value: [[string, UI_I_TreeNode | null], (error: any) => void]
264
- ): void
265
- (event: 'get-storage', value: UI_I_TablePayload): void
266
- (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
267
- (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
268
- (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
269
- (event: 'remove-error-by-title', value: string): void
270
- (event: 'get-networks-table', value: UI_I_TablePayload): void
271
- (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
272
- (
273
- event: 'change-customize-hardware',
274
- value: UI_I_SendDataCustomizeHardware
275
- ): void
276
- (event: 'get-pci-devices'): void
277
- (event: 'change-storage', value: UI_I_DatastoreTableItem | null): void
278
- (event: 'change-name', value: [string, UI_I_TreeNode | null]): void
279
- (event: 'hide'): void
280
- (event: 'finish'): void
281
- }>()
282
-
283
- const localization = computed<UI_I_Localization>(() => useLocal())
284
-
285
- const texts = computed<UI_I_WizardTexts>(() => ({
286
- cancel: localization.value.common.cancel,
287
- back: localization.value.common.backCap,
288
- processing: localization.value.common.processing,
289
- next: localization.value.common.next,
290
- finish: localization.value.common.create,
291
- incompleteTitle: localization.value.common.incompleteProcess,
292
- incompleteMessage: localization.value.common.incompleteProcessMessage,
293
- incompleteCancel: localization.value.common.cancel,
294
- incompleteLeave: localization.value.common.leave,
295
- step: localization.value.common.step,
296
- of: localization.value.common.of2,
297
- }))
298
-
299
- const subTitleBlock0 = ref<HTMLElement | null>(null)
300
- const { height: height0 } = useElementSize(subTitleBlock0)
301
-
302
- const subTitleBlock2 = ref<HTMLElement | null>(null)
303
- const { height: height2 } = useElementSize(subTitleBlock2)
304
-
305
- const subTitleBlock3 = ref<HTMLElement | null>(null)
306
- const { height: height3 } = useElementSize(subTitleBlock3)
307
-
308
- const subTitleBlockLast = ref<HTMLElement | null>(null)
309
- const { height: heightLast } = useElementSize(subTitleBlockLast)
310
-
311
- const isNameAlertWrapperEmpty = ref<boolean>(false)
312
- const isStorageAlertWrapperEmpty = ref<boolean>(false)
313
- </script>
314
-
315
- <style scoped lang="scss">
316
- .subtitle-block {
317
- display: flex;
318
- flex-direction: column;
319
- border-bottom: 1px solid var(--wizard-line);
320
- padding-bottom: 12px;
321
- }
322
- .select-block-wrap {
323
- :deep(.customize-hardware) {
324
- height: inherit;
325
- max-height: 100%;
326
- padding-bottom: 40px;
327
-
328
- :deep(.tabs-wrapper) {
329
- overflow-y: auto;
330
- }
331
- :deep(.tabs-wrapper),
332
- :deep(.errors-alert),
333
- :deep(.action-wrap) {
334
- margin-right: 32px;
335
- }
336
- :deep(.virtual-hardware-content-block),
337
- :deep(.vm-options) {
338
- padding-right: 18px;
339
- }
340
- }
341
- :deep(.details-list) {
342
- margin-top: 0;
343
- }
344
- }
345
- </style>
1
+ <template>
2
+ <ui-wizard
3
+ :steps="props.wizard.steps"
4
+ :selected-scheme="props.selectedScheme"
5
+ :title="props.title"
6
+ :texts="texts"
7
+ :is-loading="props.isLoading"
8
+ test-id="vmt-add"
9
+ show
10
+ @change-steps="emits('change-steps', $event)"
11
+ @hide="emits('hide')"
12
+ @submit="emits('finish')"
13
+ >
14
+ <template #content="{ selectedStep }">
15
+ <!-- <ui-wizard-block-->
16
+ <!-- v-if="selectedStep.id === props.dynamicSteps.scheduledTasks"-->
17
+ <!-- >-->
18
+ <!-- <template #content>-->
19
+ <!-- <common-pages-scheduled-tasks-modals-common-new-task-form-->
20
+ <!-- v-model="props.newTaskForm"-->
21
+ <!-- target="0"-->
22
+ <!-- class="new-task-form"-->
23
+ <!-- />-->
24
+ <!-- </template>-->
25
+ <!-- </ui-wizard-block>-->
26
+ <ui-wizard-block
27
+ v-if="selectedStep.id === props.dynamicSteps.selectName"
28
+ :sub-title-height="height0"
29
+ >
30
+ <template #subTitle>
31
+ <div ref="subTitleBlock0" class="subtitle-block">
32
+ <div
33
+ id="name-alert-wrapper"
34
+ :class="[{ 'mb-4': !isNameAlertWrapperEmpty }]"
35
+ ></div>
36
+ <ui-wizard-subtitle
37
+ :sub-title="localization.vmWizard.wizardSubTitle1"
38
+ />
39
+ </div>
40
+ </template>
41
+ <template #content>
42
+ <common-vm-actions-common-select-name
43
+ :show="selectedStep.id === props.dynamicSteps.selectName"
44
+ :name-form-submit="props.nameFormSubmit"
45
+ :project="props.project"
46
+ @submit="emits('change-name', $event)"
47
+ @check-name="emits('check-name', $event)"
48
+ @has-errors="isNameAlertWrapperEmpty = $event"
49
+ />
50
+ </template>
51
+ </ui-wizard-block>
52
+ <ui-wizard-block
53
+ v-if="selectedStep.id === props.dynamicSteps.selectStorage"
54
+ :sub-title-height="height2"
55
+ >
56
+ <template #subTitle>
57
+ <div ref="subTitleBlock2">
58
+ <div class="subtitle-block">
59
+ <div
60
+ id="storage-alert-wrapper"
61
+ :class="[{ 'mb-4': !isStorageAlertWrapperEmpty }]"
62
+ ></div>
63
+ <ui-wizard-subtitle
64
+ :sub-title="localization.vmt.wizardSubTitle2"
65
+ />
66
+ </div>
67
+ </div>
68
+ </template>
69
+ <template #content>
70
+ <common-vm-actions-common-select-storage
71
+ :storage-submit="props.storageSubmit"
72
+ :datastore="props.datastore"
73
+ :is-datastore-loading="props.isDatastoreLoading"
74
+ :get-datastore-table-func="props.getDatastoreTableFunc"
75
+ @submit="emits('change-storage', $event)"
76
+ @has-errors="isStorageAlertWrapperEmpty = $event"
77
+ />
78
+ </template>
79
+ </ui-wizard-block>
80
+
81
+ <ui-wizard-block
82
+ v-if="selectedStep.id === props.dynamicSteps.selectGuestOSMachineType"
83
+ :sub-title-height="height3"
84
+ >
85
+ <template #subTitle>
86
+ <div ref="subTitleBlock3">
87
+ <div class="subtitle-block">
88
+ <ui-wizard-subtitle
89
+ :sub-title="localization.vmt.wizardSubTitle3"
90
+ />
91
+ </div>
92
+ </div>
93
+ </template>
94
+ <template #content>
95
+ <common-vm-actions-common-select-os
96
+ v-model:machine-type="vmtForm.guestMachineType"
97
+ v-model:guest-os-family="vmtForm.guestOsFamily"
98
+ v-model:guest-os-version="vmtForm.guestOsVersion"
99
+ :families-options="props.guestOsFamilies"
100
+ :versions-options="props.guestOsVersions"
101
+ :machine-types-options="props.machineTypes"
102
+ :error-validation-fields="props.errorValidationFields"
103
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
104
+ />
105
+ </template>
106
+ </ui-wizard-block>
107
+
108
+ <ui-wizard-block
109
+ v-if="selectedStep.id === props.dynamicSteps.customizeHardware"
110
+ >
111
+ <template #content>
112
+ <div class="select-block-wrap customize-hardware flex flex-col">
113
+ <common-vm-actions-common-customize-hardware
114
+ :project="props.project"
115
+ :vm-name="vmtForm.name"
116
+ :guest-machine-type="vmtForm.guestMachineType"
117
+ :guest-os-family="vmtForm.guestOsFamily"
118
+ :guest-os-version="vmtForm.guestOsVersion"
119
+ :storage="vmtForm.storage"
120
+ :hard-disks-for-boot-options="props.virtualHardwareHardDisksLocal"
121
+ :cd-dvd-drives-for-boot-options="
122
+ props.virtualHardwareCdDvdDrivesLocal
123
+ "
124
+ :networks-for-boot-options="props.virtualHardwareNetworksLocal"
125
+ :cd-dvd-drives="props.virtualHardwareCdDvdDrivesLocal"
126
+ :customize-hardware-submit="props.customizeHardwareSubmit"
127
+ :max-cpus="props.maxCpus"
128
+ :max-memory="props.maxMemory"
129
+ :cpu-models="props.cpuModels"
130
+ :selected-nav-item="props.selectedNavItem"
131
+ :nodes="props.nodes"
132
+ :files="props.files"
133
+ :networks-table="props.networksTable"
134
+ :error-validation-fields="props.errorValidationFields"
135
+ :get-datastore-table-func="props.getDatastoreTableFunc"
136
+ :datastore="props.datastore"
137
+ :is-datastore-loading="props.isDatastoreLoading"
138
+ :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
139
+ :passthrough-devices="props.passthroughDevices"
140
+ :mediated-devices="props.mediatedDevices"
141
+ :compute-resource="vmtForm.computeResource"
142
+ @change-boot-order="emits('change-boot-order', $event)"
143
+ @send-data="emits('change-customize-hardware', $event)"
144
+ @get-storage="emits('get-storage', $event)"
145
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
146
+ @get-active-device-child="
147
+ emits('get-active-device-child', $event)
148
+ "
149
+ @show-datastore-child="emits('show-datastore-child', $event)"
150
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
151
+ @get-networks-table="emits('get-networks-table', $event)"
152
+ @get-pci-devices="emits('get-pci-devices')"
153
+ />
154
+ </div>
155
+ </template>
156
+ </ui-wizard-block>
157
+ <ui-wizard-block
158
+ v-if="selectedStep.id === props.dynamicSteps.readyComplete"
159
+ :sub-title-height="heightLast"
160
+ >
161
+ <template #subTitle>
162
+ <div ref="subTitleBlockLast">
163
+ <div class="subtitle-block">
164
+ <ui-wizard-subtitle
165
+ :sub-title="localization.vmt.wizardSubTitleLast"
166
+ />
167
+ </div>
168
+ </div>
169
+ </template>
170
+ <template #content>
171
+ <div class="mt-3 mb-4">
172
+ <common-ready-to-complete
173
+ v-if="selectedStep.id === props.dynamicSteps.readyComplete"
174
+ :data="props.readyCompleteTableInfo"
175
+ />
176
+ </div>
177
+ </template>
178
+ </ui-wizard-block>
179
+ </template>
180
+ </ui-wizard>
181
+ </template>
182
+
183
+ <script setup lang="ts">
184
+ import { useElementSize } from '@vueuse/core'
185
+ import type {
186
+ UI_I_DatastoreTableItem,
187
+ UI_I_FolderOrFileTreePayload,
188
+ } from '~/lib/models/store/storage/interfaces'
189
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
190
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
191
+ import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
192
+ import type {
193
+ UI_I_ArbitraryObject,
194
+ UI_I_Localization,
195
+ } from '~/lib/models/interfaces'
196
+ import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
197
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
198
+ import type {
199
+ UI_I_SendDataNewCdDvdDrive,
200
+ UI_I_SendDataNewHardDisk,
201
+ UI_I_SendDataNewNetwork,
202
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
203
+ import type { UI_I_ScheduleNewTasksForm } from '~/components/common/pages/scheduledTasks/modals/lib/models/interfaces'
204
+ import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
205
+ import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
206
+ import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
207
+ import type { UI_T_Project } from '~/lib/models/types'
208
+ import type {
209
+ UI_I_MediatedDevice,
210
+ UI_I_PciDevice,
211
+ } from '~/lib/models/store/vm/interfaces'
212
+ import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
213
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
214
+ import type { UI_I_VmtForm } from '~/components/common/vmt/actions/add/lib/models/interfaces'
215
+ import type { I_DynamicSteps } from '~/components/common/vmt/actions/add/lib/models/interfaces'
216
+ import Wizard from '~/components/atoms/wizard/lib/utils/utils'
217
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
218
+
219
+ const vmtForm = defineModel<UI_I_VmtForm>('vmtForm')
220
+ const props = defineProps<{
221
+ alertMessages: string[]
222
+ title: string
223
+ wizard: Wizard
224
+ dynamicSteps: I_DynamicSteps
225
+ newTaskForm: UI_I_ScheduleNewTasksForm
226
+ selectedScheme: number[]
227
+ nameFormSubmit: Function | null
228
+ storageSubmit: Function | null
229
+ customizeHardwareSubmit: Function | null
230
+ isLoading: boolean
231
+ selectedNavItem: UI_T_SelectedNavItem
232
+ virtualHardwareCdDvdDrivesLocal: UI_I_SendDataNewCdDvdDrive[] | null
233
+ virtualHardwareNetworksLocal: UI_I_SendDataNewNetwork[] | null
234
+ virtualHardwareHardDisksLocal: UI_I_SendDataNewHardDisk[] | null
235
+ maxMemory: number
236
+ maxCpus: number
237
+ machineTypes: UI_I_OptionItem[]
238
+ cpuModels: UI_I_OptionItem[]
239
+ guestOsVersions: UI_I_ArbitraryObject<UI_I_OptionItem[]>
240
+ guestOsFamilies: UI_I_OptionItem[]
241
+ project: UI_T_Project
242
+ nodes: UI_I_FileTreeNode[]
243
+ files: UI_I_FileTreeNode[]
244
+ networksTable: UI_I_NetworkTableItem[]
245
+ datastore: UI_I_DatastoreTableItem[]
246
+ isDatastoreLoading: boolean
247
+ errorValidationFields: UI_I_ErrorValidationField[]
248
+ readyCompleteTableInfo: UI_I_TableInfoItem[]
249
+ vmCpuHelpTextSecond: string
250
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
251
+ passthroughDevices: UI_I_PciDevice[]
252
+ mediatedDevices: UI_I_MediatedDevice[]
253
+ }>()
254
+
255
+ const emits = defineEmits<{
256
+ (event: 'change-steps', value: UI_I_WizardStep[]): void
257
+ (
258
+ event: 'check-name',
259
+ value: [[string, UI_I_TreeNode | null], (error: any) => void]
260
+ ): void
261
+ (event: 'get-storage', value: UI_I_TablePayload): void
262
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
263
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
264
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
265
+ (event: 'remove-error-by-title', value: string): void
266
+ (event: 'get-networks-table', value: UI_I_TablePayload): void
267
+ (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
268
+ (
269
+ event: 'change-customize-hardware',
270
+ value: UI_I_SendDataCustomizeHardware
271
+ ): void
272
+ (event: 'get-pci-devices'): void
273
+ (event: 'change-storage', value: UI_I_DatastoreTableItem | null): void
274
+ (event: 'change-name', value: [string, UI_I_TreeNode | null]): void
275
+ (event: 'hide'): void
276
+ (event: 'finish'): void
277
+ }>()
278
+
279
+ const localization = computed<UI_I_Localization>(() => useLocal())
280
+
281
+ const texts = computed<UI_I_WizardTexts>(() => ({
282
+ cancel: localization.value.common.cancel,
283
+ back: localization.value.common.backCap,
284
+ processing: localization.value.common.processing,
285
+ next: localization.value.common.next,
286
+ finish: localization.value.common.create,
287
+ incompleteTitle: localization.value.common.incompleteProcess,
288
+ incompleteMessage: localization.value.common.incompleteProcessMessage,
289
+ incompleteCancel: localization.value.common.cancel,
290
+ incompleteLeave: localization.value.common.leave,
291
+ step: localization.value.common.step,
292
+ of: localization.value.common.of2,
293
+ }))
294
+
295
+ const subTitleBlock0 = ref<HTMLElement | null>(null)
296
+ const { height: height0 } = useElementSize(subTitleBlock0)
297
+
298
+ const subTitleBlock2 = ref<HTMLElement | null>(null)
299
+ const { height: height2 } = useElementSize(subTitleBlock2)
300
+
301
+ const subTitleBlock3 = ref<HTMLElement | null>(null)
302
+ const { height: height3 } = useElementSize(subTitleBlock3)
303
+
304
+ const subTitleBlockLast = ref<HTMLElement | null>(null)
305
+ const { height: heightLast } = useElementSize(subTitleBlockLast)
306
+
307
+ const isNameAlertWrapperEmpty = ref<boolean>(false)
308
+ const isStorageAlertWrapperEmpty = ref<boolean>(false)
309
+ </script>
310
+
311
+ <style scoped lang="scss">
312
+ .subtitle-block {
313
+ display: flex;
314
+ flex-direction: column;
315
+ border-bottom: 1px solid var(--wizard-line);
316
+ padding-bottom: 12px;
317
+ }
318
+ .select-block-wrap {
319
+ &.customize-hardware {
320
+ height: inherit;
321
+ max-height: 100%;
322
+ padding-bottom: 16px;
323
+
324
+ :deep(.tabs-wrapper) {
325
+ overflow-y: auto;
326
+
327
+ .tab-item {
328
+ padding-top: 0;
329
+ }
330
+ }
331
+ :deep(.tabs-wrapper),
332
+ :deep(.errors-alert),
333
+ :deep(.action-wrap) {
334
+ margin-right: 32px;
335
+ }
336
+ :deep(.virtual-hardware-content-block),
337
+ :deep(.vm-options) {
338
+ padding-right: 18px;
339
+ }
340
+ }
341
+ :deep(.details-list) {
342
+ margin-top: 0;
343
+ }
344
+ }
345
+ </style>