bfg-common 1.5.707 → 1.5.708

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 (192) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-1.svg +3 -2
  3. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  5. package/assets/img/icons/icons-sprite-light-1.svg +4 -3
  6. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  7. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  8. package/assets/localization/local_be.json +3 -46
  9. package/assets/localization/local_en.json +3 -46
  10. package/assets/localization/local_hy.json +3 -46
  11. package/assets/localization/local_kk.json +3 -46
  12. package/assets/localization/local_ru.json +5 -48
  13. package/assets/localization/local_zh.json +3 -46
  14. package/assets/scss/common/icons/icons-1.scss +1 -1
  15. package/assets/scss/common/icons/icons-2.scss +0 -18
  16. package/assets/scss/common/theme.scss +0 -2
  17. package/assets/scss/components/auth.scss +5 -32
  18. package/components/atoms/TheIcon3.vue +50 -50
  19. package/components/atoms/collapse/CollapseNav.vue +170 -170
  20. package/components/atoms/dropdown/tree/Tree.vue +0 -2
  21. package/components/atoms/perPage/PerPage.vue +58 -58
  22. package/components/atoms/switch/Switch.vue +1 -7
  23. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  24. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  25. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  26. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  27. package/components/atoms/wizard/Wizard.vue +1 -1
  28. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  29. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  30. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  31. package/components/common/diagramMain/port/Port.vue +580 -580
  32. package/components/common/help/navbar/left/lib/utils/constructAccordion.ts +1 -2
  33. package/components/common/help/navbar/right/Right.vue +1 -1
  34. package/components/common/layout/theHeader/TheHeaderNew.vue +315 -315
  35. package/components/common/layout/theHeader/TheHeaderOld.vue +262 -262
  36. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  37. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  38. package/components/common/layout/theHeader/modals/reconnect/ReconnectOld.vue +0 -2
  39. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +21 -12
  40. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +43 -36
  41. package/components/common/layout/theHeader/userMenu/modals/changePassword/Old.vue +2 -0
  42. package/components/common/layout/theHeader/userMenu/modals/changePassword/lib/utils.ts +1 -1
  43. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesNew.vue +0 -13
  44. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +144 -144
  45. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +15 -8
  46. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/{New.vue → ChangeLanguageNew.vue} +2 -1
  47. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/{Old.vue → ChangeLanguageOld.vue} +2 -0
  48. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/DefaultConsole.vue +7 -8
  49. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/{New.vue → DefaultConsoleNew.vue} +3 -3
  50. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/{Old.vue → DefaultConsoleOld.vue} +2 -2
  51. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/Inventory.vue +8 -7
  52. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/{New.vue → InventoryNew.vue} +2 -3
  53. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/{Old.vue → InventoryOld.vue} +2 -2
  54. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  55. package/components/common/layout/theHeader/userMenu/modals/preferences/security/New.vue +12 -277
  56. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Old.vue +56 -30
  57. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Security.vue +6 -65
  58. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/TimeFormat.vue +8 -8
  59. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/{New.vue → TimeFormatNew.vue} +3 -3
  60. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/{Old.vue → TimeFormatOld.vue} +2 -2
  61. package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +7 -8
  62. package/components/common/layout/theHeader/userMenu/modals/preferences/view/{New.vue → ViewNew.vue} +3 -12
  63. package/components/common/layout/theHeader/userMenu/modals/preferences/view/{Old.vue → ViewOld.vue} +2 -2
  64. package/components/common/monitor/advanced/graphView/GraphView.vue +0 -8
  65. package/components/common/monitor/advanced/tools/Tools.vue +1 -5
  66. package/components/common/pages/backups/DetailView.vue +52 -52
  67. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  68. package/components/common/pages/backups/modals/Modals.vue +243 -243
  69. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  70. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  71. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  72. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  73. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  74. package/components/common/pages/hardwareHealth/historyTestimony/tools/Tools.vue +2 -7
  75. package/components/common/pages/hardwareHealth/tableView/TableView.vue +0 -8
  76. package/components/common/pages/hardwareHealth/tableView/lib/config/sensorTable.ts +1 -13
  77. package/components/common/pages/hardwareHealth/toolsPanel/lib/config/actionsPanel.ts +4 -4
  78. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  79. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  80. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  81. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  82. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  83. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  84. package/components/common/qrcode/Qrcode.vue +56 -0
  85. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  86. package/components/common/select/radio/RadioGroup.vue +137 -137
  87. package/components/common/spiceConsole/Drawer.vue +420 -420
  88. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  89. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  90. package/components/common/split/horizontal/New.vue +2 -0
  91. package/components/common/split/vertical/New.vue +1 -2
  92. package/components/common/tools/Actions.vue +207 -207
  93. package/components/common/treeView/TreeView.vue +52 -52
  94. package/components/common/vm/actions/add/New.vue +1 -1
  95. package/components/common/vm/actions/add/Old.vue +1 -1
  96. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  97. package/components/common/vm/actions/clone/new/New.vue +438 -438
  98. package/components/common/vm/actions/clone/old/Old.vue +0 -1
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/New.vue +34 -10
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/Old.vue +37 -15
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +50 -49
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/coresPerSocket/CoresPerSocket.vue +3 -3
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces.ts +1 -3
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +7 -13
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/New.vue +4 -7
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +45 -52
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/Old.vue +8 -5
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIo.vue +3 -1
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/New.vue +2 -2
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/Old.vue +2 -2
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +1 -1
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/New.vue +2 -1
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/Old.vue +2 -1
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/New.vue +1 -1
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +1 -1
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/Old.vue +1 -1
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  120. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  121. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  122. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  123. package/components/common/vm/actions/common/select/options/Old.vue +2 -1
  124. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  125. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  126. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  127. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  128. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  129. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  130. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  131. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  132. package/components/common/wizards/common/compatibility/New.vue +1 -1
  133. package/components/common/wizards/common/compatibility/Old.vue +1 -1
  134. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  135. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  136. package/components/common/wizards/common/steps/name/New.vue +221 -221
  137. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  138. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  139. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  140. package/components/common/wizards/datastore/add/Add.vue +228 -228
  141. package/components/common/wizards/datastore/add/lib/config/createDatastore.ts +0 -1
  142. package/components/common/wizards/datastore/add/lib/models/interfaces.ts +0 -1
  143. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  144. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +0 -5
  145. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceOld.vue +0 -5
  146. package/components/common/wizards/datastore/add/steps/nameAndDevice/table/old/Old.vue +3 -2
  147. package/components/common/wizards/datastore/add/steps/readyComplete/lib/config/propertiesDetails.ts +1 -8
  148. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  149. package/components/common/wizards/vm/migrate/lib/models/enums.ts +2 -2
  150. package/components/common/wizards/vm/migrate/steps/selectStorage/SelectStorage.vue +4 -4
  151. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/lib/config/diskTable.ts +2 -6
  152. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/old/lib/config/diskTable.ts +12 -18
  153. package/composables/useAppVersion.ts +21 -21
  154. package/composables/useEnvLanguage.ts +8 -7
  155. package/composables/useLocal.ts +6 -6
  156. package/composables/useLocalCommon.ts +39 -39
  157. package/lib/models/interfaces.ts +0 -1
  158. package/package.json +4 -3
  159. package/plugins/console.ts +21 -21
  160. package/plugins/date.ts +37 -14
  161. package/plugins/mouse.ts +21 -21
  162. package/plugins/panelStates.ts +70 -70
  163. package/plugins/text.ts +59 -59
  164. package/public/spice-console/application/clientgui.js +854 -854
  165. package/public/spice-console/application/packetfactory.js +211 -211
  166. package/public/spice-console/application/virtualmouse.js +147 -147
  167. package/public/spice-console/lib/images/bitmap.js +203 -203
  168. package/public/spice-console/network/spicechannel.js +440 -440
  169. package/public/spice-console/process/cursorprocess.js +128 -128
  170. package/public/spice-console/process/inputprocess.js +227 -227
  171. package/public/spice-console/process/mainprocess.js +212 -212
  172. package/public/spice-console/run.js +210 -210
  173. package/store/main/getters.ts +2 -2
  174. package/store/main/mutations.ts +7 -7
  175. package/store/main/state.ts +7 -7
  176. package/store/tasks/mappers/recentTasks.ts +123 -123
  177. package/store/tasks/mutations.ts +82 -82
  178. package/components/common/certificate/Certificate.vue +0 -27
  179. package/components/common/certificate/CertificateInfo.vue +0 -139
  180. package/components/common/certificate/Tools.vue +0 -59
  181. package/components/common/certificate/lib/config/tabsPannel.ts +0 -22
  182. package/components/common/certificate/lib/models/interfaces.ts +0 -9
  183. package/components/common/certificate/lib/models/types.ts +0 -1
  184. package/components/common/certificate/modals/renew/New.vue +0 -64
  185. package/components/common/certificate/modals/renew/Old.vue +0 -122
  186. package/components/common/certificate/modals/renew/Renew.vue +0 -67
  187. package/components/common/pages/auth/TheFooter.vue +0 -104
  188. package/components/common/pages/files/lib/models/enums.ts +0 -10
  189. package/components/common/qr/Qr.vue +0 -69
  190. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/AdvancedOptions.vue +0 -43
  191. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +0 -114
  192. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/Old.vue +0 -114
@@ -29,27 +29,23 @@ import type {
29
29
  import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
30
30
  import { pciDeviceTypeOptionsFunc } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/lib/config/options'
31
31
 
32
- const address = defineModel<string>('address')
33
- const vendorName = defineModel<string>('vendorName')
34
- const className = defineModel<string>('className')
35
- const deviceName = defineModel<string>('deviceName')
36
- const mediatedDevice = defineModel<boolean>('mediatedDevice')
37
- const mediatedDeviceUuid = defineModel<string>('mediatedDeviceUuid')
38
-
39
32
  const props = withDefaults(
40
33
  defineProps<{
41
34
  index: number
35
+ pciDevice: UI_I_SendDataNewPciDevice
42
36
  passthroughDevices: UI_I_PciDevice[]
43
37
  mediatedDevices: UI_I_MediatedDevice[]
44
38
  type: UI_T_PciDeviceType
45
39
  isEdit: boolean
46
40
  state?: string | number
41
+ // errorValidationFields: UI_I_ErrorValidationField<string>[]
47
42
  }>(),
48
43
  {
49
44
  state: undefined,
50
45
  }
51
46
  )
52
47
  const emits = defineEmits<{
48
+ (event: 'send-data', value: UI_I_SendDataNewPciDevice): void
53
49
  (event: 'remove'): void
54
50
  }>()
55
51
 
@@ -68,8 +64,7 @@ const isRunning = computed<boolean>(() => {
68
64
  })
69
65
 
70
66
  const isRemovable = computed<boolean>(() => {
71
- // return !props.isEdit || !isRunning.value
72
- return props.type !== 'edit' || !isRunning.value
67
+ return !props.isEdit || !isRunning.value
73
68
  })
74
69
 
75
70
  const label = computed<string>(() => {
@@ -80,17 +75,16 @@ const label = computed<string>(() => {
80
75
  })
81
76
 
82
77
  const selectedLabel = computed<string>(() => {
83
- if (address.value) {
84
- return `${address.value} | ${deviceName.value}`
78
+ if (props.pciDevice.address) {
79
+ return `${props.pciDevice.address} | ${props.pciDevice.device_name}`
85
80
  }
86
81
  switch (selectedType.value.value) {
87
82
  case 'direct_path_io':
88
- return directPathIo.value
89
- // return `${directPathIo.value?.address} | ${directPathIo.value?.device_name}`
83
+ return `${directPathIo.value?.address} | ${directPathIo.value?.device_name}`
90
84
  case 'dynamic_direct_path_io':
91
85
  return `${dynamicDirectPathIo.value?.address} | ${dynamicDirectPathIo.value?.device_name}`
92
86
  default:
93
- return nvidiaGridProfile.value?.text || ''
87
+ return nvidiaGridProfile.value?.text
94
88
  }
95
89
  })
96
90
 
@@ -105,43 +99,47 @@ pciDeviceTypeOptions.value.forEach((option) => {
105
99
  if (!option.disabled) selectedType.value = option
106
100
  })
107
101
 
108
- const directPathIo = ref<string>('')
102
+ const directPathIo = ref<string>('') /// TODO
109
103
  const dynamicDirectPathIo = ref<UI_I_PciDevice>(props.passthroughDevices[0])
110
104
  const nvidiaGridProfile = ref<UI_I_Option | null>(null)
111
105
 
112
- const setData = (): void => {
113
- const passthroughDevice = props.passthroughDevices.find((device) => {
114
- return (
115
- device.class_name + '_' + device.address ===
116
- className.value + '_' + address.value
117
- )
118
- })
119
- if (passthroughDevice) {
120
- dynamicDirectPathIo.value = passthroughDevice
121
- }
106
+ watch(
107
+ [() => props.pciDevice, () => props.mediatedDevices],
108
+ ([newValue1]) => {
109
+ // const passthroughDevice = props.passthroughDevices.find(
110
+ // (item) => item.address === newValue.address
111
+ // )
112
+ // passthroughDevice && (directPathIo.value = passthroughDevice) // Todo change
113
+ if (newValue1) {
114
+ // directPathIo.value = newValue1
115
+ const passthroughDevice = props.passthroughDevices.find((device) => {
116
+ return (
117
+ device.class_name + '_' + device.address ===
118
+ newValue1.class_name + '_' + newValue1.address
119
+ )
120
+ })
121
+ if (passthroughDevice) {
122
+ dynamicDirectPathIo.value = passthroughDevice
123
+ }
122
124
 
123
- const mediatedDevice = props.mediatedDevices.find((device) => {
124
- return (
125
- device.profile_name + '_' + device.root_device ===
126
- className.value + '_' + address.value
127
- )
128
- })
129
- if (mediatedDevice) {
130
- nvidiaGridProfile.value = {
131
- text: mediatedDevice.human_readable,
132
- value: mediatedDevice.profile_name + '_' + mediatedDevice.root_device,
125
+ const mediatedDevice = props.mediatedDevices.find((device) => {
126
+ return (
127
+ device.profile_name + '_' + device.root_device ===
128
+ newValue1.class_name + '_' + newValue1.address
129
+ )
130
+ })
131
+ if (mediatedDevice) {
132
+ nvidiaGridProfile.value = {
133
+ text: mediatedDevice.human_readable,
134
+ value: mediatedDevice.profile_name + '_' + mediatedDevice.root_device,
135
+ }
136
+
137
+ selectedType.value =
138
+ pciDeviceTypeOptions.value.find(
139
+ (option) => option.value === 'nvidia_grid'
140
+ ) || selectedType.value
141
+ }
133
142
  }
134
-
135
- selectedType.value =
136
- pciDeviceTypeOptions.value.find(
137
- (option) => option.value === 'nvidia_grid'
138
- ) || selectedType.value
139
- }
140
- }
141
- watch(
142
- () => props.mediatedDevices,
143
- () => {
144
- setData() // for edit
145
143
  },
146
144
  { immediate: true, deep: true }
147
145
  )
@@ -192,12 +190,7 @@ const sendData = computed<UI_I_SendDataNewPciDevice>(() => {
192
190
  watch(
193
191
  sendData,
194
192
  (newValue) => {
195
- address.value = newValue.address
196
- vendorName.value = newValue.vendor_name
197
- className.value = newValue.class_name
198
- deviceName.value = newValue.device_name
199
- mediatedDevice.value = newValue.mediated_device
200
- mediatedDeviceUuid.value = newValue.mediated_device_uuid || ''
193
+ emits('send-data', props.type === 'edit' ? props.pciDevice : newValue)
201
194
  },
202
195
  { immediate: true }
203
196
  )
@@ -56,7 +56,6 @@
56
56
  </template>
57
57
 
58
58
  <script setup lang="ts">
59
- import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
60
59
  import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
61
60
  import type { UI_T_PciDeviceType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
62
61
  import type {
@@ -67,13 +66,13 @@ import type {
67
66
  const selectedType = defineModel<UI_I_OptionItem>('selectedType', {
68
67
  required: true,
69
68
  })
70
- const directPathIo = defineModel<string>('directPathIo', {
69
+ const directPathIo = defineModel<UI_I_PciDevice>('directPathIo', {
71
70
  required: true,
72
71
  })
73
- const dynamicDirectPathIo = defineModel<UI_I_PciDevice>('dynamicDirectPathIo', {
72
+ const dynamicDirectPathIo = defineModel<string>('dynamicDirectPathIo', {
74
73
  required: true,
75
74
  })
76
- const nvidiaGridProfile = defineModel<UI_I_Option | null>('nvidiaGridProfile', {
75
+ const nvidiaGridProfile = defineModel<string>('nvidiaGridProfile', {
77
76
  required: true,
78
77
  })
79
78
 
@@ -92,4 +91,8 @@ const emits = defineEmits<{
92
91
  }>()
93
92
  </script>
94
93
 
95
- <style scoped lang="scss"></style>
94
+ <style scoped lang="scss">
95
+ #network-connect {
96
+ margin-right: 4px;
97
+ }
98
+ </style>
@@ -7,7 +7,9 @@
7
7
  </template>
8
8
 
9
9
  <script lang="ts" setup>
10
- const model = defineModel<string>({ required: true })
10
+ import type { UI_I_ConfigureAllPciDevicesItem } from '~/lib/models/store/host/interfaces'
11
+
12
+ const model = defineModel<UI_I_ConfigureAllPciDevicesItem>({ required: true })
11
13
 
12
14
  const props = defineProps<{
13
15
  pciDeviceIndex: number
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <ui-stack-block
3
- :has-children="false"
4
- :test-id="`pci-device-direct-path-io-stack-block-${props.pciDeviceIndex}`"
3
+ :has-children="false"
4
+ :test-id="`pci-device-direct-path-io-stack-block-${props.pciDeviceIndex}`"
5
5
  >
6
6
  <template #stackBlockKey>
7
7
  {{ localization.common.pciDevice }}
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <div>
3
3
  <atoms-stack-block
4
- :has-children="false"
5
- :test-id="`pci-device-direct-path-io-stack-block-${props.pciDeviceIndex}`"
4
+ :has-children="false"
5
+ :test-id="`pci-device-direct-path-io-stack-block-${props.pciDeviceIndex}`"
6
6
  >
7
7
  <template #stackBlockContent>
8
8
  <input
@@ -10,7 +10,7 @@
10
10
  <script lang="ts" setup>
11
11
  import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
12
12
 
13
- const model = defineModel<UI_I_PciDevice>({ required: true })
13
+ const model = defineModel<string>({ required: true })
14
14
 
15
15
  const props = defineProps<{
16
16
  pciDeviceIndex: number
@@ -21,9 +21,10 @@
21
21
 
22
22
  <script lang="ts" setup>
23
23
  import type { UI_I_Localization } from '~/lib/models/interfaces'
24
+ import type { UI_I_ConfigureAllPciDevicesItem } from '~/lib/models/store/host/interfaces'
24
25
  import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
25
26
 
26
- const model = defineModel<UI_I_PciDevice>()
27
+ const model = defineModel<UI_I_ConfigureAllPciDevicesItem>()
27
28
 
28
29
  const props = defineProps<{
29
30
  pciDeviceIndex: number
@@ -28,9 +28,10 @@
28
28
 
29
29
  <script lang="ts" setup>
30
30
  import type { UI_I_Localization } from '~/lib/models/interfaces'
31
+ import type { UI_I_ConfigureAllPciDevicesItem } from '~/lib/models/store/host/interfaces'
31
32
  import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
32
33
 
33
- const model = defineModel<UI_I_PciDevice>()
34
+ const model = defineModel<UI_I_ConfigureAllPciDevicesItem>()
34
35
 
35
36
  const props = defineProps<{
36
37
  pciDeviceIndex: number
@@ -27,7 +27,7 @@
27
27
  import type { UI_I_Localization } from '~/lib/models/interfaces'
28
28
  import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
29
29
 
30
- const model = defineModel<UI_I_Option | null>({ required: true })
30
+ const model = defineModel<string>({ required: true })
31
31
 
32
32
  const props = defineProps<{
33
33
  options: UI_I_Option[]
@@ -11,7 +11,7 @@
11
11
  import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
12
12
  import type { UI_I_MediatedDevice } from '~/lib/models/store/vm/interfaces'
13
13
 
14
- const model = defineModel<UI_I_Option | null>({ required: true })
14
+ const model = defineModel<string>({ required: true })
15
15
 
16
16
  const props = defineProps<{
17
17
  pciDeviceIndex: number
@@ -42,7 +42,7 @@
42
42
  import type { UI_I_Localization } from '~/lib/models/interfaces'
43
43
  import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
44
44
 
45
- const model = defineModel<UI_I_Option | null>({ required: true })
45
+ const model = defineModel<string>({ required: true })
46
46
 
47
47
  const props = defineProps<{
48
48
  options: UI_I_Option[]
@@ -1,156 +1,156 @@
1
- <template>
2
- <div>
3
- <component
4
- :is="currentComponent"
5
- :boot-list="bootList"
6
- :is-disabled="props.isDisabled"
7
- @change-order="onChangeOrder"
8
- @update-boot-list="onBootListUpdate"
9
- />
10
- </div>
11
- </template>
12
-
13
- <script setup lang="ts">
14
- import type { UI_I_BootItem } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/lib/models/interfaces'
15
- import type { UI_I_DropEvent } from '~/components/atoms/list/dragDropList/lib/config/events'
16
- import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
17
-
18
- const model = defineModel<UI_I_CreateVmData>({ required: true })
19
-
20
- const props = defineProps<{
21
- isDisabled: boolean
22
- }>()
23
-
24
- const { $store }: any = useNuxtApp()
25
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
26
- const currentComponent = computed(() =>
27
- isNewView.value
28
- ? defineAsyncComponent(() => import('./New.vue'))
29
- : defineAsyncComponent(() => import('./Old.vue'))
30
- )
31
-
32
- const bootList = ref<UI_I_BootItem[]>([])
33
-
34
- // Используем computed для автоматического обновления bootList при изменении модели
35
- const hardDisksAndNetworks = computed(() => [
36
- model.value.disk_devices?.filter((disk) => disk.device_type !== 'cdrom') ||
37
- [],
38
- model.value.disk_devices?.filter((disk) => disk.device_type === 'cdrom') ||
39
- [],
40
- model.value.network_devices || [],
41
- ])
42
-
43
- // Watcher для обновления bootList при изменении модели
44
- watch(
45
- hardDisksAndNetworks,
46
- ([hardDisks, cdDvdDrives, networks]) => {
47
- const hardDiskItems: UI_I_BootItem[] = hardDisks.map((item, index) => {
48
- const order = item.boot_order || 0
49
- return {
50
- order,
51
- isChecked: !!order,
52
- text: `disk${index}`,
53
- iconClassName: 'icon-disk',
54
- type: 'disk' as const,
55
- name: `${item.source}_${index}`,
56
- testId: `select-disk-value-${index + 1}`,
57
- }
58
- })
59
-
60
- const cdDvdDriveItems: UI_I_BootItem[] = cdDvdDrives.map((item, index) => {
61
- const order = item.boot_order || 0
62
- return {
63
- order,
64
- isChecked: !!order,
65
- text: `cdrom${index}`,
66
- iconClassName: 'icon-disk',
67
- type: 'cdDvd' as const,
68
- name: `${item.source}_${hardDisks.length + index}`,
69
- testId: `select-cd-dvd-value-${index + 1}`,
70
- }
71
- })
72
-
73
- const networkItems: UI_I_BootItem[] = networks.map((item, index) => {
74
- const order = item.boot_order || 0
75
- return {
76
- order,
77
- isChecked: !!order,
78
- text: item.mac || 'undefined',
79
- iconClassName: 'vsphere-icon-network',
80
- type: 'nic' as const,
81
- name: `${item.network}_${index}`,
82
- testId: `select-nic-value-${index + 1}`,
83
- }
84
- })
85
-
86
- bootList.value = [...hardDiskItems, ...cdDvdDriveItems, ...networkItems]
87
- .filter((item) => item.order >= 0)
88
- .sort((a, b) => a.order - b.order)
89
- },
90
- { deep: true, immediate: true }
91
- )
92
-
93
- // Обработчик изменения порядка через drag & drop
94
- const onChangeOrder = (event: UI_I_DropEvent): void => {
95
- const updatedList = [...bootList.value]
96
- const movedItem = updatedList.find((item) => item.name === event.target.name)
97
-
98
- if (!movedItem) return
99
-
100
- // Удаляем элемент из текущей позиции
101
- const fromIndex = updatedList.indexOf(movedItem)
102
- updatedList.splice(fromIndex, 1)
103
-
104
- // Вставляем элемент в новую позицию
105
- updatedList.splice(event.toPosition, 0, movedItem)
106
-
107
- // Обновляем порядок всех элементов
108
- updatedList.forEach((item, index) => {
109
- item.order = index + 1
110
- })
111
-
112
- bootList.value = updatedList
113
- updateModelFromBootList(updatedList)
114
- }
115
-
116
- // Обработчик обновления bootList (при изменении чекбоксов)
117
- const onBootListUpdate = (updatedBootList: UI_I_BootItem[]): void => {
118
- bootList.value = updatedBootList
119
- updateModelFromBootList(updatedBootList)
120
- }
121
-
122
- // Функция для обновления модели на основе bootList
123
- const updateModelFromBootList = (bootItems: UI_I_BootItem[]): void => {
124
- // Сначала сбрасываем все boot_order
125
- model.value.disk_devices?.forEach((disk) => {
126
- disk.boot_order = 0
127
- })
128
- model.value.network_devices?.forEach((network) => {
129
- network.boot_order = 0
130
- })
131
-
132
- // Затем устанавливаем boot_order только для выбранных элементов
133
- let currentOrder = 1
134
- bootItems.forEach((bootItem) => {
135
- if (!bootItem.isChecked) return
136
-
137
- if (bootItem.type === 'nic') {
138
- const [networkName, indexStr] = bootItem.name.split('_')
139
- const index = parseInt(indexStr, 10)
140
- const network = model.value.network_devices?.[index]
141
- if (network && network.network === networkName) {
142
- network.boot_order = currentOrder++
143
- }
144
- } else {
145
- const [source, indexStr] = bootItem.name.split('_')
146
- const index = parseInt(indexStr, 10)
147
- const disk = model.value.disk_devices?.[index]
148
- if (disk && disk.source+'' === source) {
149
- disk.boot_order = currentOrder++
150
- }
151
- }
152
- })
153
- }
154
- </script>
155
-
156
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <div>
3
+ <component
4
+ :is="currentComponent"
5
+ :boot-list="bootList"
6
+ :is-disabled="props.isDisabled"
7
+ @change-order="onChangeOrder"
8
+ @update-boot-list="onBootListUpdate"
9
+ />
10
+ </div>
11
+ </template>
12
+
13
+ <script setup lang="ts">
14
+ import type { UI_I_BootItem } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/lib/models/interfaces'
15
+ import type { UI_I_DropEvent } from '~/components/atoms/list/dragDropList/lib/config/events'
16
+ import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
17
+
18
+ const model = defineModel<UI_I_CreateVmData>({ required: true })
19
+
20
+ const props = defineProps<{
21
+ isDisabled: boolean
22
+ }>()
23
+
24
+ const { $store }: any = useNuxtApp()
25
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
26
+ const currentComponent = computed(() =>
27
+ isNewView.value
28
+ ? defineAsyncComponent(() => import('./New.vue'))
29
+ : defineAsyncComponent(() => import('./Old.vue'))
30
+ )
31
+
32
+ const bootList = ref<UI_I_BootItem[]>([])
33
+
34
+ // Используем computed для автоматического обновления bootList при изменении модели
35
+ const hardDisksAndNetworks = computed(() => [
36
+ model.value.disk_devices?.filter((disk) => disk.device_type !== 'cdrom') ||
37
+ [],
38
+ model.value.disk_devices?.filter((disk) => disk.device_type === 'cdrom') ||
39
+ [],
40
+ model.value.network_devices || [],
41
+ ])
42
+
43
+ // Watcher для обновления bootList при изменении модели
44
+ watch(
45
+ hardDisksAndNetworks,
46
+ ([hardDisks, cdDvdDrives, networks]) => {
47
+ const hardDiskItems: UI_I_BootItem[] = hardDisks.map((item, index) => {
48
+ const order = item.boot_order || 0
49
+ return {
50
+ order,
51
+ isChecked: !!order,
52
+ text: `disk${index}`,
53
+ iconClassName: 'icon-disk',
54
+ type: 'disk' as const,
55
+ name: `${item.source}_${index}`,
56
+ testId: `select-disk-value-${index + 1}`,
57
+ }
58
+ })
59
+
60
+ const cdDvdDriveItems: UI_I_BootItem[] = cdDvdDrives.map((item, index) => {
61
+ const order = item.boot_order || 0
62
+ return {
63
+ order,
64
+ isChecked: !!order,
65
+ text: `cdrom${index}`,
66
+ iconClassName: 'icon-disk',
67
+ type: 'cdDvd' as const,
68
+ name: `${item.source}_${hardDisks.length + index}`,
69
+ testId: `select-cd-dvd-value-${index + 1}`,
70
+ }
71
+ })
72
+
73
+ const networkItems: UI_I_BootItem[] = networks.map((item, index) => {
74
+ const order = item.boot_order || 0
75
+ return {
76
+ order,
77
+ isChecked: !!order,
78
+ text: item.mac || 'undefined',
79
+ iconClassName: 'vsphere-icon-network',
80
+ type: 'nic' as const,
81
+ name: `${item.network}_${index}`,
82
+ testId: `select-nic-value-${index + 1}`,
83
+ }
84
+ })
85
+
86
+ bootList.value = [...hardDiskItems, ...cdDvdDriveItems, ...networkItems]
87
+ .filter((item) => item.order >= 0)
88
+ .sort((a, b) => a.order - b.order)
89
+ },
90
+ { deep: true, immediate: true }
91
+ )
92
+
93
+ // Обработчик изменения порядка через drag & drop
94
+ const onChangeOrder = (event: UI_I_DropEvent): void => {
95
+ const updatedList = [...bootList.value]
96
+ const movedItem = updatedList.find((item) => item.name === event.target.name)
97
+
98
+ if (!movedItem) return
99
+
100
+ // Удаляем элемент из текущей позиции
101
+ const fromIndex = updatedList.indexOf(movedItem)
102
+ updatedList.splice(fromIndex, 1)
103
+
104
+ // Вставляем элемент в новую позицию
105
+ updatedList.splice(event.toPosition, 0, movedItem)
106
+
107
+ // Обновляем порядок всех элементов
108
+ updatedList.forEach((item, index) => {
109
+ item.order = index + 1
110
+ })
111
+
112
+ bootList.value = updatedList
113
+ updateModelFromBootList(updatedList)
114
+ }
115
+
116
+ // Обработчик обновления bootList (при изменении чекбоксов)
117
+ const onBootListUpdate = (updatedBootList: UI_I_BootItem[]): void => {
118
+ bootList.value = updatedBootList
119
+ updateModelFromBootList(updatedBootList)
120
+ }
121
+
122
+ // Функция для обновления модели на основе bootList
123
+ const updateModelFromBootList = (bootItems: UI_I_BootItem[]): void => {
124
+ // Сначала сбрасываем все boot_order
125
+ model.value.disk_devices?.forEach((disk) => {
126
+ disk.boot_order = 0
127
+ })
128
+ model.value.network_devices?.forEach((network) => {
129
+ network.boot_order = 0
130
+ })
131
+
132
+ // Затем устанавливаем boot_order только для выбранных элементов
133
+ let currentOrder = 1
134
+ bootItems.forEach((bootItem) => {
135
+ if (!bootItem.isChecked) return
136
+
137
+ if (bootItem.type === 'nic') {
138
+ const [networkName, indexStr] = bootItem.name.split('_')
139
+ const index = parseInt(indexStr, 10)
140
+ const network = model.value.network_devices?.[index]
141
+ if (network && network.network === networkName) {
142
+ network.boot_order = currentOrder++
143
+ }
144
+ } else {
145
+ const [source, indexStr] = bootItem.name.split('_')
146
+ const index = parseInt(indexStr, 10)
147
+ const disk = model.value.disk_devices?.[index]
148
+ if (disk && disk.source+'' === source) {
149
+ disk.boot_order = currentOrder++
150
+ }
151
+ }
152
+ })
153
+ }
154
+ </script>
155
+
156
+ <style scoped lang="scss"></style>