bfg-common 1.5.573 → 1.5.574
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 +29 -6
- package/assets/localization/local_en.json +29 -6
- package/assets/localization/local_hy.json +29 -6
- package/assets/localization/local_kk.json +29 -6
- package/assets/localization/local_ru.json +29 -6
- package/assets/localization/local_zh.json +30 -7
- package/components/common/diagramMain/DiagramMain.vue +1 -1
- package/components/common/modals/confirmByInput/ConfirmByInput.vue +9 -1
- package/components/common/modals/confirmByInput/ConfirmByInputNew.vue +7 -2
- package/components/common/monitor/overview/filters/lib/config/filterOptions.ts +1 -0
- package/components/common/pages/backups/modals/createBackup/CreateBackup.vue +1 -1
- package/components/common/pages/backups/modals/createBackup/New.vue +8 -2
- package/components/common/pages/backups/modals/createBackup/lib/config/steps.ts +2 -1
- package/components/common/pages/backups/modals/restore/Restore.vue +9 -5
- package/components/common/pages/backups/modals/restore/RestoreNew.vue +13 -3
- package/components/common/pages/backups/modals/restore/RestoreOld.vue +6 -18
- package/components/common/pages/scheduledTasks/table/Table.vue +1 -1
- package/components/common/vm/actions/add/Add.vue +7 -6
- package/components/common/vm/actions/clone/Clone.vue +7 -6
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +3 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +3 -1
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +3 -1
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/lib/config/options.ts +1 -1
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +28 -28
- package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +2 -0
- package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +2 -0
- package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/Tools.vue +42 -26
- package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsNew.vue +26 -7
- package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsOld.vue +50 -24
- package/components/common/vm/actions/common/lib/models/interfaces.ts +1 -0
- package/components/common/vm/actions/common/select/os/New.vue +19 -0
- package/components/common/vm/actions/common/select/os/Old.vue +34 -0
- package/components/common/vm/actions/common/select/os/Os.vue +25 -0
- package/package.json +3 -1
- package/store/tasks/mappers/recentTasks.ts +4 -0
|
@@ -566,7 +566,8 @@ const vmForm = ref<UI_I_VmForm>({
|
|
|
566
566
|
})
|
|
567
567
|
|
|
568
568
|
const isLoadingComputeTree = ref<boolean>(false)
|
|
569
|
-
const onChangeName = (
|
|
569
|
+
const onChangeName = (data: [string, UI_I_TreeNode | null]): void => {
|
|
570
|
+
const [_name, node] = data
|
|
570
571
|
// vmForm.value.name = name
|
|
571
572
|
if (isSphere.value) {
|
|
572
573
|
vmForm.value.locationPath = node.id
|
|
@@ -693,6 +694,10 @@ const machineTypes = ref<UI_I_OptionItem[]>(capabilities.value.machineTypes)
|
|
|
693
694
|
|
|
694
695
|
// Для сферы
|
|
695
696
|
const computeResourcePath = ref<string>('')
|
|
697
|
+
const onSelectComputeResourceTree = (node: UI_I_TreeNode): void => {
|
|
698
|
+
emits('select-compute-resource-tree', node)
|
|
699
|
+
computeResourcePath.value = String(node.id)
|
|
700
|
+
}
|
|
696
701
|
watch(
|
|
697
702
|
() => vmForm.value.computeResource,
|
|
698
703
|
(newValue, oldValue) => {
|
|
@@ -700,12 +705,8 @@ watch(
|
|
|
700
705
|
onSelectComputeResourceTree(newValue)
|
|
701
706
|
}
|
|
702
707
|
},
|
|
703
|
-
{ deep: true }
|
|
708
|
+
{ deep: true, immediate: true }
|
|
704
709
|
)
|
|
705
|
-
const onSelectComputeResourceTree = (node: UI_I_TreeNode): void => {
|
|
706
|
-
emits('select-compute-resource-tree', node)
|
|
707
|
-
computeResourcePath.value = String(node.id)
|
|
708
|
-
}
|
|
709
710
|
|
|
710
711
|
// watch(vmSettings, (newValue) => {
|
|
711
712
|
// vmName.value = newValue?.name || ''
|
package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue
CHANGED
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
:vm-cpu-help-text-second="vmCpuHelpTextSecond"
|
|
37
37
|
:compute-resource="props.computeResource"
|
|
38
38
|
:compatibility-info="props.compatibilityInfo"
|
|
39
|
+
:network-value-prop="networkValueProp"
|
|
39
40
|
@add-device="onAddDevice"
|
|
40
41
|
@get-storage="emits('get-storage', $event)"
|
|
41
42
|
@remove-network="onRemoveNetwork"
|
|
@@ -94,6 +95,7 @@
|
|
|
94
95
|
:mediated-devices="mediatedDevices"
|
|
95
96
|
:vm-cpu-help-text-second="vmCpuHelpTextSecond"
|
|
96
97
|
:compute-resource="props.computeResource"
|
|
98
|
+
:network-value-prop="networkValueProp"
|
|
97
99
|
@add-device="onAddDevice"
|
|
98
100
|
@get-storage="emits('get-storage', $event)"
|
|
99
101
|
@remove-network="onRemoveNetwork"
|
|
@@ -372,6 +374,7 @@ const onRollBackHardDisk = (index: number): void => {
|
|
|
372
374
|
})
|
|
373
375
|
}
|
|
374
376
|
|
|
377
|
+
const networkValueProp = props.project === 'sphere' ? 'network' : 'net_bridge'
|
|
375
378
|
const networksType = ref<UI_T_NetworkType[]>(['new'])
|
|
376
379
|
const networksIndex = ref<number[]>([0])
|
|
377
380
|
if (!model.value.network_devices?.length) {
|
package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue
CHANGED
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
>
|
|
163
163
|
<common-vm-actions-common-customize-hardware-virtual-hardware-new-network
|
|
164
164
|
v-model:network="item.network"
|
|
165
|
-
v-model:
|
|
165
|
+
v-model:network-value="item[props.networkValueProp]"
|
|
166
166
|
v-model:mac="item.mac"
|
|
167
167
|
v-model:model="item.model"
|
|
168
168
|
:index="props.networksIndex[key]"
|
|
@@ -172,6 +172,7 @@
|
|
|
172
172
|
:is-edit="props.isEdit"
|
|
173
173
|
:state="props.state"
|
|
174
174
|
:project="props.project"
|
|
175
|
+
:network-value-prop="props.networkValueProp"
|
|
175
176
|
@remove="emits('remove-network', props.networksIndex[key])"
|
|
176
177
|
@invalid="
|
|
177
178
|
emits('set-invalid-network', [$event, props.networksIndex[key]])
|
|
@@ -391,6 +392,7 @@ const props = withDefaults(
|
|
|
391
392
|
cdDvdDrivesIndex: number[]
|
|
392
393
|
errorValidationFields: UI_I_ErrorValidationField<string>[]
|
|
393
394
|
getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
|
|
395
|
+
networkValueProp: 'network' | 'net_bridge'
|
|
394
396
|
cpu?: API_UI_I_VmEditCpu
|
|
395
397
|
state?: string | number
|
|
396
398
|
// hardDisks?: UI_I_SendDataNewHardDisk[] | null
|
package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue
CHANGED
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
>
|
|
143
143
|
<common-vm-actions-common-customize-hardware-virtual-hardware-new-network
|
|
144
144
|
v-model:network="item.network"
|
|
145
|
-
v-model:
|
|
145
|
+
v-model:network-value="item[props.networkValueProp]"
|
|
146
146
|
v-model:mac="item.mac"
|
|
147
147
|
v-model:model="item.model"
|
|
148
148
|
:index="props.networksIndex[key]"
|
|
@@ -152,6 +152,7 @@
|
|
|
152
152
|
:is-edit="props.isEdit"
|
|
153
153
|
:state="props.state"
|
|
154
154
|
:project="props.project"
|
|
155
|
+
:network-value-prop="props.networkValueProp"
|
|
155
156
|
@remove="emits('remove-network', props.networksIndex[key])"
|
|
156
157
|
@invalid="
|
|
157
158
|
emits('set-invalid-network', [$event, props.networksIndex[key]])
|
|
@@ -366,6 +367,7 @@ const props = withDefaults(
|
|
|
366
367
|
cdDvdDrivesIndex: number[]
|
|
367
368
|
errorValidationFields: UI_I_ErrorValidationField[]
|
|
368
369
|
getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
|
|
370
|
+
networkValueProp: 'network' | 'net_bridge'
|
|
369
371
|
cpu?: API_UI_I_VmEditCpu
|
|
370
372
|
state?: string | number
|
|
371
373
|
videoCard?: UI_I_SendDataVideoCard
|
|
@@ -5,7 +5,7 @@ export const cdDvdDriveOptionsFunc = (
|
|
|
5
5
|
localization: UI_I_Localization
|
|
6
6
|
): UI_I_OptionItem[] => {
|
|
7
7
|
return [
|
|
8
|
-
{ text:
|
|
8
|
+
{ text: '---', value: 'clientDevice' },
|
|
9
9
|
{ text: localization.common.datastoreIsoFile, value: 'datastoreIsoFile' },
|
|
10
10
|
]
|
|
11
11
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<common-vm-actions-common-customize-hardware-virtual-hardware-new-network-new
|
|
3
3
|
v-if="isNewView"
|
|
4
|
-
v-model:selected-location="
|
|
4
|
+
v-model:selected-location="networkValue"
|
|
5
5
|
v-model:adapter-type="model"
|
|
6
6
|
v-model:mac-address="mac"
|
|
7
7
|
v-model:mac-address-type="macAddressType"
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
/>
|
|
27
27
|
<common-vm-actions-common-customize-hardware-virtual-hardware-new-network-old
|
|
28
28
|
v-else
|
|
29
|
-
v-model:selected-location="
|
|
29
|
+
v-model:selected-location="networkValue"
|
|
30
30
|
v-model:adapter-type="model"
|
|
31
31
|
v-model:mac-address="mac"
|
|
32
32
|
v-model:mac-address-type="macAddressType"
|
|
@@ -68,17 +68,6 @@ const network = defineModel<UI_I_CreateVmData['network_devices'][0]['network']>(
|
|
|
68
68
|
'network',
|
|
69
69
|
{ required: true }
|
|
70
70
|
)
|
|
71
|
-
const netBridge = defineModel<
|
|
72
|
-
UI_I_CreateVmData['network_devices'][0]['net_bridge']
|
|
73
|
-
>('netBridge', { required: true })
|
|
74
|
-
watch(netBridge, (newValue) => {
|
|
75
|
-
const selectedOption = locationOptions.value.find(
|
|
76
|
-
(option) => option.value === newValue
|
|
77
|
-
)
|
|
78
|
-
if (selectedOption) {
|
|
79
|
-
network.value = selectedOption.text
|
|
80
|
-
}
|
|
81
|
-
})
|
|
82
71
|
|
|
83
72
|
const mac = defineModel<UI_I_CreateVmData['network_devices'][0]['mac']>('mac', {
|
|
84
73
|
required: true,
|
|
@@ -98,6 +87,7 @@ const props = withDefaults(
|
|
|
98
87
|
networksTable: UI_I_NetworkTableItem[]
|
|
99
88
|
errorValidationFields: UI_I_ErrorValidationField[]
|
|
100
89
|
isEdit: boolean
|
|
90
|
+
networkValueProp: 'network' | 'net_bridge'
|
|
101
91
|
state?: string | number
|
|
102
92
|
}>(),
|
|
103
93
|
{
|
|
@@ -111,11 +101,21 @@ const emits = defineEmits<{
|
|
|
111
101
|
(event: 'get-networks-table', value: UI_I_TablePayload): void
|
|
112
102
|
}>()
|
|
113
103
|
|
|
104
|
+
const networkValue = defineModel<
|
|
105
|
+
UI_I_CreateVmData['network_devices'][0][props.networkValueProp]
|
|
106
|
+
>('networkValue', { required: true })
|
|
107
|
+
watch(networkValue, (newValue) => {
|
|
108
|
+
const selectedOption = locationOptions.value.find(
|
|
109
|
+
(option) => option.value === newValue
|
|
110
|
+
)
|
|
111
|
+
if (selectedOption) {
|
|
112
|
+
network.value = selectedOption.text
|
|
113
|
+
}
|
|
114
|
+
})
|
|
115
|
+
|
|
114
116
|
const { $store }: any = useNuxtApp()
|
|
115
117
|
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
116
118
|
|
|
117
|
-
const valueProp = props.project === 'sphere' ? 'network' : 'net_bridge'
|
|
118
|
-
|
|
119
119
|
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
120
120
|
|
|
121
121
|
const isRunning = computed<boolean>(() => {
|
|
@@ -144,9 +144,9 @@ const label = computed<string>(() => {
|
|
|
144
144
|
const selectedLocationOld = ref<string>('')
|
|
145
145
|
const locationOptions = ref<UI_I_OptionItem[]>([])
|
|
146
146
|
|
|
147
|
-
if (
|
|
147
|
+
if (networkValue.value) {
|
|
148
148
|
locationOptions.value = [
|
|
149
|
-
{ text: network.value, value:
|
|
149
|
+
{ text: network.value, value: networkValue.value },
|
|
150
150
|
{ text: `${localization.value.common.browse}...`, value: '' },
|
|
151
151
|
]
|
|
152
152
|
}
|
|
@@ -188,23 +188,23 @@ watch(
|
|
|
188
188
|
value: 'noAvailableNetworks',
|
|
189
189
|
},
|
|
190
190
|
]
|
|
191
|
-
|
|
191
|
+
networkValue.value = 'noAvailableNetworks'
|
|
192
192
|
newNetworkInvalid.value = true
|
|
193
193
|
return
|
|
194
194
|
}
|
|
195
195
|
newNetworkInvalid.value = false
|
|
196
196
|
|
|
197
197
|
const isExistValue = newValue.some(
|
|
198
|
-
(networkLocal) => networkLocal[
|
|
198
|
+
(networkLocal) => networkLocal[props.networkValueProp] === networkValue.value
|
|
199
199
|
)
|
|
200
200
|
|
|
201
201
|
if (props.type === 'edit' || isExistValue) return
|
|
202
202
|
|
|
203
|
-
selectedLocationOld.value = newValue[0][
|
|
204
|
-
|
|
203
|
+
selectedLocationOld.value = newValue[0][props.networkValueProp] || ''
|
|
204
|
+
networkValue.value = newValue[0][props.networkValueProp] || ''
|
|
205
205
|
|
|
206
206
|
locationOptions.value = [
|
|
207
|
-
{ text: newValue[0].name, value: newValue[0][
|
|
207
|
+
{ text: newValue[0].name, value: newValue[0][props.networkValueProp] },
|
|
208
208
|
{ text: `${localization.value.common.browse}...`, value: '' },
|
|
209
209
|
]
|
|
210
210
|
},
|
|
@@ -214,7 +214,7 @@ watch(
|
|
|
214
214
|
const locationModalIsShow = ref<boolean>(false)
|
|
215
215
|
const onHideLocationModal = (): void => {
|
|
216
216
|
locationModalIsShow.value = false
|
|
217
|
-
|
|
217
|
+
networkValue.value = selectedLocationOld.value
|
|
218
218
|
}
|
|
219
219
|
const changeLocation = (event: UI_I_HTMLSelectElement): void => {
|
|
220
220
|
const value = event.target.value
|
|
@@ -224,16 +224,16 @@ const changeLocation = (event: UI_I_HTMLSelectElement): void => {
|
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
selectedLocationOld.value = value
|
|
227
|
-
|
|
227
|
+
networkValue.value = value
|
|
228
228
|
}
|
|
229
229
|
const onSelectLocation = (networkLocal: UI_I_NetworkTableItem): void => {
|
|
230
230
|
locationModalIsShow.value = false
|
|
231
231
|
|
|
232
|
-
selectedLocationOld.value = networkLocal[
|
|
233
|
-
|
|
232
|
+
selectedLocationOld.value = networkLocal[props.networkValueProp]
|
|
233
|
+
networkValue.value = networkLocal[props.networkValueProp]
|
|
234
234
|
|
|
235
235
|
const hasNetwork = locationOptions.value.some(
|
|
236
|
-
(option) => option.value === networkLocal[
|
|
236
|
+
(option) => option.value === networkLocal[props.networkValueProp]
|
|
237
237
|
)
|
|
238
238
|
if (hasNetwork) {
|
|
239
239
|
return
|
|
@@ -241,7 +241,7 @@ const onSelectLocation = (networkLocal: UI_I_NetworkTableItem): void => {
|
|
|
241
241
|
|
|
242
242
|
locationOptions.value = [
|
|
243
243
|
...locationOptions.value.slice(0, -1),
|
|
244
|
-
{ text: networkLocal.name, value: networkLocal[
|
|
244
|
+
{ text: networkLocal.name, value: networkLocal[props.networkValueProp] },
|
|
245
245
|
locationOptions.value[locationOptions.value.length - 1],
|
|
246
246
|
]
|
|
247
247
|
}
|
|
@@ -1,26 +1,42 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<common-vm-actions-common-customize-hardware-vmoptions-tools-new
|
|
3
|
-
v-if="isNewView"
|
|
4
|
-
v-model:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
v-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
1
|
+
<template>
|
|
2
|
+
<common-vm-actions-common-customize-hardware-vmoptions-tools-new
|
|
3
|
+
v-if="isNewView"
|
|
4
|
+
v-model:balloon="model.balloon"
|
|
5
|
+
:disabled="isDisabled"
|
|
6
|
+
/>
|
|
7
|
+
<common-vm-actions-common-customize-hardware-vmoptions-tools-old
|
|
8
|
+
v-else
|
|
9
|
+
v-model:balloon="model.balloon"
|
|
10
|
+
:disabled="isDisabled"
|
|
11
|
+
/>
|
|
12
|
+
</template>
|
|
13
|
+
|
|
14
|
+
<script setup lang="ts">
|
|
15
|
+
import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
|
|
16
|
+
|
|
17
|
+
const model = defineModel<UI_I_CreateVmData['options']['guest_tools']>({
|
|
18
|
+
required: true,
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
const props = withDefaults(
|
|
22
|
+
defineProps<{
|
|
23
|
+
isEdit: boolean
|
|
24
|
+
state?: string | number
|
|
25
|
+
}>(),
|
|
26
|
+
{
|
|
27
|
+
state: undefined,
|
|
28
|
+
}
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
const { $store }: any = useNuxtApp()
|
|
32
|
+
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
33
|
+
|
|
34
|
+
const isDisabled = computed<boolean>(() => props.isEdit && props.state !== 1)
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<style scoped lang="scss">
|
|
38
|
+
#tools-1,
|
|
39
|
+
#tools-2 {
|
|
40
|
+
margin: 0 4px 4px 0;
|
|
41
|
+
}
|
|
42
|
+
</style>
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<!-- TODO 700-->
|
|
3
2
|
<ui-stack-block
|
|
4
|
-
v-show="false"
|
|
5
3
|
test-id="tools-stack-block"
|
|
6
4
|
has-children
|
|
7
5
|
is-toggle-on-stack-view-key
|
|
@@ -16,16 +14,32 @@
|
|
|
16
14
|
</div>
|
|
17
15
|
</template>
|
|
18
16
|
<template #stackChildren>
|
|
17
|
+
<!-- TODO 700-->
|
|
18
|
+
<!-- <ui-stack-block :has-children="false">-->
|
|
19
|
+
<!-- <template #stackBlockKey>-->
|
|
20
|
+
<!-- <span class="mt-2">{{ localization.common.toolsEnable }}</span>-->
|
|
21
|
+
<!-- </template>-->
|
|
22
|
+
<!-- <template #stackBlockContent>-->
|
|
23
|
+
<!-- <ui-checkbox-->
|
|
24
|
+
<!-- id="tools-2"-->
|
|
25
|
+
<!-- v-model="tools"-->
|
|
26
|
+
<!-- :label-text="localization.common.enable"-->
|
|
27
|
+
<!-- test-id="tools-2-checkbox"-->
|
|
28
|
+
<!-- size="md"-->
|
|
29
|
+
<!-- />-->
|
|
30
|
+
<!-- </template>-->
|
|
31
|
+
<!-- </ui-stack-block>-->
|
|
19
32
|
<ui-stack-block :has-children="false">
|
|
20
33
|
<template #stackBlockKey>
|
|
21
|
-
<span class="mt-2">{{ localization.common.
|
|
34
|
+
<span class="mt-2">{{ localization.common.balloon }}</span>
|
|
22
35
|
</template>
|
|
23
36
|
<template #stackBlockContent>
|
|
24
37
|
<ui-checkbox
|
|
25
|
-
id="
|
|
26
|
-
v-model="
|
|
38
|
+
id="balloon"
|
|
39
|
+
v-model="balloon"
|
|
27
40
|
:label-text="localization.common.enable"
|
|
28
|
-
|
|
41
|
+
:disabled="props.disabled"
|
|
42
|
+
test-id="balloon-checkbox"
|
|
29
43
|
size="md"
|
|
30
44
|
/>
|
|
31
45
|
</template>
|
|
@@ -37,7 +51,12 @@
|
|
|
37
51
|
<script setup lang="ts">
|
|
38
52
|
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
39
53
|
|
|
40
|
-
const tools = defineModel<boolean>('tools', { required: true })
|
|
54
|
+
// const tools = defineModel<boolean>('tools', { required: true })
|
|
55
|
+
const balloon = defineModel<boolean>('balloon', { required: true })
|
|
56
|
+
|
|
57
|
+
const props = defineProps<{
|
|
58
|
+
disabled: boolean
|
|
59
|
+
}>()
|
|
41
60
|
|
|
42
61
|
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
43
62
|
</script>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
<div v-show="false" class="hardware-tools">
|
|
2
|
+
<div class="hardware-tools">
|
|
4
3
|
<atoms-stack-block test-id="tools-stack-block" has-children>
|
|
5
4
|
<template #stackBlockKey>
|
|
6
5
|
<div
|
|
@@ -12,31 +11,52 @@
|
|
|
12
11
|
</div>
|
|
13
12
|
</template>
|
|
14
13
|
<template #stackChildren>
|
|
14
|
+
<!-- TODO 700-->
|
|
15
|
+
<!-- <atoms-stack-block-->
|
|
16
|
+
<!-- :has-children="false"-->
|
|
17
|
+
<!-- test-id="tools-stack-block-children"-->
|
|
18
|
+
<!-- >-->
|
|
19
|
+
<!-- <template #stackBlockKey>-->
|
|
20
|
+
<!-- {{ localization.common.toolsEnable }}-->
|
|
21
|
+
<!-- </template>-->
|
|
22
|
+
<!-- <template #stackBlockContent>-->
|
|
23
|
+
<!-- <div-->
|
|
24
|
+
<!-- :title="localization.common.inDevelopment"-->
|
|
25
|
+
<!-- class="cursor-not-allowed"-->
|
|
26
|
+
<!-- >-->
|
|
27
|
+
<!-- <input-->
|
|
28
|
+
<!-- id="tools-2"-->
|
|
29
|
+
<!-- v-model="tools"-->
|
|
30
|
+
<!-- disabled-->
|
|
31
|
+
<!-- data-id="tools-2-checkbox"-->
|
|
32
|
+
<!-- type="checkbox"-->
|
|
33
|
+
<!-- />-->
|
|
34
|
+
<!-- <label-->
|
|
35
|
+
<!-- for="tools-2"-->
|
|
36
|
+
<!-- class="label-text-normal cursor-not-allowed"-->
|
|
37
|
+
<!-- >{{ localization.common.enable }}</label-->
|
|
38
|
+
<!-- >-->
|
|
39
|
+
<!-- </div>-->
|
|
40
|
+
<!-- </template>-->
|
|
41
|
+
<!-- </atoms-stack-block>-->
|
|
15
42
|
<atoms-stack-block
|
|
16
|
-
|
|
17
|
-
|
|
43
|
+
:has-children="false"
|
|
44
|
+
test-id="tools-stack-block-children"
|
|
18
45
|
>
|
|
19
46
|
<template #stackBlockKey>
|
|
20
|
-
{{ localization.common.
|
|
47
|
+
{{ localization.common.balloon }}
|
|
21
48
|
</template>
|
|
22
49
|
<template #stackBlockContent>
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
/>
|
|
34
|
-
<label
|
|
35
|
-
for="tools-2"
|
|
36
|
-
class="label-text-normal cursor-not-allowed"
|
|
37
|
-
>{{ localization.common.enable }}</label
|
|
38
|
-
>
|
|
39
|
-
</div>
|
|
50
|
+
<input
|
|
51
|
+
id="balloon"
|
|
52
|
+
v-model="balloon"
|
|
53
|
+
:disabled="props.disabled"
|
|
54
|
+
data-id="balloon-checkbox"
|
|
55
|
+
type="checkbox"
|
|
56
|
+
/>
|
|
57
|
+
<label for="balloon" class="label-text-normal">{{
|
|
58
|
+
localization.common.enable
|
|
59
|
+
}}</label>
|
|
40
60
|
</template>
|
|
41
61
|
</atoms-stack-block>
|
|
42
62
|
</template>
|
|
@@ -47,14 +67,20 @@
|
|
|
47
67
|
<script setup lang="ts">
|
|
48
68
|
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
49
69
|
|
|
50
|
-
const tools = defineModel<boolean>('tools', { required: true })
|
|
70
|
+
// const tools = defineModel<boolean>('tools', { required: true })
|
|
71
|
+
const balloon = defineModel<boolean>('balloon', { required: true })
|
|
72
|
+
|
|
73
|
+
const props = defineProps<{
|
|
74
|
+
disabled: boolean
|
|
75
|
+
}>()
|
|
51
76
|
|
|
52
77
|
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
53
78
|
</script>
|
|
54
79
|
|
|
55
80
|
<style scoped lang="scss">
|
|
56
81
|
#tools-1,
|
|
57
|
-
#tools-2
|
|
82
|
+
#tools-2,
|
|
83
|
+
#balloon {
|
|
58
84
|
margin: 0 4px 4px 0;
|
|
59
85
|
}
|
|
60
86
|
</style>
|
|
@@ -44,6 +44,20 @@
|
|
|
44
44
|
@change="emits('remove-error-by-title', 'guest_os_version')"
|
|
45
45
|
/>
|
|
46
46
|
</div>
|
|
47
|
+
<div class="select-wrap mb-4">
|
|
48
|
+
<label for="profile-select" class="select-label">{{
|
|
49
|
+
localization.vmWizard.profile
|
|
50
|
+
}}</label>
|
|
51
|
+
|
|
52
|
+
<ui-select
|
|
53
|
+
v-model="profile"
|
|
54
|
+
:items="props.profileOptions"
|
|
55
|
+
:error-text="props.apiErrorProfile"
|
|
56
|
+
test-id="vm-wizard-profile-select"
|
|
57
|
+
width="max-content"
|
|
58
|
+
@change="emits('remove-error-by-title', 'profile')"
|
|
59
|
+
/>
|
|
60
|
+
</div>
|
|
47
61
|
</div>
|
|
48
62
|
</template>
|
|
49
63
|
|
|
@@ -60,6 +74,9 @@ const guestOsFamily = defineModel<UI_I_OptionItem | null>('guest-os-family', {
|
|
|
60
74
|
const guestOsVersion = defineModel<UI_I_OptionItem | null>('guest-os-version', {
|
|
61
75
|
required: true,
|
|
62
76
|
})
|
|
77
|
+
const profile = defineModel<UI_I_OptionItem | null>('profile', {
|
|
78
|
+
required: true,
|
|
79
|
+
})
|
|
63
80
|
|
|
64
81
|
const props = defineProps<{
|
|
65
82
|
apiErrorMachineType: string
|
|
@@ -68,6 +85,8 @@ const props = defineProps<{
|
|
|
68
85
|
osOptions: UI_I_OptionItem[]
|
|
69
86
|
apiErrorGuestOsVersion: string
|
|
70
87
|
versionsOptions: UI_I_OptionItem[]
|
|
88
|
+
apiErrorProfile: string
|
|
89
|
+
profileOptions: UI_I_OptionItem[]
|
|
71
90
|
}>()
|
|
72
91
|
const emits = defineEmits<{
|
|
73
92
|
(event: 'remove-error-by-title', value: string): void
|
|
@@ -91,6 +91,35 @@
|
|
|
91
91
|
<template #content>{{ props.apiErrorGuestOsVersion }}</template>
|
|
92
92
|
</atoms-tooltip-error>
|
|
93
93
|
</div>
|
|
94
|
+
<div class="select-os-block os-select-wrap table-row">
|
|
95
|
+
<label for="profile-select" class="table-cell"
|
|
96
|
+
>{{ localization.vmWizard.profile }}:</label
|
|
97
|
+
>
|
|
98
|
+
|
|
99
|
+
<atoms-tooltip-error
|
|
100
|
+
:has-error="!!props.apiErrorProfile"
|
|
101
|
+
selector="#vm-wizard-profile-select"
|
|
102
|
+
@remove="emits('remove-error-by-title', 'profile')"
|
|
103
|
+
>
|
|
104
|
+
<template #elem>
|
|
105
|
+
<select
|
|
106
|
+
id="vm-wizard-profile-select"
|
|
107
|
+
v-model="profile"
|
|
108
|
+
data-id="vm-wizard-profile-select"
|
|
109
|
+
class="table-cell"
|
|
110
|
+
>
|
|
111
|
+
<option
|
|
112
|
+
v-for="item in props.profileOptions"
|
|
113
|
+
:key="item.value"
|
|
114
|
+
:value="item"
|
|
115
|
+
>
|
|
116
|
+
{{ item.text }}
|
|
117
|
+
</option>
|
|
118
|
+
</select>
|
|
119
|
+
</template>
|
|
120
|
+
<template #content>{{ props.apiErrorProfile }}</template>
|
|
121
|
+
</atoms-tooltip-error>
|
|
122
|
+
</div>
|
|
94
123
|
</div>
|
|
95
124
|
</template>
|
|
96
125
|
|
|
@@ -107,6 +136,9 @@ const guestOsFamily = defineModel<UI_I_OptionItem | null>('guest-os-family', {
|
|
|
107
136
|
const guestOsVersion = defineModel<UI_I_OptionItem | null>('guest-os-version', {
|
|
108
137
|
required: true,
|
|
109
138
|
})
|
|
139
|
+
const profile = defineModel<UI_I_OptionItem | null>('profile', {
|
|
140
|
+
required: true,
|
|
141
|
+
})
|
|
110
142
|
|
|
111
143
|
const props = defineProps<{
|
|
112
144
|
apiErrorMachineType: string
|
|
@@ -115,6 +147,8 @@ const props = defineProps<{
|
|
|
115
147
|
osOptions: UI_I_OptionItem[]
|
|
116
148
|
apiErrorGuestOsVersion: string
|
|
117
149
|
versionsOptions: UI_I_OptionItem[]
|
|
150
|
+
apiErrorProfile: string
|
|
151
|
+
profileOptions: UI_I_OptionItem[]
|
|
118
152
|
}>()
|
|
119
153
|
const emits = defineEmits<{
|
|
120
154
|
(event: 'remove-error-by-title', value: string): void
|