bfg-common 1.5.554 → 1.5.555

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 (63) hide show
  1. package/assets/localization/local_be.json +4 -20
  2. package/assets/localization/local_en.json +4 -20
  3. package/assets/localization/local_hy.json +4 -20
  4. package/assets/localization/local_kk.json +4 -20
  5. package/assets/localization/local_ru.json +4 -20
  6. package/assets/localization/local_zh.json +5 -21
  7. package/components/common/modals/confirmByInput/ConfirmByInput.vue +1 -9
  8. package/components/common/modals/confirmByInput/ConfirmByInputNew.vue +2 -7
  9. package/components/common/pages/backups/modals/createBackup/New.vue +2 -8
  10. package/components/common/pages/backups/modals/restore/Restore.vue +5 -9
  11. package/components/common/pages/backups/modals/restore/RestoreNew.vue +3 -13
  12. package/components/common/pages/backups/modals/restore/RestoreOld.vue +18 -6
  13. package/components/common/vm/actions/add/Add.vue +46 -119
  14. package/components/common/vm/actions/add/New.vue +16 -54
  15. package/components/common/vm/actions/add/Old.vue +16 -55
  16. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +13 -78
  17. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +7 -52
  18. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +8 -52
  19. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +62 -96
  20. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +13 -24
  21. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +14 -25
  22. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +139 -159
  23. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +8 -15
  24. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuOld.vue +8 -13
  25. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +62 -75
  26. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbController.vue +6 -17
  27. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +6 -3
  28. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerOld.vue +6 -3
  29. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +17 -39
  30. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +6 -5
  31. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +6 -5
  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 +6 -93
  34. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +8 -62
  35. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +8 -60
  36. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptions.vue +5 -69
  37. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +12 -32
  38. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsOld.vue +12 -33
  39. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +114 -132
  40. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +41 -6
  41. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderOld.vue +44 -6
  42. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +8 -23
  43. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +21 -31
  44. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +26 -34
  45. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +28 -34
  46. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/Old.vue +24 -30
  47. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/RemoteConsoleOptions.vue +8 -112
  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/{KeymapNew.vue → New.vue} +6 -6
  50. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/{KeymapOld.vue → Old.vue} +5 -5
  51. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +6 -7
  52. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/Tools.vue +26 -60
  53. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsNew.vue +7 -26
  54. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsOld.vue +60 -86
  55. package/components/common/vm/actions/common/lib/models/interfaces.ts +57 -25
  56. package/components/common/vm/actions/editSettings/EditSettings.vue +10 -33
  57. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +2 -30
  58. package/components/common/vm/actions/editSettings/new/New.vue +2 -30
  59. package/components/common/vm/actions/lib/models/interfaces.ts +4 -29
  60. package/components/common/vm/actions/lib/utils.ts +37 -32
  61. package/package.json +1 -3
  62. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/{PasswordNew.vue → New.vue} +0 -0
  63. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/{PasswordOld.vue → Old.vue} +0 -0
@@ -4,171 +4,153 @@
4
4
  :boot-list="bootList"
5
5
  :is-disabled="props.isDisabled"
6
6
  @change-order="onChangeOrder"
7
+ @update:boot-list="onBootListUpdate"
7
8
  />
8
9
  <common-vm-actions-common-customize-hardware-vmoptions-boot-options-order-old
9
10
  v-else
10
11
  :boot-list="bootList"
11
12
  :is-disabled="props.isDisabled"
12
13
  @change-order="onChangeOrder"
14
+ @update:boot-list="onBootListUpdate"
13
15
  />
14
16
  </template>
15
17
 
16
18
  <script setup lang="ts">
17
19
  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'
23
20
  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
29
26
  isDisabled: boolean
30
27
  }>()
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
- }>()
41
28
 
42
29
  const { $store }: any = useNuxtApp()
43
30
  const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
44
31
 
45
32
  const bootList = ref<UI_I_BootItem[]>([])
46
33
 
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])
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 при изменении модели
54
44
  watch(
55
45
  hardDisksAndNetworks,
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
- )
106
- },
107
- { deep: true, immediate: true }
108
- )
109
-
110
- const onChangeOrder = (event: UI_I_DropEvent): void => {
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
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}`,
117
57
  }
58
+ })
118
59
 
119
- item.order = order + 1 === event.toPosition ? (order += 2) : order++
120
-
121
- return item
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
+ }
122
71
  })
123
- .sort((a, b) => a.order - b.order)
124
- }
125
72
 
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
- }
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}`,
164
83
  }
165
84
  })
166
85
 
167
- emits('change', [hardDisks, cdDvdDrives, networks])
86
+ bootList.value = [...hardDiskItems, ...cdDvdDriveItems, ...networkItems]
87
+ .filter((item) => item.order >= 0)
88
+ .sort((a, b) => a.order - b.order)
168
89
  },
169
90
  { deep: true, immediate: true }
170
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
+ }
171
154
  </script>
172
155
 
173
- <style scoped lang="scss">
174
- </style>
156
+ <style scoped lang="scss"></style>
@@ -1,33 +1,34 @@
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="props.bootList"
11
+ :items="localBootList"
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 props.bootList"
18
+ v-for="(item, index) in localBootList"
19
19
  :key="index"
20
20
  #[`leftSide${index}`]
21
21
  >
22
22
  <ui-checkbox
23
- v-model="item.isChecked"
23
+ :model-value="item.isChecked"
24
24
  :test-id="item.testId"
25
25
  :disabled="props.isDisabled"
26
26
  size="md"
27
+ @update:model-value="onCheckboxChange(index, $event)"
27
28
  />
28
29
  </template>
29
30
  <template
30
- v-for="(item, index) in props.bootList"
31
+ v-for="(item, index) in localBootList"
31
32
  :key="props.bootList.length + index"
32
33
  #[`rightSide${index}`]
33
34
  >
@@ -53,14 +54,48 @@ const props = defineProps<{
53
54
  bootList: UI_I_BootItem[]
54
55
  isDisabled: boolean
55
56
  }>()
57
+
56
58
  const emits = defineEmits<{
57
59
  (event: 'change-order', value: UI_I_DropEvent): void
60
+ (event: 'update:boot-list', value: UI_I_BootItem[]): void
58
61
  }>()
59
62
 
60
63
  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
+
61
75
  const onGrab = (item: any): void => {
62
76
  grabedItem.value = item
63
77
  }
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
+ }
64
99
  </script>
65
100
 
66
101
  <style scoped lang="scss">
@@ -1,34 +1,36 @@
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="props.bootList"
12
+ :items="localBootList"
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 props.bootList"
18
+ v-for="(item, index) in localBootList"
19
19
  :key="index"
20
20
  #[`leftSide${index}`]
21
21
  >
22
22
  <input
23
23
  :id="`boot-order-${index}`"
24
- v-model="item.isChecked"
24
+ :key="item.name"
25
+ :checked="item.isChecked"
25
26
  :data-id="item.testId"
26
27
  :disabled="props.isDisabled"
27
28
  type="checkbox"
29
+ @change="onCheckboxChange(index, $event)"
28
30
  />
29
31
  </template>
30
32
  <template
31
- v-for="(item, index) in props.bootList"
33
+ v-for="(item, index) in localBootList"
32
34
  :key="props.bootList.length + index"
33
35
  #[`rightSide${index}`]
34
36
  >
@@ -52,9 +54,45 @@ const props = defineProps<{
52
54
  bootList: UI_I_BootItem[]
53
55
  isDisabled: boolean
54
56
  }>()
57
+
55
58
  const emits = defineEmits<{
56
59
  (event: 'change-order', value: UI_I_DropEvent): void
60
+ (event: 'update:boot-list', value: UI_I_BootItem[]): void
57
61
  }>()
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
+ }
58
96
  </script>
59
97
 
60
98
  <style scoped lang="scss">
@@ -1,10 +1,7 @@
1
1
  <template>
2
2
  <common-vm-actions-common-customize-hardware-vmoptions-general-options-new
3
3
  v-if="isNewView"
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"
4
+ v-model="model"
8
5
  v-model:block-is-open="blockIsOpen"
9
6
  :name-label="nameLabel"
10
7
  :is-disabled="isDisabled"
@@ -15,10 +12,7 @@
15
12
  />
16
13
  <common-vm-actions-common-customize-hardware-vmoptions-general-options-old
17
14
  v-else
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"
15
+ v-model="model"
22
16
  v-model:block-is-open="blockIsOpen"
23
17
  :name-label="nameLabel"
24
18
  :is-disabled="isDisabled"
@@ -32,19 +26,10 @@
32
26
  <script setup lang="ts">
33
27
  import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
34
28
  import type { UI_I_Localization } from '~/lib/models/interfaces'
29
+ import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
35
30
  import { capabilities } from '~/components/common/vm/actions/common/lib/config/capabilities'
36
31
 
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
- })
32
+ const model = defineModel<UI_I_CreateVmData>({ required: true })
48
33
 
49
34
  const props = withDefaults(
50
35
  defineProps<{
@@ -71,18 +56,18 @@ const machineTypeOptions = ref<UI_I_OptionItem[]>(
71
56
 
72
57
  const osOptions = ref<UI_I_OptionItem[]>(capabilities.value.guestOsFamilies)
73
58
  const onChangeOS = (): void => {
74
- guestOsVersion.value = versionsOptions.value[0]
59
+ model.value.guest_os_version = versionsOptions.value[0].value
75
60
  }
76
61
 
77
62
  const versionsOptions = computed<UI_I_OptionItem[]>(() => {
78
- if (!guestOsFamily.value) return []
63
+ if (!model.value.guest_os_family) return []
79
64
 
80
- return capabilities.value.guestOsVersions[guestOsFamily.value.value] || []
65
+ return capabilities.value.guestOsVersions[model.value.guest_os_family.value] || []
81
66
  })
82
67
  watch(
83
68
  versionsOptions,
84
69
  () => {
85
- guestOsVersion.value = versionsOptions.value[0]
70
+ model.value.guest_os_version = versionsOptions.value[0].value
86
71
  }
87
72
  // { immediate: true }
88
73
  )
@@ -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">{{ vmName || '--' }}</span>
22
+ <span data-id="header-vm-name">{{ model.name || '--' }}</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">{{ vmName || '--' }}</span>
36
+ <span data-id="new-vm-name">{{ model.name || '--' }}</span>
37
37
  </div>
38
- <!-- <span v-if="!props.isEdit">{{ vmName }}</span>-->
38
+ <!-- <span v-if="!props.isEdit">{{ model.name }}</span>-->
39
39
  <!-- <input-->
40
40
  <!-- v-else-->
41
41
  <!-- id="general-option-vm-name"-->
42
- <!-- v-models="vmName"-->
42
+ <!-- v-models="model.name"-->
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="guestMachineType"
57
+ v-if="model.machine_type"
58
58
  id="guest-machine-type-select"
59
- v-model="guestMachineType"
59
+ v-model="model.machine_type"
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="guestOsFamily"
79
+ v-if="model.guest_os_family"
80
80
  id="guest-os-family-select"
81
- v-model="guestOsFamily"
81
+ v-model="model.guest_os_family"
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="guestOsVersion"
102
+ v-if="model.guest_os_version"
103
103
  id="guest-os-version-select"
104
- v-model="guestOsVersion"
104
+ v-model="model.guest_os_version"
105
105
  :items="props.versionsOptions"
106
106
  :disabled="props.isDisabled"
107
107
  width="auto"
@@ -118,21 +118,11 @@
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 })
121
124
 
122
125
  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
- })
136
126
 
137
127
  const props = defineProps<{
138
128
  isDisabled: boolean