bfg-common 1.5.388 → 1.5.390

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