bfg-common 1.5.648 → 1.5.650
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/assets/localization/local_be.json +25 -1
- package/assets/localization/local_en.json +25 -1
- package/assets/localization/local_hy.json +25 -1
- package/assets/localization/local_kk.json +25 -1
- package/assets/localization/local_ru.json +25 -1
- package/assets/localization/local_zh.json +25 -1
- 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/browse/blocks/lib/models/types.ts +1 -1
- package/components/common/browse/lib/models/interfaces.ts +5 -5
- package/components/common/diagramMain/network/Contents.vue +497 -497
- package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
- package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
- package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +99 -99
- package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +193 -193
- 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/clone/lib/config/steps.ts +295 -295
- package/components/common/vm/actions/clone/new/New.vue +438 -437
- package/components/common/vm/actions/clone/old/Old.vue +1 -0
- 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/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/options/New.vue +4 -0
- package/components/common/vm/actions/common/select/options/Old.vue +8 -1
- package/components/common/vm/actions/common/select/options/Options.vue +6 -1
- 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/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/components/common/wizards/network/add/steps/portProperties/PortPropertiesNew.vue +1 -1
- package/composables/useAppVersion.ts +21 -21
- package/composables/useLocal.ts +6 -6
- package/composables/useLocalCommon.ts +39 -39
- package/package.json +1 -1
- 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/plugins/time.ts +58 -58
- 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>
|
|
@@ -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
|
+
}
|
|
@@ -94,6 +94,7 @@
|
|
|
94
94
|
/>
|
|
95
95
|
|
|
96
96
|
<ui-input
|
|
97
|
+
v-if="props.project !== 'sphere'"
|
|
97
98
|
v-model="cloneCount"
|
|
98
99
|
:disabled="!isLinkedClone"
|
|
99
100
|
test-id="clone-count"
|
|
@@ -107,15 +108,18 @@
|
|
|
107
108
|
<script setup lang="ts">
|
|
108
109
|
import { useElementSize } from '@vueuse/core'
|
|
109
110
|
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
111
|
+
import type { UI_T_Project } from '~/lib/models/types'
|
|
110
112
|
|
|
111
113
|
const modelValue = defineModel<string[]>({ required: true })
|
|
112
114
|
const cloneCount = defineModel<number>('cloneCount')
|
|
113
115
|
|
|
114
116
|
const props = withDefaults(
|
|
115
117
|
defineProps<{
|
|
118
|
+
project?: UI_T_Project
|
|
116
119
|
isNewVmFromTemplate?: boolean // TODO change
|
|
117
120
|
}>(),
|
|
118
121
|
{
|
|
122
|
+
project: undefined,
|
|
119
123
|
isNewVmFromTemplate: undefined,
|
|
120
124
|
}
|
|
121
125
|
)
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="select-options">
|
|
3
|
-
<div
|
|
3
|
+
<div
|
|
4
|
+
v-show="!props.isNewVmFromTemplate"
|
|
5
|
+
:class="['checkbox', { disabled: props.isNewVmFromTemplate }]"
|
|
6
|
+
>
|
|
4
7
|
<input
|
|
5
8
|
id="customize-os"
|
|
6
9
|
v-model="modelValue"
|
|
@@ -51,6 +54,7 @@
|
|
|
51
54
|
}}</label>
|
|
52
55
|
|
|
53
56
|
<input
|
|
57
|
+
v-if="props.project !== 'sphere'"
|
|
54
58
|
v-model="cloneCount"
|
|
55
59
|
:disabled="!isLinkedClone"
|
|
56
60
|
data-id="clone-count"
|
|
@@ -65,15 +69,18 @@
|
|
|
65
69
|
|
|
66
70
|
<script setup lang="ts">
|
|
67
71
|
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
72
|
+
import type { UI_T_Project } from '~/lib/models/types'
|
|
68
73
|
|
|
69
74
|
const modelValue = defineModel<string[]>()
|
|
70
75
|
const cloneCount = defineModel<number>('cloneCount')
|
|
71
76
|
|
|
72
77
|
const props = withDefaults(
|
|
73
78
|
defineProps<{
|
|
79
|
+
project?: UI_T_Project
|
|
74
80
|
isNewVmFromTemplate?: boolean // TODO change
|
|
75
81
|
}>(),
|
|
76
82
|
{
|
|
83
|
+
project: undefined,
|
|
77
84
|
isNewVmFromTemplate: undefined,
|
|
78
85
|
}
|
|
79
86
|
)
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<component
|
|
3
|
-
:is="currentComponent"
|
|
4
3
|
v-model="selectedOptions"
|
|
5
4
|
v-model:clone-count="cloneCount"
|
|
5
|
+
:is="currentComponent"
|
|
6
|
+
:project="props.project"
|
|
6
7
|
:is-new-vm-from-template="props.isNewVmFromTemplate"
|
|
7
8
|
/>
|
|
8
9
|
</template>
|
|
9
10
|
|
|
10
11
|
<script setup lang="ts">
|
|
12
|
+
import type { UI_T_Project } from '~/lib/models/types'
|
|
13
|
+
|
|
11
14
|
const props = withDefaults(
|
|
12
15
|
defineProps<{
|
|
16
|
+
project?: UI_T_Project
|
|
13
17
|
isNewVmFromTemplate?: boolean // TODO change
|
|
14
18
|
}>(),
|
|
15
19
|
{
|
|
20
|
+
project: undefined,
|
|
16
21
|
isNewVmFromTemplate: undefined,
|
|
17
22
|
}
|
|
18
23
|
)
|