bfg-common 1.4.518 → 1.4.521
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/components/common/pages/shortcuts/Shortcuts.vue +1 -1
- package/components/common/pages/shortcuts/block/BlockNew.vue +2 -31
- package/components/common/pages/shortcuts/block/BlockOld.vue +2 -39
- package/components/common/pages/shortcuts/category/Category.vue +1 -17
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +34 -60
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceNew.vue +85 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +91 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIo.vue +16 -31
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +35 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +37 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +17 -33
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +48 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +35 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +9 -21
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +14 -30
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +30 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +31 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelection.vue +16 -38
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +46 -0
- package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionOld.vue +46 -0
- package/package.json +1 -1
|
@@ -8,12 +8,8 @@
|
|
|
8
8
|
@click="changeLastNavigation"
|
|
9
9
|
@contextmenu="changeLastNavigation"
|
|
10
10
|
>
|
|
11
|
-
<span
|
|
12
|
-
|
|
13
|
-
:class="['unit-icon', props.item.iconClassName]"
|
|
14
|
-
/>
|
|
15
|
-
<span v-else-if="props.item.iconName" class="unit-icon">
|
|
16
|
-
<atoms-the-icon2 :name="props.item.iconName" width="28" height="28" />
|
|
11
|
+
<span class="unit-icon">
|
|
12
|
+
<ui-icon :name="props.item.iconName" width="28" height="28"></ui-icon>
|
|
17
13
|
</span>
|
|
18
14
|
<div class="unit-text" :title="props.item.text">
|
|
19
15
|
{{ props.item.text }}
|
|
@@ -53,31 +49,6 @@ const changeLastNavigation = (): void => {
|
|
|
53
49
|
min-height: 28px;
|
|
54
50
|
display: inline-block;
|
|
55
51
|
color: var(--close-icon);
|
|
56
|
-
|
|
57
|
-
&.icon-lifecycle-manager,
|
|
58
|
-
&.icon-cloud-provider-services {
|
|
59
|
-
background-size: contain;
|
|
60
|
-
background-repeat: no-repeat;
|
|
61
|
-
}
|
|
62
|
-
&.icon-lifecycle-manager {
|
|
63
|
-
background-image: url('assets/img/icons/icon-life-m-light.svg');
|
|
64
|
-
html.dark-theme & {
|
|
65
|
-
background-image: url('assets/img/icons/icon-life-m-dark.svg');
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
&.icon-cloud-provider-services {
|
|
69
|
-
background-image: url('assets/img/icons/icon-cps.png');
|
|
70
|
-
html.dark-theme & {
|
|
71
|
-
background-image: url('assets/img/icons/icon-cps-dark-mode.png');
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
&.icon-vm-customizationManager-32x,
|
|
75
|
-
&.icon-storage-profile-32x,
|
|
76
|
-
&.icon-Host_Policy-32x,
|
|
77
|
-
&.icon-certificate-32x {
|
|
78
|
-
width: 28px;
|
|
79
|
-
height: 28px;
|
|
80
|
-
}
|
|
81
52
|
}
|
|
82
53
|
&-text {
|
|
83
54
|
color: #9da6ad;
|
|
@@ -8,12 +8,8 @@
|
|
|
8
8
|
@click="changeLastNavigation"
|
|
9
9
|
@contextmenu="changeLastNavigation"
|
|
10
10
|
>
|
|
11
|
-
<span
|
|
12
|
-
|
|
13
|
-
:class="['unit-icon', props.item.iconClassName]"
|
|
14
|
-
/>
|
|
15
|
-
<span v-else-if="props.item.iconName" class="icon-2">
|
|
16
|
-
<atoms-the-icon2 :name="props.item.iconName" width="34" height="34" />
|
|
11
|
+
<span class="icon-2">
|
|
12
|
+
<ui-icon :name="props.item.iconName" width="34" height="34"></ui-icon>
|
|
17
13
|
</span>
|
|
18
14
|
<div class="unit-text" :title="props.item.text">
|
|
19
15
|
{{ props.item.text }}
|
|
@@ -47,39 +43,6 @@ const changeLastNavigation = (): void => {
|
|
|
47
43
|
width: 95px;
|
|
48
44
|
margin: 21px 10px;
|
|
49
45
|
text-decoration-line: none;
|
|
50
|
-
&-icon {
|
|
51
|
-
margin: 0px 10px 15px 10px;
|
|
52
|
-
min-width: 34px;
|
|
53
|
-
min-height: 34px;
|
|
54
|
-
display: inline-block;
|
|
55
|
-
color: var(--global-font-color3);
|
|
56
|
-
|
|
57
|
-
&.icon-lifecycle-manager,
|
|
58
|
-
&.icon-cloud-provider-services {
|
|
59
|
-
background-size: contain;
|
|
60
|
-
background-repeat: no-repeat;
|
|
61
|
-
}
|
|
62
|
-
&.icon-lifecycle-manager {
|
|
63
|
-
background-image: url('assets/img/icons/icon-life-m-light.svg');
|
|
64
|
-
html.dark-theme & {
|
|
65
|
-
background-image: url('assets/img/icons/icon-life-m-dark.svg');
|
|
66
|
-
color: var(--global-font-color3);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
&.icon-cloud-provider-services {
|
|
70
|
-
background-image: url('assets/img/icons/icon-cps.png');
|
|
71
|
-
html.dark-theme & {
|
|
72
|
-
background-image: url('assets/img/icons/icon-cps-dark-mode.png');
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
&.icon-vm-customizationManager-32x,
|
|
76
|
-
&.icon-storage-profile-32x,
|
|
77
|
-
&.icon-Host_Policy-32x,
|
|
78
|
-
&.icon-certificate-32x {
|
|
79
|
-
width: 34px;
|
|
80
|
-
height: 34px;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
46
|
.icon-2 {
|
|
84
47
|
margin: 0 10px 15px 10px;
|
|
85
48
|
color: var(--global-font-color3);
|
|
@@ -23,20 +23,4 @@ const { $store }: any = useNuxtApp()
|
|
|
23
23
|
|
|
24
24
|
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
25
25
|
</script>
|
|
26
|
-
<style lang="scss" scoped>
|
|
27
|
-
//.category {
|
|
28
|
-
// &-text {
|
|
29
|
-
// color: var(--light-white-100);
|
|
30
|
-
// font-size: 18px;
|
|
31
|
-
// line-height: 21px;
|
|
32
|
-
// font-weight: 400;
|
|
33
|
-
// }
|
|
34
|
-
// &-block {
|
|
35
|
-
// display: flex;
|
|
36
|
-
// flex-direction: row;
|
|
37
|
-
// justify-content: flex-start;
|
|
38
|
-
// border-top: 1px solid var(--global-border-color);
|
|
39
|
-
// margin-top: -4px;
|
|
40
|
-
// }
|
|
41
|
-
//}
|
|
42
|
-
</style>
|
|
26
|
+
<style lang="scss" scoped></style>
|
|
@@ -1,56 +1,34 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
v-show="selectedType.value === 'direct_path_io'"
|
|
33
|
-
v-model="directPathIo"
|
|
34
|
-
:pci-device-index="props.index"
|
|
35
|
-
:passthrough-devices="props.passthroughDevices"
|
|
36
|
-
/>
|
|
37
|
-
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-dynamic-direct-path-io
|
|
38
|
-
v-show="selectedType.value === 'dynamic_direct_path_io'"
|
|
39
|
-
v-model="dynamicDirectPathIo"
|
|
40
|
-
:pci-device-index="props.index"
|
|
41
|
-
:passthrough-devices="props.passthroughDevices"
|
|
42
|
-
/>
|
|
43
|
-
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-nvidia-grid
|
|
44
|
-
v-show="selectedType.value === 'nvidia_grid'"
|
|
45
|
-
v-model="nvidiaGridProfile"
|
|
46
|
-
:pci-device-index="props.index"
|
|
47
|
-
/>
|
|
48
|
-
</template>
|
|
49
|
-
|
|
50
|
-
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-note />
|
|
51
|
-
</template>
|
|
52
|
-
</atoms-stack-block>
|
|
53
|
-
</div>
|
|
2
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-new
|
|
3
|
+
v-if="isNewView"
|
|
4
|
+
v-model:selected-type="selectedType"
|
|
5
|
+
v-model:direct-path-io="directPathIo"
|
|
6
|
+
v-model:dynamic-direct-path-io="dynamicDirectPathIo"
|
|
7
|
+
v-model:nvidia-grid-profile="nvidiaGridProfile"
|
|
8
|
+
:index="props.index"
|
|
9
|
+
:passthrough-devices="props.passthroughDevices"
|
|
10
|
+
:type="props.type"
|
|
11
|
+
:is-removable="isRemovable"
|
|
12
|
+
:label="label"
|
|
13
|
+
:selected-label="selectedLabel"
|
|
14
|
+
:pci-device-type-options="pciDeviceTypeOptions"
|
|
15
|
+
@remove="emits('remove')"
|
|
16
|
+
/>
|
|
17
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-old
|
|
18
|
+
v-else
|
|
19
|
+
v-model:selected-type="selectedType"
|
|
20
|
+
v-model:direct-path-io="directPathIo"
|
|
21
|
+
v-model:dynamic-direct-path-io="dynamicDirectPathIo"
|
|
22
|
+
v-model:nvidia-grid-profile="nvidiaGridProfile"
|
|
23
|
+
:index="props.index"
|
|
24
|
+
:passthrough-devices="props.passthroughDevices"
|
|
25
|
+
:type="props.type"
|
|
26
|
+
:is-removable="isRemovable"
|
|
27
|
+
:label="label"
|
|
28
|
+
:selected-label="selectedLabel"
|
|
29
|
+
:pci-device-type-options="pciDeviceTypeOptions"
|
|
30
|
+
@remove="emits('remove')"
|
|
31
|
+
/>
|
|
54
32
|
</template>
|
|
55
33
|
|
|
56
34
|
<script setup lang="ts">
|
|
@@ -75,6 +53,9 @@ const emits = defineEmits<{
|
|
|
75
53
|
(event: 'remove'): void
|
|
76
54
|
}>()
|
|
77
55
|
|
|
56
|
+
const { $store }: any = useNuxtApp()
|
|
57
|
+
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
58
|
+
|
|
78
59
|
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
79
60
|
|
|
80
61
|
const isRunning = computed<boolean>(() => {
|
|
@@ -95,7 +76,7 @@ const label = computed<string>(() => {
|
|
|
95
76
|
const selectedLabel = computed<string>(() => {
|
|
96
77
|
switch (selectedType.value.value) {
|
|
97
78
|
case 'direct_path_io':
|
|
98
|
-
return `${directPathIo.value.address}
|
|
79
|
+
return `${directPathIo.value.address} | ${directPathIo.value.device_name}`
|
|
99
80
|
case 'dynamic_direct_path_io':
|
|
100
81
|
return dynamicDirectPathIo.value
|
|
101
82
|
default:
|
|
@@ -155,14 +136,7 @@ watch(
|
|
|
155
136
|
},
|
|
156
137
|
{ immediate: true }
|
|
157
138
|
)
|
|
158
|
-
|
|
159
|
-
const onRemovePciDevice = (): void => {
|
|
160
|
-
emits('remove')
|
|
161
|
-
}
|
|
162
139
|
</script>
|
|
163
140
|
|
|
164
141
|
<style scoped lang="scss">
|
|
165
|
-
#network-connect {
|
|
166
|
-
margin-right: 4px;
|
|
167
|
-
}
|
|
168
142
|
</style>
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ui-stack-block
|
|
3
|
+
:has-children="true"
|
|
4
|
+
:removable="props.isRemovable"
|
|
5
|
+
test-id="pci-device-stack-block"
|
|
6
|
+
@remove="emits('remove')"
|
|
7
|
+
>
|
|
8
|
+
<template #stackBlockKey>
|
|
9
|
+
<div
|
|
10
|
+
:id="`vm-wizard-toggle-block-pci-device-${props.index}`"
|
|
11
|
+
:data-id="`vm-wizard-toggle-block-pci-device-${props.index}`"
|
|
12
|
+
class="flex-align-center"
|
|
13
|
+
>
|
|
14
|
+
<span>{{ props.label }}</span>
|
|
15
|
+
</div>
|
|
16
|
+
</template>
|
|
17
|
+
<template #stackBlockContent>
|
|
18
|
+
<span class="main-label">
|
|
19
|
+
{{ props.selectedLabel }}
|
|
20
|
+
</span>
|
|
21
|
+
</template>
|
|
22
|
+
<template #stackChildren>
|
|
23
|
+
<template v-if="props.type === 'new'">
|
|
24
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-type-selection
|
|
25
|
+
v-model="selectedType"
|
|
26
|
+
:options="props.pciDeviceTypeOptions"
|
|
27
|
+
:pci-device-index="props.index"
|
|
28
|
+
/>
|
|
29
|
+
|
|
30
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-direct-path-io
|
|
31
|
+
v-show="selectedType.value === 'direct_path_io'"
|
|
32
|
+
v-model="directPathIo"
|
|
33
|
+
:pci-device-index="props.index"
|
|
34
|
+
:passthrough-devices="props.passthroughDevices"
|
|
35
|
+
/>
|
|
36
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-dynamic-direct-path-io
|
|
37
|
+
v-show="selectedType.value === 'dynamic_direct_path_io'"
|
|
38
|
+
v-model="dynamicDirectPathIo"
|
|
39
|
+
:pci-device-index="props.index"
|
|
40
|
+
/>
|
|
41
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-nvidia-grid
|
|
42
|
+
v-show="selectedType.value === 'nvidia_grid'"
|
|
43
|
+
v-model="nvidiaGridProfile"
|
|
44
|
+
:pci-device-index="props.index"
|
|
45
|
+
/>
|
|
46
|
+
</template>
|
|
47
|
+
|
|
48
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-note />
|
|
49
|
+
</template>
|
|
50
|
+
</ui-stack-block>
|
|
51
|
+
</template>
|
|
52
|
+
|
|
53
|
+
<script setup lang="ts">
|
|
54
|
+
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
55
|
+
import type { UI_T_PciDeviceType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
|
|
56
|
+
import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
|
|
57
|
+
|
|
58
|
+
const selectedType = defineModel<UI_I_OptionItem>('selected-type', {
|
|
59
|
+
required: true,
|
|
60
|
+
})
|
|
61
|
+
const directPathIo = defineModel<UI_I_PciDevice>('direct-path-io', {
|
|
62
|
+
required: true,
|
|
63
|
+
})
|
|
64
|
+
const dynamicDirectPathIo = defineModel<string>('dynamic-direct-path-io', {
|
|
65
|
+
required: true,
|
|
66
|
+
})
|
|
67
|
+
const nvidiaGridProfile = defineModel<string>('nvidia-grid-profile', {
|
|
68
|
+
required: true,
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
const props = defineProps<{
|
|
72
|
+
index: number
|
|
73
|
+
passthroughDevices: UI_I_PciDevice[]
|
|
74
|
+
type: UI_T_PciDeviceType
|
|
75
|
+
isRemovable: boolean
|
|
76
|
+
label: string
|
|
77
|
+
selectedLabel: string
|
|
78
|
+
pciDeviceTypeOptions: UI_I_OptionItem[]
|
|
79
|
+
}>()
|
|
80
|
+
const emits = defineEmits<{
|
|
81
|
+
(event: 'remove'): void
|
|
82
|
+
}>()
|
|
83
|
+
</script>
|
|
84
|
+
|
|
85
|
+
<style scoped lang="scss"></style>
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="hardware-pci-device">
|
|
3
|
+
<atoms-stack-block
|
|
4
|
+
:has-children="true"
|
|
5
|
+
:removable="props.isRemovable"
|
|
6
|
+
test-id="pci-device-stack-block"
|
|
7
|
+
@remove="emits('remove')"
|
|
8
|
+
>
|
|
9
|
+
<template #stackBlockKey>
|
|
10
|
+
<div
|
|
11
|
+
:id="`vm-wizard-toggle-block-pci-device-${props.index}`"
|
|
12
|
+
:data-id="`vm-wizard-toggle-block-pci-device-${props.index}`"
|
|
13
|
+
class="flex-align-center"
|
|
14
|
+
>
|
|
15
|
+
<span>{{ props.label }}</span>
|
|
16
|
+
</div>
|
|
17
|
+
</template>
|
|
18
|
+
<template #stackBlockContent>
|
|
19
|
+
<span class="main-label">
|
|
20
|
+
{{ props.selectedLabel }}
|
|
21
|
+
</span>
|
|
22
|
+
</template>
|
|
23
|
+
<template #stackChildren>
|
|
24
|
+
<template v-if="props.type === 'new'">
|
|
25
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-type-selection
|
|
26
|
+
v-model="selectedType"
|
|
27
|
+
:options="props.pciDeviceTypeOptions"
|
|
28
|
+
:pci-device-index="props.index"
|
|
29
|
+
/>
|
|
30
|
+
|
|
31
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-direct-path-io
|
|
32
|
+
v-show="selectedType.value === 'direct_path_io'"
|
|
33
|
+
v-model="directPathIo"
|
|
34
|
+
:pci-device-index="props.index"
|
|
35
|
+
:passthrough-devices="props.passthroughDevices"
|
|
36
|
+
/>
|
|
37
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-dynamic-direct-path-io
|
|
38
|
+
v-show="selectedType.value === 'dynamic_direct_path_io'"
|
|
39
|
+
v-model="dynamicDirectPathIo"
|
|
40
|
+
:pci-device-index="props.index"
|
|
41
|
+
/>
|
|
42
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-nvidia-grid
|
|
43
|
+
v-show="selectedType.value === 'nvidia_grid'"
|
|
44
|
+
v-model="nvidiaGridProfile"
|
|
45
|
+
:pci-device-index="props.index"
|
|
46
|
+
/>
|
|
47
|
+
</template>
|
|
48
|
+
|
|
49
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-note />
|
|
50
|
+
</template>
|
|
51
|
+
</atoms-stack-block>
|
|
52
|
+
</div>
|
|
53
|
+
</template>
|
|
54
|
+
|
|
55
|
+
<script setup lang="ts">
|
|
56
|
+
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
57
|
+
import type { UI_T_PciDeviceType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
|
|
58
|
+
import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
|
|
59
|
+
|
|
60
|
+
const selectedType = defineModel<UI_I_OptionItem>('selected-type', {
|
|
61
|
+
required: true,
|
|
62
|
+
})
|
|
63
|
+
const directPathIo = defineModel<UI_I_PciDevice>('direct-path-io', {
|
|
64
|
+
required: true,
|
|
65
|
+
})
|
|
66
|
+
const dynamicDirectPathIo = defineModel<string>('dynamic-direct-path-io', {
|
|
67
|
+
required: true,
|
|
68
|
+
})
|
|
69
|
+
const nvidiaGridProfile = defineModel<string>('nvidia-grid-profile', {
|
|
70
|
+
required: true,
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
const props = defineProps<{
|
|
74
|
+
index: number
|
|
75
|
+
passthroughDevices: UI_I_PciDevice[]
|
|
76
|
+
type: UI_T_PciDeviceType
|
|
77
|
+
isRemovable: boolean
|
|
78
|
+
label: string
|
|
79
|
+
selectedLabel: string
|
|
80
|
+
pciDeviceTypeOptions: UI_I_OptionItem[]
|
|
81
|
+
}>()
|
|
82
|
+
const emits = defineEmits<{
|
|
83
|
+
(event: 'remove'): void
|
|
84
|
+
}>()
|
|
85
|
+
</script>
|
|
86
|
+
|
|
87
|
+
<style scoped lang="scss">
|
|
88
|
+
#network-connect {
|
|
89
|
+
margin-right: 4px;
|
|
90
|
+
}
|
|
91
|
+
</style>
|
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
>
|
|
15
|
-
{{ item.address }} | {{ item.device_name }}
|
|
16
|
-
</option>
|
|
17
|
-
</select>
|
|
18
|
-
</div>
|
|
19
|
-
</template>
|
|
20
|
-
</atoms-stack-block>
|
|
2
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-direct-path-io-new
|
|
3
|
+
v-if="isNewView"
|
|
4
|
+
v-model="model"
|
|
5
|
+
:pci-device-index="props.pciDeviceIndex"
|
|
6
|
+
:passthrough-devices="props.passthroughDevices"
|
|
7
|
+
/>
|
|
8
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-direct-path-io-old
|
|
9
|
+
v-else
|
|
10
|
+
v-model="model"
|
|
11
|
+
:pci-device-index="props.pciDeviceIndex"
|
|
12
|
+
:passthrough-devices="props.passthroughDevices"
|
|
13
|
+
/>
|
|
21
14
|
</template>
|
|
22
15
|
|
|
23
16
|
<script lang="ts" setup>
|
|
@@ -26,23 +19,15 @@ import type {
|
|
|
26
19
|
UI_I_ConfigurePciDevicesTable,
|
|
27
20
|
} from '~/lib/models/store/host/interfaces'
|
|
28
21
|
|
|
22
|
+
const model = defineModel<UI_I_ConfigureAllPciDevicesItem>({required: true})
|
|
23
|
+
|
|
29
24
|
const props = defineProps<{
|
|
30
|
-
modelValue: UI_I_ConfigureAllPciDevicesItem
|
|
31
25
|
pciDeviceIndex: number
|
|
32
26
|
passthroughDevices: UI_I_ConfigurePciDevicesTable
|
|
33
27
|
}>()
|
|
34
|
-
const emits = defineEmits<{
|
|
35
|
-
(event: 'update:model-value', value: UI_I_ConfigureAllPciDevicesItem): void
|
|
36
|
-
}>()
|
|
37
28
|
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
return props.modelValue
|
|
41
|
-
},
|
|
42
|
-
set(newValue: UI_I_ConfigureAllPciDevicesItem) {
|
|
43
|
-
emits('update:model-value', newValue)
|
|
44
|
-
},
|
|
45
|
-
})
|
|
29
|
+
const { $store }: any = useNuxtApp()
|
|
30
|
+
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
46
31
|
</script>
|
|
47
32
|
|
|
48
33
|
<style lang="scss" scoped></style>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ui-stack-block :has-children="false">
|
|
3
|
+
<template #stackBlockKey>
|
|
4
|
+
<span>{{ localization.common.pciDevice }}</span>
|
|
5
|
+
</template>
|
|
6
|
+
<template #stackBlockContent>
|
|
7
|
+
<ui-select
|
|
8
|
+
id="direct-path-io"
|
|
9
|
+
v-model="model"
|
|
10
|
+
width="auto"
|
|
11
|
+
:items="props.passthroughDevices"
|
|
12
|
+
:test-id="`direct-path-io-select-${props.pciDeviceIndex}`"
|
|
13
|
+
/>
|
|
14
|
+
</template>
|
|
15
|
+
</ui-stack-block>
|
|
16
|
+
</template>
|
|
17
|
+
|
|
18
|
+
<script lang="ts" setup>
|
|
19
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
20
|
+
import type {
|
|
21
|
+
UI_I_ConfigureAllPciDevicesItem,
|
|
22
|
+
UI_I_ConfigurePciDevicesTable,
|
|
23
|
+
} from '~/lib/models/store/host/interfaces'
|
|
24
|
+
|
|
25
|
+
const model = defineModel<UI_I_ConfigureAllPciDevicesItem>()
|
|
26
|
+
|
|
27
|
+
const props = defineProps<{
|
|
28
|
+
pciDeviceIndex: number
|
|
29
|
+
passthroughDevices: UI_I_ConfigurePciDevicesTable
|
|
30
|
+
}>()
|
|
31
|
+
|
|
32
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<style lang="scss" scoped></style>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<atoms-stack-block :has-children="false">
|
|
3
|
+
<template #stackBlockContent>
|
|
4
|
+
<div class="select">
|
|
5
|
+
<select
|
|
6
|
+
id="direct-path-io"
|
|
7
|
+
v-model="model"
|
|
8
|
+
:data-id="`direct-path-io-select-${props.pciDeviceIndex}`"
|
|
9
|
+
>
|
|
10
|
+
<option
|
|
11
|
+
v-for="item in props.passthroughDevices"
|
|
12
|
+
:key="item.id"
|
|
13
|
+
:value="item"
|
|
14
|
+
>
|
|
15
|
+
{{ item.address }} | {{ item.device_name }}
|
|
16
|
+
</option>
|
|
17
|
+
</select>
|
|
18
|
+
</div>
|
|
19
|
+
</template>
|
|
20
|
+
</atoms-stack-block>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<script lang="ts" setup>
|
|
24
|
+
import type {
|
|
25
|
+
UI_I_ConfigureAllPciDevicesItem,
|
|
26
|
+
UI_I_ConfigurePciDevicesTable,
|
|
27
|
+
} from '~/lib/models/store/host/interfaces'
|
|
28
|
+
|
|
29
|
+
const model = defineModel<UI_I_ConfigureAllPciDevicesItem>()
|
|
30
|
+
|
|
31
|
+
const props = defineProps<{
|
|
32
|
+
pciDeviceIndex: number
|
|
33
|
+
passthroughDevices: UI_I_ConfigurePciDevicesTable
|
|
34
|
+
}>()
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<style lang="scss" scoped></style>
|
|
@@ -1,49 +1,33 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<span class="text-uppercase">{{ localization.common.selectHardware }}</span>
|
|
15
|
-
</atoms-select-the-select>
|
|
16
|
-
</template>
|
|
17
|
-
</atoms-stack-block>
|
|
18
|
-
</div>
|
|
2
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-dynamic-direct-path-io-new
|
|
3
|
+
v-if="isNewView"
|
|
4
|
+
v-model="model"
|
|
5
|
+
:options="options"
|
|
6
|
+
:pci-device-index="props.pciDeviceIndex"
|
|
7
|
+
/>
|
|
8
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-dynamic-direct-path-io-old
|
|
9
|
+
v-else
|
|
10
|
+
v-model="model"
|
|
11
|
+
:options="options"
|
|
12
|
+
:pci-device-index="props.pciDeviceIndex"
|
|
13
|
+
/>
|
|
19
14
|
</template>
|
|
20
15
|
|
|
21
16
|
<script lang="ts" setup>
|
|
22
|
-
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
23
17
|
import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
|
|
24
18
|
import { optionsConfig } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/lib/config/options'
|
|
25
19
|
|
|
20
|
+
const model = defineModel<string>({required: true})
|
|
21
|
+
|
|
26
22
|
const props = defineProps<{
|
|
27
|
-
modelValue: string
|
|
28
23
|
pciDeviceIndex: number
|
|
29
24
|
}>()
|
|
30
|
-
const emits = defineEmits<{
|
|
31
|
-
(event: 'update:model-value', value: string): void
|
|
32
|
-
}>()
|
|
33
|
-
|
|
34
|
-
const localValue = computed<string>({
|
|
35
|
-
get() {
|
|
36
|
-
return props.modelValue
|
|
37
|
-
},
|
|
38
|
-
set(newValue) {
|
|
39
|
-
emits('update:model-value', newValue)
|
|
40
|
-
},
|
|
41
|
-
})
|
|
42
25
|
|
|
43
|
-
const
|
|
26
|
+
const { $store }: any = useNuxtApp()
|
|
27
|
+
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
44
28
|
|
|
45
29
|
const options = ref<UI_I_Option[]>(optionsConfig)
|
|
46
|
-
|
|
30
|
+
model.value = '' + options.value[0].value
|
|
47
31
|
</script>
|
|
48
32
|
|
|
49
33
|
<style lang="scss" scoped></style>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ui-stack-block :has-children="false">
|
|
3
|
+
<template #stackBlockKey>
|
|
4
|
+
{{ localization.common.pciDevice }}
|
|
5
|
+
</template>
|
|
6
|
+
<template #stackBlockContent>
|
|
7
|
+
<div class="dynamic-direct-path-io-content">
|
|
8
|
+
<span class="dynamic-direct-path-io-content-label"
|
|
9
|
+
>{{ localization.common.connectAnyFollowing }}:</span
|
|
10
|
+
>
|
|
11
|
+
<ui-select
|
|
12
|
+
v-model="model"
|
|
13
|
+
width="auto"
|
|
14
|
+
:items="props.options"
|
|
15
|
+
:test-id="`dynamic-direct-path-io-select-${pciDeviceIndex}`"
|
|
16
|
+
/>
|
|
17
|
+
</div>
|
|
18
|
+
</template>
|
|
19
|
+
</ui-stack-block>
|
|
20
|
+
</template>
|
|
21
|
+
|
|
22
|
+
<script lang="ts" setup>
|
|
23
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
24
|
+
import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
|
|
25
|
+
|
|
26
|
+
const model = defineModel<string>({ required: true })
|
|
27
|
+
|
|
28
|
+
const props = defineProps<{
|
|
29
|
+
options: UI_I_Option[]
|
|
30
|
+
pciDeviceIndex: number
|
|
31
|
+
}>()
|
|
32
|
+
|
|
33
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<style lang="scss" scoped>
|
|
37
|
+
.dynamic-direct-path-io-content {
|
|
38
|
+
display: flex;
|
|
39
|
+
flex-direction: column;
|
|
40
|
+
gap: 12px;
|
|
41
|
+
|
|
42
|
+
&-label {
|
|
43
|
+
font-size: 13px;
|
|
44
|
+
line-height: 15.73px;
|
|
45
|
+
color: #9da6ad;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
</style>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<atoms-stack-block :has-children="false">
|
|
4
|
+
<template #stackBlockKey>
|
|
5
|
+
{{ localization.common.pciDevice }}
|
|
6
|
+
</template>
|
|
7
|
+
<template #stackBlockContent>
|
|
8
|
+
<div>{{ localization.common.connectAnyFollowing }}:</div>
|
|
9
|
+
<atoms-select-the-select
|
|
10
|
+
v-model="model"
|
|
11
|
+
:options="props.options"
|
|
12
|
+
:test-id="`dynamic-direct-path-io-select-${pciDeviceIndex}`"
|
|
13
|
+
>
|
|
14
|
+
<span class="text-uppercase">{{ localization.common.selectHardware }}</span>
|
|
15
|
+
</atoms-select-the-select>
|
|
16
|
+
</template>
|
|
17
|
+
</atoms-stack-block>
|
|
18
|
+
</div>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts" setup>
|
|
22
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
23
|
+
import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
|
|
24
|
+
|
|
25
|
+
const model = defineModel<string>({required: true})
|
|
26
|
+
|
|
27
|
+
const props = defineProps<{
|
|
28
|
+
options: UI_I_Option[]
|
|
29
|
+
pciDeviceIndex: number
|
|
30
|
+
}>()
|
|
31
|
+
|
|
32
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<style lang="scss" scoped></style>
|
|
@@ -1,27 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
heigth="16px"
|
|
9
|
-
class="note-icon"
|
|
10
|
-
/>
|
|
11
|
-
</span>
|
|
12
|
-
<span>{{ localization.common.note }}: {{ localization.common.pciDeviceNote }}</span>
|
|
13
|
-
</template>
|
|
14
|
-
</atoms-stack-block>
|
|
2
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-note-new
|
|
3
|
+
v-if="isNewView"
|
|
4
|
+
/>
|
|
5
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-note-old
|
|
6
|
+
v-else
|
|
7
|
+
/>
|
|
15
8
|
</template>
|
|
16
9
|
|
|
17
10
|
<script lang="ts" setup>
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
11
|
+
const { $store }: any = useNuxtApp()
|
|
12
|
+
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
21
13
|
</script>
|
|
22
14
|
|
|
23
|
-
<style lang="scss" scoped>
|
|
24
|
-
.note-icon {
|
|
25
|
-
margin-bottom: -4px;
|
|
26
|
-
}
|
|
27
|
-
</style>
|
|
15
|
+
<style lang="scss" scoped></style>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ui-stack-block :has-children="false">
|
|
3
|
+
<template #stackBlockContent>
|
|
4
|
+
<div class="note-content">
|
|
5
|
+
<ui-icon
|
|
6
|
+
name="warning-outline"
|
|
7
|
+
width="16px"
|
|
8
|
+
heigth="16px"
|
|
9
|
+
class="note-icon"
|
|
10
|
+
color="#FBCE28"
|
|
11
|
+
/>
|
|
12
|
+
<p class="note-text">
|
|
13
|
+
{{ localization.common.note }}:
|
|
14
|
+
{{ localization.common.pciDeviceNote }}
|
|
15
|
+
</p>
|
|
16
|
+
</div>
|
|
17
|
+
</template>
|
|
18
|
+
</ui-stack-block>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script lang="ts" setup>
|
|
22
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
23
|
+
|
|
24
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<style lang="scss" scoped>
|
|
28
|
+
.note-content {
|
|
29
|
+
display: flex;
|
|
30
|
+
gap: 10px;
|
|
31
|
+
|
|
32
|
+
.note-icon {
|
|
33
|
+
min-width: 16px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.note-text {
|
|
37
|
+
font-size: 13px;
|
|
38
|
+
line-height: 15.73px;
|
|
39
|
+
color: #9da6ad;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
</style>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<atoms-stack-block :has-children="false">
|
|
3
|
+
<template #stackBlockContent>
|
|
4
|
+
<span>
|
|
5
|
+
<atoms-the-icon
|
|
6
|
+
name="warning"
|
|
7
|
+
width="16px"
|
|
8
|
+
heigth="16px"
|
|
9
|
+
class="note-icon"
|
|
10
|
+
/>
|
|
11
|
+
</span>
|
|
12
|
+
<span
|
|
13
|
+
>{{ localization.common.note }}:
|
|
14
|
+
{{ localization.common.pciDeviceNote }}</span
|
|
15
|
+
>
|
|
16
|
+
</template>
|
|
17
|
+
</atoms-stack-block>
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script lang="ts" setup>
|
|
21
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
22
|
+
|
|
23
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<style lang="scss" scoped>
|
|
27
|
+
.note-icon {
|
|
28
|
+
margin-bottom: -4px;
|
|
29
|
+
}
|
|
30
|
+
</style>
|
|
@@ -1,42 +1,26 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
type="text"
|
|
13
|
-
/>
|
|
14
|
-
</template>
|
|
15
|
-
</atoms-stack-block>
|
|
16
|
-
</div>
|
|
2
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-nvidia-grid-new
|
|
3
|
+
v-if="isNewView"
|
|
4
|
+
v-model="model"
|
|
5
|
+
:pci-device-index="props.pciDeviceIndex"
|
|
6
|
+
/>
|
|
7
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-nvidia-grid-old
|
|
8
|
+
v-else
|
|
9
|
+
v-model="model"
|
|
10
|
+
:pci-device-index="props.pciDeviceIndex"
|
|
11
|
+
/>
|
|
17
12
|
</template>
|
|
18
13
|
|
|
19
14
|
<script lang="ts" setup>
|
|
20
|
-
|
|
15
|
+
|
|
16
|
+
const model = defineModel<string>({required: true})
|
|
21
17
|
|
|
22
18
|
const props = defineProps<{
|
|
23
|
-
modelValue: string
|
|
24
19
|
pciDeviceIndex: number
|
|
25
20
|
}>()
|
|
26
|
-
const emits = defineEmits<{
|
|
27
|
-
(event: 'update:model-value', value: string): void
|
|
28
|
-
}>()
|
|
29
|
-
|
|
30
|
-
const profile = computed<string>({
|
|
31
|
-
get() {
|
|
32
|
-
return props.modelValue
|
|
33
|
-
},
|
|
34
|
-
set(newValue) {
|
|
35
|
-
emits('update:model-value', newValue)
|
|
36
|
-
},
|
|
37
|
-
})
|
|
38
21
|
|
|
39
|
-
const
|
|
22
|
+
const { $store }: any = useNuxtApp()
|
|
23
|
+
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
40
24
|
</script>
|
|
41
25
|
|
|
42
26
|
<style lang="scss" scoped></style>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ui-stack-block :has-children="false">
|
|
3
|
+
<template #stackBlockKey>
|
|
4
|
+
{{ localization.common.nvidiaGridGpuProfile }}
|
|
5
|
+
</template>
|
|
6
|
+
<template #stackBlockContent>
|
|
7
|
+
<ui-input
|
|
8
|
+
:id="`nvidia-grid-${props.pciDeviceIndex}`"
|
|
9
|
+
v-model="model"
|
|
10
|
+
:test-id="`nvidia-grid-${props.pciDeviceIndex}-input`"
|
|
11
|
+
type="text"
|
|
12
|
+
size="sm"
|
|
13
|
+
/>
|
|
14
|
+
</template>
|
|
15
|
+
</ui-stack-block>
|
|
16
|
+
</template>
|
|
17
|
+
|
|
18
|
+
<script lang="ts" setup>
|
|
19
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
20
|
+
|
|
21
|
+
const model = defineModel<string>({ required: true })
|
|
22
|
+
|
|
23
|
+
const props = defineProps<{
|
|
24
|
+
pciDeviceIndex: number
|
|
25
|
+
}>()
|
|
26
|
+
|
|
27
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<style lang="scss" scoped></style>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<atoms-stack-block :has-children="false">
|
|
4
|
+
<template #stackBlockKey>
|
|
5
|
+
{{ localization.common.nvidiaGridGpuProfile }}
|
|
6
|
+
</template>
|
|
7
|
+
<template #stackBlockContent>
|
|
8
|
+
<input
|
|
9
|
+
:id="`nvidia-grid-${props.pciDeviceIndex}`"
|
|
10
|
+
v-model="model"
|
|
11
|
+
:data-id="`nvidia-grid-${props.pciDeviceIndex}-input`"
|
|
12
|
+
type="text"
|
|
13
|
+
/>
|
|
14
|
+
</template>
|
|
15
|
+
</atoms-stack-block>
|
|
16
|
+
</div>
|
|
17
|
+
</template>
|
|
18
|
+
|
|
19
|
+
<script lang="ts" setup>
|
|
20
|
+
import type { UI_I_Localization } from '~/lib/models/interfaces'
|
|
21
|
+
|
|
22
|
+
const model = defineModel<string>({required: true})
|
|
23
|
+
|
|
24
|
+
const props = defineProps<{
|
|
25
|
+
pciDeviceIndex: number
|
|
26
|
+
}>()
|
|
27
|
+
|
|
28
|
+
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<style lang="scss" scoped></style>
|
|
@@ -1,52 +1,30 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
type="radio"
|
|
15
|
-
:value="item"
|
|
16
|
-
:disabled="!!index"
|
|
17
|
-
:data-id="`pci-device-radio-input-${props.pciDeviceIndex}-${index}`"
|
|
18
|
-
/>
|
|
19
|
-
<label
|
|
20
|
-
:for="`pci-device-radio-input-${props.pciDeviceIndex}-${index}`"
|
|
21
|
-
>{{ item.text }}</label
|
|
22
|
-
>
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
25
|
-
</template>
|
|
26
|
-
</atoms-stack-block>
|
|
27
|
-
</div>
|
|
2
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-type-selection-new
|
|
3
|
+
v-if="isNewView"
|
|
4
|
+
v-model="model"
|
|
5
|
+
:options="props.options"
|
|
6
|
+
:pci-device-index="props.pciDeviceIndex"
|
|
7
|
+
/>
|
|
8
|
+
<common-vm-actions-common-customize-hardware-virtual-hardware-new-pci-device-type-selection-old
|
|
9
|
+
v-else
|
|
10
|
+
v-model="model"
|
|
11
|
+
:options="props.options"
|
|
12
|
+
:pci-device-index="props.pciDeviceIndex"
|
|
13
|
+
/>
|
|
28
14
|
</template>
|
|
29
15
|
|
|
30
16
|
<script setup lang="ts">
|
|
31
17
|
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
32
18
|
|
|
19
|
+
const model = defineModel<UI_I_OptionItem>({required: true})
|
|
20
|
+
|
|
33
21
|
const props = defineProps<{
|
|
34
|
-
modelValue: UI_I_OptionItem
|
|
35
22
|
options: UI_I_OptionItem[]
|
|
36
23
|
pciDeviceIndex: number
|
|
37
24
|
}>()
|
|
38
|
-
const emits = defineEmits<{
|
|
39
|
-
(event: 'update:model-value', value: UI_I_OptionItem): void
|
|
40
|
-
}>()
|
|
41
25
|
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
return props.modelValue
|
|
45
|
-
},
|
|
46
|
-
set(newValue: UI_I_OptionItem) {
|
|
47
|
-
emits('update:model-value', newValue)
|
|
48
|
-
},
|
|
49
|
-
})
|
|
26
|
+
const { $store }: any = useNuxtApp()
|
|
27
|
+
const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
|
|
50
28
|
</script>
|
|
51
29
|
|
|
52
30
|
<style scoped lang="scss">
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ui-stack-block :has-children="false">
|
|
3
|
+
<template #stackBlockContent>
|
|
4
|
+
<div class="type-selection-content">
|
|
5
|
+
<div v-for="(item, index) in props.options" :key="item">
|
|
6
|
+
<ui-radio
|
|
7
|
+
:id="`pci-device-radio-input-${props.pciDeviceIndex}-${index}`"
|
|
8
|
+
v-model="modelLocal"
|
|
9
|
+
:value="item.value"
|
|
10
|
+
:label="item.text"
|
|
11
|
+
:disabled="!!index"
|
|
12
|
+
:test-id="`pci-device-radio-input-${props.pciDeviceIndex}-${index}`"
|
|
13
|
+
/>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
</template>
|
|
17
|
+
</ui-stack-block>
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script setup lang="ts">
|
|
21
|
+
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
22
|
+
|
|
23
|
+
const model = defineModel<UI_I_OptionItem>()
|
|
24
|
+
|
|
25
|
+
const props = defineProps<{
|
|
26
|
+
options: UI_I_OptionItem[]
|
|
27
|
+
pciDeviceIndex: number
|
|
28
|
+
}>()
|
|
29
|
+
|
|
30
|
+
const modelLocal = computed<string>({
|
|
31
|
+
get() {
|
|
32
|
+
return model.value?.value || ''
|
|
33
|
+
},
|
|
34
|
+
set(newValue: string) {
|
|
35
|
+
model.value = props.options.find((option) => option.value === newValue)
|
|
36
|
+
},
|
|
37
|
+
})
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<style scoped lang="scss">
|
|
41
|
+
.type-selection-content {
|
|
42
|
+
display: flex;
|
|
43
|
+
flex-direction: column;
|
|
44
|
+
gap: 12px;
|
|
45
|
+
}
|
|
46
|
+
</style>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<atoms-stack-block :has-children="false">
|
|
4
|
+
<template #stackBlockContent>
|
|
5
|
+
<div class="flex-align-center">
|
|
6
|
+
<div
|
|
7
|
+
v-for="(item, index) in props.options"
|
|
8
|
+
:key="item"
|
|
9
|
+
class="flex-align-center"
|
|
10
|
+
>
|
|
11
|
+
<input
|
|
12
|
+
:id="`pci-device-radio-input-${props.pciDeviceIndex}-${index}`"
|
|
13
|
+
v-model="model"
|
|
14
|
+
type="radio"
|
|
15
|
+
:value="item"
|
|
16
|
+
:disabled="!!index"
|
|
17
|
+
:data-id="`pci-device-radio-input-${props.pciDeviceIndex}-${index}`"
|
|
18
|
+
/>
|
|
19
|
+
<label
|
|
20
|
+
:for="`pci-device-radio-input-${props.pciDeviceIndex}-${index}`"
|
|
21
|
+
>{{ item.text }}</label
|
|
22
|
+
>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
</atoms-stack-block>
|
|
27
|
+
</div>
|
|
28
|
+
</template>
|
|
29
|
+
|
|
30
|
+
<script setup lang="ts">
|
|
31
|
+
import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
|
|
32
|
+
|
|
33
|
+
const model = defineModel<UI_I_OptionItem>()
|
|
34
|
+
|
|
35
|
+
const props = defineProps<{
|
|
36
|
+
options: UI_I_OptionItem[]
|
|
37
|
+
pciDeviceIndex: number
|
|
38
|
+
}>()
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<style scoped lang="scss">
|
|
42
|
+
input,
|
|
43
|
+
label {
|
|
44
|
+
margin-right: 4px;
|
|
45
|
+
}
|
|
46
|
+
</style>
|