bfg-common 1.5.636 → 1.5.638
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/CODE_STYLE.md +109 -109
- package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
- package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
- package/assets/img/icons/icons-sprite-light-3.svg +227 -227
- package/assets/img/icons/icons-sprite-light-5.svg +488 -488
- package/components/atoms/TheIcon3.vue +50 -50
- package/components/atoms/collapse/CollapseNav.vue +170 -170
- package/components/atoms/perPage/PerPage.vue +58 -58
- package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
- package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
- package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
- package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
- package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
- package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
- package/components/common/diagramMain/modals/lib/config/portModal.ts +251 -251
- package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
- package/components/common/diagramMain/port/Port.vue +580 -580
- package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
- package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
- package/components/common/pages/backups/DetailView.vue +52 -52
- package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
- package/components/common/pages/backups/modals/Modals.vue +243 -243
- package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
- package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
- package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
- package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
- package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
- package/components/common/pages/home/lib/models/interfaces.ts +48 -48
- package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
- package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
- package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
- package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
- package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
- package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
- package/components/common/select/radio/RadioGroup.vue +137 -137
- package/components/common/spiceConsole/Drawer.vue +420 -420
- package/components/common/spiceConsole/SpiceConsole.vue +184 -184
- package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
- package/components/common/tools/Actions.vue +207 -207
- package/components/common/treeView/TreeView.vue +52 -52
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
- package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
- package/components/common/vm/actions/common/lib/models/interfaces.ts +2 -2
- package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
- package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
- package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
- package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
- package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
- package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
- package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
- package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
- package/components/common/vm/actions/register/New.vue +17 -1
- package/components/common/vm/actions/register/Register.vue +11 -3
- package/components/common/vm/actions/register/lib/config/steps.ts +94 -86
- package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
- package/components/common/wizards/common/compatibility/New.vue +99 -99
- package/components/common/wizards/common/compatibility/Old.vue +53 -53
- package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
- package/components/common/wizards/common/steps/name/Name.vue +178 -178
- package/components/common/wizards/common/steps/name/New.vue +221 -221
- package/components/common/wizards/common/steps/name/Old.vue +121 -121
- package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
- package/components/common/wizards/common/steps/name/location/New.vue +40 -40
- package/components/common/wizards/datastore/add/Add.vue +228 -228
- package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
- package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
- package/composables/useAppVersion.ts +21 -21
- package/composables/useLocal.ts +6 -6
- package/composables/useLocalCommon.ts +39 -39
- package/package.json +2 -2
- package/plugins/console.ts +21 -21
- package/plugins/mouse.ts +21 -21
- package/plugins/panelStates.ts +70 -70
- package/plugins/text.ts +59 -59
- package/public/spice-console/application/clientgui.js +854 -854
- package/public/spice-console/application/packetfactory.js +211 -211
- package/public/spice-console/application/virtualmouse.js +147 -147
- package/public/spice-console/lib/images/bitmap.js +203 -203
- package/public/spice-console/network/spicechannel.js +440 -440
- package/public/spice-console/process/cursorprocess.js +128 -128
- package/public/spice-console/process/inputprocess.js +227 -227
- package/public/spice-console/process/mainprocess.js +212 -212
- package/public/spice-console/run.js +210 -210
- package/store/main/mutations.ts +7 -7
- package/store/main/state.ts +7 -7
- package/store/tasks/actions.ts +165 -165
- package/store/tasks/mappers/recentTasks.ts +123 -123
- package/store/tasks/mutations.ts +82 -82
package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue
CHANGED
|
@@ -1,156 +1,156 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<component
|
|
4
|
-
:is="currentComponent"
|
|
5
|
-
:boot-list="bootList"
|
|
6
|
-
:is-disabled="props.isDisabled"
|
|
7
|
-
@change-order="onChangeOrder"
|
|
8
|
-
@update-boot-list="onBootListUpdate"
|
|
9
|
-
/>
|
|
10
|
-
</div>
|
|
11
|
-
</template>
|
|
12
|
-
|
|
13
|
-
<script setup lang="ts">
|
|
14
|
-
import type { UI_I_BootItem } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/lib/models/interfaces'
|
|
15
|
-
import type { UI_I_DropEvent } from '~/components/atoms/list/dragDropList/lib/config/events'
|
|
16
|
-
import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
|
|
17
|
-
|
|
18
|
-
const model = defineModel<UI_I_CreateVmData>({ required: true })
|
|
19
|
-
|
|
20
|
-
const props = defineProps<{
|
|
21
|
-
isDisabled: boolean
|
|
22
|
-
}>()
|
|
23
|
-
|
|
24
|
-
const { $store }: any = useNuxtApp()
|
|
25
|
-
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
26
|
-
const currentComponent = computed(() =>
|
|
27
|
-
isNewView.value
|
|
28
|
-
? defineAsyncComponent(() => import('./New.vue'))
|
|
29
|
-
: defineAsyncComponent(() => import('./Old.vue'))
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
const bootList = ref<UI_I_BootItem[]>([])
|
|
33
|
-
|
|
34
|
-
// Используем computed для автоматического обновления bootList при изменении модели
|
|
35
|
-
const hardDisksAndNetworks = computed(() => [
|
|
36
|
-
model.value.disk_devices?.filter((disk) => disk.device_type !== 'cdrom') ||
|
|
37
|
-
[],
|
|
38
|
-
model.value.disk_devices?.filter((disk) => disk.device_type === 'cdrom') ||
|
|
39
|
-
[],
|
|
40
|
-
model.value.network_devices || [],
|
|
41
|
-
])
|
|
42
|
-
|
|
43
|
-
// Watcher для обновления bootList при изменении модели
|
|
44
|
-
watch(
|
|
45
|
-
hardDisksAndNetworks,
|
|
46
|
-
([hardDisks, cdDvdDrives, networks]) => {
|
|
47
|
-
const hardDiskItems: UI_I_BootItem[] = hardDisks.map((item, index) => {
|
|
48
|
-
const order = item.boot_order || 0
|
|
49
|
-
return {
|
|
50
|
-
order,
|
|
51
|
-
isChecked: !!order,
|
|
52
|
-
text: `disk${index}`,
|
|
53
|
-
iconClassName: 'icon-disk',
|
|
54
|
-
type: 'disk' as const,
|
|
55
|
-
name: `${item.source}_${index}`,
|
|
56
|
-
testId: `select-disk-value-${index + 1}`,
|
|
57
|
-
}
|
|
58
|
-
})
|
|
59
|
-
|
|
60
|
-
const cdDvdDriveItems: UI_I_BootItem[] = cdDvdDrives.map((item, index) => {
|
|
61
|
-
const order = item.boot_order || 0
|
|
62
|
-
return {
|
|
63
|
-
order,
|
|
64
|
-
isChecked: !!order,
|
|
65
|
-
text: `cdrom${index}`,
|
|
66
|
-
iconClassName: 'icon-disk',
|
|
67
|
-
type: 'cdDvd' as const,
|
|
68
|
-
name: `${item.source}_${hardDisks.length + index}`,
|
|
69
|
-
testId: `select-cd-dvd-value-${index + 1}`,
|
|
70
|
-
}
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
const networkItems: UI_I_BootItem[] = networks.map((item, index) => {
|
|
74
|
-
const order = item.boot_order || 0
|
|
75
|
-
return {
|
|
76
|
-
order,
|
|
77
|
-
isChecked: !!order,
|
|
78
|
-
text: item.mac || 'undefined',
|
|
79
|
-
iconClassName: 'vsphere-icon-network',
|
|
80
|
-
type: 'nic' as const,
|
|
81
|
-
name: `${item.network}_${index}`,
|
|
82
|
-
testId: `select-nic-value-${index + 1}`,
|
|
83
|
-
}
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
bootList.value = [...hardDiskItems, ...cdDvdDriveItems, ...networkItems]
|
|
87
|
-
.filter((item) => item.order >= 0)
|
|
88
|
-
.sort((a, b) => a.order - b.order)
|
|
89
|
-
},
|
|
90
|
-
{ deep: true, immediate: true }
|
|
91
|
-
)
|
|
92
|
-
|
|
93
|
-
// Обработчик изменения порядка через drag & drop
|
|
94
|
-
const onChangeOrder = (event: UI_I_DropEvent): void => {
|
|
95
|
-
const updatedList = [...bootList.value]
|
|
96
|
-
const movedItem = updatedList.find((item) => item.name === event.target.name)
|
|
97
|
-
|
|
98
|
-
if (!movedItem) return
|
|
99
|
-
|
|
100
|
-
// Удаляем элемент из текущей позиции
|
|
101
|
-
const fromIndex = updatedList.indexOf(movedItem)
|
|
102
|
-
updatedList.splice(fromIndex, 1)
|
|
103
|
-
|
|
104
|
-
// Вставляем элемент в новую позицию
|
|
105
|
-
updatedList.splice(event.toPosition, 0, movedItem)
|
|
106
|
-
|
|
107
|
-
// Обновляем порядок всех элементов
|
|
108
|
-
updatedList.forEach((item, index) => {
|
|
109
|
-
item.order = index + 1
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
bootList.value = updatedList
|
|
113
|
-
updateModelFromBootList(updatedList)
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// Обработчик обновления bootList (при изменении чекбоксов)
|
|
117
|
-
const onBootListUpdate = (updatedBootList: UI_I_BootItem[]): void => {
|
|
118
|
-
bootList.value = updatedBootList
|
|
119
|
-
updateModelFromBootList(updatedBootList)
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Функция для обновления модели на основе bootList
|
|
123
|
-
const updateModelFromBootList = (bootItems: UI_I_BootItem[]): void => {
|
|
124
|
-
// Сначала сбрасываем все boot_order
|
|
125
|
-
model.value.disk_devices?.forEach((disk) => {
|
|
126
|
-
disk.boot_order = 0
|
|
127
|
-
})
|
|
128
|
-
model.value.network_devices?.forEach((network) => {
|
|
129
|
-
network.boot_order = 0
|
|
130
|
-
})
|
|
131
|
-
|
|
132
|
-
// Затем устанавливаем boot_order только для выбранных элементов
|
|
133
|
-
let currentOrder = 1
|
|
134
|
-
bootItems.forEach((bootItem) => {
|
|
135
|
-
if (!bootItem.isChecked) return
|
|
136
|
-
|
|
137
|
-
if (bootItem.type === 'nic') {
|
|
138
|
-
const [networkName, indexStr] = bootItem.name.split('_')
|
|
139
|
-
const index = parseInt(indexStr, 10)
|
|
140
|
-
const network = model.value.network_devices?.[index]
|
|
141
|
-
if (network && network.network === networkName) {
|
|
142
|
-
network.boot_order = currentOrder++
|
|
143
|
-
}
|
|
144
|
-
} else {
|
|
145
|
-
const [source, indexStr] = bootItem.name.split('_')
|
|
146
|
-
const index = parseInt(indexStr, 10)
|
|
147
|
-
const disk = model.value.disk_devices?.[index]
|
|
148
|
-
if (disk && disk.source+'' === source) {
|
|
149
|
-
disk.boot_order = currentOrder++
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
})
|
|
153
|
-
}
|
|
154
|
-
</script>
|
|
155
|
-
|
|
156
|
-
<style scoped lang="scss"></style>
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<component
|
|
4
|
+
:is="currentComponent"
|
|
5
|
+
:boot-list="bootList"
|
|
6
|
+
:is-disabled="props.isDisabled"
|
|
7
|
+
@change-order="onChangeOrder"
|
|
8
|
+
@update-boot-list="onBootListUpdate"
|
|
9
|
+
/>
|
|
10
|
+
</div>
|
|
11
|
+
</template>
|
|
12
|
+
|
|
13
|
+
<script setup lang="ts">
|
|
14
|
+
import type { UI_I_BootItem } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/lib/models/interfaces'
|
|
15
|
+
import type { UI_I_DropEvent } from '~/components/atoms/list/dragDropList/lib/config/events'
|
|
16
|
+
import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
|
|
17
|
+
|
|
18
|
+
const model = defineModel<UI_I_CreateVmData>({ required: true })
|
|
19
|
+
|
|
20
|
+
const props = defineProps<{
|
|
21
|
+
isDisabled: boolean
|
|
22
|
+
}>()
|
|
23
|
+
|
|
24
|
+
const { $store }: any = useNuxtApp()
|
|
25
|
+
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
26
|
+
const currentComponent = computed(() =>
|
|
27
|
+
isNewView.value
|
|
28
|
+
? defineAsyncComponent(() => import('./New.vue'))
|
|
29
|
+
: defineAsyncComponent(() => import('./Old.vue'))
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
const bootList = ref<UI_I_BootItem[]>([])
|
|
33
|
+
|
|
34
|
+
// Используем computed для автоматического обновления bootList при изменении модели
|
|
35
|
+
const hardDisksAndNetworks = computed(() => [
|
|
36
|
+
model.value.disk_devices?.filter((disk) => disk.device_type !== 'cdrom') ||
|
|
37
|
+
[],
|
|
38
|
+
model.value.disk_devices?.filter((disk) => disk.device_type === 'cdrom') ||
|
|
39
|
+
[],
|
|
40
|
+
model.value.network_devices || [],
|
|
41
|
+
])
|
|
42
|
+
|
|
43
|
+
// Watcher для обновления bootList при изменении модели
|
|
44
|
+
watch(
|
|
45
|
+
hardDisksAndNetworks,
|
|
46
|
+
([hardDisks, cdDvdDrives, networks]) => {
|
|
47
|
+
const hardDiskItems: UI_I_BootItem[] = hardDisks.map((item, index) => {
|
|
48
|
+
const order = item.boot_order || 0
|
|
49
|
+
return {
|
|
50
|
+
order,
|
|
51
|
+
isChecked: !!order,
|
|
52
|
+
text: `disk${index}`,
|
|
53
|
+
iconClassName: 'icon-disk',
|
|
54
|
+
type: 'disk' as const,
|
|
55
|
+
name: `${item.source}_${index}`,
|
|
56
|
+
testId: `select-disk-value-${index + 1}`,
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
const cdDvdDriveItems: UI_I_BootItem[] = cdDvdDrives.map((item, index) => {
|
|
61
|
+
const order = item.boot_order || 0
|
|
62
|
+
return {
|
|
63
|
+
order,
|
|
64
|
+
isChecked: !!order,
|
|
65
|
+
text: `cdrom${index}`,
|
|
66
|
+
iconClassName: 'icon-disk',
|
|
67
|
+
type: 'cdDvd' as const,
|
|
68
|
+
name: `${item.source}_${hardDisks.length + index}`,
|
|
69
|
+
testId: `select-cd-dvd-value-${index + 1}`,
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
const networkItems: UI_I_BootItem[] = networks.map((item, index) => {
|
|
74
|
+
const order = item.boot_order || 0
|
|
75
|
+
return {
|
|
76
|
+
order,
|
|
77
|
+
isChecked: !!order,
|
|
78
|
+
text: item.mac || 'undefined',
|
|
79
|
+
iconClassName: 'vsphere-icon-network',
|
|
80
|
+
type: 'nic' as const,
|
|
81
|
+
name: `${item.network}_${index}`,
|
|
82
|
+
testId: `select-nic-value-${index + 1}`,
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
bootList.value = [...hardDiskItems, ...cdDvdDriveItems, ...networkItems]
|
|
87
|
+
.filter((item) => item.order >= 0)
|
|
88
|
+
.sort((a, b) => a.order - b.order)
|
|
89
|
+
},
|
|
90
|
+
{ deep: true, immediate: true }
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
// Обработчик изменения порядка через drag & drop
|
|
94
|
+
const onChangeOrder = (event: UI_I_DropEvent): void => {
|
|
95
|
+
const updatedList = [...bootList.value]
|
|
96
|
+
const movedItem = updatedList.find((item) => item.name === event.target.name)
|
|
97
|
+
|
|
98
|
+
if (!movedItem) return
|
|
99
|
+
|
|
100
|
+
// Удаляем элемент из текущей позиции
|
|
101
|
+
const fromIndex = updatedList.indexOf(movedItem)
|
|
102
|
+
updatedList.splice(fromIndex, 1)
|
|
103
|
+
|
|
104
|
+
// Вставляем элемент в новую позицию
|
|
105
|
+
updatedList.splice(event.toPosition, 0, movedItem)
|
|
106
|
+
|
|
107
|
+
// Обновляем порядок всех элементов
|
|
108
|
+
updatedList.forEach((item, index) => {
|
|
109
|
+
item.order = index + 1
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
bootList.value = updatedList
|
|
113
|
+
updateModelFromBootList(updatedList)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Обработчик обновления bootList (при изменении чекбоксов)
|
|
117
|
+
const onBootListUpdate = (updatedBootList: UI_I_BootItem[]): void => {
|
|
118
|
+
bootList.value = updatedBootList
|
|
119
|
+
updateModelFromBootList(updatedBootList)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Функция для обновления модели на основе bootList
|
|
123
|
+
const updateModelFromBootList = (bootItems: UI_I_BootItem[]): void => {
|
|
124
|
+
// Сначала сбрасываем все boot_order
|
|
125
|
+
model.value.disk_devices?.forEach((disk) => {
|
|
126
|
+
disk.boot_order = 0
|
|
127
|
+
})
|
|
128
|
+
model.value.network_devices?.forEach((network) => {
|
|
129
|
+
network.boot_order = 0
|
|
130
|
+
})
|
|
131
|
+
|
|
132
|
+
// Затем устанавливаем boot_order только для выбранных элементов
|
|
133
|
+
let currentOrder = 1
|
|
134
|
+
bootItems.forEach((bootItem) => {
|
|
135
|
+
if (!bootItem.isChecked) return
|
|
136
|
+
|
|
137
|
+
if (bootItem.type === 'nic') {
|
|
138
|
+
const [networkName, indexStr] = bootItem.name.split('_')
|
|
139
|
+
const index = parseInt(indexStr, 10)
|
|
140
|
+
const network = model.value.network_devices?.[index]
|
|
141
|
+
if (network && network.network === networkName) {
|
|
142
|
+
network.boot_order = currentOrder++
|
|
143
|
+
}
|
|
144
|
+
} else {
|
|
145
|
+
const [source, indexStr] = bootItem.name.split('_')
|
|
146
|
+
const index = parseInt(indexStr, 10)
|
|
147
|
+
const disk = model.value.disk_devices?.[index]
|
|
148
|
+
if (disk && disk.source+'' === source) {
|
|
149
|
+
disk.boot_order = currentOrder++
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
})
|
|
153
|
+
}
|
|
154
|
+
</script>
|
|
155
|
+
|
|
156
|
+
<style scoped lang="scss"></style>
|
|
@@ -145,7 +145,7 @@ export interface UI_I_CreateVmData {
|
|
|
145
145
|
core_per_socket: number
|
|
146
146
|
model: string
|
|
147
147
|
reservation_mhz: number
|
|
148
|
-
limit_mhz: number
|
|
148
|
+
limit_mhz: number | null
|
|
149
149
|
shares: number
|
|
150
150
|
hotplug: boolean
|
|
151
151
|
}
|
|
@@ -153,7 +153,7 @@ export interface UI_I_CreateVmData {
|
|
|
153
153
|
size_mb: number
|
|
154
154
|
hotplug: boolean
|
|
155
155
|
reservation_mb: number
|
|
156
|
-
limit_mb: number
|
|
156
|
+
limit_mb: number | null
|
|
157
157
|
}
|
|
158
158
|
storage: {
|
|
159
159
|
id: string
|
|
@@ -1,107 +1,107 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="select-compatibility">
|
|
3
|
-
<p class="select-compatibility-block">
|
|
4
|
-
{{ props.description }}
|
|
5
|
-
</p>
|
|
6
|
-
<div class="select-compatibility-block version-select-wrap">
|
|
7
|
-
<label for="version-select"
|
|
8
|
-
>{{ localization.common.compatibleWith }}:</label
|
|
9
|
-
>
|
|
10
|
-
|
|
11
|
-
<atoms-tooltip-error
|
|
12
|
-
:has-error="!!props.apiError"
|
|
13
|
-
selector="#vm-wizard-version-select"
|
|
14
|
-
@remove="emits('remove-validation-error')"
|
|
15
|
-
>
|
|
16
|
-
<template #elem>
|
|
17
|
-
<select
|
|
18
|
-
id="vm-wizard-version-select"
|
|
19
|
-
v-model="selectedVersion"
|
|
20
|
-
data-id="vm-wizard-version-select"
|
|
21
|
-
>
|
|
22
|
-
<option v-for="(item, key) in props.versions" :key="key" :value="item">
|
|
23
|
-
{{ item.text }}
|
|
24
|
-
</option>
|
|
25
|
-
</select>
|
|
26
|
-
</template>
|
|
27
|
-
<template #content>{{ props.apiError }}</template>
|
|
28
|
-
</atoms-tooltip-error>
|
|
29
|
-
<!-- <div id="version-select-help-icon" class="flex-align-center relative">-->
|
|
30
|
-
<!-- <atoms-the-icon-->
|
|
31
|
-
<!-- fill="#0072a3"-->
|
|
32
|
-
<!-- width="24px"-->
|
|
33
|
-
<!-- height="24px"-->
|
|
34
|
-
<!-- name="info-circle"-->
|
|
35
|
-
<!-- @click="isShowHelp = !isShowHelp"-->
|
|
36
|
-
<!-- />-->
|
|
37
|
-
<!-- <atoms-tooltip-signpost-->
|
|
38
|
-
<!-- v-if="isShowHelp"-->
|
|
39
|
-
<!-- elem-id="version-select-help-icon"-->
|
|
40
|
-
<!-- @hide="isShowHelp = false"-->
|
|
41
|
-
<!-- >-->
|
|
42
|
-
<!-- <h3 class="help-title">{{ localization.common.help }}</h3>-->
|
|
43
|
-
|
|
44
|
-
<!-- <p>-->
|
|
45
|
-
<!-- {{-->
|
|
46
|
-
<!-- localization.common.eachVirtualMachineCompatibilitySettingIncludesHardwareAvailableVirtualMachine-->
|
|
47
|
-
<!-- }}-->
|
|
48
|
-
<!-- </p>-->
|
|
49
|
-
|
|
50
|
-
<!-- <a id="more-information-link" class="pointer">{{-->
|
|
51
|
-
<!-- localization.common.moreInformation-->
|
|
52
|
-
<!-- }}</a>-->
|
|
53
|
-
<!-- </atoms-tooltip-signpost>-->
|
|
54
|
-
<!-- </div>-->
|
|
55
|
-
</div>
|
|
56
|
-
<p class="select-compatibility-block">
|
|
57
|
-
{{ props.versionDescription }}
|
|
58
|
-
</p>
|
|
59
|
-
</div>
|
|
60
|
-
</template>
|
|
61
|
-
|
|
62
|
-
<script setup lang="ts">
|
|
63
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
64
|
-
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
65
|
-
|
|
66
|
-
const selectedVersion = defineModel<UI_I_OptionItem | null>('selectedVersion', {required: true})
|
|
67
|
-
|
|
68
|
-
const props = defineProps<{
|
|
69
|
-
versions: UI_I_OptionItem[]
|
|
70
|
-
description: string
|
|
71
|
-
versionDescription: string
|
|
72
|
-
apiError: string
|
|
73
|
-
}>()
|
|
74
|
-
const emits = defineEmits<{
|
|
75
|
-
(event: 'remove-validation-error'): void
|
|
76
|
-
}>()
|
|
77
|
-
|
|
78
|
-
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
79
|
-
|
|
80
|
-
</script>
|
|
81
|
-
|
|
82
|
-
<style scoped lang="scss">
|
|
83
|
-
.select-compatibility-block {
|
|
84
|
-
margin-top: 12px;
|
|
85
|
-
font-size: 13px;
|
|
86
|
-
|
|
87
|
-
&.version-select-wrap {
|
|
88
|
-
display: flex;
|
|
89
|
-
align-items: center;
|
|
90
|
-
gap: 6px;
|
|
91
|
-
|
|
92
|
-
//#version-select-help-icon {
|
|
93
|
-
// .help-title {
|
|
94
|
-
// font-size: 22px;
|
|
95
|
-
// }
|
|
96
|
-
//
|
|
97
|
-
// p {
|
|
98
|
-
// width: 200px;
|
|
99
|
-
// }
|
|
100
|
-
//
|
|
101
|
-
// a {
|
|
102
|
-
// color: #0072a3;
|
|
103
|
-
// }
|
|
104
|
-
//}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<div class="select-compatibility">
|
|
3
|
+
<p class="select-compatibility-block">
|
|
4
|
+
{{ props.description }}
|
|
5
|
+
</p>
|
|
6
|
+
<div class="select-compatibility-block version-select-wrap">
|
|
7
|
+
<label for="version-select"
|
|
8
|
+
>{{ localization.common.compatibleWith }}:</label
|
|
9
|
+
>
|
|
10
|
+
|
|
11
|
+
<atoms-tooltip-error
|
|
12
|
+
:has-error="!!props.apiError"
|
|
13
|
+
selector="#vm-wizard-version-select"
|
|
14
|
+
@remove="emits('remove-validation-error')"
|
|
15
|
+
>
|
|
16
|
+
<template #elem>
|
|
17
|
+
<select
|
|
18
|
+
id="vm-wizard-version-select"
|
|
19
|
+
v-model="selectedVersion"
|
|
20
|
+
data-id="vm-wizard-version-select"
|
|
21
|
+
>
|
|
22
|
+
<option v-for="(item, key) in props.versions" :key="key" :value="item">
|
|
23
|
+
{{ item.text }}
|
|
24
|
+
</option>
|
|
25
|
+
</select>
|
|
26
|
+
</template>
|
|
27
|
+
<template #content>{{ props.apiError }}</template>
|
|
28
|
+
</atoms-tooltip-error>
|
|
29
|
+
<!-- <div id="version-select-help-icon" class="flex-align-center relative">-->
|
|
30
|
+
<!-- <atoms-the-icon-->
|
|
31
|
+
<!-- fill="#0072a3"-->
|
|
32
|
+
<!-- width="24px"-->
|
|
33
|
+
<!-- height="24px"-->
|
|
34
|
+
<!-- name="info-circle"-->
|
|
35
|
+
<!-- @click="isShowHelp = !isShowHelp"-->
|
|
36
|
+
<!-- />-->
|
|
37
|
+
<!-- <atoms-tooltip-signpost-->
|
|
38
|
+
<!-- v-if="isShowHelp"-->
|
|
39
|
+
<!-- elem-id="version-select-help-icon"-->
|
|
40
|
+
<!-- @hide="isShowHelp = false"-->
|
|
41
|
+
<!-- >-->
|
|
42
|
+
<!-- <h3 class="help-title">{{ localization.common.help }}</h3>-->
|
|
43
|
+
|
|
44
|
+
<!-- <p>-->
|
|
45
|
+
<!-- {{-->
|
|
46
|
+
<!-- localization.common.eachVirtualMachineCompatibilitySettingIncludesHardwareAvailableVirtualMachine-->
|
|
47
|
+
<!-- }}-->
|
|
48
|
+
<!-- </p>-->
|
|
49
|
+
|
|
50
|
+
<!-- <a id="more-information-link" class="pointer">{{-->
|
|
51
|
+
<!-- localization.common.moreInformation-->
|
|
52
|
+
<!-- }}</a>-->
|
|
53
|
+
<!-- </atoms-tooltip-signpost>-->
|
|
54
|
+
<!-- </div>-->
|
|
55
|
+
</div>
|
|
56
|
+
<p class="select-compatibility-block">
|
|
57
|
+
{{ props.versionDescription }}
|
|
58
|
+
</p>
|
|
59
|
+
</div>
|
|
60
|
+
</template>
|
|
61
|
+
|
|
62
|
+
<script setup lang="ts">
|
|
63
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
64
|
+
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
65
|
+
|
|
66
|
+
const selectedVersion = defineModel<UI_I_OptionItem | null>('selectedVersion', {required: true})
|
|
67
|
+
|
|
68
|
+
const props = defineProps<{
|
|
69
|
+
versions: UI_I_OptionItem[]
|
|
70
|
+
description: string
|
|
71
|
+
versionDescription: string
|
|
72
|
+
apiError: string
|
|
73
|
+
}>()
|
|
74
|
+
const emits = defineEmits<{
|
|
75
|
+
(event: 'remove-validation-error'): void
|
|
76
|
+
}>()
|
|
77
|
+
|
|
78
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
79
|
+
|
|
80
|
+
</script>
|
|
81
|
+
|
|
82
|
+
<style scoped lang="scss">
|
|
83
|
+
.select-compatibility-block {
|
|
84
|
+
margin-top: 12px;
|
|
85
|
+
font-size: 13px;
|
|
86
|
+
|
|
87
|
+
&.version-select-wrap {
|
|
88
|
+
display: flex;
|
|
89
|
+
align-items: center;
|
|
90
|
+
gap: 6px;
|
|
91
|
+
|
|
92
|
+
//#version-select-help-icon {
|
|
93
|
+
// .help-title {
|
|
94
|
+
// font-size: 22px;
|
|
95
|
+
// }
|
|
96
|
+
//
|
|
97
|
+
// p {
|
|
98
|
+
// width: 200px;
|
|
99
|
+
// }
|
|
100
|
+
//
|
|
101
|
+
// a {
|
|
102
|
+
// color: #0072a3;
|
|
103
|
+
// }
|
|
104
|
+
//}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
</style>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
2
|
-
|
|
3
|
-
export interface UI_I_VmCreateTypeOption extends UI_I_OptionItem {
|
|
4
|
-
description: string
|
|
5
|
-
}
|
|
1
|
+
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
2
|
+
|
|
3
|
+
export interface UI_I_VmCreateTypeOption extends UI_I_OptionItem {
|
|
4
|
+
description: string
|
|
5
|
+
}
|