bfg-common 1.5.580 → 1.5.581

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 (57) hide show
  1. package/components/common/vm/actions/add/Add.vue +120 -46
  2. package/components/common/vm/actions/add/New.vue +54 -16
  3. package/components/common/vm/actions/add/Old.vue +55 -16
  4. package/components/common/vm/actions/clone/Clone.vue +116 -44
  5. package/components/common/vm/actions/clone/new/New.vue +50 -14
  6. package/components/common/vm/actions/clone/old/Old.vue +52 -16
  7. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +81 -14
  8. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +56 -7
  9. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +56 -8
  10. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +206 -211
  11. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +120 -225
  12. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +118 -220
  13. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +53 -66
  14. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +159 -139
  15. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +15 -8
  16. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuOld.vue +13 -8
  17. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +75 -62
  18. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +149 -241
  19. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +4 -3
  20. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +3 -2
  21. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +100 -62
  22. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbController.vue +17 -6
  23. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +3 -6
  24. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerOld.vue +3 -6
  25. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +39 -17
  26. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +5 -6
  27. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +5 -6
  28. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/lib/config/options.ts +4 -4
  29. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +93 -6
  30. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +60 -8
  31. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +58 -8
  32. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptions.vue +69 -5
  33. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +32 -12
  34. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsOld.vue +33 -12
  35. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +132 -114
  36. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +6 -41
  37. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderOld.vue +6 -44
  38. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +23 -8
  39. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +31 -21
  40. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +34 -26
  41. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +34 -28
  42. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/Old.vue +30 -24
  43. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/RemoteConsoleOptions.vue +112 -8
  44. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +3 -3
  45. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/{New.vue → KeymapNew.vue} +6 -6
  46. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/{Old.vue → KeymapOld.vue} +5 -5
  47. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +7 -6
  48. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/Tools.vue +27 -9
  49. package/components/common/vm/actions/common/lib/models/interfaces.ts +25 -58
  50. package/components/common/vm/actions/editSettings/EditSettings.vue +90 -32
  51. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +41 -14
  52. package/components/common/vm/actions/editSettings/new/New.vue +41 -14
  53. package/components/common/vm/actions/lib/models/interfaces.ts +29 -4
  54. package/components/common/vm/actions/lib/utils.ts +36 -64
  55. package/package.json +1 -1
  56. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/{New.vue → PasswordNew.vue} +0 -0
  57. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/{Old.vue → PasswordOld.vue} +0 -0
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <div class="">
3
3
  <atoms-stack-block
4
- :has-children="false"
5
- test-id="remote-console-keymap-stack-block"
4
+ :has-children="false"
5
+ test-id="remote-console-keymap-stack-block"
6
6
  >
7
7
  <template #stackBlockKey>
8
8
  {{ localization.common.keymap }}
@@ -11,9 +11,9 @@
11
11
  <div class="select">
12
12
  <select
13
13
  id="keymap-select"
14
- v-model="model"
14
+ v-model="keymap"
15
15
  :disabled="props.disabled"
16
- :data-value="model"
16
+ :data-value="keymap"
17
17
  data-id="keymap-select"
18
18
  >
19
19
  <option
@@ -34,7 +34,7 @@
34
34
  import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
35
35
  import type { UI_I_Localization } from '~/lib/models/interfaces'
36
36
 
37
- const model = defineModel<string>({ required: true })
37
+ const keymap = defineModel<string>('keymap', { required: true })
38
38
 
39
39
  const props = defineProps<{
40
40
  disabled: boolean
@@ -26,7 +26,7 @@ import type { UI_I_DefaultForm } from '~/components/common/vm/actions/common/cus
26
26
  import type { UI_I_Localization } from '~/lib/models/interfaces'
27
27
  import { generatePassword } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/lib/utils'
28
28
 
29
- const model = defineModel<string>({ required: true })
29
+ const password = defineModel<string>('password', { required: true })
30
30
 
31
31
  const props = defineProps<{
32
32
  disabled: boolean
@@ -43,7 +43,7 @@ const localization = computed<UI_I_Localization>(() => useLocal())
43
43
  const validation = $validation.call({})
44
44
  const defaultForm: UI_I_DefaultForm = {
45
45
  password: {
46
- value: model.value,
46
+ value: password.value,
47
47
  validations: [
48
48
  {
49
49
  value: 'password',
@@ -61,6 +61,7 @@ setForm()
61
61
 
62
62
  const showValidationErrors = (): void => {
63
63
  const valid = validation.touch()
64
+ console.log(valid, 111)
64
65
  passwordErrorText.value = !valid.isValid ? valid.errors.password[0] : ''
65
66
  emits('valid', valid.isValid)
66
67
  }
@@ -76,24 +77,24 @@ const setPasswordDisable = (): void => {
76
77
 
77
78
  removeValidationErrors()
78
79
  setForm()
79
- model.value = ''
80
+ password.value = ''
80
81
  }
81
82
 
82
83
  const passwordErrorText = ref<string>('')
83
84
 
84
85
  const changePassword = (value: string): void => {
85
- model.value = value
86
+ password.value = value
86
87
 
87
88
  showValidationErrors()
88
89
  }
89
90
 
90
- const isEnabledPassword = ref<boolean>(!!model.value)
91
+ const isEnabledPassword = ref<boolean>(!!password.value)
91
92
 
92
93
  const onGeneratePassword = (): void => {
93
94
  const generatedPassword = generatePassword()
94
95
 
95
96
  form.value.password.value = generatedPassword
96
- model.value = generatedPassword
97
+ password.value = generatedPassword
97
98
 
98
99
  showValidationErrors()
99
100
  }
@@ -1,37 +1,55 @@
1
1
  <template>
2
2
  <common-vm-actions-common-customize-hardware-vmoptions-tools-new
3
3
  v-if="isNewView"
4
- v-model:balloon="model.balloon"
4
+ v-model:balloon="balloonLocal"
5
5
  :disabled="isDisabled"
6
6
  />
7
7
  <common-vm-actions-common-customize-hardware-vmoptions-tools-old
8
8
  v-else
9
- v-model:balloon="model.balloon"
9
+ v-model:balloon="balloonLocal"
10
10
  :disabled="isDisabled"
11
11
  />
12
12
  </template>
13
13
 
14
14
  <script setup lang="ts">
15
- import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
16
-
17
- const model = defineModel<UI_I_CreateVmData['options']['guest_tools']>({
18
- required: true,
19
- })
15
+ import type { UI_I_SendDataTools } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/lib/models/interfaces'
20
16
 
21
17
  const props = withDefaults(
22
18
  defineProps<{
19
+ tools: boolean
20
+ balloon: boolean
23
21
  isEdit: boolean
24
22
  state?: string | number
25
23
  }>(),
26
24
  {
25
+ tools: true,
26
+ balloon: false,
27
27
  state: undefined,
28
28
  }
29
29
  )
30
+ const emits = defineEmits<{
31
+ (event: 'send-data', value: UI_I_SendDataTools): void
32
+ }>()
30
33
 
31
- const { $store }: any = useNuxtApp()
32
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
34
+ const toolsLocal = ref<boolean>(props.tools)
35
+ const balloonLocal = ref<boolean>(props.balloon)
33
36
 
34
37
  const isDisabled = computed<boolean>(() => props.isEdit && props.state !== 1)
38
+
39
+ watch(
40
+ balloonLocal,
41
+ () => {
42
+ emits('send-data', {
43
+ enabled: toolsLocal.value,
44
+ synchronized_time: toolsLocal.value,
45
+ balloon: balloonLocal.value,
46
+ })
47
+ },
48
+ { immediate: true }
49
+ )
50
+
51
+ const { $store }: any = useNuxtApp()
52
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
35
53
  </script>
36
54
 
37
55
  <style scoped lang="scss">
@@ -5,13 +5,7 @@ import type {
5
5
  UI_I_SendDataNewPciDevice,
6
6
  UI_I_SendDataVideoCard,
7
7
  } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
8
- import type {
9
- UI_I_SendDataBootOptions,
10
- UI_I_SendDataRemoteConsoleOptions,
11
- UI_I_SendDataRemoteConsoleOptionsSpice,
12
- UI_I_SendDataTools,
13
- UI_I_SendDataVmoptions,
14
- } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/lib/models/interfaces'
8
+ import type { UI_I_SendDataVmoptions } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/lib/models/interfaces'
15
9
  import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
16
10
  import type { UI_I_ArbitraryObject } from '~/lib/models/interfaces'
17
11
 
@@ -53,6 +47,25 @@ export interface UI_I_ErrorMessage {
53
47
  descriptions: string[]
54
48
  }
55
49
 
50
+ interface UI_I_CreateVmDataStorage {
51
+ id: string
52
+ }
53
+ interface UI_I_CreateVmDataCpu {
54
+ vcpus: number
55
+ max_vcpus: number
56
+ core_per_socket: number
57
+ model: string
58
+ reservation_mhz: number
59
+ limit_mhz: number
60
+ shares: number
61
+ hotplug: boolean
62
+ }
63
+ interface UI_I_CreateVmDataMemory {
64
+ size_mb: number
65
+ hotplug: boolean
66
+ reservation_mb: number
67
+ limit_mb: number
68
+ }
56
69
  export interface UI_I_CreateVmDataUsbController {
57
70
  type: string
58
71
  }
@@ -135,56 +148,10 @@ export interface UI_I_CreateVmData {
135
148
  )[]
136
149
  network_devices: UI_I_SendDataNewNetwork[]
137
150
  passthrough_pci_devices: UI_I_SendDataNewPciDevice[]
138
- usb_controllers: {
139
- type: string
140
- }[]
151
+ options: UI_I_SendDataVmoptions
152
+ storage: UI_I_CreateVmDataStorage
153
+ cpu: UI_I_CreateVmDataCpu
154
+ memory: UI_I_CreateVmDataMemory
155
+ usb_controllers: UI_I_CreateVmDataUsbController[]
141
156
  input_devices: UI_I_CreateVmDataInputDevices[]
142
- cpu: {
143
- vcpus: number
144
- max_vcpus: number
145
- core_per_socket: number
146
- model: string
147
- reservation_mhz: number
148
- limit_mhz: number
149
- shares: number
150
- hotplug: boolean
151
- }
152
- memory: {
153
- size_mb: number
154
- hotplug: boolean
155
- reservation_mb: number
156
- limit_mb: number
157
- }
158
- storage: {
159
- id: string
160
- } | null
161
- options: {
162
- remote_console: {
163
- type: string
164
- port: number
165
- keymap: string
166
- password: string
167
- guest_os_lock: boolean
168
- limit_sessions: number
169
- spice: {
170
- img_compression: string
171
- jpeg_compression: string
172
- zlib_glz_compression: string
173
- streaming_mode: string
174
- playback_compression: boolean
175
- file_transfer: boolean
176
- clipboard: boolean
177
- }
178
- }
179
- guest_tools: {
180
- enabled: boolean
181
- synchronized_time: boolean
182
- balloon: boolean
183
- }
184
- boot_options: {
185
- firmware: string
186
- boot_delay_ms: number
187
- boot_menu: boolean
188
- }
189
- }
190
157
  }
@@ -1,7 +1,8 @@
1
1
  <template>
2
2
  <common-vm-actions-edit-settings-new
3
3
  v-if="isNewView"
4
- v-model:vm-settings="model"
4
+ v-model:vm-name="vmName"
5
+ v-model:vm-settings="vmSettingsLocal"
5
6
  :nodes="props.nodes"
6
7
  :files="props.files"
7
8
  :project="props.project"
@@ -12,27 +13,32 @@
12
13
  :selected-nav-item="selectedNavItem"
13
14
  :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
14
15
  :error-validation-fields="props.errorValidationFields"
16
+ :virtual-hardware-networks="virtualHardwareNetworksLocal"
17
+ :virtual-hardware-hard-disks="virtualHardwareHardDisksLocal"
18
+ :virtual-hardware-cd-dvd-drives="virtualHardwareCdDvdDrivesLocal"
15
19
  :state="props.state"
16
- :vm-name-old="vmNameOld"
20
+ :vm-name-old="props.vmSettings?.name"
17
21
  :passthrough-devices="props.passthroughDevices"
18
22
  :mediated-devices="props.mediatedDevices"
19
23
  :get-datastore-table-func="props.getDatastoreTableFunc"
20
24
  :customize-hardware-submit="customizeHardwareSubmit"
21
25
  :is-vmt="props.isVmt"
22
- :max-memory="maxMemory"
23
- :cpu-models="cpuModels"
24
26
  @hide="emits('hide')"
25
27
  @validate="validateSendData"
28
+ @update-vm="emits('update-vm')"
26
29
  @get-storage="emits('get-storage', $event)"
27
30
  @get-pci-devices="emits('get-pci-devices')"
31
+ @change-boot-order="onChangeBootOrder"
28
32
  @get-networks-table="emits('get-networks-table', $event)"
29
33
  @get-folders-or-files="emits('get-folders-or-files', $event)"
30
34
  @show-datastore-child="emits('show-datastore-child', $event)"
31
35
  @get-active-device-child="emits('get-active-device-child', $event)"
36
+ @change-customize-hardware="onChangeCustomizeHardware"
32
37
  />
33
38
  <common-vm-actions-edit-settings-old
34
39
  v-else
35
- v-model:vm-settings="model"
40
+ v-model:vm-name="vmName"
41
+ v-model:vm-settings="vmSettingsLocal"
36
42
  :nodes="props.nodes"
37
43
  :files="props.files"
38
44
  :project="props.project"
@@ -43,23 +49,27 @@
43
49
  :selected-nav-item="selectedNavItem"
44
50
  :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
45
51
  :error-validation-fields="props.errorValidationFields"
52
+ :virtual-hardware-networks="virtualHardwareNetworksLocal"
53
+ :virtual-hardware-hard-disks="virtualHardwareHardDisksLocal"
54
+ :virtual-hardware-cd-dvd-drives="virtualHardwareCdDvdDrivesLocal"
46
55
  :state="props.state"
47
- :vm-name-old="vmNameOld"
56
+ :vm-name-old="props.vmSettings?.name"
48
57
  :passthrough-devices="props.passthroughDevices"
49
58
  :mediated-devices="props.mediatedDevices"
50
59
  :get-datastore-table-func="props.getDatastoreTableFunc"
51
60
  :customize-hardware-submit="customizeHardwareSubmit"
52
61
  :is-vmt="props.isVmt"
53
- :max-memory="maxMemory"
54
- :cpu-models="cpuModels"
55
62
  @hide="emits('hide')"
56
63
  @validate="validateSendData"
64
+ @update-vm="emits('update-vm')"
57
65
  @get-storage="emits('get-storage', $event)"
58
66
  @get-pci-devices="emits('get-pci-devices')"
67
+ @change-boot-order="onChangeBootOrder"
59
68
  @get-networks-table="emits('get-networks-table', $event)"
60
69
  @get-folders-or-files="emits('get-folders-or-files', $event)"
61
70
  @show-datastore-child="emits('show-datastore-child', $event)"
62
71
  @get-active-device-child="emits('get-active-device-child', $event)"
72
+ @change-customize-hardware="onChangeCustomizeHardware"
63
73
  />
64
74
  </template>
65
75
 
@@ -70,7 +80,17 @@ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interface
70
80
  import type {
71
81
  UI_I_MediatedDevice,
72
82
  UI_I_PciDevice,
83
+ UI_I_VmSettings,
73
84
  } from '~/lib/models/store/vm/interfaces'
85
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
86
+ import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
87
+ import type {
88
+ UI_I_SendDataNewCdDvdDrive,
89
+ UI_I_SendDataNewHardDisk,
90
+ UI_I_SendDataNewNetwork,
91
+ UI_I_SendDataCpu,
92
+ UI_I_SendDataMemory,
93
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
74
94
  import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
75
95
  import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
76
96
  import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
@@ -78,25 +98,20 @@ import type {
78
98
  UI_I_DatastoreTableItem,
79
99
  UI_I_FolderOrFileTreePayload,
80
100
  } from '~/lib/models/store/storage/interfaces'
101
+ import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
81
102
  import type { UI_T_EditVmFinishFunc } from '~/components/common/vm/actions/editSettings/lib/models/types'
82
- import type {
83
- UI_I_Capabilities,
84
- UI_I_CreateVmData,
85
- } from '~/components/common/vm/actions/common/lib/models/interfaces'
86
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
103
+ import type { UI_I_Capabilities } from '~/components/common/vm/actions/common/lib/models/interfaces'
87
104
  import { mapCapabilities } from '~/components/common/vm/actions/common/lib/utils/capabilities'
88
- import { capabilities } from '~/components/common/vm/actions/common/lib/config/capabilities'
89
-
90
- const model = defineModel<UI_I_CreateVmData>({ required: true })
91
105
 
92
106
  const props = withDefaults(
93
107
  defineProps<{
94
108
  project: UI_T_Project
95
109
  loading: boolean
110
+ vmSettings: UI_I_VmSettings | null
96
111
  nodes: UI_I_FileTreeNode[]
97
112
  files: UI_I_FileTreeNode[]
98
113
  networksTable: UI_I_NetworkTableItem[]
99
- errorValidationFields: UI_I_ErrorValidationField[]
114
+ errorValidationFields: UI_I_ErrorValidationField<string>[]
100
115
  vmCpuHelpTextSecond: string
101
116
  vmId: string
102
117
  datastore: UI_I_DatastoreTableItem[]
@@ -133,7 +148,7 @@ const emits = defineEmits<{
133
148
  const { $store }: any = useNuxtApp()
134
149
  const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
135
150
 
136
- const vmNameOld = computed<string>(() => model.value?.name || '')
151
+ const localization = computed<UI_I_Localization>(() => useLocal())
137
152
 
138
153
  watch(
139
154
  () => props.capabilities,
@@ -143,9 +158,6 @@ watch(
143
158
  { deep: true, immediate: true }
144
159
  )
145
160
 
146
- const cpuModels = ref<UI_I_OptionItem[]>(capabilities.value.cpuModels)
147
- const maxMemory = ref<number>(capabilities.value.maxMemory)
148
-
149
161
  const selectedNavItem = ref<UI_T_SelectedNavItem>(0)
150
162
 
151
163
  const loadingLocal = ref<boolean>(false)
@@ -157,12 +169,45 @@ watch(
157
169
  { immediate: true }
158
170
  )
159
171
 
160
- watch(
161
- model,
162
- (newValue) => {
163
- console.log(newValue, 11111111111)
164
- },
165
- { deep: true }
172
+ const vmSettingsLocal = computed<UI_I_VmSettings | null>(() => props.vmSettings)
173
+
174
+ const vmName = ref<string>(vmSettingsLocal.value?.name || '')
175
+ watch(vmSettingsLocal, (newValue) => {
176
+ vmName.value = newValue?.name || ''
177
+ })
178
+
179
+ const virtualHardwareHardDisks = ref<UI_I_SendDataNewHardDisk[] | null>(null)
180
+ const virtualHardwareCdDvdDrives = ref<UI_I_SendDataNewCdDvdDrive[] | null>(
181
+ null
182
+ )
183
+ const virtualHardwareNetworks = ref<UI_I_SendDataNewNetwork[] | null>(null)
184
+ const onChangeBootOrder = (data: UI_T_ChangeBootOrder): void => {
185
+ virtualHardwareHardDisks.value = data[0]
186
+ virtualHardwareCdDvdDrives.value = data[1]
187
+ virtualHardwareNetworks.value = data[2]
188
+ }
189
+
190
+ const customizeHardware = ref<UI_I_SendDataCustomizeHardware | null>(null)
191
+ const onChangeCustomizeHardware = (
192
+ data: UI_I_SendDataCustomizeHardware
193
+ ): void => {
194
+ customizeHardware.value = data
195
+ }
196
+ const virtualHardwareHardDisksLocal = computed<
197
+ UI_I_SendDataNewHardDisk[] | null
198
+ >(() => customizeHardware.value?.virtualHardware?.hardDisks || null)
199
+ const virtualHardwareNetworksLocal = computed<UI_I_SendDataNewNetwork[] | null>(
200
+ () => customizeHardware.value?.virtualHardware?.networks || null
201
+ )
202
+ const virtualHardwareCdDvdDrivesLocal = computed<
203
+ UI_I_SendDataNewCdDvdDrive[] | null
204
+ >(() => customizeHardware.value?.virtualHardware?.cdDvdDrives || null)
205
+
206
+ const virtualHardwareCpu = computed<UI_I_SendDataCpu | null>(
207
+ () => customizeHardware.value?.virtualHardware?.cpu || null
208
+ )
209
+ const virtualHardwareMemory = computed<UI_I_SendDataMemory | null>(
210
+ () => customizeHardware.value?.virtualHardware?.memory || null
166
211
  )
167
212
 
168
213
  const customizeHardwareSubmit = ref<null | Function>(null)
@@ -183,11 +228,24 @@ const validateSendData = async (): Promise<void> => {
183
228
  }
184
229
 
185
230
  loadingLocal.value = true
186
- props.validateSendDataFunc(model.value, props.vmId).then((data) => {
187
- loadingLocal.value = false
188
-
189
- !data && emits('update-vm')
190
- })
231
+ props
232
+ .validateSendDataFunc(
233
+ vmSettingsLocal.value,
234
+ virtualHardwareCpu.value,
235
+ virtualHardwareMemory.value,
236
+ customizeHardware.value,
237
+ virtualHardwareNetworks.value,
238
+ virtualHardwareHardDisks.value,
239
+ virtualHardwareCdDvdDrives.value,
240
+ vmName.value,
241
+ localization.value,
242
+ props.vmId
243
+ )
244
+ .then((data) => {
245
+ loadingLocal.value = false
246
+
247
+ !data && emits('update-vm')
248
+ })
191
249
  }
192
250
  </script>
193
251
 
@@ -17,19 +17,29 @@
17
17
  />
18
18
  <div v-if="vmSettings" class="vm-context">
19
19
  <common-vm-actions-common-customize-hardware
20
- v-model="vmSettings"
20
+ v-model:vm-name="vmName"
21
+ v-model:guest-machine-type="vmSettings.guestMachineType"
22
+ v-model:guest-os-family="vmSettings.guestOsFamily"
23
+ v-model:guest-os-version="vmSettings.guestOsVersion"
21
24
  :project="props.project"
22
25
  :storage="vmSettings.storage"
23
- :cd-dvd-drives="vmSettings.disk_devices.filter((disk) => disk.device_type === 'cdrom')"
24
- :hard-disks="vmSettings.disk_devices.filter((disk) => disk.device_type !== 'cdrom')"
25
- :max-memory="props.maxMemory"
26
- :cpu-models="props.cpuModels"
27
- :video-card="vmSettings.video_card"
28
- :usb-controller="vmSettings.usb_controllers"
29
- :pci-devices="vmSettings.passthrough_pci_devices"
30
- :hard-disks-for-edit="vmSettings.disk_devices.filter((disk) => disk.device_type !== 'cdrom')"
26
+ :hard-disks-for-boot-options="props.virtualHardwareHardDisks"
27
+ :cd-dvd-drives-for-boot-options="props.virtualHardwareCdDvdDrives"
28
+ :networks-for-boot-options="props.virtualHardwareNetworks"
29
+ :cd-dvd-drives="vmSettings.cdDvdDrives"
30
+ :hard-disks="vmSettings.hardDisks"
31
+ :networks="vmSettings.networks"
32
+ :max-cpus="vmSettings.maxCpus"
33
+ :max-memory="vmSettings.maxMemory"
34
+ :cpu-models="vmSettings.cpuModels"
35
+ :cpu="vmSettings.cpu"
36
+ :memory="vmSettings.memory"
37
+ :video-card="vmSettings.videoCard"
38
+ :usb-controller="vmSettings.usbController"
39
+ :pci-devices="vmSettings.pciDevices"
40
+ :selected-nav-item="selectedNavItem"
41
+ :hard-disks-for-edit="vmSettings.hardDisks"
31
42
  :options="vmSettings.options"
32
- :selected-nav-item="props.selectedNavItem"
33
43
  :nodes="props.nodes"
34
44
  :files="props.files"
35
45
  :networks-table="props.networksTable"
@@ -50,6 +60,8 @@
50
60
  @show-datastore-child="emits('show-datastore-child', $event)"
51
61
  @get-networks-table="emits('get-networks-table', $event)"
52
62
  @get-pci-devices="emits('get-pci-devices')"
63
+ @change-boot-order="emits('change-boot-order', $event)"
64
+ @send-data="emits('change-customize-hardware', $event)"
53
65
  />
54
66
  </div>
55
67
  </template>
@@ -66,6 +78,12 @@ import type {
66
78
  UI_I_VmSettings,
67
79
  } from '~/lib/models/store/vm/interfaces'
68
80
  import type { UI_I_Localization } from '~/lib/models/interfaces'
81
+ import type { UI_I_SendDataCustomizeHardware } from '~/components/common/vm/actions/common/customizeHardware/lib/models/interfaces'
82
+ import type {
83
+ UI_I_SendDataNewCdDvdDrive,
84
+ UI_I_SendDataNewHardDisk,
85
+ UI_I_SendDataNewNetwork,
86
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
69
87
  import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
70
88
  import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
71
89
  import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
@@ -73,7 +91,9 @@ import type {
73
91
  UI_I_DatastoreTableItem,
74
92
  UI_I_FolderOrFileTreePayload,
75
93
  } from '~/lib/models/store/storage/interfaces'
76
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
94
+ import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
95
+
96
+ const vmName = defineModel<string>('vmName', { required: true })
77
97
 
78
98
  const vmSettings = defineModel<UI_I_VmSettings | null>('vmSettings', {
79
99
  required: true,
@@ -90,9 +110,10 @@ const props = withDefaults(
90
110
  networksTable: UI_I_NetworkTableItem[]
91
111
  selectedNavItem: UI_T_SelectedNavItem
92
112
  vmCpuHelpTextSecond: string
93
- errorValidationFields: UI_I_ErrorValidationField[]
94
- maxMemory: number
95
- cpuModels: UI_I_OptionItem[]
113
+ errorValidationFields: UI_I_ErrorValidationField<string>[]
114
+ virtualHardwareNetworks: UI_I_SendDataNewNetwork[] | null
115
+ virtualHardwareHardDisks: UI_I_SendDataNewHardDisk[] | null
116
+ virtualHardwareCdDvdDrives: UI_I_SendDataNewCdDvdDrive[] | null
96
117
  state?: string | number
97
118
  vmNameOld?: string
98
119
  passthroughDevices?: UI_I_PciDevice[]
@@ -115,12 +136,18 @@ const props = withDefaults(
115
136
  const emits = defineEmits<{
116
137
  (event: 'hide'): void
117
138
  (event: 'validate'): void
139
+ (event: 'update-vm'): void
118
140
  (event: 'get-storage', value: UI_I_TablePayload): void
119
141
  (event: 'get-pci-devices'): void
142
+ (event: 'change-boot-order', value: UI_T_ChangeBootOrder): void
120
143
  (event: 'get-networks-table', value: UI_I_TablePayload): void
121
144
  (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
122
145
  (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
123
146
  (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
147
+ (
148
+ event: 'change-customize-hardware',
149
+ value: UI_I_SendDataCustomizeHardware
150
+ ): void
124
151
  }>()
125
152
 
126
153
  const localization = computed<UI_I_Localization>(() => useLocal())