bfg-common 1.5.708 → 1.5.709

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 (197) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-1.svg +2 -3
  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 +3 -4
  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 +46 -3
  9. package/assets/localization/local_en.json +46 -3
  10. package/assets/localization/local_hy.json +46 -3
  11. package/assets/localization/local_kk.json +46 -3
  12. package/assets/localization/local_ru.json +48 -5
  13. package/assets/localization/local_zh.json +46 -3
  14. package/assets/scss/common/icons/icons-1.scss +1 -1
  15. package/assets/scss/common/icons/icons-2.scss +18 -0
  16. package/assets/scss/common/theme.scss +2 -0
  17. package/assets/scss/components/auth.scss +32 -5
  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 +2 -0
  21. package/components/atoms/perPage/PerPage.vue +58 -58
  22. package/components/atoms/switch/Switch.vue +7 -1
  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/certificate/Certificate.vue +27 -0
  31. package/components/common/certificate/CertificateInfo.vue +139 -0
  32. package/components/common/certificate/Tools.vue +59 -0
  33. package/components/common/certificate/lib/config/tabsPannel.ts +22 -0
  34. package/components/common/certificate/lib/models/interfaces.ts +9 -0
  35. package/components/common/certificate/lib/models/types.ts +1 -0
  36. package/components/common/certificate/modals/renew/New.vue +64 -0
  37. package/components/common/certificate/modals/renew/Old.vue +122 -0
  38. package/components/common/certificate/modals/renew/Renew.vue +67 -0
  39. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  40. package/components/common/diagramMain/port/Port.vue +580 -580
  41. package/components/common/help/navbar/left/lib/utils/constructAccordion.ts +2 -1
  42. package/components/common/help/navbar/right/Right.vue +86 -23
  43. package/components/common/layout/theHeader/TheHeader.vue +186 -191
  44. package/components/common/layout/theHeader/TheHeaderNew.vue +3 -7
  45. package/components/common/layout/theHeader/TheHeaderOld.vue +3 -7
  46. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  47. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  48. package/components/common/layout/theHeader/modals/reconnect/ReconnectOld.vue +2 -0
  49. package/components/common/layout/theHeader/userMenu/UserMenu.vue +109 -113
  50. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +12 -21
  51. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +36 -43
  52. package/components/common/layout/theHeader/userMenu/modals/changePassword/Old.vue +0 -2
  53. package/components/common/layout/theHeader/userMenu/modals/changePassword/lib/utils.ts +1 -1
  54. package/components/common/layout/theHeader/userMenu/modals/preferences/Preferences.vue +81 -86
  55. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesNew.vue +113 -102
  56. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +2 -4
  57. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/ChangeLanguage.vue +114 -115
  58. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/{ChangeLanguageNew.vue → New.vue} +65 -89
  59. package/components/common/layout/theHeader/userMenu/modals/preferences/changeLanguage/{ChangeLanguageOld.vue → Old.vue} +66 -91
  60. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/DefaultConsole.vue +8 -7
  61. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/{DefaultConsoleNew.vue → New.vue} +3 -3
  62. package/components/common/layout/theHeader/userMenu/modals/preferences/defaultConsole/{DefaultConsoleOld.vue → Old.vue} +2 -2
  63. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/Inventory.vue +7 -8
  64. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/{InventoryNew.vue → New.vue} +3 -2
  65. package/components/common/layout/theHeader/userMenu/modals/preferences/inventory/{InventoryOld.vue → Old.vue} +2 -2
  66. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  67. package/components/common/layout/theHeader/userMenu/modals/preferences/security/New.vue +277 -12
  68. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Old.vue +30 -56
  69. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Security.vue +65 -6
  70. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/{TimeFormatNew.vue → New.vue} +3 -3
  71. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/{TimeFormatOld.vue → Old.vue} +2 -2
  72. package/components/common/layout/theHeader/userMenu/modals/preferences/timeFormat/TimeFormat.vue +8 -8
  73. package/components/common/layout/theHeader/userMenu/modals/preferences/view/{ViewNew.vue → New.vue} +12 -3
  74. package/components/common/layout/theHeader/userMenu/modals/preferences/view/{ViewOld.vue → Old.vue} +2 -2
  75. package/components/common/layout/theHeader/userMenu/modals/preferences/view/View.vue +33 -45
  76. package/components/common/monitor/advanced/graphView/GraphView.vue +8 -0
  77. package/components/common/monitor/advanced/tools/Tools.vue +5 -1
  78. package/components/common/pages/auth/TheFooter.vue +104 -0
  79. package/components/common/pages/backups/DetailView.vue +52 -52
  80. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  81. package/components/common/pages/backups/modals/Modals.vue +243 -243
  82. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  83. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  84. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  85. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  86. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  87. package/components/common/pages/files/lib/models/enums.ts +10 -0
  88. package/components/common/pages/hardwareHealth/historyTestimony/tools/Tools.vue +7 -2
  89. package/components/common/pages/hardwareHealth/tableView/TableView.vue +8 -0
  90. package/components/common/pages/hardwareHealth/tableView/lib/config/sensorTable.ts +13 -1
  91. package/components/common/pages/hardwareHealth/toolsPanel/lib/config/actionsPanel.ts +4 -4
  92. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  93. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  94. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  95. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  96. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  97. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  98. package/components/common/pages/tasks/table/expandDetails/ExpandDetails.vue +1 -1
  99. package/components/common/qr/Qr.vue +69 -0
  100. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  101. package/components/common/select/radio/RadioGroup.vue +137 -137
  102. package/components/common/selectLanguage/SelectLanguage.vue +200 -200
  103. package/components/common/spiceConsole/Drawer.vue +420 -420
  104. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  105. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  106. package/components/common/split/horizontal/New.vue +0 -2
  107. package/components/common/split/vertical/New.vue +2 -1
  108. package/components/common/tools/Actions.vue +207 -207
  109. package/components/common/treeView/TreeView.vue +52 -52
  110. package/components/common/vm/actions/add/New.vue +1 -1
  111. package/components/common/vm/actions/add/Old.vue +1 -1
  112. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  113. package/components/common/vm/actions/clone/new/New.vue +438 -438
  114. package/components/common/vm/actions/clone/old/Old.vue +1 -0
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/New.vue +10 -34
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/Old.vue +15 -37
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +49 -50
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/coresPerSocket/CoresPerSocket.vue +1 -1
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces.ts +3 -1
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +13 -7
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/New.vue +7 -4
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +52 -45
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/Old.vue +5 -8
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIo.vue +1 -3
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/New.vue +2 -2
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/Old.vue +2 -2
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +1 -1
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/New.vue +1 -2
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/Old.vue +1 -2
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/New.vue +1 -1
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +1 -1
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/Old.vue +1 -1
  135. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  136. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  137. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  138. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  139. package/components/common/vm/actions/common/select/options/Old.vue +1 -2
  140. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  141. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  142. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  143. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  144. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  145. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  146. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  147. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  148. package/components/common/wizards/common/compatibility/New.vue +1 -1
  149. package/components/common/wizards/common/compatibility/Old.vue +1 -1
  150. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  151. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  152. package/components/common/wizards/common/steps/name/New.vue +221 -221
  153. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  154. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  155. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  156. package/components/common/wizards/datastore/add/Add.vue +228 -228
  157. package/components/common/wizards/datastore/add/lib/config/createDatastore.ts +1 -0
  158. package/components/common/wizards/datastore/add/lib/models/interfaces.ts +1 -0
  159. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  160. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +5 -0
  161. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceOld.vue +5 -0
  162. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/AdvancedOptions.vue +43 -0
  163. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +114 -0
  164. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/Old.vue +114 -0
  165. package/components/common/wizards/datastore/add/steps/nameAndDevice/table/old/Old.vue +2 -3
  166. package/components/common/wizards/datastore/add/steps/readyComplete/lib/config/propertiesDetails.ts +8 -1
  167. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  168. package/components/common/wizards/vm/migrate/lib/models/enums.ts +2 -2
  169. package/components/common/wizards/vm/migrate/steps/selectStorage/SelectStorage.vue +4 -4
  170. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/new/lib/config/diskTable.ts +6 -2
  171. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/old/lib/config/diskTable.ts +18 -12
  172. package/composables/useAppVersion.ts +21 -21
  173. package/composables/useEnvLanguage.ts +7 -8
  174. package/composables/useLocal.ts +6 -6
  175. package/composables/useLocalCommon.ts +39 -39
  176. package/lib/models/interfaces.ts +1 -0
  177. package/package.json +3 -4
  178. package/plugins/console.ts +21 -21
  179. package/plugins/date.ts +14 -37
  180. package/plugins/mouse.ts +21 -21
  181. package/plugins/panelStates.ts +70 -70
  182. package/plugins/text.ts +59 -59
  183. package/public/spice-console/application/clientgui.js +854 -854
  184. package/public/spice-console/application/packetfactory.js +211 -211
  185. package/public/spice-console/application/virtualmouse.js +147 -147
  186. package/public/spice-console/lib/images/bitmap.js +203 -203
  187. package/public/spice-console/network/spicechannel.js +440 -440
  188. package/public/spice-console/process/cursorprocess.js +128 -128
  189. package/public/spice-console/process/inputprocess.js +227 -227
  190. package/public/spice-console/process/mainprocess.js +212 -212
  191. package/public/spice-console/run.js +210 -210
  192. package/store/main/getters.ts +2 -2
  193. package/store/main/mutations.ts +7 -7
  194. package/store/main/state.ts +7 -7
  195. package/store/tasks/mappers/recentTasks.ts +123 -123
  196. package/store/tasks/mutations.ts +82 -82
  197. package/components/common/qrcode/Qrcode.vue +0 -56
@@ -29,23 +29,27 @@ 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
+
32
39
  const props = withDefaults(
33
40
  defineProps<{
34
41
  index: number
35
- pciDevice: UI_I_SendDataNewPciDevice
36
42
  passthroughDevices: UI_I_PciDevice[]
37
43
  mediatedDevices: UI_I_MediatedDevice[]
38
44
  type: UI_T_PciDeviceType
39
45
  isEdit: boolean
40
46
  state?: string | number
41
- // errorValidationFields: UI_I_ErrorValidationField<string>[]
42
47
  }>(),
43
48
  {
44
49
  state: undefined,
45
50
  }
46
51
  )
47
52
  const emits = defineEmits<{
48
- (event: 'send-data', value: UI_I_SendDataNewPciDevice): void
49
53
  (event: 'remove'): void
50
54
  }>()
51
55
 
@@ -64,7 +68,8 @@ const isRunning = computed<boolean>(() => {
64
68
  })
65
69
 
66
70
  const isRemovable = computed<boolean>(() => {
67
- return !props.isEdit || !isRunning.value
71
+ // return !props.isEdit || !isRunning.value
72
+ return props.type !== 'edit' || !isRunning.value
68
73
  })
69
74
 
70
75
  const label = computed<string>(() => {
@@ -75,16 +80,17 @@ const label = computed<string>(() => {
75
80
  })
76
81
 
77
82
  const selectedLabel = computed<string>(() => {
78
- if (props.pciDevice.address) {
79
- return `${props.pciDevice.address} | ${props.pciDevice.device_name}`
83
+ if (address.value) {
84
+ return `${address.value} | ${deviceName.value}`
80
85
  }
81
86
  switch (selectedType.value.value) {
82
87
  case 'direct_path_io':
83
- return `${directPathIo.value?.address} | ${directPathIo.value?.device_name}`
88
+ return directPathIo.value
89
+ // return `${directPathIo.value?.address} | ${directPathIo.value?.device_name}`
84
90
  case 'dynamic_direct_path_io':
85
91
  return `${dynamicDirectPathIo.value?.address} | ${dynamicDirectPathIo.value?.device_name}`
86
92
  default:
87
- return nvidiaGridProfile.value?.text
93
+ return nvidiaGridProfile.value?.text || ''
88
94
  }
89
95
  })
90
96
 
@@ -99,47 +105,43 @@ pciDeviceTypeOptions.value.forEach((option) => {
99
105
  if (!option.disabled) selectedType.value = option
100
106
  })
101
107
 
102
- const directPathIo = ref<string>('') /// TODO
108
+ const directPathIo = ref<string>('')
103
109
  const dynamicDirectPathIo = ref<UI_I_PciDevice>(props.passthroughDevices[0])
104
110
  const nvidiaGridProfile = ref<UI_I_Option | null>(null)
105
111
 
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
- }
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
+ }
124
122
 
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
- }
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,
142
133
  }
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
143
145
  },
144
146
  { immediate: true, deep: true }
145
147
  )
@@ -190,7 +192,12 @@ const sendData = computed<UI_I_SendDataNewPciDevice>(() => {
190
192
  watch(
191
193
  sendData,
192
194
  (newValue) => {
193
- emits('send-data', props.type === 'edit' ? props.pciDevice : 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 || ''
194
201
  },
195
202
  { immediate: true }
196
203
  )
@@ -56,6 +56,7 @@
56
56
  </template>
57
57
 
58
58
  <script setup lang="ts">
59
+ import type { UI_I_Option } from '~/components/atoms/select/lib/models/interfaces'
59
60
  import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
60
61
  import type { UI_T_PciDeviceType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
61
62
  import type {
@@ -66,13 +67,13 @@ import type {
66
67
  const selectedType = defineModel<UI_I_OptionItem>('selectedType', {
67
68
  required: true,
68
69
  })
69
- const directPathIo = defineModel<UI_I_PciDevice>('directPathIo', {
70
+ const directPathIo = defineModel<string>('directPathIo', {
70
71
  required: true,
71
72
  })
72
- const dynamicDirectPathIo = defineModel<string>('dynamicDirectPathIo', {
73
+ const dynamicDirectPathIo = defineModel<UI_I_PciDevice>('dynamicDirectPathIo', {
73
74
  required: true,
74
75
  })
75
- const nvidiaGridProfile = defineModel<string>('nvidiaGridProfile', {
76
+ const nvidiaGridProfile = defineModel<UI_I_Option | null>('nvidiaGridProfile', {
76
77
  required: true,
77
78
  })
78
79
 
@@ -91,8 +92,4 @@ const emits = defineEmits<{
91
92
  }>()
92
93
  </script>
93
94
 
94
- <style scoped lang="scss">
95
- #network-connect {
96
- margin-right: 4px;
97
- }
98
- </style>
95
+ <style scoped lang="scss"></style>
@@ -7,9 +7,7 @@
7
7
  </template>
8
8
 
9
9
  <script lang="ts" setup>
10
- import type { UI_I_ConfigureAllPciDevicesItem } from '~/lib/models/store/host/interfaces'
11
-
12
- const model = defineModel<UI_I_ConfigureAllPciDevicesItem>({ required: true })
10
+ const model = defineModel<string>({ required: true })
13
11
 
14
12
  const props = defineProps<{
15
13
  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<string>({ required: true })
13
+ const model = defineModel<UI_I_PciDevice>({ required: true })
14
14
 
15
15
  const props = defineProps<{
16
16
  pciDeviceIndex: number
@@ -21,10 +21,9 @@
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'
25
24
  import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
26
25
 
27
- const model = defineModel<UI_I_ConfigureAllPciDevicesItem>()
26
+ const model = defineModel<UI_I_PciDevice>()
28
27
 
29
28
  const props = defineProps<{
30
29
  pciDeviceIndex: number
@@ -28,10 +28,9 @@
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'
32
31
  import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
33
32
 
34
- const model = defineModel<UI_I_ConfigureAllPciDevicesItem>()
33
+ const model = defineModel<UI_I_PciDevice>()
35
34
 
36
35
  const props = defineProps<{
37
36
  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<string>({ required: true })
30
+ const model = defineModel<UI_I_Option | null>({ 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<string>({ required: true })
14
+ const model = defineModel<UI_I_Option | null>({ 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<string>({ required: true })
45
+ const model = defineModel<UI_I_Option | null>({ 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>