bfg-common 1.5.556 → 1.5.558
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 +4 -20
- package/assets/localization/local_en.json +4 -20
- package/assets/localization/local_hy.json +4 -20
- package/assets/localization/local_kk.json +4 -20
- package/assets/localization/local_ru.json +4 -20
- package/assets/localization/local_zh.json +5 -21
- package/components/common/modals/confirmByInput/ConfirmByInput.vue +1 -9
- package/components/common/modals/confirmByInput/ConfirmByInputNew.vue +2 -7
- package/components/common/pages/backups/modals/createBackup/New.vue +2 -8
- package/components/common/pages/backups/modals/restore/Restore.vue +5 -9
- package/components/common/pages/backups/modals/restore/RestoreNew.vue +3 -13
- package/components/common/pages/backups/modals/restore/RestoreOld.vue +18 -6
- package/components/common/vm/actions/add/Add.vue +46 -119
- package/components/common/vm/actions/add/New.vue +16 -54
- package/components/common/vm/actions/add/Old.vue +16 -55
- package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +14 -81
- package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +7 -56
- package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +8 -56
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +73 -142
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +60 -54
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +61 -55
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +139 -159
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +8 -15
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuOld.vue +8 -13
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +62 -75
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +58 -74
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbController.vue +6 -17
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +6 -3
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerOld.vue +6 -3
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +17 -39
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +6 -5
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +6 -5
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/lib/config/options.ts +4 -4
- package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +6 -93
- package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +8 -62
- package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +8 -60
- package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptions.vue +5 -69
- package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +12 -32
- package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsOld.vue +12 -33
- package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +114 -132
- package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +41 -6
- package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderOld.vue +44 -6
- package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +8 -23
- package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +21 -31
- package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +26 -34
- package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +28 -34
- package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/Old.vue +24 -30
- package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/RemoteConsoleOptions.vue +8 -112
- package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +3 -3
- package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/{KeymapNew.vue → New.vue} +6 -6
- package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/{KeymapOld.vue → Old.vue} +5 -5
- package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +6 -7
- package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/Tools.vue +4 -38
- package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsNew.vue +7 -26
- package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsOld.vue +24 -50
- package/components/common/vm/actions/common/lib/models/interfaces.ts +57 -25
- package/components/common/vm/actions/editSettings/EditSettings.vue +21 -35
- package/components/common/vm/actions/editSettings/EditSettingsOld.vue +14 -41
- package/components/common/vm/actions/editSettings/new/New.vue +14 -41
- package/components/common/vm/actions/lib/models/interfaces.ts +4 -29
- package/components/common/vm/actions/lib/utils.ts +37 -32
- package/package.json +1 -3
- /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/{PasswordNew.vue → New.vue} +0 -0
- /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/{PasswordOld.vue → Old.vue} +0 -0
package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
v-model:limit="limit"
|
|
11
11
|
v-model:limit-type="limitType"
|
|
12
12
|
v-model:limit-invalid="limitInvalid"
|
|
13
|
-
v-model:memory-hot-plug="
|
|
13
|
+
v-model:memory-hot-plug="model.memory.hotplug"
|
|
14
14
|
:error-validation-fields="props.errorValidationFields"
|
|
15
15
|
:memory-invalid="memoryInvalid"
|
|
16
16
|
:error-text="memorySizeLocalAndApiErrorsTexts"
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
v-model:limit="limit"
|
|
36
36
|
v-model:limit-type="limitType"
|
|
37
37
|
v-model:limit-invalid="limitInvalid"
|
|
38
|
-
v-model:memory-hot-plug="
|
|
38
|
+
v-model:memory-hot-plug="model.memory.hotplug"
|
|
39
39
|
:error-validation-fields="props.errorValidationFields"
|
|
40
40
|
:memory-invalid="memoryInvalid"
|
|
41
41
|
:error-text="memorySizeLocalAndApiErrorsTexts"
|
|
@@ -52,31 +52,29 @@
|
|
|
52
52
|
</template>
|
|
53
53
|
|
|
54
54
|
<script setup lang="ts">
|
|
55
|
-
import type { API_UI_I_VmEditMemory } from '~/lib/models/store/vm/interfaces'
|
|
56
|
-
import type { UI_I_SendDataMemory } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
|
|
57
55
|
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
58
56
|
import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
|
|
59
57
|
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
58
|
+
import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
|
|
60
59
|
import {
|
|
61
60
|
memoryOptionsFunc,
|
|
62
61
|
memoryTypeOptionsFunc,
|
|
63
62
|
} from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/lib/config/memoryOptions'
|
|
64
63
|
|
|
64
|
+
const model = defineModel<UI_I_CreateVmData>({ required: true })
|
|
65
|
+
|
|
65
66
|
const props = withDefaults(
|
|
66
67
|
defineProps<{
|
|
67
68
|
maxMemory: number
|
|
68
69
|
isEdit: boolean
|
|
69
70
|
errorValidationFields: UI_I_ErrorValidationField[]
|
|
70
71
|
state?: string | number
|
|
71
|
-
memory?: API_UI_I_VmEditMemory
|
|
72
72
|
}>(),
|
|
73
73
|
{
|
|
74
74
|
state: undefined,
|
|
75
|
-
memory: undefined,
|
|
76
75
|
}
|
|
77
76
|
)
|
|
78
77
|
const emits = defineEmits<{
|
|
79
|
-
(event: 'send-data', value: UI_I_SendDataMemory): void
|
|
80
78
|
(event: 'invalid', value: boolean): void
|
|
81
79
|
(event: 'remove-error-by-title', value: string): void
|
|
82
80
|
}>()
|
|
@@ -103,7 +101,7 @@ const isDisabled = computed<boolean>(() => {
|
|
|
103
101
|
})
|
|
104
102
|
|
|
105
103
|
const isMemoryDisabled = computed<boolean>(
|
|
106
|
-
() => isDisabled.value && !
|
|
104
|
+
() => isDisabled.value && !model.value.memory.hotplug
|
|
107
105
|
)
|
|
108
106
|
|
|
109
107
|
const selectedMemory = ref<number>(4)
|
|
@@ -122,6 +120,18 @@ const memoryInMb = computed<number>(() => {
|
|
|
122
120
|
|
|
123
121
|
return $binary.universalFromTo(+selectedMemory.value, memoryType.value, 'mb')
|
|
124
122
|
})
|
|
123
|
+
watch(memoryInMb, (newValue) => {
|
|
124
|
+
model.value.memory.size_mb = newValue
|
|
125
|
+
})
|
|
126
|
+
if (model.value.memory.size_mb !== 4096) {
|
|
127
|
+
const sizeInGb = $binary.mbToGb(model.value.memory.size_mb)
|
|
128
|
+
if (sizeInGb < 1) {
|
|
129
|
+
selectedMemory.value = model.value.memory.size_mb
|
|
130
|
+
memoryType.value = 'mb'
|
|
131
|
+
} else {
|
|
132
|
+
selectedMemory.value = sizeInGb
|
|
133
|
+
}
|
|
134
|
+
}
|
|
125
135
|
|
|
126
136
|
const memoryOptions = ref<UI_I_OptionItem[]>(
|
|
127
137
|
memoryOptionsFunc(localization.value, minMemoryInMb, props.maxMemory)
|
|
@@ -211,6 +221,26 @@ watch(reservation, (newValue) => {
|
|
|
211
221
|
})
|
|
212
222
|
const reservationType = ref<string>('mb')
|
|
213
223
|
const reserveGuestMemory = ref<boolean>(false)
|
|
224
|
+
if (model.value.memory.reservation_mb !== 2) {
|
|
225
|
+
const reservationInGb = $binary.mbToGb(model.value.memory.reservation_mb)
|
|
226
|
+
if (reservationInGb < 1) {
|
|
227
|
+
reservation.value = model.value.memory.reservation_mb.toString()
|
|
228
|
+
reservationType.value = 'mb'
|
|
229
|
+
} else {
|
|
230
|
+
reservation.value = reservationInGb
|
|
231
|
+
reservationType.value = 'gb'
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
watch(
|
|
235
|
+
[reservation, reservationType],
|
|
236
|
+
() => {
|
|
237
|
+
model.value.memory.reservation_mb =
|
|
238
|
+
reservationType.value === 'gb'
|
|
239
|
+
? $binary.gbToMb(+reservation.value)
|
|
240
|
+
: +reservation.value
|
|
241
|
+
},
|
|
242
|
+
{ deep: true, immediate: true }
|
|
243
|
+
)
|
|
214
244
|
|
|
215
245
|
const limit = ref<string>('Unlimited')
|
|
216
246
|
watch(limit, (newValue) => {
|
|
@@ -220,90 +250,47 @@ watch(limit, (newValue) => {
|
|
|
220
250
|
})
|
|
221
251
|
const limitType = ref<string>('mb')
|
|
222
252
|
const limitOptions = computed<UI_I_OptionItem[] | undefined>(() => {
|
|
223
|
-
if (
|
|
253
|
+
if (model.value.memory.hotplug)
|
|
224
254
|
return memoryOptionsFunc(
|
|
225
255
|
localization.value,
|
|
226
256
|
memoryInMb.value,
|
|
227
257
|
props.maxMemory
|
|
228
258
|
)
|
|
229
259
|
})
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
)
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
260
|
+
if (model.value.memory.limit_mb !== null) {
|
|
261
|
+
if (typeof model.value.memory.limit_mb === 'string')
|
|
262
|
+
limit.value = model.value.memory.limit_mb
|
|
263
|
+
else {
|
|
264
|
+
const limitInGb = $binary.mbToGb(model.value.memory.limit_mb)
|
|
265
|
+
if (limitInGb < 1) {
|
|
266
|
+
limit.value = model.value.memory.limit_mb.toString()
|
|
267
|
+
limitType.value = 'mb'
|
|
268
|
+
} else {
|
|
269
|
+
limit.value = limitInGb
|
|
270
|
+
limitType.value = 'gb'
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
239
274
|
watch(
|
|
240
|
-
[
|
|
275
|
+
[limit, limitType],
|
|
241
276
|
() => {
|
|
242
|
-
|
|
243
|
-
reservationType.value === 'mb'
|
|
244
|
-
? reservation.value
|
|
245
|
-
: '' +
|
|
246
|
-
$binary.universalFromTo(
|
|
247
|
-
reservation.value,
|
|
248
|
-
reservationType.value,
|
|
249
|
-
'mb',
|
|
250
|
-
12
|
|
251
|
-
)
|
|
252
|
-
const limitInMb =
|
|
277
|
+
model.value.memory.limit_mb =
|
|
253
278
|
limit.value === 'Unlimited'
|
|
254
279
|
? limit.value
|
|
255
280
|
: limitType.value === 'gb'
|
|
256
281
|
? $binary.gbToMb(+limit.value)
|
|
257
282
|
: +limit.value
|
|
258
|
-
emits('send-data', {
|
|
259
|
-
memory: '' + memoryInMb.value,
|
|
260
|
-
hotplug: memoryHotPlug.value,
|
|
261
|
-
reservation_mb: reservationInMb,
|
|
262
|
-
limit_mb: limitInMb,
|
|
263
|
-
})
|
|
264
283
|
},
|
|
265
|
-
{ immediate: true }
|
|
284
|
+
{ deep: true, immediate: true }
|
|
266
285
|
)
|
|
267
286
|
|
|
268
|
-
//
|
|
269
|
-
|
|
270
|
-
() => props.
|
|
271
|
-
(newValue) => {
|
|
272
|
-
if (!newValue) return
|
|
273
|
-
|
|
274
|
-
const sizeInGb = $binary.mbToGb(newValue.size_mb)
|
|
275
|
-
if (sizeInGb < 1) {
|
|
276
|
-
selectedMemory.value = newValue.size_mb
|
|
277
|
-
memoryType.value = 'mb'
|
|
278
|
-
} else {
|
|
279
|
-
selectedMemory.value = sizeInGb
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
const reservationInGb = $binary.mbToGb(newValue.reservation_mb)
|
|
283
|
-
if (reservationInGb < 1) {
|
|
284
|
-
reservation.value = newValue.reservation_mb
|
|
285
|
-
reservationType.value = 'mb'
|
|
286
|
-
} else {
|
|
287
|
-
reservation.value = reservationInGb
|
|
288
|
-
reservationType.value = 'gb'
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
if (typeof newValue.limit_mb === 'string') limit.value = newValue.limit_mb
|
|
292
|
-
else {
|
|
293
|
-
const limitInGb = $binary.mbToGb(newValue.limit_mb)
|
|
294
|
-
if (limitInGb < 1) {
|
|
295
|
-
limit.value = newValue.limit_mb
|
|
296
|
-
limitType.value = 'mb'
|
|
297
|
-
} else {
|
|
298
|
-
limit.value = limitInGb
|
|
299
|
-
limitType.value = 'gb'
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
memoryHotPlug.value = newValue.hotplug
|
|
304
|
-
},
|
|
305
|
-
{ immediate: true }
|
|
287
|
+
// const memoryHotPlug = ref<boolean>(false)
|
|
288
|
+
const isDisabledMemoryHotPlug = computed<boolean>(
|
|
289
|
+
() => memoryInMb.value >= props.maxMemory || isDisabled.value
|
|
306
290
|
)
|
|
291
|
+
watch(isDisabledMemoryHotPlug, (newValue) => {
|
|
292
|
+
if (newValue) model.value.memory.hotplug = false
|
|
293
|
+
})
|
|
307
294
|
|
|
308
295
|
const onRemoveValidationError = (): void => {
|
|
309
296
|
emits('remove-error-by-title', 'memory.size_mb')
|
|
@@ -1,9 +1,9 @@
|
|
|
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="
|
|
5
|
-
v-model:adapter-type="
|
|
6
|
-
v-model:mac-address="
|
|
4
|
+
v-model:selected-location="netBridge"
|
|
5
|
+
v-model:adapter-type="model"
|
|
6
|
+
v-model:mac-address="mac"
|
|
7
7
|
v-model:mac-address-type="macAddressType"
|
|
8
8
|
v-model:new-network-invalid="newNetworkInvalid"
|
|
9
9
|
:index="props.index"
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
/>
|
|
27
27
|
<common-vm-actions-common-customize-hardware-virtual-hardware-new-network-old
|
|
28
28
|
v-else
|
|
29
|
-
v-model:selected-location="
|
|
30
|
-
v-model:adapter-type="
|
|
31
|
-
v-model:mac-address="
|
|
29
|
+
v-model:selected-location="netBridge"
|
|
30
|
+
v-model:adapter-type="model"
|
|
31
|
+
v-model:mac-address="mac"
|
|
32
32
|
v-model:mac-address-type="macAddressType"
|
|
33
33
|
v-model:new-network-invalid="newNetworkInvalid"
|
|
34
34
|
:index="props.index"
|
|
@@ -56,20 +56,45 @@ import type { UI_T_Project } from '~/lib/models/types'
|
|
|
56
56
|
import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
|
|
57
57
|
import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
|
|
58
58
|
import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
|
|
59
|
-
import type { UI_I_SendDataNewNetwork } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
|
|
60
59
|
import type { UI_T_NetworkType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
|
|
61
60
|
import type {
|
|
62
61
|
UI_I_Localization,
|
|
63
62
|
UI_I_HTMLSelectElement,
|
|
64
63
|
} from '~/lib/models/interfaces'
|
|
65
64
|
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
65
|
+
import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
|
|
66
|
+
|
|
67
|
+
const network = defineModel<UI_I_CreateVmData['network_devices'][0]['network']>(
|
|
68
|
+
'network',
|
|
69
|
+
{ required: true }
|
|
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
|
+
|
|
83
|
+
const mac = defineModel<UI_I_CreateVmData['network_devices'][0]['mac']>('mac', {
|
|
84
|
+
required: true,
|
|
85
|
+
})
|
|
86
|
+
const model = defineModel<UI_I_CreateVmData['network_devices'][0]['model']>(
|
|
87
|
+
'model',
|
|
88
|
+
{
|
|
89
|
+
required: true,
|
|
90
|
+
}
|
|
91
|
+
)
|
|
66
92
|
|
|
67
93
|
const props = withDefaults(
|
|
68
94
|
defineProps<{
|
|
69
95
|
project: UI_T_Project
|
|
70
96
|
index: number
|
|
71
97
|
type: UI_T_NetworkType
|
|
72
|
-
network: UI_I_SendDataNewNetwork
|
|
73
98
|
networksTable: UI_I_NetworkTableItem[]
|
|
74
99
|
errorValidationFields: UI_I_ErrorValidationField[]
|
|
75
100
|
isEdit: boolean
|
|
@@ -80,7 +105,6 @@ const props = withDefaults(
|
|
|
80
105
|
}
|
|
81
106
|
)
|
|
82
107
|
const emits = defineEmits<{
|
|
83
|
-
(event: 'send-data', value: UI_I_SendDataNewNetwork): void
|
|
84
108
|
(event: 'invalid', value: boolean): void
|
|
85
109
|
(event: 'remove'): void
|
|
86
110
|
(event: 'remove-error-by-title', value: string): void
|
|
@@ -102,7 +126,7 @@ const isRemovable = computed<boolean>(() => {
|
|
|
102
126
|
return (
|
|
103
127
|
!props.isEdit ||
|
|
104
128
|
!isRunning.value ||
|
|
105
|
-
(isRunning.value &&
|
|
129
|
+
(isRunning.value && model.value === 'virtio')
|
|
106
130
|
)
|
|
107
131
|
})
|
|
108
132
|
|
|
@@ -118,9 +142,15 @@ const label = computed<string>(() => {
|
|
|
118
142
|
// }
|
|
119
143
|
|
|
120
144
|
const selectedLocationOld = ref<string>('')
|
|
121
|
-
const selectedLocation = ref<string>('')
|
|
122
145
|
const locationOptions = ref<UI_I_OptionItem[]>([])
|
|
123
146
|
|
|
147
|
+
if (netBridge.value) {
|
|
148
|
+
locationOptions.value = [
|
|
149
|
+
{ text: network.value, value: netBridge.value },
|
|
150
|
+
{ text: `${localization.value.common.browse}...`, value: '' },
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
|
|
124
154
|
const getNetworks = (): void => {
|
|
125
155
|
// if (props.networksTable.length) return // Из-за этого кода был баг. Открыть визард вм -> создать сеть -> открыть визард вм и в списке сетей нету новой сети
|
|
126
156
|
|
|
@@ -149,9 +179,8 @@ watch(
|
|
|
149
179
|
watch(
|
|
150
180
|
() => props.networksTable,
|
|
151
181
|
(newValue) => {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
)
|
|
182
|
+
if (!newValue.length && props.type !== 'new') return
|
|
183
|
+
|
|
155
184
|
if (!newValue.length) {
|
|
156
185
|
locationOptions.value = [
|
|
157
186
|
{
|
|
@@ -159,29 +188,33 @@ watch(
|
|
|
159
188
|
value: 'noAvailableNetworks',
|
|
160
189
|
},
|
|
161
190
|
]
|
|
162
|
-
|
|
191
|
+
netBridge.value = 'noAvailableNetworks'
|
|
163
192
|
newNetworkInvalid.value = true
|
|
164
193
|
return
|
|
165
194
|
}
|
|
166
195
|
newNetworkInvalid.value = false
|
|
167
196
|
|
|
197
|
+
const isExistValue = newValue.some(
|
|
198
|
+
(networkLocal) => networkLocal[valueProp] === netBridge.value
|
|
199
|
+
)
|
|
200
|
+
|
|
168
201
|
if (props.type === 'edit' || isExistValue) return
|
|
169
202
|
|
|
170
203
|
selectedLocationOld.value = newValue[0][valueProp] || ''
|
|
171
|
-
|
|
204
|
+
netBridge.value = newValue[0][valueProp] || ''
|
|
172
205
|
|
|
173
206
|
locationOptions.value = [
|
|
174
207
|
{ text: newValue[0].name, value: newValue[0][valueProp] },
|
|
175
208
|
{ text: `${localization.value.common.browse}...`, value: '' },
|
|
176
209
|
]
|
|
177
210
|
},
|
|
178
|
-
{ immediate: true }
|
|
211
|
+
{ immediate: true, deep: true }
|
|
179
212
|
)
|
|
180
213
|
|
|
181
214
|
const locationModalIsShow = ref<boolean>(false)
|
|
182
215
|
const onHideLocationModal = (): void => {
|
|
183
216
|
locationModalIsShow.value = false
|
|
184
|
-
|
|
217
|
+
netBridge.value = selectedLocationOld.value
|
|
185
218
|
}
|
|
186
219
|
const changeLocation = (event: UI_I_HTMLSelectElement): void => {
|
|
187
220
|
const value = event.target.value
|
|
@@ -191,17 +224,16 @@ const changeLocation = (event: UI_I_HTMLSelectElement): void => {
|
|
|
191
224
|
}
|
|
192
225
|
|
|
193
226
|
selectedLocationOld.value = value
|
|
194
|
-
|
|
195
|
-
// netBridge.value = value
|
|
227
|
+
netBridge.value = value
|
|
196
228
|
}
|
|
197
|
-
const onSelectLocation = (
|
|
229
|
+
const onSelectLocation = (networkLocal: UI_I_NetworkTableItem): void => {
|
|
198
230
|
locationModalIsShow.value = false
|
|
199
231
|
|
|
200
|
-
selectedLocationOld.value =
|
|
201
|
-
|
|
232
|
+
selectedLocationOld.value = networkLocal[valueProp]
|
|
233
|
+
netBridge.value = networkLocal[valueProp]
|
|
202
234
|
|
|
203
235
|
const hasNetwork = locationOptions.value.some(
|
|
204
|
-
(option) => option.value ===
|
|
236
|
+
(option) => option.value === networkLocal[valueProp]
|
|
205
237
|
)
|
|
206
238
|
if (hasNetwork) {
|
|
207
239
|
return
|
|
@@ -209,65 +241,17 @@ const onSelectLocation = (network: UI_I_NetworkTableItem): void => {
|
|
|
209
241
|
|
|
210
242
|
locationOptions.value = [
|
|
211
243
|
...locationOptions.value.slice(0, -1),
|
|
212
|
-
{ text:
|
|
244
|
+
{ text: networkLocal.name, value: networkLocal[valueProp] },
|
|
213
245
|
locationOptions.value[locationOptions.value.length - 1],
|
|
214
246
|
]
|
|
215
247
|
}
|
|
216
|
-
|
|
217
|
-
const adapterType = ref<string>('rtl8139')
|
|
218
|
-
|
|
219
|
-
const target = ref<string>('')
|
|
220
|
-
|
|
221
|
-
const macAddress = ref<string>('')
|
|
222
248
|
const macAddressType = ref<string>('automatic')
|
|
223
249
|
|
|
224
|
-
watch(
|
|
225
|
-
[selectedLocation, adapterType, macAddress, macAddressType, locationOptions],
|
|
226
|
-
() => {
|
|
227
|
-
const option = locationOptions.value.find(
|
|
228
|
-
(option) => option.value === selectedLocation.value
|
|
229
|
-
)
|
|
230
|
-
if (!option) return
|
|
231
|
-
|
|
232
|
-
emits('send-data', {
|
|
233
|
-
network: option.text,
|
|
234
|
-
// net_bridge: props.project === 'procurator' ? option.value : '',
|
|
235
|
-
net_bridge: option.value,
|
|
236
|
-
target: target.value,
|
|
237
|
-
model: adapterType.value,
|
|
238
|
-
mac: macAddress.value,
|
|
239
|
-
boot_order: props.network.boot_order,
|
|
240
|
-
})
|
|
241
|
-
},
|
|
242
|
-
{ immediate: true }
|
|
243
|
-
)
|
|
244
|
-
|
|
245
|
-
// Добавляем данные для редактирования
|
|
246
|
-
watch(
|
|
247
|
-
() => props.network,
|
|
248
|
-
(newValue) => {
|
|
249
|
-
// if (props.type !== 'edit') return
|
|
250
|
-
if (props.type !== 'edit' && props.type !== 'clone') return
|
|
251
|
-
|
|
252
|
-
locationOptions.value = [
|
|
253
|
-
{ text: newValue.network, value: newValue[valueProp] },
|
|
254
|
-
{ text: `${localization.value.common.browse}...`, value: '' },
|
|
255
|
-
]
|
|
256
|
-
selectedLocation.value = newValue[valueProp]
|
|
257
|
-
|
|
258
|
-
adapterType.value = newValue.model
|
|
259
|
-
target.value = newValue.target
|
|
260
|
-
// Сбрасываем mac address при клонировании
|
|
261
|
-
macAddress.value = props.type === 'clone' ? '' : newValue.mac
|
|
262
|
-
},
|
|
263
|
-
{ immediate: true }
|
|
264
|
-
)
|
|
265
|
-
|
|
266
250
|
watch(
|
|
267
251
|
isRunning,
|
|
268
252
|
(newValue) => {
|
|
269
253
|
if (newValue && props.type === 'new') {
|
|
270
|
-
|
|
254
|
+
model.value = 'virtio'
|
|
271
255
|
}
|
|
272
256
|
},
|
|
273
257
|
{ immediate: true }
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<common-vm-actions-common-customize-hardware-virtual-hardware-new-usb-controller-new
|
|
3
3
|
v-if="isNewView"
|
|
4
|
-
v-model
|
|
4
|
+
v-model="model"
|
|
5
5
|
:is-edit="props.isEdit"
|
|
6
6
|
:selected-usb-controller-text="selectedUsbControllerText"
|
|
7
7
|
:usb-controller-options="usbControllerOptions"
|
|
8
8
|
/>
|
|
9
9
|
<common-vm-actions-common-customize-hardware-virtual-hardware-new-usb-controller-old
|
|
10
10
|
v-else
|
|
11
|
-
v-model
|
|
11
|
+
v-model="model"
|
|
12
12
|
:is-edit="props.isEdit"
|
|
13
13
|
:selected-usb-controller-text="selectedUsbControllerText"
|
|
14
14
|
:usb-controller-options="usbControllerOptions"
|
|
@@ -17,42 +17,31 @@
|
|
|
17
17
|
|
|
18
18
|
<script setup lang="ts">
|
|
19
19
|
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
20
|
+
import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
|
|
20
21
|
import { usbControllerOptionsConfig } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/lib/config/options'
|
|
21
22
|
|
|
23
|
+
const model = defineModel<UI_I_CreateVmData['usb_controllers'][0]['type']>({ required: true })
|
|
24
|
+
|
|
22
25
|
const props = withDefaults(
|
|
23
26
|
defineProps<{
|
|
24
|
-
usbController: string
|
|
25
27
|
isEdit: boolean
|
|
26
28
|
state?: string | number
|
|
27
29
|
}>(),
|
|
28
30
|
{
|
|
29
|
-
usbController: 'usb2',
|
|
30
31
|
state: undefined,
|
|
31
32
|
}
|
|
32
33
|
)
|
|
33
|
-
const emits = defineEmits<{
|
|
34
|
-
(event: 'send-data', value: string): void
|
|
35
|
-
}>()
|
|
36
34
|
|
|
37
35
|
const { $store }: any = useNuxtApp()
|
|
38
36
|
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
39
37
|
|
|
40
38
|
const usbControllerOptions = ref<UI_I_OptionItem[]>(usbControllerOptionsConfig)
|
|
41
|
-
const selectedUsbController = ref<string>(props.usbController)
|
|
42
39
|
const selectedUsbControllerText = computed<string>(
|
|
43
40
|
() =>
|
|
44
41
|
usbControllerOptions.value.find(
|
|
45
|
-
(option) => option.value ===
|
|
42
|
+
(option) => option.value === model.value
|
|
46
43
|
)?.text || ''
|
|
47
44
|
)
|
|
48
|
-
|
|
49
|
-
watch(
|
|
50
|
-
selectedUsbController,
|
|
51
|
-
(newValue) => {
|
|
52
|
-
emits('send-data', newValue)
|
|
53
|
-
},
|
|
54
|
-
{ immediate: true }
|
|
55
|
-
)
|
|
56
45
|
</script>
|
|
57
46
|
|
|
58
47
|
<style scoped lang="scss"></style>
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
<ui-select
|
|
22
22
|
v-else
|
|
23
23
|
id="usb-controller-select"
|
|
24
|
-
v-model="
|
|
24
|
+
v-model="model"
|
|
25
25
|
:items="props.usbControllerOptions"
|
|
26
26
|
:disabled="props.isEdit"
|
|
27
27
|
width="auto"
|
|
@@ -33,10 +33,13 @@
|
|
|
33
33
|
</template>
|
|
34
34
|
|
|
35
35
|
<script setup lang="ts">
|
|
36
|
-
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
37
36
|
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
37
|
+
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
38
|
+
import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
|
|
38
39
|
|
|
39
|
-
const
|
|
40
|
+
const model = defineModel<UI_I_CreateVmData['usb_controllers'][0]['type']>({
|
|
41
|
+
required: true,
|
|
42
|
+
})
|
|
40
43
|
|
|
41
44
|
const props = defineProps<{
|
|
42
45
|
isEdit: boolean
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
<div v-else class="select">
|
|
21
21
|
<select
|
|
22
22
|
id="usb-controller-select"
|
|
23
|
-
v-model="
|
|
23
|
+
v-model="model"
|
|
24
24
|
:disabled="props.isEdit"
|
|
25
25
|
data-id="usb-controller-select"
|
|
26
26
|
@click.stop
|
|
@@ -40,10 +40,13 @@
|
|
|
40
40
|
</template>
|
|
41
41
|
|
|
42
42
|
<script setup lang="ts">
|
|
43
|
-
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
44
43
|
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
44
|
+
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
45
|
+
import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
|
|
45
46
|
|
|
46
|
-
const
|
|
47
|
+
const model = defineModel<UI_I_CreateVmData['usb_controllers'][0]['type']>({
|
|
48
|
+
required: true,
|
|
49
|
+
})
|
|
47
50
|
|
|
48
51
|
const props = defineProps<{
|
|
49
52
|
isEdit: boolean
|