bfg-common 1.5.555 → 1.5.557

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.
Files changed (64) hide show
  1. package/assets/localization/local_be.json +20 -4
  2. package/assets/localization/local_en.json +20 -4
  3. package/assets/localization/local_hy.json +20 -4
  4. package/assets/localization/local_kk.json +20 -4
  5. package/assets/localization/local_ru.json +20 -4
  6. package/assets/localization/local_zh.json +21 -5
  7. package/components/common/modals/confirmByInput/ConfirmByInput.vue +9 -1
  8. package/components/common/modals/confirmByInput/ConfirmByInputNew.vue +7 -2
  9. package/components/common/pages/backups/modals/createBackup/New.vue +8 -2
  10. package/components/common/pages/backups/modals/restore/Restore.vue +9 -5
  11. package/components/common/pages/backups/modals/restore/RestoreNew.vue +13 -3
  12. package/components/common/pages/backups/modals/restore/RestoreOld.vue +6 -18
  13. package/components/common/vm/actions/add/Add.vue +119 -46
  14. package/components/common/vm/actions/add/New.vue +54 -16
  15. package/components/common/vm/actions/add/Old.vue +55 -16
  16. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +78 -13
  17. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +52 -7
  18. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +52 -8
  19. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +96 -62
  20. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +24 -13
  21. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +25 -14
  22. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +159 -139
  23. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +15 -8
  24. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuOld.vue +13 -8
  25. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +75 -62
  26. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbController.vue +17 -6
  27. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +3 -6
  28. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerOld.vue +3 -6
  29. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +39 -17
  30. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +5 -6
  31. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +5 -6
  32. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/lib/config/options.ts +4 -4
  33. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +93 -6
  34. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +62 -8
  35. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +60 -8
  36. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptions.vue +69 -5
  37. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +32 -12
  38. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsOld.vue +33 -12
  39. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +132 -114
  40. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +6 -41
  41. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderOld.vue +6 -44
  42. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +23 -8
  43. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +31 -21
  44. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +34 -26
  45. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +34 -28
  46. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/Old.vue +30 -24
  47. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/RemoteConsoleOptions.vue +112 -8
  48. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +3 -3
  49. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/{New.vue → KeymapNew.vue} +6 -6
  50. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/{Old.vue → KeymapOld.vue} +5 -5
  51. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +7 -6
  52. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/Tools.vue +38 -4
  53. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsNew.vue +26 -7
  54. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsOld.vue +50 -24
  55. package/components/common/vm/actions/common/lib/models/interfaces.ts +25 -57
  56. package/components/common/vm/actions/editSettings/EditSettings.vue +33 -10
  57. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +30 -2
  58. package/components/common/vm/actions/editSettings/new/New.vue +30 -2
  59. package/components/common/vm/actions/lib/models/interfaces.ts +29 -4
  60. package/components/common/vm/actions/lib/utils.ts +32 -37
  61. package/package.json +3 -1
  62. package/store/tasks/mappers/recentTasks.ts +4 -0
  63. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/{New.vue → PasswordNew.vue} +0 -0
  64. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/{Old.vue → PasswordOld.vue} +0 -0
@@ -4,153 +4,171 @@
4
4
  :boot-list="bootList"
5
5
  :is-disabled="props.isDisabled"
6
6
  @change-order="onChangeOrder"
7
- @update:boot-list="onBootListUpdate"
8
7
  />
9
8
  <common-vm-actions-common-customize-hardware-vmoptions-boot-options-order-old
10
9
  v-else
11
10
  :boot-list="bootList"
12
11
  :is-disabled="props.isDisabled"
13
12
  @change-order="onChangeOrder"
14
- @update:boot-list="onBootListUpdate"
15
13
  />
16
14
  </template>
17
15
 
18
16
  <script setup lang="ts">
19
17
  import type { UI_I_BootItem } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/lib/models/interfaces'
18
+ import type {
19
+ UI_I_SendDataNewCdDvdDrive,
20
+ UI_I_SendDataNewHardDisk,
21
+ UI_I_SendDataNewNetwork,
22
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
20
23
  import type { UI_I_DropEvent } from '~/components/atoms/list/dragDropList/lib/config/events'
21
- import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
22
-
23
- const model = defineModel<UI_I_CreateVmData>({ required: true })
24
24
 
25
25
  const props = defineProps<{
26
+ hardDisks: UI_I_SendDataNewHardDisk[] | null
27
+ cdDvdDrives: UI_I_SendDataNewCdDvdDrive[] | null
28
+ networks: UI_I_SendDataNewNetwork[] | null
26
29
  isDisabled: boolean
27
30
  }>()
31
+ const emits = defineEmits<{
32
+ (
33
+ event: 'change',
34
+ value: [
35
+ UI_I_SendDataNewHardDisk[],
36
+ UI_I_SendDataNewCdDvdDrive[],
37
+ UI_I_SendDataNewNetwork[]
38
+ ]
39
+ ): void
40
+ }>()
28
41
 
29
42
  const { $store }: any = useNuxtApp()
30
43
  const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
31
44
 
32
45
  const bootList = ref<UI_I_BootItem[]>([])
33
46
 
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 при изменении модели
47
+ const hardDisksAndNetworks = computed<
48
+ [
49
+ UI_I_SendDataNewHardDisk[] | null,
50
+ UI_I_SendDataNewCdDvdDrive[] | null,
51
+ UI_I_SendDataNewNetwork[] | null
52
+ ]
53
+ >(() => [props.hardDisks, props.cdDvdDrives, props.networks])
44
54
  watch(
45
55
  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)
56
+ (
57
+ newValue: [
58
+ UI_I_SendDataNewHardDisk[] | null,
59
+ UI_I_SendDataNewCdDvdDrive[] | null,
60
+ UI_I_SendDataNewNetwork[] | null
61
+ ]
62
+ ) => {
63
+ const hardDisks: UI_I_BootItem[] =
64
+ newValue[0]?.map((item, index) => {
65
+ const order = item.boot_order || 0
66
+ return {
67
+ order,
68
+ isChecked: !!order,
69
+ text: `disk${index}`,
70
+ iconClassName: 'icon-disk',
71
+ type: 'disk',
72
+ name: item.source + index,
73
+ testId: `select-disk-value-${index + 1}`,
74
+ }
75
+ }) || []
76
+ const cdDvdDrives: UI_I_BootItem[] =
77
+ newValue[1]?.map((item, index) => {
78
+ const order = item.boot_order || 0
79
+ return {
80
+ order,
81
+ isChecked: !!order,
82
+ text: `cdrom${index}`,
83
+ iconClassName: 'icon-disk',
84
+ type: 'cdDvd',
85
+ name: item.source + index,
86
+ testId: `select-cd-dvd-value-${index + 1}`,
87
+ }
88
+ }) || []
89
+ const networks: UI_I_BootItem[] =
90
+ newValue[2]?.map((item, index) => {
91
+ const order = item.boot_order || 0
92
+ return {
93
+ order,
94
+ isChecked: !!order,
95
+ text: item.mac || 'undefined',
96
+ iconClassName: 'vsphere-icon-network',
97
+ type: 'nic',
98
+ name: item.network + index,
99
+ testId: `select-nic-value-${index + 1}`,
100
+ }
101
+ }) || []
102
+
103
+ bootList.value = [...hardDisks, ...cdDvdDrives, ...networks].sort(
104
+ (a, b) => a.order - b.order
105
+ )
89
106
  },
90
107
  { deep: true, immediate: true }
91
108
  )
92
109
 
93
- // Обработчик изменения порядка через drag & drop
94
110
  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
+ let order = -1
112
+ bootList.value = bootList.value
113
+ .map((item) => {
114
+ if (item === event.target) {
115
+ item.order = event.toPosition
116
+ return item
117
+ }
111
118
 
112
- bootList.value = updatedList
113
- updateModelFromBootList(updatedList)
114
- }
119
+ item.order = order + 1 === event.toPosition ? (order += 2) : order++
115
120
 
116
- // Обработчик обновления bootList (при изменении чекбоксов)
117
- const onBootListUpdate = (updatedBootList: UI_I_BootItem[]): void => {
118
- bootList.value = updatedBootList
119
- updateModelFromBootList(updatedBootList)
121
+ return item
122
+ })
123
+ .sort((a, b) => a.order - b.order)
120
124
  }
121
125
 
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++
126
+ watch(
127
+ bootList,
128
+ (newValue) => {
129
+ const networks: UI_I_SendDataNewNetwork[] = []
130
+ const hardDisks: UI_I_SendDataNewHardDisk[] = []
131
+ const cdDvdDrives: UI_I_SendDataNewCdDvdDrive[] = []
132
+ let index = 0
133
+ newValue.forEach((boot) => {
134
+ if (boot.type === 'nic') {
135
+ const network = props.networks?.find(
136
+ (network, index2) => network.network + index2 === boot.name
137
+ )
138
+ if (network) {
139
+ networks.push({
140
+ ...network,
141
+ boot_order: boot.isChecked ? ++index : 0,
142
+ })
143
+ }
144
+ } else if (boot.type === 'disk') {
145
+ const hardDisk = props.hardDisks?.find(
146
+ (hardDisk, index2) => hardDisk.source + index2 === boot.name
147
+ )
148
+ if (hardDisk) {
149
+ hardDisks.push({
150
+ ...hardDisk,
151
+ boot_order: boot.isChecked ? ++index : 0,
152
+ })
153
+ }
154
+ } else {
155
+ const cdDvdDrive = props.cdDvdDrives?.find(
156
+ (cdDvdDrive, index2) => cdDvdDrive.source + index2 === boot.name
157
+ )
158
+ if (cdDvdDrive) {
159
+ cdDvdDrives.push({
160
+ ...cdDvdDrive,
161
+ boot_order: boot.isChecked ? ++index : 0,
162
+ })
163
+ }
150
164
  }
151
- }
152
- })
153
- }
165
+ })
166
+
167
+ emits('change', [hardDisks, cdDvdDrives, networks])
168
+ },
169
+ { deep: true, immediate: true }
170
+ )
154
171
  </script>
155
172
 
156
- <style scoped lang="scss"></style>
173
+ <style scoped lang="scss">
174
+ </style>
@@ -1,34 +1,33 @@
1
1
  <template>
2
2
  <ui-stack-block
3
- :has-children="false"
4
- test-id="boot-options-order-stack-block"
3
+ :has-children="false"
4
+ test-id="boot-options-order-stack-block"
5
5
  >
6
6
  <template #stackBlockKey>
7
7
  {{ localization.common.bootOrder }}
8
8
  </template>
9
9
  <template #stackBlockContent>
10
10
  <ui-drag-drop-list
11
- :items="localBootList"
11
+ :items="props.bootList"
12
12
  :disabled="props.isDisabled"
13
13
  grab-item-key="text"
14
14
  @drop="emits('change-order', $event)"
15
15
  @grab="onGrab"
16
16
  >
17
17
  <template
18
- v-for="(item, index) in localBootList"
18
+ v-for="(item, index) in props.bootList"
19
19
  :key="index"
20
20
  #[`leftSide${index}`]
21
21
  >
22
22
  <ui-checkbox
23
- :model-value="item.isChecked"
23
+ v-model="item.isChecked"
24
24
  :test-id="item.testId"
25
25
  :disabled="props.isDisabled"
26
26
  size="md"
27
- @update:model-value="onCheckboxChange(index, $event)"
28
27
  />
29
28
  </template>
30
29
  <template
31
- v-for="(item, index) in localBootList"
30
+ v-for="(item, index) in props.bootList"
32
31
  :key="props.bootList.length + index"
33
32
  #[`rightSide${index}`]
34
33
  >
@@ -54,48 +53,14 @@ const props = defineProps<{
54
53
  bootList: UI_I_BootItem[]
55
54
  isDisabled: boolean
56
55
  }>()
57
-
58
56
  const emits = defineEmits<{
59
57
  (event: 'change-order', value: UI_I_DropEvent): void
60
- (event: 'update:boot-list', value: UI_I_BootItem[]): void
61
58
  }>()
62
59
 
63
60
  const grabedItem = ref<any>(null)
64
- const localBootList = ref<UI_I_BootItem[]>([])
65
-
66
- // Синхронизируем с props
67
- watch(
68
- () => props.bootList,
69
- (newBootList) => {
70
- localBootList.value = newBootList.map((item) => ({ ...item }))
71
- },
72
- { deep: true, immediate: true }
73
- )
74
-
75
61
  const onGrab = (item: any): void => {
76
62
  grabedItem.value = item
77
63
  }
78
-
79
- // Обработчик изменения чекбокса
80
- const onCheckboxChange = (index: number, isChecked: boolean): void => {
81
- localBootList.value[index].isChecked = isChecked
82
-
83
- // Сохраняем порядок при изменении чекбокса
84
- let currentOrder = 1
85
- localBootList.value.forEach((item) => {
86
- if (item.isChecked) {
87
- item.order = currentOrder++
88
- } else {
89
- item.order = 0
90
- }
91
- })
92
-
93
- // Сортируем список
94
- localBootList.value.sort((a, b) => a.order - b.order)
95
-
96
- // Отправляем обновленный список родителю
97
- emits('update:boot-list', localBootList.value)
98
- }
99
64
  </script>
100
65
 
101
66
  <style scoped lang="scss">
@@ -1,36 +1,34 @@
1
1
  <template>
2
2
  <div class="boot-orders">
3
3
  <atoms-stack-block
4
- :has-children="false"
5
- test-id="boot-options-order-stack-block"
4
+ :has-children="false"
5
+ test-id="boot-options-order-stack-block"
6
6
  >
7
7
  <template #stackBlockKey>
8
8
  {{ localization.common.bootOrder }}
9
9
  </template>
10
10
  <template #stackBlockContent>
11
11
  <atoms-list-drag-drop-list
12
- :items="localBootList"
12
+ :items="props.bootList"
13
13
  :disabled="props.isDisabled"
14
14
  grab-item-key="text"
15
15
  @drop="emits('change-order', $event)"
16
16
  >
17
17
  <template
18
- v-for="(item, index) in localBootList"
18
+ v-for="(item, index) in props.bootList"
19
19
  :key="index"
20
20
  #[`leftSide${index}`]
21
21
  >
22
22
  <input
23
23
  :id="`boot-order-${index}`"
24
- :key="item.name"
25
- :checked="item.isChecked"
24
+ v-model="item.isChecked"
26
25
  :data-id="item.testId"
27
26
  :disabled="props.isDisabled"
28
27
  type="checkbox"
29
- @change="onCheckboxChange(index, $event)"
30
28
  />
31
29
  </template>
32
30
  <template
33
- v-for="(item, index) in localBootList"
31
+ v-for="(item, index) in props.bootList"
34
32
  :key="props.bootList.length + index"
35
33
  #[`rightSide${index}`]
36
34
  >
@@ -54,45 +52,9 @@ const props = defineProps<{
54
52
  bootList: UI_I_BootItem[]
55
53
  isDisabled: boolean
56
54
  }>()
57
-
58
55
  const emits = defineEmits<{
59
56
  (event: 'change-order', value: UI_I_DropEvent): void
60
- (event: 'update:boot-list', value: UI_I_BootItem[]): void
61
57
  }>()
62
-
63
- // Локальная копия для реактивных изменений
64
- const localBootList = ref<UI_I_BootItem[]>([])
65
-
66
- // Синхронизируем с props
67
- watch(
68
- () => props.bootList,
69
- (newBootList) => {
70
- localBootList.value = newBootList.map((item) => ({ ...item }))
71
- },
72
- { deep: true, immediate: true }
73
- )
74
-
75
- // Обработчик изменения чекбокса
76
- const onCheckboxChange = (index: number, event: Event): void => {
77
- const target = event.target as HTMLInputElement
78
- localBootList.value[index].isChecked = target.checked
79
-
80
- // Сохраняем порядок при изменении чекбокса
81
- let currentOrder = 1
82
- localBootList.value.forEach((item) => {
83
- if (item.isChecked) {
84
- item.order = currentOrder++
85
- } else {
86
- item.order = 0
87
- }
88
- })
89
-
90
- // Сортируем список
91
- localBootList.value.sort((a, b) => a.order - b.order)
92
-
93
- // Отправляем обновленный список родителю
94
- emits('update:boot-list', localBootList.value)
95
- }
96
58
  </script>
97
59
 
98
60
  <style scoped lang="scss">
@@ -1,7 +1,10 @@
1
1
  <template>
2
2
  <common-vm-actions-common-customize-hardware-vmoptions-general-options-new
3
3
  v-if="isNewView"
4
- v-model="model"
4
+ v-model:vm-name="vmName"
5
+ v-model:guest-machine-type="guestMachineType"
6
+ v-model:guest-os-family="guestOsFamily"
7
+ v-model:guest-os-version="guestOsVersion"
5
8
  v-model:block-is-open="blockIsOpen"
6
9
  :name-label="nameLabel"
7
10
  :is-disabled="isDisabled"
@@ -12,7 +15,10 @@
12
15
  />
13
16
  <common-vm-actions-common-customize-hardware-vmoptions-general-options-old
14
17
  v-else
15
- v-model="model"
18
+ v-model:vm-name="vmName"
19
+ v-model:guest-machine-type="guestMachineType"
20
+ v-model:guest-os-family="guestOsFamily"
21
+ v-model:guest-os-version="guestOsVersion"
16
22
  v-model:block-is-open="blockIsOpen"
17
23
  :name-label="nameLabel"
18
24
  :is-disabled="isDisabled"
@@ -26,10 +32,19 @@
26
32
  <script setup lang="ts">
27
33
  import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
28
34
  import type { UI_I_Localization } from '~/lib/models/interfaces'
29
- import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
30
35
  import { capabilities } from '~/components/common/vm/actions/common/lib/config/capabilities'
31
36
 
32
- const model = defineModel<UI_I_CreateVmData>({ required: true })
37
+ const vmName = defineModel<string>('vmName', { required: true })
38
+ const guestMachineType = defineModel<UI_I_OptionItem | null>(
39
+ 'guestMachineType',
40
+ { required: true }
41
+ )
42
+ const guestOsFamily = defineModel<UI_I_OptionItem | null>('guestOsFamily', {
43
+ required: true,
44
+ })
45
+ const guestOsVersion = defineModel<UI_I_OptionItem | null>('guestOsVersion', {
46
+ required: true,
47
+ })
33
48
 
34
49
  const props = withDefaults(
35
50
  defineProps<{
@@ -56,18 +71,18 @@ const machineTypeOptions = ref<UI_I_OptionItem[]>(
56
71
 
57
72
  const osOptions = ref<UI_I_OptionItem[]>(capabilities.value.guestOsFamilies)
58
73
  const onChangeOS = (): void => {
59
- model.value.guest_os_version = versionsOptions.value[0].value
74
+ guestOsVersion.value = versionsOptions.value[0]
60
75
  }
61
76
 
62
77
  const versionsOptions = computed<UI_I_OptionItem[]>(() => {
63
- if (!model.value.guest_os_family) return []
78
+ if (!guestOsFamily.value) return []
64
79
 
65
- return capabilities.value.guestOsVersions[model.value.guest_os_family.value] || []
80
+ return capabilities.value.guestOsVersions[guestOsFamily.value.value] || []
66
81
  })
67
82
  watch(
68
83
  versionsOptions,
69
84
  () => {
70
- model.value.guest_os_version = versionsOptions.value[0].value
85
+ guestOsVersion.value = versionsOptions.value[0]
71
86
  }
72
87
  // { immediate: true }
73
88
  )
@@ -19,13 +19,13 @@
19
19
  <template #stackBlockContent>
20
20
  <div v-show="!blockIsOpen" class="vm-name-wrap">
21
21
  <span class="vsphere-icon-vm"></span>
22
- <span data-id="header-vm-name">{{ model.name || '--' }}</span>
22
+ <span data-id="header-vm-name">{{ vmName || '--' }}</span>
23
23
  </div>
24
24
  </template>
25
25
  <template #stackChildren>
26
26
  <ui-stack-block
27
- :has-children="false"
28
- test-id="general-options-vm-name-stack-block"
27
+ :has-children="false"
28
+ test-id="general-options-vm-name-stack-block"
29
29
  >
30
30
  <template #stackBlockKey>
31
31
  {{ props.nameLabel }}
@@ -33,30 +33,30 @@
33
33
  <template #stackBlockContent>
34
34
  <div class="vm-name-wrap">
35
35
  <span class="vsphere-icon-vm"></span>
36
- <span data-id="new-vm-name">{{ model.name || '--' }}</span>
36
+ <span data-id="new-vm-name">{{ vmName || '--' }}</span>
37
37
  </div>
38
- <!-- <span v-if="!props.isEdit">{{ model.name }}</span>-->
38
+ <!-- <span v-if="!props.isEdit">{{ vmName }}</span>-->
39
39
  <!-- <input-->
40
40
  <!-- v-else-->
41
41
  <!-- id="general-option-vm-name"-->
42
- <!-- v-models="model.name"-->
42
+ <!-- v-models="vmName"-->
43
43
  <!-- type="text"-->
44
44
  <!-- />-->
45
45
  </template>
46
46
  </ui-stack-block>
47
47
 
48
48
  <ui-stack-block
49
- :has-children="false"
50
- test-id="general-options-machine-type-stack-block"
49
+ :has-children="false"
50
+ test-id="general-options-machine-type-stack-block"
51
51
  >
52
52
  <template #stackBlockKey>
53
53
  <span class="mt-2">{{ localization.common.machineType }}</span>
54
54
  </template>
55
55
  <template #stackBlockContent>
56
56
  <ui-select
57
- v-if="model.machine_type"
57
+ v-if="guestMachineType"
58
58
  id="guest-machine-type-select"
59
- v-model="model.machine_type"
59
+ v-model="guestMachineType"
60
60
  :items="props.machineTypeOptions"
61
61
  :disabled="props.isDisabled"
62
62
  width="auto"
@@ -68,17 +68,17 @@
68
68
  </ui-stack-block>
69
69
 
70
70
  <ui-stack-block
71
- :has-children="false"
72
- test-id="general-options-guest-os-family-stack-block"
71
+ :has-children="false"
72
+ test-id="general-options-guest-os-family-stack-block"
73
73
  >
74
74
  <template #stackBlockKey>
75
75
  <span class="mt-2">{{ localization.common.guestOsFamily }}</span>
76
76
  </template>
77
77
  <template #stackBlockContent>
78
78
  <ui-select
79
- v-if="model.guest_os_family"
79
+ v-if="guestOsFamily"
80
80
  id="guest-os-family-select"
81
- v-model="model.guest_os_family"
81
+ v-model="guestOsFamily"
82
82
  :items="props.osOptions"
83
83
  :disabled="props.isDisabled"
84
84
  width="auto"
@@ -91,17 +91,17 @@
91
91
  </ui-stack-block>
92
92
 
93
93
  <ui-stack-block
94
- :has-children="false"
95
- test-id="general-options-guest-os-version-stack-block"
94
+ :has-children="false"
95
+ test-id="general-options-guest-os-version-stack-block"
96
96
  >
97
97
  <template #stackBlockKey>
98
98
  <span class="mt-2">{{ localization.common.guestOsVersion }}</span>
99
99
  </template>
100
100
  <template #stackBlockContent>
101
101
  <ui-select
102
- v-if="model.guest_os_version"
102
+ v-if="guestOsVersion"
103
103
  id="guest-os-version-select"
104
- v-model="model.guest_os_version"
104
+ v-model="guestOsVersion"
105
105
  :items="props.versionsOptions"
106
106
  :disabled="props.isDisabled"
107
107
  width="auto"
@@ -118,11 +118,21 @@
118
118
  <script setup lang="ts">
119
119
  import type { UI_I_Localization } from '~/lib/models/interfaces'
120
120
  import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
121
- import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
122
-
123
- const model = defineModel<UI_I_CreateVmData>({ required: true })
124
121
 
125
122
  const blockIsOpen = defineModel<boolean>('blockIsOpen', { required: true })
123
+ const vmName = defineModel<string>('vmName', { required: true })
124
+ const guestMachineType = defineModel<UI_I_OptionItem | null>(
125
+ 'guestMachineType',
126
+ {
127
+ required: true,
128
+ }
129
+ )
130
+ const guestOsFamily = defineModel<UI_I_OptionItem | null>('guestOsFamily', {
131
+ required: true,
132
+ })
133
+ const guestOsVersion = defineModel<UI_I_OptionItem | null>('guestOsVersion', {
134
+ required: true,
135
+ })
126
136
 
127
137
  const props = defineProps<{
128
138
  isDisabled: boolean