bfg-common 1.6.18 → 1.6.20
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/assets/localization/local_be.json +2 -1
- package/assets/localization/local_en.json +2 -1
- package/assets/localization/local_hy.json +2 -1
- package/assets/localization/local_kk.json +2 -1
- package/assets/localization/local_ru.json +2 -1
- package/assets/localization/local_zh.json +2 -1
- package/components/common/monitor/advanced/table/tableNew/lib/config/options.ts +24 -24
- package/components/common/monitor/advanced/table/tableOld/lib/config/performanceDatatable.ts +26 -6
- package/components/common/pages/scheduledTasks/table/lib/models/enums.ts +9 -0
- package/components/common/vm/actions/clone/Clone.vue +3 -0
- package/components/common/vm/actions/clone/new/New.vue +59 -32
- package/components/common/vm/actions/clone/new/SkeletonName.vue +22 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/New.vue +1 -0
- package/components/common/vm/actions/common/select/options/New.vue +17 -13
- package/components/common/vm/actions/common/select/options/Options.vue +18 -3
- package/components/common/vm/actions/confirm/Confirm.vue +3 -0
- package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/lib/config/diskTable.ts +8 -3
- package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/old/lib/config/diskTable.ts +7 -1
- package/package.json +1 -1
|
@@ -3790,7 +3790,8 @@
|
|
|
3790
3790
|
"rangeDuplicate": "Працэсар {0} пазначаны больш за адзін раз",
|
|
3791
3791
|
"invalidFormat": "Няправільны фармат: \"{0}\". Выкарыстоўвайце лікі (напрыклад, \"0\") або дыяпазоны (напрыклад, \"0-3\")",
|
|
3792
3792
|
"encriptionPolicy": "Палітыка шыфравання",
|
|
3793
|
-
"maxParallel": "Максімальная паралель"
|
|
3793
|
+
"maxParallel": "Максімальная паралель",
|
|
3794
|
+
"lastCloneSubtitle": "Праглядзіце дэталі перад клонаваннем віртуальнай машыны."
|
|
3794
3795
|
},
|
|
3795
3796
|
"feedback": {
|
|
3796
3797
|
"additionalDetailsHelp": "Даведка па дадатковых звестках",
|
|
@@ -3794,7 +3794,8 @@
|
|
|
3794
3794
|
"rangeDuplicate": "Processor {0} is specified more than once",
|
|
3795
3795
|
"invalidFormat": "Invalid format: \"{0}\". Use numbers (e.g., \"0\") or ranges (e.g., \"0-3\")",
|
|
3796
3796
|
"encriptionPolicy": "Encription Policy",
|
|
3797
|
-
"maxParallel": "Max parallel"
|
|
3797
|
+
"maxParallel": "Max parallel",
|
|
3798
|
+
"lastCloneSubtitle": "Review the details before the virtual machine is cloned."
|
|
3798
3799
|
},
|
|
3799
3800
|
"feedback": {
|
|
3800
3801
|
"additionalDetailsHelp": "Additional Details Help",
|
|
@@ -3794,7 +3794,8 @@
|
|
|
3794
3794
|
"rangeDuplicate": "Պրոցեսոր {0}-ը նշված է մեկից ավելի անգամ",
|
|
3795
3795
|
"invalidFormat": "Անվավեր ձևաչափ: \"{0}\". Օգտագործեք թվեր (օրինակ՝ \"0\") կամ տիրույթներ (օրինակ՝ \"0-3\")",
|
|
3796
3796
|
"encriptionPolicy": "Կոդավորման քաղաքականություն",
|
|
3797
|
-
"maxParallel": "Առավելագույն զուգահեռ"
|
|
3797
|
+
"maxParallel": "Առավելագույն զուգահեռ",
|
|
3798
|
+
"lastCloneSubtitle": "Վերանայեք մանրամասները նախքան վիրտուալ մեքենայի կլոնավորումը:"
|
|
3798
3799
|
},
|
|
3799
3800
|
"feedback": {
|
|
3800
3801
|
"additionalDetailsHelp": "Լրացուցիչ մանրամասներ Օգնություն",
|
|
@@ -3793,7 +3793,8 @@
|
|
|
3793
3793
|
"rangeDuplicate": "{0} процессоры бірнеше рет көрсетілген",
|
|
3794
3794
|
"invalidFormat": "Қате пішім: \"{0}\". Сандарды (мысалы, \"0\") немесе ауқымдарды (мысалы, \"0-3\") пайдаланыңыз",
|
|
3795
3795
|
"encriptionPolicy": "Шифрлау саясаты",
|
|
3796
|
-
"maxParallel": "Максималды параллель"
|
|
3796
|
+
"maxParallel": "Максималды параллель",
|
|
3797
|
+
"lastCloneSubtitle": "Виртуалды машинаны клондау алдында мәліметтерді қарап шығыңыз."
|
|
3797
3798
|
},
|
|
3798
3799
|
"feedback": {
|
|
3799
3800
|
"additionalDetailsHelp": "Қосымша мәліметтер анықтамасы",
|
|
@@ -3793,7 +3793,8 @@
|
|
|
3793
3793
|
"rangeDuplicate": "Процессор {0} указан более одного раза",
|
|
3794
3794
|
"invalidFormat": "Неверный формат: \"{0}\". Используйте числа (например, \"0\") или диапазоны (например, \"0-3\")",
|
|
3795
3795
|
"encriptionPolicy": "Политика шифрования",
|
|
3796
|
-
"maxParallel": "Максимальная параллель"
|
|
3796
|
+
"maxParallel": "Максимальная параллель",
|
|
3797
|
+
"lastCloneSubtitle": "Просмотрите сведения перед клонированием виртуальной машины."
|
|
3797
3798
|
},
|
|
3798
3799
|
"feedback": {
|
|
3799
3800
|
"additionalDetailsHelp": "Дополнительная информация Помощь",
|
|
@@ -3791,7 +3791,8 @@
|
|
|
3791
3791
|
"rangeDuplicate": "处理器 {0} 被多次指定",
|
|
3792
3792
|
"invalidFormat": "无效格式: \"{0}\"。请使用数字(例如 \"0\")或范围(例如 \"0-3\")",
|
|
3793
3793
|
"encriptionPolicy": "加密策略",
|
|
3794
|
-
"maxParallel": "最大并行"
|
|
3794
|
+
"maxParallel": "最大并行",
|
|
3795
|
+
"lastCloneSubtitle": "克隆虚拟机之前请查看详细信息。"
|
|
3795
3796
|
},
|
|
3796
3797
|
"feedback": {
|
|
3797
3798
|
"additionalDetailsHelp": "其他详细信息帮助",
|
|
@@ -19,7 +19,7 @@ export const bodyOptions = (
|
|
|
19
19
|
{
|
|
20
20
|
col: 'col0',
|
|
21
21
|
colName: 'key',
|
|
22
|
-
text: localization.
|
|
22
|
+
text: localization.inventoryMonitor.chartColor,
|
|
23
23
|
width: '96px',
|
|
24
24
|
isSortable: false,
|
|
25
25
|
sort: 'asc',
|
|
@@ -29,7 +29,7 @@ export const bodyOptions = (
|
|
|
29
29
|
{
|
|
30
30
|
col: 'col1',
|
|
31
31
|
colName: 'object',
|
|
32
|
-
text: localization.
|
|
32
|
+
text: localization.inventoryMonitor.metricName,
|
|
33
33
|
width: '150px',
|
|
34
34
|
isSortable: true,
|
|
35
35
|
sort: 'asc',
|
|
@@ -39,27 +39,27 @@ export const bodyOptions = (
|
|
|
39
39
|
{
|
|
40
40
|
col: 'col2',
|
|
41
41
|
colName: 'measurement',
|
|
42
|
-
text: localization.
|
|
42
|
+
text: localization.inventoryMonitor.metricDescription,
|
|
43
43
|
width: '192px',
|
|
44
44
|
isSortable: true,
|
|
45
45
|
sort: 'asc',
|
|
46
46
|
show: true,
|
|
47
47
|
filter: true,
|
|
48
48
|
},
|
|
49
|
-
{
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
},
|
|
49
|
+
// {
|
|
50
|
+
// col: 'col3',
|
|
51
|
+
// colName: 'rollup',
|
|
52
|
+
// text: localization.common.rollup,
|
|
53
|
+
// width: '150px',
|
|
54
|
+
// isSortable: true,
|
|
55
|
+
// sort: 'asc',
|
|
56
|
+
// show: true,
|
|
57
|
+
// filter: true,
|
|
58
|
+
// },
|
|
59
59
|
{
|
|
60
60
|
col: 'col4',
|
|
61
61
|
colName: 'units',
|
|
62
|
-
text: localization.
|
|
62
|
+
text: localization.inventoryMonitor.unitOfMeasurement,
|
|
63
63
|
width: '150px',
|
|
64
64
|
isSortable: true,
|
|
65
65
|
sort: 'asc',
|
|
@@ -96,16 +96,16 @@ export const bodyOptions = (
|
|
|
96
96
|
show: true,
|
|
97
97
|
filter: true,
|
|
98
98
|
},
|
|
99
|
-
{
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
},
|
|
99
|
+
// {
|
|
100
|
+
// col: 'col8',
|
|
101
|
+
// colName: 'average',
|
|
102
|
+
// text: localization.common.average,
|
|
103
|
+
// width: '150px',
|
|
104
|
+
// isSortable: true,
|
|
105
|
+
// sort: 'asc',
|
|
106
|
+
// show: true,
|
|
107
|
+
// filter: true,
|
|
108
|
+
// },
|
|
109
109
|
{
|
|
110
110
|
col: 'col9',
|
|
111
111
|
colName: 'default-actions',
|
package/components/common/monitor/advanced/table/tableOld/lib/config/performanceDatatable.ts
CHANGED
|
@@ -28,15 +28,35 @@ const getItems = (
|
|
|
28
28
|
): [string, boolean, string, string][] => {
|
|
29
29
|
const widthCol = '113px'
|
|
30
30
|
return [
|
|
31
|
-
[
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
[
|
|
32
|
+
localization.inventoryMonitor.chartColor,
|
|
33
|
+
true,
|
|
34
|
+
widthCol,
|
|
35
|
+
performanceTableKey[0],
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
localization.inventoryMonitor.metricName,
|
|
39
|
+
true,
|
|
40
|
+
widthCol,
|
|
41
|
+
performanceTableKey[1],
|
|
42
|
+
],
|
|
43
|
+
[
|
|
44
|
+
localization.inventoryMonitor.metricDescription,
|
|
45
|
+
true,
|
|
46
|
+
widthCol,
|
|
47
|
+
performanceTableKey[2],
|
|
48
|
+
],
|
|
49
|
+
// [localization.common.rollup, true, widthCol, performanceTableKey[3]],
|
|
50
|
+
[
|
|
51
|
+
localization.inventoryMonitor.unitOfMeasurement,
|
|
52
|
+
true,
|
|
53
|
+
widthCol,
|
|
54
|
+
performanceTableKey[4],
|
|
55
|
+
],
|
|
36
56
|
[localization.common.latest, true, widthCol, performanceTableKey[5]],
|
|
37
57
|
[localization.common.maximum, true, widthCol, performanceTableKey[6]],
|
|
38
58
|
[localization.common.minimum, true, widthCol, performanceTableKey[7]],
|
|
39
|
-
[localization.common.average, true, widthCol, performanceTableKey[8]],
|
|
59
|
+
// [localization.common.average, true, widthCol, performanceTableKey[8]],
|
|
40
60
|
]
|
|
41
61
|
}
|
|
42
62
|
|
|
@@ -2,3 +2,12 @@ export enum UI_E_SchedulerRunStatus {
|
|
|
2
2
|
RUNNING = 'this task has been started',
|
|
3
3
|
SUCCESS = 'success',
|
|
4
4
|
}
|
|
5
|
+
|
|
6
|
+
export enum E_SchedulerFrequencyModeLocale {
|
|
7
|
+
Once = 'once',
|
|
8
|
+
Startup = 'afterVCenterStartup',
|
|
9
|
+
Hourly = 'hourly',
|
|
10
|
+
Daily = 'daily',
|
|
11
|
+
Weekly = 'weekly',
|
|
12
|
+
Monthly = 'monthly',
|
|
13
|
+
}
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
:max-memory="maxMemory"
|
|
48
48
|
:cpu-models="cpuModels"
|
|
49
49
|
:nums="props.nums"
|
|
50
|
+
:selected-clone-options-keys="selectedCloneOptionsKeys"
|
|
50
51
|
@get-folders-or-files="emits('get-folders-or-files', $event)"
|
|
51
52
|
@change-name="onChangeName"
|
|
52
53
|
@change-storage="onChangeStorage"
|
|
@@ -559,7 +560,9 @@ const onChangeStorage = (storage: UI_I_DatastoreTableItem | null): void => {
|
|
|
559
560
|
// vmForm.value.storage = storage
|
|
560
561
|
model.value.storage = storage
|
|
561
562
|
}
|
|
563
|
+
const selectedCloneOptionsKeys = ref<string[]>([])
|
|
562
564
|
const onChangeSelectOptions = (options: string[]): void => {
|
|
565
|
+
selectedCloneOptionsKeys.value = options
|
|
563
566
|
// vmForm.value.options = options
|
|
564
567
|
if (
|
|
565
568
|
options.includes('customize-os') &&
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"
|
|
45
45
|
:sub-title-height="height1"
|
|
46
46
|
>
|
|
47
|
-
<template #subTitle>
|
|
47
|
+
<template #subTitle v-if="model">
|
|
48
48
|
<div ref="subTitleBlock1">
|
|
49
49
|
<div class="subtitle-block flex flex-col">
|
|
50
50
|
<div
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
</template>
|
|
58
58
|
<template #content>
|
|
59
59
|
<common-wizards-common-steps-name
|
|
60
|
+
v-if="model"
|
|
60
61
|
v-model:name="model.name"
|
|
61
62
|
v-model:location="location"
|
|
62
63
|
:show="
|
|
@@ -79,6 +80,7 @@
|
|
|
79
80
|
@submit="emits('change-name', $event)"
|
|
80
81
|
@has-errors="isNameAlertWrapperEmpty = $event"
|
|
81
82
|
/>
|
|
83
|
+
<common-vm-actions-clone-new-skeleton-name v-else />
|
|
82
84
|
</template>
|
|
83
85
|
</ui-wizard-block>
|
|
84
86
|
|
|
@@ -127,6 +129,7 @@
|
|
|
127
129
|
<common-vm-actions-common-select-options
|
|
128
130
|
:is-new-vm-from-template="props.isNewVmFromTemplate"
|
|
129
131
|
:project="props.project"
|
|
132
|
+
:selected-clone-options-keys="props.selectedCloneOptionsKeys"
|
|
130
133
|
@change="emits('change-select-options', $event)"
|
|
131
134
|
@change-count="emits('change-clone-count', $event)"
|
|
132
135
|
@change-max-parallel="emits('change-clone-max-parallel', $event)"
|
|
@@ -168,34 +171,40 @@
|
|
|
168
171
|
v-if="selectedStep.id === props.dynamicSteps.customizeHardware"
|
|
169
172
|
>
|
|
170
173
|
<template #content>
|
|
171
|
-
<
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
174
|
+
<div
|
|
175
|
+
class="clone-vm-select-customize-hardware-container overflow-auto h-full flex flex-col pr-8"
|
|
176
|
+
>
|
|
177
|
+
<common-vm-actions-common-customize-hardware
|
|
178
|
+
v-model="model"
|
|
179
|
+
:storage="model.storage"
|
|
180
|
+
:customize-hardware-submit="props.customizeHardwareSubmit"
|
|
181
|
+
:max-memory="props.maxMemory"
|
|
182
|
+
:cpu-models="props.cpuModels"
|
|
183
|
+
:selected-nav-item="props.selectedNavItem"
|
|
184
|
+
:nodes="props.nodes"
|
|
185
|
+
:files="props.files"
|
|
186
|
+
:networks-table="props.networksTable"
|
|
187
|
+
:error-validation-fields="props.errorValidationFields"
|
|
188
|
+
:vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
|
|
189
|
+
:usb-devices="props.usbDevices"
|
|
190
|
+
:passthrough-devices="props.passthroughDevices"
|
|
191
|
+
:mediated-devices="props.mediatedDevices"
|
|
192
|
+
:get-datastore-table-func="props.getDatastoreTableFunc"
|
|
193
|
+
:datastore="props.datastore"
|
|
194
|
+
:is-datastore-loading="props.isDatastoreLoading"
|
|
195
|
+
:project="props.project"
|
|
196
|
+
:nums="props.nums"
|
|
197
|
+
is-clone
|
|
198
|
+
@get-storage="emits('get-storage', $event)"
|
|
199
|
+
@get-folders-or-files="emits('get-folders-or-files', $event)"
|
|
200
|
+
@get-active-device-child="
|
|
201
|
+
emits('get-active-device-child', $event)
|
|
202
|
+
"
|
|
203
|
+
@show-datastore-child="emits('show-datastore-child', $event)"
|
|
204
|
+
@get-networks-table="emits('get-networks-table', $event)"
|
|
205
|
+
@get-pci-devices="emits('get-pci-devices')"
|
|
206
|
+
/>
|
|
207
|
+
</div>
|
|
199
208
|
</template>
|
|
200
209
|
</ui-wizard-block>
|
|
201
210
|
|
|
@@ -245,9 +254,7 @@
|
|
|
245
254
|
<template #subTitle>
|
|
246
255
|
<div ref="subTitleBlockReadyComplete">
|
|
247
256
|
<div class="subtitle-block">
|
|
248
|
-
<ui-wizard-subtitle
|
|
249
|
-
:sub-title="localization.vmWizard.lastCreateSubtitle"
|
|
250
|
-
/>
|
|
257
|
+
<ui-wizard-subtitle :sub-title="currentFinishStepSubtitle" />
|
|
251
258
|
</div>
|
|
252
259
|
</div>
|
|
253
260
|
</template>
|
|
@@ -353,12 +360,14 @@ const props = withDefaults(
|
|
|
353
360
|
compatibilityText?: [UI_T_CompatibilityStatus, string] // для сферы
|
|
354
361
|
compatibilityInfo?: string
|
|
355
362
|
nums?: any
|
|
363
|
+
selectedCloneOptionsKeys?: string[]
|
|
356
364
|
}>(),
|
|
357
365
|
{
|
|
358
366
|
isLoadingComputeTree: false,
|
|
359
367
|
computeResourceAlert: () => [],
|
|
360
368
|
compatibilityText: () => ['none', ''],
|
|
361
369
|
nums: null,
|
|
370
|
+
selectedCloneOptionsKeys: () => [],
|
|
362
371
|
}
|
|
363
372
|
)
|
|
364
373
|
|
|
@@ -434,6 +443,12 @@ const selectNameStepSubtitle = computed<string>(() =>
|
|
|
434
443
|
: localization.value.common.specifyUniqueNameForVm
|
|
435
444
|
)
|
|
436
445
|
|
|
446
|
+
const currentFinishStepSubtitle = computed<string>(() =>
|
|
447
|
+
props.isNewVmFromTemplate
|
|
448
|
+
? localization.value.vmWizard.lastCreateSubtitle
|
|
449
|
+
: localization.value.vmWizard.lastCloneSubtitle
|
|
450
|
+
)
|
|
451
|
+
|
|
437
452
|
const onChangeSteps = async (value: UI_I_WizardStep[]): Promise<void> =>
|
|
438
453
|
emits('change-steps', value)
|
|
439
454
|
|
|
@@ -478,4 +493,16 @@ const onClone = (): void => emits('finish')
|
|
|
478
493
|
}
|
|
479
494
|
}
|
|
480
495
|
}
|
|
496
|
+
.clone-vm-select-customize-hardware-container {
|
|
497
|
+
:deep(.tabs-wrapper) {
|
|
498
|
+
overflow: auto;
|
|
499
|
+
|
|
500
|
+
.tab-item {
|
|
501
|
+
padding-top: 0 !important;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
:deep(.ui-main-select-toggle) {
|
|
505
|
+
width: 100% !important;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
481
508
|
</style>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="skeleton-clone-vm-name-step">
|
|
3
|
+
<ui-skeleton-item width="70%" height="16" />
|
|
4
|
+
<div class="bottom-container grid items-center gap-4 mt-4">
|
|
5
|
+
<ui-skeleton-item width="100%" height="20" />
|
|
6
|
+
<ui-skeleton-item width="100%" height="36" />
|
|
7
|
+
</div>
|
|
8
|
+
</div>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<script setup lang="ts"></script>
|
|
12
|
+
|
|
13
|
+
<style scoped lang="scss">
|
|
14
|
+
.skeleton-clone-vm-name-step {
|
|
15
|
+
.bottom-container {
|
|
16
|
+
grid-template-columns: 30% 60%;
|
|
17
|
+
border-top: 1px solid #e9ebed;
|
|
18
|
+
padding-top: 16px;
|
|
19
|
+
margin-top: 12px;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
</style>
|
|
@@ -17,12 +17,13 @@
|
|
|
17
17
|
@click.stop.prevent="onToggleCustomizeOs"
|
|
18
18
|
>
|
|
19
19
|
<ui-checkbox
|
|
20
|
-
v-model="
|
|
20
|
+
v-model="modelValue"
|
|
21
21
|
:label-text="localization.vmWizard.customizeOS"
|
|
22
22
|
:title="localization.vmWizard.customizeOS"
|
|
23
23
|
:disabled="props.isNewVmFromTemplate"
|
|
24
24
|
test-id="customize-os"
|
|
25
25
|
size="md"
|
|
26
|
+
value="customize-os"
|
|
26
27
|
/>
|
|
27
28
|
<p
|
|
28
29
|
:class="[
|
|
@@ -43,12 +44,13 @@
|
|
|
43
44
|
@click.stop.prevent="onToggleCustomizeHardware"
|
|
44
45
|
>
|
|
45
46
|
<ui-checkbox
|
|
46
|
-
v-model="
|
|
47
|
+
v-model="modelValue"
|
|
47
48
|
:label-text="localization.common.customizeHardware"
|
|
48
49
|
:title="localization.common.customizeHardware"
|
|
49
50
|
:disabled="props.isNewVmFromTemplate"
|
|
50
51
|
test-id="customize-hardware"
|
|
51
52
|
size="md"
|
|
53
|
+
value="customize-hardware"
|
|
52
54
|
/>
|
|
53
55
|
<p
|
|
54
56
|
:class="[
|
|
@@ -64,10 +66,11 @@
|
|
|
64
66
|
@click.stop.prevent="onTogglePowerOn"
|
|
65
67
|
>
|
|
66
68
|
<ui-checkbox
|
|
67
|
-
v-model="
|
|
69
|
+
v-model="modelValue"
|
|
68
70
|
:label-text="localization.vmWizard.autoPowerOn"
|
|
69
71
|
test-id="power-on"
|
|
70
72
|
size="md"
|
|
73
|
+
value="power-on"
|
|
71
74
|
/>
|
|
72
75
|
<p class="checkbox-block-description mt-2 ml-7">
|
|
73
76
|
{{ localization.vmWizard.powerVMAfterCreation }}
|
|
@@ -136,16 +139,19 @@ const localization = computed<UI_I_Localization>(() => useLocal())
|
|
|
136
139
|
const mainContainer = ref<HTMLElement | null>(null)
|
|
137
140
|
const { width: mainContainerWidth } = useElementSize(mainContainer)
|
|
138
141
|
|
|
139
|
-
const isCustomizeOs =
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
const
|
|
142
|
+
const isCustomizeOs = computed<boolean>(() =>
|
|
143
|
+
modelValue.value.includes('customize-os')
|
|
144
|
+
)
|
|
145
|
+
const isCustomizeHardware = computed<boolean>(() =>
|
|
146
|
+
modelValue.value.includes('customize-hardware')
|
|
147
|
+
)
|
|
148
|
+
const isPowerOn = computed<boolean>(() => modelValue.value.includes('power-on'))
|
|
149
|
+
// const isLinkedClone = ref<boolean>(false)
|
|
143
150
|
|
|
144
151
|
const onToggleCustomizeOs = (): void => {
|
|
145
152
|
if (props.isNewVmFromTemplate) return
|
|
146
153
|
|
|
147
|
-
|
|
148
|
-
if (isCustomizeOs.value) {
|
|
154
|
+
if (!isCustomizeOs.value) {
|
|
149
155
|
!modelValue.value.includes('customize-os') &&
|
|
150
156
|
modelValue.value.push('customize-os')
|
|
151
157
|
} else {
|
|
@@ -158,8 +164,7 @@ const onToggleCustomizeOs = (): void => {
|
|
|
158
164
|
const onToggleCustomizeHardware = (): void => {
|
|
159
165
|
if (props.isNewVmFromTemplate) return
|
|
160
166
|
|
|
161
|
-
|
|
162
|
-
if (isCustomizeHardware.value) {
|
|
167
|
+
if (!isCustomizeHardware.value) {
|
|
163
168
|
!modelValue.value.includes('customize-hardware') &&
|
|
164
169
|
modelValue.value.push('customize-hardware')
|
|
165
170
|
} else {
|
|
@@ -172,8 +177,7 @@ const onToggleCustomizeHardware = (): void => {
|
|
|
172
177
|
const onTogglePowerOn = (): void => {
|
|
173
178
|
// if (props.isNewVmFromTemplate) return
|
|
174
179
|
|
|
175
|
-
|
|
176
|
-
if (isPowerOn.value) {
|
|
180
|
+
if (!isPowerOn.value) {
|
|
177
181
|
!modelValue.value.includes('power-on') && modelValue.value.push('power-on')
|
|
178
182
|
} else {
|
|
179
183
|
modelValue.value = modelValue.value.filter((item) => item !== 'power-on')
|
|
@@ -16,10 +16,12 @@ const props = withDefaults(
|
|
|
16
16
|
defineProps<{
|
|
17
17
|
project?: UI_T_Project
|
|
18
18
|
isNewVmFromTemplate?: boolean // TODO change
|
|
19
|
+
selectedCloneOptionsKeys?: string[]
|
|
19
20
|
}>(),
|
|
20
21
|
{
|
|
21
22
|
project: undefined,
|
|
22
23
|
isNewVmFromTemplate: undefined,
|
|
24
|
+
selectedCloneOptionsKeys: () => [],
|
|
23
25
|
}
|
|
24
26
|
)
|
|
25
27
|
|
|
@@ -39,9 +41,22 @@ const currentComponent = computed(() =>
|
|
|
39
41
|
)
|
|
40
42
|
|
|
41
43
|
const selectedOptions = ref<string[]>([])
|
|
42
|
-
watch(
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
watch(
|
|
45
|
+
selectedOptions,
|
|
46
|
+
(newValue) => {
|
|
47
|
+
emits('change', newValue)
|
|
48
|
+
},
|
|
49
|
+
{ deep: true }
|
|
50
|
+
)
|
|
51
|
+
watch(
|
|
52
|
+
() => props.selectedCloneOptionsKeys,
|
|
53
|
+
(newValue) => {
|
|
54
|
+
if (newValue.length) {
|
|
55
|
+
selectedOptions.value = newValue
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{ immediate: true, deep: true }
|
|
59
|
+
)
|
|
45
60
|
const maxParallel = ref<number>(1) // For Deploy
|
|
46
61
|
watch(maxParallel, (newValue) => {
|
|
47
62
|
if (newValue < 1) {
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
:sub-title="props.subTitle"
|
|
5
5
|
:description="props.description"
|
|
6
6
|
:modal-texts="props.modalTexts"
|
|
7
|
+
:loading="props.isLoading"
|
|
7
8
|
@hide-modal="emits('hide')"
|
|
8
9
|
@confirm="emits('confirm')"
|
|
9
10
|
>
|
|
@@ -22,9 +23,11 @@ const props = withDefaults(
|
|
|
22
23
|
subTitle: string
|
|
23
24
|
description: string
|
|
24
25
|
modalTexts?: UI_I_ModalTexts
|
|
26
|
+
isLoading?: boolean
|
|
25
27
|
}>(),
|
|
26
28
|
{
|
|
27
29
|
modalTexts: undefined,
|
|
30
|
+
isLoading: false
|
|
28
31
|
}
|
|
29
32
|
)
|
|
30
33
|
|
|
@@ -158,7 +158,6 @@ export const getBodyDataFunc = (
|
|
|
158
158
|
bodyData: UI_I_StorageConfigurePerDiskItem[],
|
|
159
159
|
localization: UI_I_Localization
|
|
160
160
|
): UI_I_DataTableBody[] => {
|
|
161
|
-
|
|
162
161
|
return bodyData.map((disk, index: number) => {
|
|
163
162
|
const diskFormat =
|
|
164
163
|
index === 0 ? 'N/A' : UI_E_SelectStorageDiskFormat[disk.disk_format]
|
|
@@ -184,6 +183,12 @@ export const getBodyDataFunc = (
|
|
|
184
183
|
: 'False'
|
|
185
184
|
: localization.common[diskSharingKey]
|
|
186
185
|
|
|
186
|
+
const diskCache = disk.extra.cache
|
|
187
|
+
const diskCacheValue =
|
|
188
|
+
!diskCache || ['none', 'n/a'].includes(diskCache.toLowerCase())
|
|
189
|
+
? '--'
|
|
190
|
+
: disk.extra.cache
|
|
191
|
+
|
|
187
192
|
return {
|
|
188
193
|
row: index,
|
|
189
194
|
collapse: false,
|
|
@@ -221,10 +226,10 @@ export const getBodyDataFunc = (
|
|
|
221
226
|
data: diskSharingData,
|
|
222
227
|
},
|
|
223
228
|
|
|
224
|
-
{ col: 'col6', text: disk.extra.target },
|
|
229
|
+
{ col: 'col6', text: disk.extra.target || '--' },
|
|
225
230
|
{
|
|
226
231
|
col: 'col7',
|
|
227
|
-
text:
|
|
232
|
+
text: diskCacheValue,
|
|
228
233
|
},
|
|
229
234
|
{ col: 'col8', text: disk.extra.io_control },
|
|
230
235
|
{
|
|
@@ -79,6 +79,12 @@ export const bodyItems = (
|
|
|
79
79
|
? disk[vmMigrateDiskTableItemKeys[2]]
|
|
80
80
|
: `${disk.extra.disk_source} (${disk.extra.disk_size} ${localization.common.mb} )`
|
|
81
81
|
|
|
82
|
+
const diskCache = disk.extra[vmMigrateDiskTableItemKeys[7]]
|
|
83
|
+
const diskCacheValue =
|
|
84
|
+
!diskCache || ['none', 'n/a'].includes(diskCache.toLowerCase())
|
|
85
|
+
? '--'
|
|
86
|
+
: disk.extra[vmMigrateDiskTableItemKeys[7]]
|
|
87
|
+
|
|
82
88
|
bodyItems.push([
|
|
83
89
|
{
|
|
84
90
|
key: 'col0',
|
|
@@ -124,7 +130,7 @@ export const bodyItems = (
|
|
|
124
130
|
},
|
|
125
131
|
{
|
|
126
132
|
key: 'col7',
|
|
127
|
-
text:
|
|
133
|
+
text: diskCacheValue,
|
|
128
134
|
id: key,
|
|
129
135
|
testId: `disk-table-${key}`,
|
|
130
136
|
},
|