bfg-common 1.4.866 → 1.4.868
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.
- package/components/common/vm/actions/add/Add.vue +1 -0
- package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +634 -0
- package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -0
- package/components/common/vm/actions/clone/toTemplate/lib/models/interfaces.ts +14 -0
- package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +4 -0
- package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +3 -0
- package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +3 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +4 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +15 -10
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +69 -19
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +10 -8
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +5 -1
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +3 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +3 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +4 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +3 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +3 -0
- package/package.json +1 -1
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
2
|
+
import type { UI_I_WizardStep } from '~/components/atoms/wizard/lib/models/interfaces'
|
|
3
|
+
import type { I_DynamicSteps } from '~/components/common/vm/actions/clone/lib/models/interfaces'
|
|
4
|
+
import { UI_E_WIZARD_STATUS } from '~/components/atoms/wizard/lib/models/enums'
|
|
5
|
+
|
|
6
|
+
export const stepsFunc = (
|
|
7
|
+
localization: UI_I_Localization,
|
|
8
|
+
isScheduledTasks: boolean
|
|
9
|
+
): UI_I_WizardStep[] => {
|
|
10
|
+
let result: UI_I_WizardStep[] = [
|
|
11
|
+
{
|
|
12
|
+
id: 0,
|
|
13
|
+
stepName: '',
|
|
14
|
+
title: localization.common.schedulingOptions,
|
|
15
|
+
subTitle: '',
|
|
16
|
+
status: UI_E_WIZARD_STATUS.SELECTED,
|
|
17
|
+
isValid: true,
|
|
18
|
+
fields: {},
|
|
19
|
+
testId: 'new-roles-scheduling-options',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: 1,
|
|
23
|
+
stepName: '',
|
|
24
|
+
title: localization.common.selectName,
|
|
25
|
+
subTitle: localization.common.specifyUniqueName,
|
|
26
|
+
status: UI_E_WIZARD_STATUS.INACTIVE,
|
|
27
|
+
isValid: true,
|
|
28
|
+
testId: 'vm-wizard-select-name',
|
|
29
|
+
fields: {
|
|
30
|
+
name: {
|
|
31
|
+
field: '',
|
|
32
|
+
alert: '',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
id: 2,
|
|
38
|
+
stepName: '',
|
|
39
|
+
title: localization.common.selectStorage,
|
|
40
|
+
subTitle: localization.common.selectStorageConfigurationDiskFiles,
|
|
41
|
+
status: UI_E_WIZARD_STATUS.INACTIVE,
|
|
42
|
+
isValid: true,
|
|
43
|
+
testId: 'vm-wizard-select-storage',
|
|
44
|
+
fields: {
|
|
45
|
+
storage: {
|
|
46
|
+
field: '',
|
|
47
|
+
alert: '',
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 3,
|
|
53
|
+
stepName: '',
|
|
54
|
+
title: localization.common.customizeHardware,
|
|
55
|
+
subTitle: localization.common.configureVirtualMachineHardware,
|
|
56
|
+
status: UI_E_WIZARD_STATUS.INACTIVE,
|
|
57
|
+
isValid: true,
|
|
58
|
+
testId: 'vm-wizard-customize-hardware',
|
|
59
|
+
fields: {
|
|
60
|
+
customizeHardware: {
|
|
61
|
+
field: '',
|
|
62
|
+
alert: '',
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: 4,
|
|
68
|
+
stepName: '',
|
|
69
|
+
title: localization.common.readyComplete,
|
|
70
|
+
subTitle: localization.common.clickFinishStartCreation,
|
|
71
|
+
status: UI_E_WIZARD_STATUS.INACTIVE,
|
|
72
|
+
isValid: true,
|
|
73
|
+
testId: 'vm-wizard-ready-complete',
|
|
74
|
+
fields: {},
|
|
75
|
+
},
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
if (!isScheduledTasks) {
|
|
79
|
+
result.shift()
|
|
80
|
+
result[0].status = UI_E_WIZARD_STATUS.SELECTED
|
|
81
|
+
result = result.map((item) => {
|
|
82
|
+
item.id--
|
|
83
|
+
return item
|
|
84
|
+
})
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return result
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export const stepsSchemeInitial = (isScheduledTasks: boolean): number[][] => {
|
|
91
|
+
const resultWithOutScheduledTasks = [0, 1, 2, 3]
|
|
92
|
+
const resultWithScheduledTasks = [0, 1, 2, 3, 4]
|
|
93
|
+
|
|
94
|
+
return isScheduledTasks
|
|
95
|
+
? [resultWithScheduledTasks]
|
|
96
|
+
: [resultWithOutScheduledTasks]
|
|
97
|
+
}
|
|
98
|
+
export const getDynamicSteps = (isScheduledTasks: boolean): I_DynamicSteps => {
|
|
99
|
+
const resultWithOutScheduledTasks = {
|
|
100
|
+
selectName: 0,
|
|
101
|
+
selectStorage: 1,
|
|
102
|
+
customizeHardware: 2,
|
|
103
|
+
readyComplete: 3,
|
|
104
|
+
}
|
|
105
|
+
const resultWithScheduledTasks = {
|
|
106
|
+
scheduledTasks: 0,
|
|
107
|
+
selectName: 1,
|
|
108
|
+
selectStorage: 2,
|
|
109
|
+
customizeHardware: 3,
|
|
110
|
+
readyComplete: 4,
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return isScheduledTasks
|
|
114
|
+
? resultWithScheduledTasks
|
|
115
|
+
: resultWithOutScheduledTasks
|
|
116
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
|
|
2
|
+
|
|
3
|
+
export interface UI_I_VmForm {
|
|
4
|
+
name: string
|
|
5
|
+
storage: UI_I_DatastoreTableItem | null
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface I_DynamicSteps {
|
|
9
|
+
selectName: number
|
|
10
|
+
selectStorage: number
|
|
11
|
+
customizeHardware: number
|
|
12
|
+
readyComplete: number
|
|
13
|
+
scheduledTasks?: number
|
|
14
|
+
}
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
:project="props.project"
|
|
40
40
|
:nav-items="navItems"
|
|
41
41
|
:errors="errors"
|
|
42
|
+
:compute-resource="props.computeResource"
|
|
42
43
|
@change-boot-order="emits('change-boot-order', $event)"
|
|
43
44
|
@send-data="emits('send-data', $event)"
|
|
44
45
|
@next="emits('next')"
|
|
@@ -93,6 +94,7 @@
|
|
|
93
94
|
:project="props.project"
|
|
94
95
|
:nav-items="navItems"
|
|
95
96
|
:errors="errors"
|
|
97
|
+
:compute-resource="props.computeResource"
|
|
96
98
|
@change-boot-order="emits('change-boot-order', $event)"
|
|
97
99
|
@send-data="emits('send-data', $event)"
|
|
98
100
|
@next="emits('next')"
|
|
@@ -137,6 +139,7 @@ import type {
|
|
|
137
139
|
UI_I_MediatedDevice,
|
|
138
140
|
UI_I_PciDevice,
|
|
139
141
|
} from '~/lib/models/store/vm/interfaces'
|
|
142
|
+
import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
|
|
140
143
|
import { navItemsFunc } from '~/components/common/vm/actions/common/customizeHardware/lib/config/navItems'
|
|
141
144
|
|
|
142
145
|
const vmName = defineModel<string>('vmName', { required: true })
|
|
@@ -178,6 +181,7 @@ const props = defineProps<{
|
|
|
178
181
|
passthroughDevices?: UI_I_PciDevice[]
|
|
179
182
|
mediatedDevices?: UI_I_MediatedDevice[]
|
|
180
183
|
project?: UI_T_Project
|
|
184
|
+
computeResource?: UI_I_TreeNode | null
|
|
181
185
|
}>()
|
|
182
186
|
const emits = defineEmits<{
|
|
183
187
|
(event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
:mediated-devices="props.mediatedDevices"
|
|
46
46
|
:project="props.project"
|
|
47
47
|
:guest-machine-type="guestMachineType"
|
|
48
|
+
:computeResource="props.computeResource"
|
|
48
49
|
@send-data="emits('send-data-virtual-hardware-method', $event)"
|
|
49
50
|
@get-storage="emits('get-storage', $event)"
|
|
50
51
|
@get-folders-or-files="emits('get-folders-or-files', $event)"
|
|
@@ -107,6 +108,7 @@ import type {
|
|
|
107
108
|
UI_I_PciDevice,
|
|
108
109
|
} from '~/lib/models/store/vm/interfaces'
|
|
109
110
|
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
111
|
+
import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
|
|
110
112
|
import { navItemsNewViewFunc } from '~/components/common/vm/actions/common/customizeHardware/lib/config/navItems'
|
|
111
113
|
|
|
112
114
|
const vmName = defineModel<string>('vmName', { required: true })
|
|
@@ -162,6 +164,7 @@ const props = defineProps<{
|
|
|
162
164
|
mediatedDevices?: UI_I_MediatedDevice[]
|
|
163
165
|
vmCpuHelpTextSecond?: string
|
|
164
166
|
getDatastoreTableFunc?: (payload: UI_I_TablePayload) => Promise<void>
|
|
167
|
+
computeResource?: UI_I_TreeNode | null
|
|
165
168
|
}>()
|
|
166
169
|
const emits = defineEmits<{
|
|
167
170
|
(event: 'get-storage', value: UI_I_TablePayload): void
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
:mediated-devices="props.mediatedDevices"
|
|
39
39
|
:project="props.project"
|
|
40
40
|
:guest-machine-type="guestMachineType"
|
|
41
|
+
:compute-resource="props.computeResource"
|
|
41
42
|
@send-data="emits('send-data-virtual-hardware-method', $event)"
|
|
42
43
|
@get-storage="emits('get-storage', $event)"
|
|
43
44
|
@get-folders-or-files="emits('get-folders-or-files', $event)"
|
|
@@ -98,6 +99,7 @@ import type {
|
|
|
98
99
|
UI_I_MediatedDevice,
|
|
99
100
|
UI_I_PciDevice,
|
|
100
101
|
} from '~/lib/models/store/vm/interfaces'
|
|
102
|
+
import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
|
|
101
103
|
|
|
102
104
|
const vmName = defineModel<string>('vmName', { required: true })
|
|
103
105
|
const guestOsFamily = defineModel<UI_I_OptionItem | null>('guestOsFamily', {
|
|
@@ -152,6 +154,7 @@ const props = defineProps<{
|
|
|
152
154
|
mediatedDevices?: UI_I_MediatedDevice[]
|
|
153
155
|
vmCpuHelpTextSecond?: string
|
|
154
156
|
getDatastoreTableFunc?: (payload: UI_I_TablePayload) => Promise<void>
|
|
157
|
+
computeResource?: UI_I_TreeNode | null
|
|
155
158
|
}>()
|
|
156
159
|
const emits = defineEmits<{
|
|
157
160
|
(event: 'get-storage', value: UI_I_TablePayload): void
|
package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue
CHANGED
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
:passthrough-devices="passthroughDevices"
|
|
40
40
|
:mediated-devices="mediatedDevices"
|
|
41
41
|
:vm-cpu-help-text-second="vmCpuHelpTextSecond"
|
|
42
|
+
:compute-resource="props.computeResource"
|
|
42
43
|
@add-device="onAddDevice"
|
|
43
44
|
@get-storage="emits('get-storage', $event)"
|
|
44
45
|
@remove-network="onRemoveNetwork"
|
|
@@ -106,6 +107,7 @@
|
|
|
106
107
|
:passthrough-devices="passthroughDevices"
|
|
107
108
|
:mediated-devices="mediatedDevices"
|
|
108
109
|
:vm-cpu-help-text-second="vmCpuHelpTextSecond"
|
|
110
|
+
:compute-resource="props.computeResource"
|
|
109
111
|
@add-device="onAddDevice"
|
|
110
112
|
@get-storage="emits('get-storage', $event)"
|
|
111
113
|
@remove-network="onRemoveNetwork"
|
|
@@ -173,6 +175,7 @@ import type {
|
|
|
173
175
|
UI_I_PciDevice,
|
|
174
176
|
} from '~/lib/models/store/vm/interfaces'
|
|
175
177
|
import { dropdownItemsFunc } from './lib/config/dropdownItems'
|
|
178
|
+
import type {UI_I_TreeNode} from "~/components/common/recursionTree/lib/models/interfaces";
|
|
176
179
|
|
|
177
180
|
const props = defineProps<{
|
|
178
181
|
storage: UI_I_DatastoreTableItem | null
|
|
@@ -201,6 +204,7 @@ const props = defineProps<{
|
|
|
201
204
|
mediatedDevices?: UI_I_MediatedDevice[]
|
|
202
205
|
project: UI_T_Project
|
|
203
206
|
guestMachineType?: UI_I_OptionItem | null
|
|
207
|
+
computeResource?: UI_I_TreeNode | null
|
|
204
208
|
}>()
|
|
205
209
|
const emits = defineEmits<{
|
|
206
210
|
(event: 'send-data', value: UI_I_SendDataVirtualHardware): void
|
package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="virtual-hardware">
|
|
3
3
|
<div class="action-wrap">
|
|
4
|
-
<span class="device-count">{{deviceCountText}}</span>
|
|
4
|
+
<span class="device-count">{{ deviceCountText }}</span>
|
|
5
5
|
|
|
6
6
|
<div>
|
|
7
7
|
<button
|
|
8
8
|
id="add-device-dropdown"
|
|
9
|
-
:class="['pointer', {active: isShowAddDeviceDropdown}]"
|
|
9
|
+
:class="['pointer', { active: isShowAddDeviceDropdown }]"
|
|
10
10
|
data-id="add-device-dropdown"
|
|
11
11
|
@click="isShowAddDeviceDropdown = !isShowAddDeviceDropdown"
|
|
12
12
|
>
|
|
13
13
|
<ui-icon name="plus" width="18" height="18" />
|
|
14
14
|
<span>
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
{{ addNewDeviceText }}
|
|
16
|
+
</span>
|
|
17
17
|
</button>
|
|
18
18
|
<ui-dropdown
|
|
19
19
|
:items="dropdownItems"
|
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
:is-edit="props.isEdit"
|
|
66
66
|
:state="props.state"
|
|
67
67
|
:guest-machine-type="props.guestMachineType"
|
|
68
|
+
:compute-resource="props.computeResource"
|
|
68
69
|
@remove="emits('remove-hard-disk', [props.hardDisksIndex[key], item])"
|
|
69
70
|
@roll-back="emits('roll-back-hard-disk', props.hardDisksIndex[key])"
|
|
70
71
|
@send-data="
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
:is-edit="props.isEdit"
|
|
116
117
|
:state="props.state"
|
|
117
118
|
:guest-machine-type="props.guestMachineType"
|
|
119
|
+
:compute-resource="props.computeResource"
|
|
118
120
|
@remove-error-by-title="emits('remove-error-by-title', $event)"
|
|
119
121
|
@get-storage="emits('get-storage', $event)"
|
|
120
122
|
@get-folders-or-files="emits('get-folders-or-files', $event)"
|
|
@@ -222,9 +224,11 @@ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
|
222
224
|
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
223
225
|
import type {
|
|
224
226
|
API_UI_I_VmEditCpu,
|
|
225
|
-
API_UI_I_VmEditMemory,
|
|
227
|
+
API_UI_I_VmEditMemory,
|
|
228
|
+
UI_I_MediatedDevice,
|
|
226
229
|
UI_I_PciDevice,
|
|
227
230
|
} from '~/lib/models/store/vm/interfaces'
|
|
231
|
+
import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
|
|
228
232
|
import { dropdownItemsNewFunc } from './lib/config/dropdownItems'
|
|
229
233
|
|
|
230
234
|
const cpuInvalid = defineModel<boolean>('cpuInvalid', { required: true })
|
|
@@ -269,6 +273,7 @@ const props = defineProps<{
|
|
|
269
273
|
passthroughDevices?: UI_I_PciDevice[]
|
|
270
274
|
mediatedDevices?: UI_I_MediatedDevice[]
|
|
271
275
|
vmCpuHelpTextSecond?: string
|
|
276
|
+
computeResource?: UI_I_TreeNode | null
|
|
272
277
|
}>()
|
|
273
278
|
const emits = defineEmits<{
|
|
274
279
|
(event: 'add-device', value: { value: number }): void
|
|
@@ -353,10 +358,10 @@ const onAddDevice = (data: number): void => {
|
|
|
353
358
|
|
|
354
359
|
<style>
|
|
355
360
|
:root {
|
|
356
|
-
--vm-wizard-block-view-bg-color: #fafafa
|
|
361
|
+
--vm-wizard-block-view-bg-color: #fafafa;
|
|
357
362
|
}
|
|
358
363
|
:root.dark-theme {
|
|
359
|
-
--vm-wizard-block-view-bg-color: transparent
|
|
364
|
+
--vm-wizard-block-view-bg-color: transparent;
|
|
360
365
|
}
|
|
361
366
|
</style>
|
|
362
367
|
|
|
@@ -372,7 +377,7 @@ const onAddDevice = (data: number): void => {
|
|
|
372
377
|
font-size: 13px;
|
|
373
378
|
font-weight: 500;
|
|
374
379
|
line-height: 15.73px;
|
|
375
|
-
color: #
|
|
380
|
+
color: #9da6ad;
|
|
376
381
|
}
|
|
377
382
|
|
|
378
383
|
#add-device-dropdown {
|
|
@@ -389,8 +394,8 @@ const onAddDevice = (data: number): void => {
|
|
|
389
394
|
line-height: 15.73px;
|
|
390
395
|
|
|
391
396
|
&.active {
|
|
392
|
-
color: #
|
|
393
|
-
border-color: #
|
|
397
|
+
color: #008fd6;
|
|
398
|
+
border-color: #008fd6;
|
|
394
399
|
}
|
|
395
400
|
}
|
|
396
401
|
}
|
package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue
CHANGED
|
@@ -46,10 +46,18 @@
|
|
|
46
46
|
:is-edit="props.isEdit"
|
|
47
47
|
:state="props.state"
|
|
48
48
|
:guest-machine-type="props.guestMachineType"
|
|
49
|
+
:compute-resource="props.computeResource"
|
|
49
50
|
@remove="emits('remove-hard-disk', [props.hardDisksIndex[key], item])"
|
|
50
51
|
@roll-back="emits('roll-back-hard-disk', props.hardDisksIndex[key])"
|
|
51
|
-
@send-data="
|
|
52
|
-
|
|
52
|
+
@send-data="
|
|
53
|
+
emits('send-data-new-hard-disk-method', [
|
|
54
|
+
$event,
|
|
55
|
+
props.hardDisksIndex[key],
|
|
56
|
+
])
|
|
57
|
+
"
|
|
58
|
+
@invalid="
|
|
59
|
+
emits('set-invalid-hard-disk', [$event, props.hardDisksIndex[key]])
|
|
60
|
+
"
|
|
53
61
|
@remove-error-by-title="emits('remove-error-by-title', $event)"
|
|
54
62
|
/>
|
|
55
63
|
<common-vm-actions-common-customize-hardware-virtual-hardware-new-network
|
|
@@ -64,8 +72,15 @@
|
|
|
64
72
|
:state="props.state"
|
|
65
73
|
:project="props.project"
|
|
66
74
|
@remove="emits('remove-network', props.networksIndex[key])"
|
|
67
|
-
@send-data="
|
|
68
|
-
|
|
75
|
+
@send-data="
|
|
76
|
+
emits('send-data-new-network-method', [
|
|
77
|
+
$event,
|
|
78
|
+
props.networksIndex[key],
|
|
79
|
+
])
|
|
80
|
+
"
|
|
81
|
+
@invalid="
|
|
82
|
+
emits('set-invalid-network', [$event, props.networksIndex[key]])
|
|
83
|
+
"
|
|
69
84
|
@remove-error-by-title="emits('remove-error-by-title', $event)"
|
|
70
85
|
@get-networks-table="emits('get-networks-table', $event)"
|
|
71
86
|
/>
|
|
@@ -82,15 +97,23 @@
|
|
|
82
97
|
:is-edit="props.isEdit"
|
|
83
98
|
:state="props.state"
|
|
84
99
|
:guest-machine-type="props.guestMachineType"
|
|
100
|
+
:compute-resource="props.computeResource"
|
|
85
101
|
@remove-error-by-title="emits('remove-error-by-title', $event)"
|
|
86
102
|
@get-storage="emits('get-storage', $event)"
|
|
87
103
|
@get-folders-or-files="emits('get-folders-or-files', $event)"
|
|
88
104
|
@get-active-device-child="emits('get-active-device-child', $event)"
|
|
89
105
|
@show-datastore-child="emits('show-datastore-child', $event)"
|
|
90
|
-
@remove="
|
|
91
|
-
|
|
106
|
+
@remove="
|
|
107
|
+
emits('remove-cd-dvd-drive', [props.cdDvdDrivesIndex[key], item])
|
|
108
|
+
"
|
|
109
|
+
@roll-back="
|
|
110
|
+
emits('roll-back-cd-dvd-drive', props.cdDvdDrivesIndex[key])
|
|
111
|
+
"
|
|
92
112
|
@send-data="
|
|
93
|
-
emits('send-data-new-cd-dvd-drive-method', [
|
|
113
|
+
emits('send-data-new-cd-dvd-drive-method', [
|
|
114
|
+
$event,
|
|
115
|
+
props.cdDvdDrivesIndex[key],
|
|
116
|
+
])
|
|
94
117
|
"
|
|
95
118
|
/>
|
|
96
119
|
<common-vm-actions-common-customize-hardware-virtual-hardware-new-usb-controller
|
|
@@ -113,9 +136,17 @@
|
|
|
113
136
|
:state="props.state"
|
|
114
137
|
@remove="emits('remove-pci-device', props.pciDevicesIndex[key])"
|
|
115
138
|
@send-data="
|
|
116
|
-
emits('send-data-pci-devices-method', [
|
|
139
|
+
emits('send-data-pci-devices-method', [
|
|
140
|
+
$event,
|
|
141
|
+
props.pciDevicesIndex[key],
|
|
142
|
+
])
|
|
143
|
+
"
|
|
144
|
+
@invalid="
|
|
145
|
+
emits('set-invalid-pci-device', [
|
|
146
|
+
$event,
|
|
147
|
+
props.pciDevicesIndex[key],
|
|
148
|
+
])
|
|
117
149
|
"
|
|
118
|
-
@invalid="emits('set-invalid-pci-device', [$event, props.pciDevicesIndex[key]])"
|
|
119
150
|
@remove-error-by-title="emits('remove-error-by-title', $event)"
|
|
120
151
|
/>
|
|
121
152
|
</template>
|
|
@@ -179,13 +210,17 @@ import type {
|
|
|
179
210
|
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
180
211
|
import type {
|
|
181
212
|
API_UI_I_VmEditCpu,
|
|
182
|
-
API_UI_I_VmEditMemory,
|
|
213
|
+
API_UI_I_VmEditMemory,
|
|
214
|
+
UI_I_MediatedDevice,
|
|
183
215
|
UI_I_PciDevice,
|
|
184
216
|
} from '~/lib/models/store/vm/interfaces'
|
|
217
|
+
import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
|
|
185
218
|
|
|
186
|
-
const cpuInvalid = defineModel<boolean>('cpuInvalid', {required: true})
|
|
187
|
-
const memoryInvalid = defineModel<boolean>('memoryInvalid', {required: true})
|
|
188
|
-
const videoCardInvalid = defineModel<boolean>('videoCardInvalid', {
|
|
219
|
+
const cpuInvalid = defineModel<boolean>('cpuInvalid', { required: true })
|
|
220
|
+
const memoryInvalid = defineModel<boolean>('memoryInvalid', { required: true })
|
|
221
|
+
const videoCardInvalid = defineModel<boolean>('videoCardInvalid', {
|
|
222
|
+
required: true,
|
|
223
|
+
})
|
|
189
224
|
|
|
190
225
|
const props = defineProps<{
|
|
191
226
|
nodes: UI_I_FileTreeNode[]
|
|
@@ -223,6 +258,7 @@ const props = defineProps<{
|
|
|
223
258
|
passthroughDevices?: UI_I_PciDevice[]
|
|
224
259
|
mediatedDevices?: UI_I_MediatedDevice[]
|
|
225
260
|
vmCpuHelpTextSecond?: string
|
|
261
|
+
computeResource?: UI_I_TreeNode | null
|
|
226
262
|
}>()
|
|
227
263
|
const emits = defineEmits<{
|
|
228
264
|
(event: 'add-device', value: UI_I_DropdownTreeItemChild): void
|
|
@@ -235,7 +271,10 @@ const emits = defineEmits<{
|
|
|
235
271
|
(event: 'add-exist-hard-disk', value: UI_I_FileTreeNode): void
|
|
236
272
|
(event: 'roll-back-hard-disk', value: number): void
|
|
237
273
|
(event: 'set-invalid-network', value: [boolean, number]): void
|
|
238
|
-
(
|
|
274
|
+
(
|
|
275
|
+
event: 'remove-cd-dvd-drive',
|
|
276
|
+
value: [number, UI_I_SendDataNewCdDvdDrive]
|
|
277
|
+
): void
|
|
239
278
|
(event: 'show-datastore-child', value: UI_I_FileTreeNode): void
|
|
240
279
|
(event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
|
|
241
280
|
(event: 'send-data-cpu-method', value: UI_I_SendDataCpu): void
|
|
@@ -246,15 +285,26 @@ const emits = defineEmits<{
|
|
|
246
285
|
(event: 'get-active-device-child', value: UI_I_FileTreeNode): void
|
|
247
286
|
(event: 'send-data-memory-method', value: UI_I_SendDataMemory): void
|
|
248
287
|
(event: 'send-data-video-card-method', value: UI_I_SendDataVideoCard): void
|
|
249
|
-
(
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
288
|
+
(
|
|
289
|
+
event: 'send-data-new-network-method',
|
|
290
|
+
value: [UI_I_SendDataNewNetwork, number]
|
|
291
|
+
): void
|
|
292
|
+
(
|
|
293
|
+
event: 'send-data-pci-devices-method',
|
|
294
|
+
value: [UI_I_SendDataNewPciDevice, number]
|
|
295
|
+
): void
|
|
296
|
+
(
|
|
297
|
+
event: 'send-data-new-hard-disk-method',
|
|
298
|
+
value: [UI_I_SendDataNewHardDisk, number]
|
|
299
|
+
): void
|
|
300
|
+
(
|
|
301
|
+
event: 'send-data-new-cd-dvd-drive-method',
|
|
302
|
+
value: [UI_I_SendDataNewCdDvdDrive, number]
|
|
303
|
+
): void
|
|
253
304
|
(event: 'send-data-new-usb-controller-method', value: string): void
|
|
254
305
|
}>()
|
|
255
306
|
|
|
256
307
|
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
257
|
-
|
|
258
308
|
</script>
|
|
259
309
|
|
|
260
310
|
<style scoped lang="scss">
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
<script setup lang="ts">
|
|
33
33
|
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
34
34
|
import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
|
|
35
|
+
import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
|
|
35
36
|
import { capabilities } from '~/components/common/vm/actions/common/lib/config/capabilities'
|
|
36
37
|
|
|
37
38
|
const bus = defineModel<string>('bus')
|
|
@@ -45,6 +46,7 @@ const props = defineProps<{
|
|
|
45
46
|
shortOptions?: boolean
|
|
46
47
|
helpText?: string
|
|
47
48
|
guestMachineType?: UI_I_OptionItem | null
|
|
49
|
+
computeResource?: UI_I_TreeNode | null
|
|
48
50
|
}>()
|
|
49
51
|
const emits = defineEmits<{
|
|
50
52
|
(event: 'remove-error-by-title', value: string): void
|
|
@@ -57,18 +59,19 @@ const helpId = ref<string>(`bus-field-help-icon${useUniqueId()}`)
|
|
|
57
59
|
|
|
58
60
|
const busOptions = ref<UI_I_OptionItem[]>([])
|
|
59
61
|
watch(
|
|
60
|
-
() => props.guestMachineType,
|
|
62
|
+
[() => props.guestMachineType, () => props.computeResource],
|
|
61
63
|
() => {
|
|
62
64
|
if (props.guestMachineType) {
|
|
63
65
|
busOptions.value = capabilities.bus[props.guestMachineType.value]
|
|
64
66
|
if (props.shortOptions) {
|
|
65
67
|
busOptions.value = capabilities.cdromBus[props.guestMachineType.value]
|
|
66
68
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
if (busOptions.value) {
|
|
70
|
+
const hasSelected = busOptions.value.some(
|
|
71
|
+
(option) => option.value === bus.value
|
|
72
|
+
)
|
|
73
|
+
if (!hasSelected) bus.value = busOptions.value[0].value
|
|
74
|
+
}
|
|
72
75
|
}
|
|
73
76
|
},
|
|
74
77
|
{ immediate: true, deep: true }
|
|
@@ -93,5 +96,4 @@ const onRemoveValidationError = (): void => {
|
|
|
93
96
|
const isShowHelp = ref<boolean>(false)
|
|
94
97
|
</script>
|
|
95
98
|
|
|
96
|
-
<style scoped>
|
|
97
|
-
</style>
|
|
99
|
+
<style scoped></style>
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
:file-types="fileTypes"
|
|
21
21
|
:is-running="isRunning"
|
|
22
22
|
:guest-machine-type="guestMachineType"
|
|
23
|
+
:compute-resource="props.computeResource"
|
|
23
24
|
@remove="emits('remove')"
|
|
24
25
|
@roll-back="emits('roll-back')"
|
|
25
26
|
@remove-error-by-title="emits('remove-error-by-title', $event)"
|
|
@@ -52,6 +53,7 @@
|
|
|
52
53
|
:file-types="fileTypes"
|
|
53
54
|
:is-running="isRunning"
|
|
54
55
|
:guest-machine-type="guestMachineType"
|
|
56
|
+
:compute-resource="props.computeResource"
|
|
55
57
|
@remove="emits('remove')"
|
|
56
58
|
@roll-back="emits('roll-back')"
|
|
57
59
|
@remove-error-by-title="emits('remove-error-by-title', $event)"
|
|
@@ -62,7 +64,7 @@
|
|
|
62
64
|
@change-cd-dvd-drive="changeCdDvdDrive"
|
|
63
65
|
@select-file="onSelectFile"
|
|
64
66
|
@hide-file-modal="onHideFileModal"
|
|
65
|
-
|
|
67
|
+
/>
|
|
66
68
|
</template>
|
|
67
69
|
|
|
68
70
|
<script lang="ts" setup>
|
|
@@ -78,6 +80,7 @@ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
|
|
|
78
80
|
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
79
81
|
import type { UI_I_FolderOrFileTreePayload } from '~/lib/models/store/storage/interfaces'
|
|
80
82
|
import type { UI_T_CdDvdType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
|
|
83
|
+
import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
|
|
81
84
|
import { cdDvdDriveOptionsFunc } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/lib/config/options'
|
|
82
85
|
import { fileTypesFunc } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/lib/config/fileTypes'
|
|
83
86
|
|
|
@@ -93,6 +96,7 @@ const props = defineProps<{
|
|
|
93
96
|
disabled: boolean
|
|
94
97
|
state?: string | number
|
|
95
98
|
guestMachineType?: UI_I_OptionItem | null
|
|
99
|
+
computeResource?: UI_I_TreeNode | null
|
|
96
100
|
}>()
|
|
97
101
|
|
|
98
102
|
const emits = defineEmits<{
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
short-options
|
|
63
63
|
component-type="disk_devices"
|
|
64
64
|
:guest-machine-type="props.guestMachineType"
|
|
65
|
+
:compute-resource="props.computeResource"
|
|
65
66
|
@remove-error-by-title="emits('remove-error-by-title', $event)"
|
|
66
67
|
/>
|
|
67
68
|
</template>
|
|
@@ -92,6 +93,7 @@ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
|
|
|
92
93
|
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
93
94
|
import type { UI_I_FolderOrFileTreePayload } from '~/lib/models/store/storage/interfaces'
|
|
94
95
|
import type { UI_T_CdDvdType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
|
|
96
|
+
import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
|
|
95
97
|
|
|
96
98
|
const deleteFilesFromDatastore = defineModel<boolean>(
|
|
97
99
|
'deleteFilesFromDatastore',
|
|
@@ -121,6 +123,7 @@ const props = defineProps<{
|
|
|
121
123
|
fileTypes: UI_I_OptionItem[]
|
|
122
124
|
isRunning: boolean
|
|
123
125
|
guestMachineType?: UI_I_OptionItem | null
|
|
126
|
+
computeResource?: UI_I_TreeNode | null
|
|
124
127
|
}>()
|
|
125
128
|
|
|
126
129
|
const emits = defineEmits<{
|
|
@@ -81,6 +81,7 @@
|
|
|
81
81
|
short-options
|
|
82
82
|
component-type="disk_devices"
|
|
83
83
|
:guest-machine-type="props.guestMachineType"
|
|
84
|
+
:compute-resource="props.computeResource"
|
|
84
85
|
@remove-error-by-title="emits('remove-error-by-title', $event)"
|
|
85
86
|
/>
|
|
86
87
|
</template>
|
|
@@ -115,6 +116,7 @@ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
|
|
|
115
116
|
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
116
117
|
import type { UI_I_FolderOrFileTreePayload } from '~/lib/models/store/storage/interfaces'
|
|
117
118
|
import type { UI_T_CdDvdType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
|
|
119
|
+
import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
|
|
118
120
|
|
|
119
121
|
const deleteFilesFromDatastore = defineModel<boolean>(
|
|
120
122
|
'deleteFilesFromDatastore',
|
|
@@ -144,6 +146,7 @@ const props = defineProps<{
|
|
|
144
146
|
fileTypes: UI_I_OptionItem[]
|
|
145
147
|
isRunning: boolean
|
|
146
148
|
guestMachineType?: UI_I_OptionItem | null
|
|
149
|
+
computeResource?: UI_I_TreeNode | null
|
|
147
150
|
}>()
|
|
148
151
|
|
|
149
152
|
const emits = defineEmits<{
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
:hard-disk="props.hardDisk"
|
|
33
33
|
:guest-machine-type="props.guestMachineType"
|
|
34
34
|
:is-new-type="isNewType"
|
|
35
|
+
:compute-resource="props.computeResource"
|
|
35
36
|
@remove="emits('remove')"
|
|
36
37
|
@roll-back="emits('roll-back')"
|
|
37
38
|
@validate-size="onValidateSize"
|
|
@@ -71,6 +72,7 @@
|
|
|
71
72
|
:hard-disk="props.hardDisk"
|
|
72
73
|
:guest-machine-type="props.guestMachineType"
|
|
73
74
|
:is-new-type="isNewType"
|
|
75
|
+
:compute-resource="props.computeResource"
|
|
74
76
|
@remove="emits('remove')"
|
|
75
77
|
@roll-back="emits('roll-back')"
|
|
76
78
|
@validate-size="onValidateSize"
|
|
@@ -90,6 +92,7 @@ import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
|
90
92
|
import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
|
|
91
93
|
import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
|
|
92
94
|
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
95
|
+
import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
|
|
93
96
|
import { binaryOptionsFunc } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/binaryOptions'
|
|
94
97
|
|
|
95
98
|
const props = defineProps<{
|
|
@@ -103,6 +106,7 @@ const props = defineProps<{
|
|
|
103
106
|
isEdit: boolean
|
|
104
107
|
state?: string | number
|
|
105
108
|
guestMachineType?: UI_I_OptionItem | null
|
|
109
|
+
computeResource?: UI_I_TreeNode | null
|
|
106
110
|
}>()
|
|
107
111
|
const emits = defineEmits<{
|
|
108
112
|
(event: 'send-data', value: UI_I_SendDataNewHardDisk): void
|