bfg-common 1.5.558 → 1.5.559

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 (173) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  4. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  5. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  6. package/assets/localization/local_be.json +26 -5
  7. package/assets/localization/local_en.json +26 -5
  8. package/assets/localization/local_hy.json +26 -5
  9. package/assets/localization/local_kk.json +26 -5
  10. package/assets/localization/local_ru.json +26 -5
  11. package/assets/localization/local_zh.json +27 -6
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/perPage/PerPage.vue +58 -58
  15. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  16. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  17. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  18. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  19. package/components/common/backup/storage/actions/add/Add.vue +251 -251
  20. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  21. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  22. package/components/common/diagramMain/modals/lib/config/portModal.ts +251 -251
  23. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  24. package/components/common/diagramMain/port/Port.vue +580 -580
  25. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  26. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  27. package/components/common/modals/confirmByInput/ConfirmByInput.vue +9 -1
  28. package/components/common/modals/confirmByInput/ConfirmByInputNew.vue +7 -2
  29. package/components/common/pages/backups/DetailView.vue +52 -52
  30. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  31. package/components/common/pages/backups/modals/Modals.vue +243 -243
  32. package/components/common/pages/backups/modals/createBackup/New.vue +8 -2
  33. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  34. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  35. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  36. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  37. package/components/common/pages/backups/modals/restore/Restore.vue +9 -5
  38. package/components/common/pages/backups/modals/restore/RestoreNew.vue +13 -3
  39. package/components/common/pages/backups/modals/restore/RestoreOld.vue +6 -18
  40. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  41. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  42. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  43. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  44. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  45. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  46. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  47. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  48. package/components/common/select/radio/RadioGroup.vue +137 -137
  49. package/components/common/spiceConsole/Drawer.vue +420 -420
  50. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  51. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  52. package/components/common/tools/Actions.vue +207 -207
  53. package/components/common/treeView/TreeView.vue +52 -52
  54. package/components/common/vm/actions/add/Add.vue +119 -46
  55. package/components/common/vm/actions/add/New.vue +54 -16
  56. package/components/common/vm/actions/add/Old.vue +55 -16
  57. package/components/common/vm/actions/add/lib/config/steps.ts +347 -347
  58. package/components/common/vm/actions/clone/Clone.vue +809 -809
  59. package/components/common/vm/actions/clone/new/New.vue +457 -457
  60. package/components/common/vm/actions/clone/old/Old.vue +378 -378
  61. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +81 -14
  62. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +56 -7
  63. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +56 -8
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +142 -73
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +54 -60
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +55 -61
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +159 -139
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +15 -8
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuOld.vue +13 -8
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +75 -62
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +158 -158
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryOld.vue +155 -155
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +427 -427
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +74 -58
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbController.vue +17 -6
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +3 -6
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerOld.vue +3 -6
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +39 -17
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +5 -6
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +5 -6
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/lib/config/options.ts +4 -4
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  89. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +93 -6
  90. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +62 -8
  91. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +60 -8
  92. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptions.vue +69 -5
  93. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +32 -12
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsOld.vue +33 -12
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +132 -114
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +6 -41
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderOld.vue +6 -44
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +23 -8
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +31 -21
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +34 -26
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +34 -28
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/Old.vue +30 -24
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/RemoteConsoleOptions.vue +112 -8
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +3 -3
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/{New.vue → KeymapNew.vue} +6 -6
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/{Old.vue → KeymapOld.vue} +5 -5
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +7 -6
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  111. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/Tools.vue +38 -4
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsNew.vue +26 -7
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/ToolsOld.vue +50 -24
  114. package/components/common/vm/actions/common/lib/models/interfaces.ts +25 -57
  115. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  116. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  117. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  118. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  119. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  120. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  121. package/components/common/vm/actions/common/select/storage/Storage.vue +178 -178
  122. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  123. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  124. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  125. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  126. package/components/common/vm/actions/editSettings/EditSettings.vue +35 -21
  127. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +41 -14
  128. package/components/common/vm/actions/editSettings/new/New.vue +41 -14
  129. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  130. package/components/common/vm/actions/lib/models/interfaces.ts +29 -4
  131. package/components/common/vm/actions/lib/utils.ts +32 -37
  132. package/components/common/vm/actions/register/Register.vue +352 -352
  133. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  134. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  135. package/components/common/wizards/common/compatibility/New.vue +99 -99
  136. package/components/common/wizards/common/compatibility/Old.vue +53 -53
  137. package/components/common/wizards/common/steps/computeResource/ComputeResource.vue +86 -86
  138. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  139. package/components/common/wizards/common/steps/computeResource/Old.vue +103 -103
  140. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  141. package/components/common/wizards/common/steps/name/New.vue +221 -221
  142. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  143. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  144. package/components/common/wizards/common/steps/name/location/Location.vue +85 -85
  145. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  146. package/components/common/wizards/datastore/add/Add.vue +228 -228
  147. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  148. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  149. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +205 -205
  150. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  151. package/composables/useAppVersion.ts +21 -21
  152. package/composables/useLocal.ts +6 -6
  153. package/composables/useLocalCommon.ts +39 -39
  154. package/package.json +3 -1
  155. package/plugins/console.ts +21 -21
  156. package/plugins/date.ts +233 -233
  157. package/plugins/mouse.ts +21 -21
  158. package/plugins/panelStates.ts +70 -70
  159. package/plugins/text.ts +59 -59
  160. package/public/spice-console/application/clientgui.js +854 -854
  161. package/public/spice-console/application/packetfactory.js +211 -211
  162. package/public/spice-console/application/virtualmouse.js +147 -147
  163. package/public/spice-console/lib/images/bitmap.js +203 -203
  164. package/public/spice-console/network/spicechannel.js +440 -440
  165. package/public/spice-console/process/cursorprocess.js +121 -121
  166. package/public/spice-console/process/inputprocess.js +227 -227
  167. package/public/spice-console/process/mainprocess.js +210 -210
  168. package/public/spice-console/run.js +210 -210
  169. package/store/main/mutations.ts +7 -7
  170. package/store/main/state.ts +7 -7
  171. package/store/tasks/mappers/recentTasks.ts +4 -0
  172. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/{New.vue → PasswordNew.vue} +0 -0
  173. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/{Old.vue → PasswordOld.vue} +0 -0
@@ -15,47 +15,67 @@
15
15
  </template>
16
16
  <template #stackChildren>
17
17
  <common-vm-actions-common-customize-hardware-vmoptions-boot-options-firmware
18
- v-model:firmware="model.options.boot_options.firmware"
18
+ v-model:firmware="firmware"
19
19
  :error-validation-fields="props.errorValidationFields"
20
20
  :is-edit="props.isEdit"
21
21
  :is-disabled="isDisabled"
22
22
  @remove-error-by-title="emits('remove-error-by-title', $event)"
23
23
  />
24
- <!-- TODO 700-->
25
- <!-- <common-vm-actions-common-customize-hardware-vmoptions-boot-options-secure-->
26
- <!-- v-if="firmware === 'uefi'"-->
27
- <!-- v-model:secure-boot="secureBoot"-->
28
- <!-- :is-disabled="isDisabled"-->
29
- <!-- />-->
24
+ <common-vm-actions-common-customize-hardware-vmoptions-boot-options-secure
25
+ v-if="firmware === 'uefi'"
26
+ v-model:secure-boot="secureBoot"
27
+ :is-disabled="isDisabled"
28
+ />
30
29
  <common-vm-actions-common-customize-hardware-vmoptions-boot-options-menu
31
- v-model:boot-menu="model.options.boot_options.boot_menu"
30
+ v-model:boot-menu="bootMenu"
32
31
  :is-disabled="isDisabled"
33
32
  />
34
33
  <common-vm-actions-common-customize-hardware-vmoptions-boot-options-delay
35
- v-model:boot-delay="model.options.boot_options.boot_delay_ms"
34
+ v-model:boot-delay="bootDelay"
36
35
  :is-disabled="isDisabled"
37
36
  />
38
37
  <common-vm-actions-common-customize-hardware-vmoptions-boot-options-order
39
- v-model="model"
38
+ :hard-disks="props.hardDisks"
39
+ :cd-dvd-drives="props.cdDvdDrives"
40
+ :networks="props.networks"
40
41
  :is-disabled="isDisabled"
42
+ @change="emits('change-boot-order', $event)"
41
43
  />
42
44
  </template>
43
45
  </ui-stack-block>
44
46
  </template>
45
47
 
46
48
  <script setup lang="ts">
49
+ import type {
50
+ UI_I_SendDataNewCdDvdDrive,
51
+ UI_I_SendDataNewHardDisk,
52
+ UI_I_SendDataNewNetwork,
53
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
47
54
  import type { UI_I_Localization } from '~/lib/models/interfaces'
48
55
  import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
49
- import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
50
56
 
51
- const model = defineModel<UI_I_CreateVmData>({ required: true })
57
+ const firmware = defineModel<string>('firmware', { required: true })
58
+ const secureBoot = defineModel<boolean>('secureBoot', { required: true })
59
+ const bootMenu = defineModel<boolean>('bootMenu', { required: true })
60
+ const bootDelay = defineModel<number>('bootDelay', { required: true })
52
61
 
53
62
  const props = defineProps<{
54
63
  errorValidationFields: UI_I_ErrorValidationField[]
64
+ hardDisks: UI_I_SendDataNewHardDisk[] | null
65
+ cdDvdDrives: UI_I_SendDataNewCdDvdDrive[] | null
66
+ networks: UI_I_SendDataNewNetwork[] | null
55
67
  isEdit: boolean
56
68
  isDisabled: boolean
57
69
  }>()
58
70
  const emits = defineEmits<{
71
+ (
72
+ event: 'change-boot-order',
73
+ value: [
74
+ UI_I_SendDataNewHardDisk[],
75
+ UI_I_SendDataNewCdDvdDrive[],
76
+ UI_I_SendDataNewNetwork[]
77
+ ]
78
+ ): void
59
79
  (event: 'remove-error-by-title', value: string): void
60
80
  }>()
61
81
 
@@ -12,29 +12,31 @@
12
12
  </template>
13
13
  <template #stackChildren>
14
14
  <common-vm-actions-common-customize-hardware-vmoptions-boot-options-firmware
15
- v-model:firmware="model.options.boot_options.firmware"
15
+ v-model:firmware="firmware"
16
16
  :error-validation-fields="props.errorValidationFields"
17
17
  :is-edit="props.isEdit"
18
18
  :is-disabled="props.isDisabled"
19
19
  @remove-error-by-title="emits('remove-error-by-title', $event)"
20
20
  />
21
- <!-- TODO 700-->
22
- <!-- <common-vm-actions-common-customize-hardware-vmoptions-boot-options-secure-->
23
- <!-- v-if="firmware === 'uefi'"-->
24
- <!-- v-model:secure-boot="secureBoot"-->
25
- <!-- :is-disabled="props.isDisabled"-->
26
- <!-- />-->
21
+ <common-vm-actions-common-customize-hardware-vmoptions-boot-options-secure
22
+ v-if="firmware === 'uefi'"
23
+ v-model:secure-boot="secureBoot"
24
+ :is-disabled="props.isDisabled"
25
+ />
27
26
  <common-vm-actions-common-customize-hardware-vmoptions-boot-options-menu
28
- v-model:boot-menu="model.options.boot_options.boot_menu"
27
+ v-model:boot-menu="bootMenu"
29
28
  :is-disabled="props.isDisabled"
30
29
  />
31
30
  <common-vm-actions-common-customize-hardware-vmoptions-boot-options-delay
32
- v-model:boot-delay="model.options.boot_options.boot_delay_ms"
31
+ v-model:boot-delay="bootDelay"
33
32
  :is-disabled="props.isDisabled"
34
33
  />
35
34
  <common-vm-actions-common-customize-hardware-vmoptions-boot-options-order
36
- v-model="model"
35
+ :hard-disks="props.hardDisks"
36
+ :cd-dvd-drives="props.cdDvdDrives"
37
+ :networks="props.networks"
37
38
  :is-disabled="props.isDisabled"
39
+ @change="emits('change-boot-order', $event)"
38
40
  />
39
41
  </template>
40
42
  </atoms-stack-block>
@@ -43,15 +45,25 @@
43
45
 
44
46
  <script setup lang="ts">
45
47
  import type { UI_I_SendDataBootOptions } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/lib/models/interfaces'
48
+ import type {
49
+ UI_I_SendDataNewCdDvdDrive,
50
+ UI_I_SendDataNewHardDisk,
51
+ UI_I_SendDataNewNetwork,
52
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
46
53
  import type { UI_I_Localization } from '~/lib/models/interfaces'
47
54
  import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
48
- import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
49
55
 
50
- const model = defineModel<UI_I_CreateVmData>({ required: true })
56
+ const firmware = defineModel<string>('firmware', { required: true })
57
+ const secureBoot = defineModel<boolean>('secureBoot', { required: true })
58
+ const bootMenu = defineModel<boolean>('bootMenu', { required: true })
59
+ const bootDelay = defineModel<number>('bootDelay', { required: true })
51
60
 
52
61
  const props = withDefaults(
53
62
  defineProps<{
54
63
  errorValidationFields: UI_I_ErrorValidationField[]
64
+ hardDisks: UI_I_SendDataNewHardDisk[] | null
65
+ cdDvdDrives: UI_I_SendDataNewCdDvdDrive[] | null
66
+ networks: UI_I_SendDataNewNetwork[] | null
55
67
  isEdit: boolean
56
68
  isDisabled: boolean
57
69
  bootOptions?: UI_I_SendDataBootOptions
@@ -61,6 +73,15 @@ const props = withDefaults(
61
73
  }
62
74
  )
63
75
  const emits = defineEmits<{
76
+ (
77
+ event: 'change-boot-order',
78
+ value: [
79
+ UI_I_SendDataNewHardDisk[],
80
+ UI_I_SendDataNewCdDvdDrive[],
81
+ UI_I_SendDataNewNetwork[]
82
+ ]
83
+ ): void
84
+ (event: 'send-data', value: UI_I_SendDataBootOptions): void
64
85
  (event: 'remove-error-by-title', value: string): void
65
86
  }>()
66
87
 
@@ -1,32 +1,32 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-vmoptions-boot-options-delay-new
3
- v-if="isNewView"
4
- v-model:boot-delay="bootDelay"
5
- :boot-delay-options="bootDelayOptions"
6
- :is-disabled="props.isDisabled"
7
- />
8
- <common-vm-actions-common-customize-hardware-vmoptions-boot-options-delay-old
9
- v-else
10
- v-model:boot-delay="bootDelay"
11
- :boot-delay-options="bootDelayOptions"
12
- :is-disabled="props.isDisabled"
13
- />
14
- </template>
15
-
16
- <script setup lang="ts">
17
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
18
- import { bootDelayOptionsConfig } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/lib/config/config'
19
-
20
- const bootDelay = defineModel<number>('bootDelay', { required: true })
21
-
22
- const props = defineProps<{
23
- isDisabled: boolean
24
- }>()
25
-
26
- const { $store }: any = useNuxtApp()
27
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
28
-
29
- const bootDelayOptions = ref<UI_I_OptionItem[]>(bootDelayOptionsConfig)
30
- </script>
31
-
32
- <style scoped></style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-vmoptions-boot-options-delay-new
3
+ v-if="isNewView"
4
+ v-model:boot-delay="bootDelay"
5
+ :boot-delay-options="bootDelayOptions"
6
+ :is-disabled="props.isDisabled"
7
+ />
8
+ <common-vm-actions-common-customize-hardware-vmoptions-boot-options-delay-old
9
+ v-else
10
+ v-model:boot-delay="bootDelay"
11
+ :boot-delay-options="bootDelayOptions"
12
+ :is-disabled="props.isDisabled"
13
+ />
14
+ </template>
15
+
16
+ <script setup lang="ts">
17
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
18
+ import { bootDelayOptionsConfig } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/lib/config/config'
19
+
20
+ const bootDelay = defineModel<number>('bootDelay', { required: true })
21
+
22
+ const props = defineProps<{
23
+ isDisabled: boolean
24
+ }>()
25
+
26
+ const { $store }: any = useNuxtApp()
27
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
28
+
29
+ const bootDelayOptions = ref<UI_I_OptionItem[]>(bootDelayOptionsConfig)
30
+ </script>
31
+
32
+ <style scoped></style>
@@ -1,60 +1,60 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-vmoptions-boot-options-firmware-new
3
- v-if="isNewView"
4
- v-model:firmware="firmware"
5
- :firmware-options="firmwareOptions"
6
- :error-text="apiError"
7
- :is-disabled="isDisabled"
8
- @remove-error="onRemoveValidationError"
9
- />
10
- <common-vm-actions-common-customize-hardware-vmoptions-boot-options-firmware-old
11
- v-else
12
- v-model:firmware="firmware"
13
- :firmware-options="firmwareOptions"
14
- :error-text="apiError"
15
- :is-disabled="isDisabled"
16
- @remove-error="onRemoveValidationError"
17
- />
18
- </template>
19
-
20
- <script setup lang="ts">
21
- import type { UI_I_Localization } from '~/lib/models/interfaces'
22
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
23
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
24
- import { firmwareOptionsFunc } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/lib/config/config'
25
-
26
- const firmware = defineModel<string>('firmware', { required: true })
27
-
28
- const props = defineProps<{
29
- errorValidationFields: UI_I_ErrorValidationField[]
30
- isEdit: boolean
31
- isDisabled: boolean
32
- }>()
33
- const emits = defineEmits<{
34
- (event: 'remove-error-by-title', value: string): void
35
- }>()
36
-
37
- const localization = computed<UI_I_Localization>(() => useLocal())
38
-
39
- const { $store }: any = useNuxtApp()
40
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
41
-
42
- const firmwareOptions = ref<UI_I_OptionItem[]>(
43
- firmwareOptionsFunc(localization.value)
44
- )
45
-
46
- const typeError = 'options.boot_options.firmware'
47
-
48
- const apiError = computed<string>(() => {
49
- return (
50
- props.errorValidationFields?.find((message) => message.field === typeError)
51
- ?.error_message || ''
52
- )
53
- })
54
-
55
- const onRemoveValidationError = (): void => {
56
- emits('remove-error-by-title', typeError)
57
- }
58
- </script>
59
-
60
- <style scoped></style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-vmoptions-boot-options-firmware-new
3
+ v-if="isNewView"
4
+ v-model:firmware="firmware"
5
+ :firmware-options="firmwareOptions"
6
+ :error-text="apiError"
7
+ :is-disabled="isDisabled"
8
+ @remove-error="onRemoveValidationError"
9
+ />
10
+ <common-vm-actions-common-customize-hardware-vmoptions-boot-options-firmware-old
11
+ v-else
12
+ v-model:firmware="firmware"
13
+ :firmware-options="firmwareOptions"
14
+ :error-text="apiError"
15
+ :is-disabled="isDisabled"
16
+ @remove-error="onRemoveValidationError"
17
+ />
18
+ </template>
19
+
20
+ <script setup lang="ts">
21
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
22
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
23
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
24
+ import { firmwareOptionsFunc } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/lib/config/config'
25
+
26
+ const firmware = defineModel<string>('firmware', { required: true })
27
+
28
+ const props = defineProps<{
29
+ errorValidationFields: UI_I_ErrorValidationField[]
30
+ isEdit: boolean
31
+ isDisabled: boolean
32
+ }>()
33
+ const emits = defineEmits<{
34
+ (event: 'remove-error-by-title', value: string): void
35
+ }>()
36
+
37
+ const localization = computed<UI_I_Localization>(() => useLocal())
38
+
39
+ const { $store }: any = useNuxtApp()
40
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
41
+
42
+ const firmwareOptions = ref<UI_I_OptionItem[]>(
43
+ firmwareOptionsFunc(localization.value)
44
+ )
45
+
46
+ const typeError = 'options.boot_options.firmware'
47
+
48
+ const apiError = computed<string>(() => {
49
+ return (
50
+ props.errorValidationFields?.find((message) => message.field === typeError)
51
+ ?.error_message || ''
52
+ )
53
+ })
54
+
55
+ const onRemoveValidationError = (): void => {
56
+ emits('remove-error-by-title', typeError)
57
+ }
58
+ </script>
59
+
60
+ <style scoped></style>
@@ -4,153 +4,171 @@
4
4
  :boot-list="bootList"
5
5
  :is-disabled="props.isDisabled"
6
6
  @change-order="onChangeOrder"
7
- @update:boot-list="onBootListUpdate"
8
7
  />
9
8
  <common-vm-actions-common-customize-hardware-vmoptions-boot-options-order-old
10
9
  v-else
11
10
  :boot-list="bootList"
12
11
  :is-disabled="props.isDisabled"
13
12
  @change-order="onChangeOrder"
14
- @update:boot-list="onBootListUpdate"
15
13
  />
16
14
  </template>
17
15
 
18
16
  <script setup lang="ts">
19
17
  import type { UI_I_BootItem } from '~/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/lib/models/interfaces'
18
+ import type {
19
+ UI_I_SendDataNewCdDvdDrive,
20
+ UI_I_SendDataNewHardDisk,
21
+ UI_I_SendDataNewNetwork,
22
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
20
23
  import type { UI_I_DropEvent } from '~/components/atoms/list/dragDropList/lib/config/events'
21
- import type { UI_I_CreateVmData } from '~/components/common/vm/actions/common/lib/models/interfaces'
22
-
23
- const model = defineModel<UI_I_CreateVmData>({ required: true })
24
24
 
25
25
  const props = defineProps<{
26
+ hardDisks: UI_I_SendDataNewHardDisk[] | null
27
+ cdDvdDrives: UI_I_SendDataNewCdDvdDrive[] | null
28
+ networks: UI_I_SendDataNewNetwork[] | null
26
29
  isDisabled: boolean
27
30
  }>()
31
+ const emits = defineEmits<{
32
+ (
33
+ event: 'change',
34
+ value: [
35
+ UI_I_SendDataNewHardDisk[],
36
+ UI_I_SendDataNewCdDvdDrive[],
37
+ UI_I_SendDataNewNetwork[]
38
+ ]
39
+ ): void
40
+ }>()
28
41
 
29
42
  const { $store }: any = useNuxtApp()
30
43
  const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
31
44
 
32
45
  const bootList = ref<UI_I_BootItem[]>([])
33
46
 
34
- // Используем computed для автоматического обновления bootList при изменении модели
35
- const hardDisksAndNetworks = computed(() => [
36
- model.value.disk_devices?.filter((disk) => disk.device_type !== 'cdrom') ||
37
- [],
38
- model.value.disk_devices?.filter((disk) => disk.device_type === 'cdrom') ||
39
- [],
40
- model.value.network_devices || [],
41
- ])
42
-
43
- // Watcher для обновления bootList при изменении модели
47
+ const hardDisksAndNetworks = computed<
48
+ [
49
+ UI_I_SendDataNewHardDisk[] | null,
50
+ UI_I_SendDataNewCdDvdDrive[] | null,
51
+ UI_I_SendDataNewNetwork[] | null
52
+ ]
53
+ >(() => [props.hardDisks, props.cdDvdDrives, props.networks])
44
54
  watch(
45
55
  hardDisksAndNetworks,
46
- ([hardDisks, cdDvdDrives, networks]) => {
47
- const hardDiskItems: UI_I_BootItem[] = hardDisks.map((item, index) => {
48
- const order = item.boot_order || 0
49
- return {
50
- order,
51
- isChecked: !!order,
52
- text: `disk${index}`,
53
- iconClassName: 'icon-disk',
54
- type: 'disk' as const,
55
- name: `${item.source}_${index}`,
56
- testId: `select-disk-value-${index + 1}`,
57
- }
58
- })
59
-
60
- const cdDvdDriveItems: UI_I_BootItem[] = cdDvdDrives.map((item, index) => {
61
- const order = item.boot_order || 0
62
- return {
63
- order,
64
- isChecked: !!order,
65
- text: `cdrom${index}`,
66
- iconClassName: 'icon-disk',
67
- type: 'cdDvd' as const,
68
- name: `${item.source}_${hardDisks.length + index}`,
69
- testId: `select-cd-dvd-value-${index + 1}`,
70
- }
71
- })
72
-
73
- const networkItems: UI_I_BootItem[] = networks.map((item, index) => {
74
- const order = item.boot_order || 0
75
- return {
76
- order,
77
- isChecked: !!order,
78
- text: item.mac || 'undefined',
79
- iconClassName: 'vsphere-icon-network',
80
- type: 'nic' as const,
81
- name: `${item.network}_${index}`,
82
- testId: `select-nic-value-${index + 1}`,
83
- }
84
- })
85
-
86
- bootList.value = [...hardDiskItems, ...cdDvdDriveItems, ...networkItems]
87
- .filter((item) => item.order >= 0)
88
- .sort((a, b) => a.order - b.order)
56
+ (
57
+ newValue: [
58
+ UI_I_SendDataNewHardDisk[] | null,
59
+ UI_I_SendDataNewCdDvdDrive[] | null,
60
+ UI_I_SendDataNewNetwork[] | null
61
+ ]
62
+ ) => {
63
+ const hardDisks: UI_I_BootItem[] =
64
+ newValue[0]?.map((item, index) => {
65
+ const order = item.boot_order || 0
66
+ return {
67
+ order,
68
+ isChecked: !!order,
69
+ text: `disk${index}`,
70
+ iconClassName: 'icon-disk',
71
+ type: 'disk',
72
+ name: item.source + index,
73
+ testId: `select-disk-value-${index + 1}`,
74
+ }
75
+ }) || []
76
+ const cdDvdDrives: UI_I_BootItem[] =
77
+ newValue[1]?.map((item, index) => {
78
+ const order = item.boot_order || 0
79
+ return {
80
+ order,
81
+ isChecked: !!order,
82
+ text: `cdrom${index}`,
83
+ iconClassName: 'icon-disk',
84
+ type: 'cdDvd',
85
+ name: item.source + index,
86
+ testId: `select-cd-dvd-value-${index + 1}`,
87
+ }
88
+ }) || []
89
+ const networks: UI_I_BootItem[] =
90
+ newValue[2]?.map((item, index) => {
91
+ const order = item.boot_order || 0
92
+ return {
93
+ order,
94
+ isChecked: !!order,
95
+ text: item.mac || 'undefined',
96
+ iconClassName: 'vsphere-icon-network',
97
+ type: 'nic',
98
+ name: item.network + index,
99
+ testId: `select-nic-value-${index + 1}`,
100
+ }
101
+ }) || []
102
+
103
+ bootList.value = [...hardDisks, ...cdDvdDrives, ...networks].sort(
104
+ (a, b) => a.order - b.order
105
+ )
89
106
  },
90
107
  { deep: true, immediate: true }
91
108
  )
92
109
 
93
- // Обработчик изменения порядка через drag & drop
94
110
  const onChangeOrder = (event: UI_I_DropEvent): void => {
95
- const updatedList = [...bootList.value]
96
- const movedItem = updatedList.find((item) => item.name === event.target.name)
97
-
98
- if (!movedItem) return
99
-
100
- // Удаляем элемент из текущей позиции
101
- const fromIndex = updatedList.indexOf(movedItem)
102
- updatedList.splice(fromIndex, 1)
103
-
104
- // Вставляем элемент в новую позицию
105
- updatedList.splice(event.toPosition, 0, movedItem)
106
-
107
- // Обновляем порядок всех элементов
108
- updatedList.forEach((item, index) => {
109
- item.order = index + 1
110
- })
111
+ let order = -1
112
+ bootList.value = bootList.value
113
+ .map((item) => {
114
+ if (item === event.target) {
115
+ item.order = event.toPosition
116
+ return item
117
+ }
111
118
 
112
- bootList.value = updatedList
113
- updateModelFromBootList(updatedList)
114
- }
119
+ item.order = order + 1 === event.toPosition ? (order += 2) : order++
115
120
 
116
- // Обработчик обновления bootList (при изменении чекбоксов)
117
- const onBootListUpdate = (updatedBootList: UI_I_BootItem[]): void => {
118
- bootList.value = updatedBootList
119
- updateModelFromBootList(updatedBootList)
121
+ return item
122
+ })
123
+ .sort((a, b) => a.order - b.order)
120
124
  }
121
125
 
122
- // Функция для обновления модели на основе bootList
123
- const updateModelFromBootList = (bootItems: UI_I_BootItem[]): void => {
124
- // Сначала сбрасываем все boot_order
125
- model.value.disk_devices?.forEach((disk) => {
126
- disk.boot_order = 0
127
- })
128
- model.value.network_devices?.forEach((network) => {
129
- network.boot_order = 0
130
- })
131
-
132
- // Затем устанавливаем boot_order только для выбранных элементов
133
- let currentOrder = 1
134
- bootItems.forEach((bootItem) => {
135
- if (!bootItem.isChecked) return
136
-
137
- if (bootItem.type === 'nic') {
138
- const [networkName, indexStr] = bootItem.name.split('_')
139
- const index = parseInt(indexStr, 10)
140
- const network = model.value.network_devices?.[index]
141
- if (network && network.network === networkName) {
142
- network.boot_order = currentOrder++
143
- }
144
- } else {
145
- const [source, indexStr] = bootItem.name.split('_')
146
- const index = parseInt(indexStr, 10)
147
- const disk = model.value.disk_devices?.[index]
148
- if (disk && disk.source === source) {
149
- disk.boot_order = currentOrder++
126
+ watch(
127
+ bootList,
128
+ (newValue) => {
129
+ const networks: UI_I_SendDataNewNetwork[] = []
130
+ const hardDisks: UI_I_SendDataNewHardDisk[] = []
131
+ const cdDvdDrives: UI_I_SendDataNewCdDvdDrive[] = []
132
+ let index = 0
133
+ newValue.forEach((boot) => {
134
+ if (boot.type === 'nic') {
135
+ const network = props.networks?.find(
136
+ (network, index2) => network.network + index2 === boot.name
137
+ )
138
+ if (network) {
139
+ networks.push({
140
+ ...network,
141
+ boot_order: boot.isChecked ? ++index : 0,
142
+ })
143
+ }
144
+ } else if (boot.type === 'disk') {
145
+ const hardDisk = props.hardDisks?.find(
146
+ (hardDisk, index2) => hardDisk.source + index2 === boot.name
147
+ )
148
+ if (hardDisk) {
149
+ hardDisks.push({
150
+ ...hardDisk,
151
+ boot_order: boot.isChecked ? ++index : 0,
152
+ })
153
+ }
154
+ } else {
155
+ const cdDvdDrive = props.cdDvdDrives?.find(
156
+ (cdDvdDrive, index2) => cdDvdDrive.source + index2 === boot.name
157
+ )
158
+ if (cdDvdDrive) {
159
+ cdDvdDrives.push({
160
+ ...cdDvdDrive,
161
+ boot_order: boot.isChecked ? ++index : 0,
162
+ })
163
+ }
150
164
  }
151
- }
152
- })
153
- }
165
+ })
166
+
167
+ emits('change', [hardDisks, cdDvdDrives, networks])
168
+ },
169
+ { deep: true, immediate: true }
170
+ )
154
171
  </script>
155
172
 
156
- <style scoped lang="scss"></style>
173
+ <style scoped lang="scss">
174
+ </style>