bfg-common 1.5.574 → 1.5.575

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 (163) 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/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/collapse/CollapseNav.vue +170 -170
  8. package/components/atoms/perPage/PerPage.vue +58 -58
  9. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  10. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  11. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  12. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  13. package/components/common/backup/storage/actions/add/Add.vue +3 -2
  14. package/components/common/backup/storage/actions/add/New.vue +3 -2
  15. package/components/common/backup/storage/actions/add/Old.vue +5 -4
  16. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  17. package/components/common/backup/storage/actions/add/steps/readyComplete/ReadyComplete.vue +45 -45
  18. package/components/common/backup/storage/actions/add/steps/readyComplete/lib/config/propertiesDetails.ts +7 -7
  19. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  20. package/components/common/diagramMain/modals/lib/config/portModal.ts +251 -251
  21. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  22. package/components/common/diagramMain/port/Port.vue +580 -580
  23. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  24. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  25. package/components/common/pages/backups/DetailView.vue +52 -52
  26. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  27. package/components/common/pages/backups/modals/Modals.vue +243 -243
  28. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  29. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  30. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  31. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  32. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  33. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  34. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  35. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  36. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  37. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  38. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  39. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  40. package/components/common/select/radio/RadioGroup.vue +137 -137
  41. package/components/common/spiceConsole/Drawer.vue +420 -420
  42. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  43. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  44. package/components/common/tools/Actions.vue +207 -207
  45. package/components/common/treeView/TreeView.vue +52 -52
  46. package/components/common/vm/actions/add/Add.vue +120 -46
  47. package/components/common/vm/actions/add/New.vue +54 -16
  48. package/components/common/vm/actions/add/Old.vue +55 -16
  49. package/components/common/vm/actions/add/lib/config/steps.ts +347 -347
  50. package/components/common/vm/actions/clone/Clone.vue +115 -43
  51. package/components/common/vm/actions/clone/new/New.vue +50 -14
  52. package/components/common/vm/actions/clone/old/Old.vue +52 -16
  53. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +81 -14
  54. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +56 -7
  55. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +56 -8
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +206 -211
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +120 -225
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +118 -220
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +53 -66
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +159 -139
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +15 -8
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuOld.vue +13 -8
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +75 -62
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +158 -158
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryOld.vue +155 -155
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +149 -241
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +4 -3
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +3 -2
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +154 -154
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +100 -62
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbController.vue +17 -6
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +3 -6
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerOld.vue +3 -6
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCard.vue +39 -17
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +5 -6
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +5 -6
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/lib/config/options.ts +4 -4
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/numberDisplays/NumberDisplays.vue +53 -53
  84. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +93 -6
  85. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +60 -8
  86. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsOld.vue +58 -8
  87. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptions.vue +69 -5
  88. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +32 -12
  89. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsOld.vue +33 -12
  90. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  91. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  92. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +132 -114
  93. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +6 -41
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderOld.vue +6 -44
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +23 -8
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +31 -21
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsOld.vue +34 -26
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +34 -28
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/Old.vue +30 -24
  100. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/RemoteConsoleOptions.vue +112 -8
  101. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +3 -3
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/{New.vue → KeymapNew.vue} +6 -6
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/{Old.vue → KeymapOld.vue} +5 -5
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +7 -6
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/tools/Tools.vue +60 -42
  107. package/components/common/vm/actions/common/lib/models/interfaces.ts +25 -58
  108. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  109. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  110. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  111. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  112. package/components/common/vm/actions/common/select/storage/Storage.vue +178 -178
  113. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  114. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  115. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  116. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  117. package/components/common/vm/actions/editSettings/EditSettings.vue +90 -32
  118. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +41 -14
  119. package/components/common/vm/actions/editSettings/new/New.vue +41 -14
  120. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  121. package/components/common/vm/actions/lib/models/interfaces.ts +29 -4
  122. package/components/common/vm/actions/lib/utils.ts +36 -64
  123. package/components/common/vm/actions/register/Register.vue +352 -352
  124. package/components/common/vm/actions/register/lib/config/steps.ts +86 -86
  125. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  126. package/components/common/wizards/common/compatibility/New.vue +99 -99
  127. package/components/common/wizards/common/compatibility/Old.vue +53 -53
  128. package/components/common/wizards/common/steps/computeResource/ComputeResource.vue +86 -86
  129. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  130. package/components/common/wizards/common/steps/computeResource/Old.vue +103 -103
  131. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  132. package/components/common/wizards/common/steps/name/New.vue +221 -221
  133. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  134. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  135. package/components/common/wizards/common/steps/name/location/Location.vue +85 -85
  136. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  137. package/components/common/wizards/datastore/add/Add.vue +228 -228
  138. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  139. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  140. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +205 -205
  141. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  142. package/composables/useAppVersion.ts +21 -21
  143. package/composables/useLocal.ts +6 -6
  144. package/composables/useLocalCommon.ts +39 -39
  145. package/package.json +1 -1
  146. package/plugins/console.ts +21 -21
  147. package/plugins/date.ts +233 -233
  148. package/plugins/mouse.ts +21 -21
  149. package/plugins/panelStates.ts +70 -70
  150. package/plugins/text.ts +59 -59
  151. package/public/spice-console/application/clientgui.js +854 -854
  152. package/public/spice-console/application/packetfactory.js +211 -211
  153. package/public/spice-console/application/virtualmouse.js +147 -147
  154. package/public/spice-console/lib/images/bitmap.js +203 -203
  155. package/public/spice-console/network/spicechannel.js +440 -440
  156. package/public/spice-console/process/cursorprocess.js +121 -121
  157. package/public/spice-console/process/inputprocess.js +227 -227
  158. package/public/spice-console/process/mainprocess.js +210 -210
  159. package/public/spice-console/run.js +210 -210
  160. package/store/main/mutations.ts +7 -7
  161. package/store/main/state.ts +7 -7
  162. /package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/{New.vue → PasswordNew.vue} +0 -0
  163. /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>