bfg-common 1.4.747 → 1.4.748

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 (158) hide show
  1. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  2. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  3. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  5. package/assets/scss/common/normalize.scss +361 -361
  6. package/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  8. package/components/atoms/stack/StackBlock.vue +185 -185
  9. package/components/atoms/table/dataGrid/DataGrid.vue +1696 -1696
  10. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  11. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +91 -91
  12. package/components/common/browse/BrowseNew.vue +237 -237
  13. package/components/common/browse/BrowseOld.vue +217 -217
  14. package/components/common/browse/blocks/contents/Files.vue +37 -37
  15. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  16. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  17. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  18. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  19. package/components/common/browse/lib/models/interfaces.ts +5 -5
  20. package/components/common/context/Context.vue +106 -99
  21. package/components/common/context/lib/models/interfaces.ts +30 -30
  22. package/components/common/context/recursion/Recursion.vue +87 -86
  23. package/components/common/context/recursion/RecursionNew.vue +227 -226
  24. package/components/common/context/recursion/RecursionOld.vue +227 -227
  25. package/components/common/diagramMain/Header.vue +211 -211
  26. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  27. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  28. package/components/common/diagramMain/lib/models/types.ts +21 -21
  29. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  30. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  31. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  32. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  33. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  34. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  35. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  36. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  37. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  38. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +398 -398
  39. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  40. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  41. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +23 -23
  42. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  43. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  44. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  45. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  46. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  47. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  48. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  49. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  50. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  51. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  52. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  53. package/components/common/diagramMain/port/Ports.vue +47 -47
  54. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  55. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  56. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +150 -150
  57. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +300 -300
  58. package/components/common/modals/confirmByInput/ConfirmByInput.vue +206 -206
  59. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  60. package/components/common/pages/home/StatusContent.vue +49 -49
  61. package/components/common/pages/home/headline/Headline.vue +44 -44
  62. package/components/common/pages/home/headline/HeadlineNew.vue +71 -71
  63. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  64. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  65. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  66. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  67. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  68. package/components/common/pages/home/widgets/hosts/HostsNew.vue +100 -100
  69. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  70. package/components/common/pages/home/widgets/services/lib/config/config.ts +108 -108
  71. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  72. package/components/common/pages/home/widgets/vms/VmsNew.vue +101 -101
  73. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  74. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  75. package/components/common/recursionTree/RecursionTree.vue +223 -223
  76. package/components/common/select/button/ButtonDropdown.vue +108 -108
  77. package/components/common/spiceConsole/Drawer.vue +370 -370
  78. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  79. package/components/common/split/horizontal/HorizontalNew.vue +384 -384
  80. package/components/common/split/horizontal/HorizontalOld.vue +345 -345
  81. package/components/common/split/vertical/Vertical.vue +160 -160
  82. package/components/common/vm/actions/add/Add.vue +621 -621
  83. package/components/common/vm/actions/clone/Clone.vue +639 -639
  84. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  85. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +271 -271
  86. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +271 -271
  87. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +174 -174
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +161 -161
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +165 -165
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +281 -281
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +84 -84
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +81 -81
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  124. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  125. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  126. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  127. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  128. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  129. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  130. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  131. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  132. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  133. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  134. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  135. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  136. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  137. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  138. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  139. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  140. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  141. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  142. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  143. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  144. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  145. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  146. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  147. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  148. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  149. package/composables/productNameLocal.ts +30 -30
  150. package/composables/useAppVersion.ts +21 -21
  151. package/package.json +1 -1
  152. package/plugins/date.ts +233 -233
  153. package/plugins/recursion.ts +311 -311
  154. package/public/spice-console/lib/images/bitmap.js +203 -203
  155. package/public/spice-console/network/spicechannel.js +383 -383
  156. package/store/main/mutations.ts +7 -7
  157. package/store/main/state.ts +7 -7
  158. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,338 +1,338 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-virtual-hardware-cpu-new
3
- v-if="isNewView"
4
- v-model:selected-cpu="selectedCpu"
5
- v-model:selected-core-per-socket="selectedCorePerSocket"
6
- v-model:enable-cpu-hot-add="enableCpuHotAdd"
7
- v-model:selected-max-cpu="selectedMaxCpu"
8
- v-model:reservation="reservation"
9
- v-model:reservation-type="reservationType"
10
- v-model:limit="limit"
11
- v-model:limit-type="limitType"
12
- v-model:shares="shares"
13
- v-model:shares-type="sharesType"
14
- v-model:cpu-model="cpuModel"
15
- v-model:passthrough-host-cpu="passthroughHostCpu"
16
- v-model:host-model-cpu="hostModelCpu"
17
- :max-cpus="props.maxCpus"
18
- :cpu-models="props.cpuModels"
19
- :is-edit="props.isEdit"
20
- :error-validation-fields="props.errorValidationFields"
21
- :cpu-invalid="cpuInvalid"
22
- :vcpus-local-and-api-errors-texts="vcpusLocalAndApiErrorsTexts"
23
- :cpu-options="cpuOptions"
24
- :is-cpu-disabled="isCpuDisabled"
25
- :selected-cpus="selectedCpus"
26
- :is-disabled="isDisabled"
27
- :enable-cpu-hot-add-disabled="enableCpuHotAddDisabled"
28
- :max-cpu-options="maxCpuOptions"
29
- :vm-cpu-help-text-second="vmCpuHelpTextSecond"
30
- @remove-error-by-title="emits('remove-error-by-title', $event)"
31
- @remove-validation-error="onRemoveValidationError"
32
- @max-cpu-invalid="maxCpuInvalid = $event"
33
- @reservation-invalid="reservationInvalid = $event"
34
- @limit-invalid="limitInvalid = $event"
35
- @shares-invalid="sharesInvalid = $event"
36
- />
37
- <common-vm-actions-common-customize-hardware-virtual-hardware-cpu-old
38
- v-else
39
- v-model:selected-cpu="selectedCpu"
40
- v-model:selected-core-per-socket="selectedCorePerSocket"
41
- v-model:enable-cpu-hot-add="enableCpuHotAdd"
42
- v-model:selected-max-cpu="selectedMaxCpu"
43
- v-model:reservation="reservation"
44
- v-model:reservation-type="reservationType"
45
- v-model:limit="limit"
46
- v-model:limit-type="limitType"
47
- v-model:shares="shares"
48
- v-model:shares-type="sharesType"
49
- v-model:cpu-model="cpuModel"
50
- v-model:passthrough-host-cpu="passthroughHostCpu"
51
- v-model:host-model-cpu="hostModelCpu"
52
- :max-cpus="props.maxCpus"
53
- :cpu-models="props.cpuModels"
54
- :is-edit="props.isEdit"
55
- :error-validation-fields="props.errorValidationFields"
56
- :cpu-invalid="cpuInvalid"
57
- :vcpus-local-and-api-errors-texts="vcpusLocalAndApiErrorsTexts"
58
- :cpu-options="cpuOptions"
59
- :is-cpu-disabled="isCpuDisabled"
60
- :selected-cpus="selectedCpus"
61
- :is-disabled="isDisabled"
62
- :enable-cpu-hot-add-disabled="enableCpuHotAddDisabled"
63
- :max-cpu-options="maxCpuOptions"
64
- :vm-cpu-help-text-second="vmCpuHelpTextSecond"
65
- @remove-error-by-title="emits('remove-error-by-title', $event)"
66
- @remove-validation-error="onRemoveValidationError"
67
- @max-cpu-invalid="maxCpuInvalid = $event"
68
- @reservation-invalid="reservationInvalid = $event"
69
- @limit-invalid="limitInvalid = $event"
70
- @shares-invalid="sharesInvalid = $event"
71
- />
72
- </template>
73
-
74
- <script setup lang="ts">
75
- import type { UI_I_SendDataCpu } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
76
- import type { UI_I_Localization } from '~/lib/models/interfaces'
77
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
78
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
79
- import type { API_UI_I_VmEditCpu } from '~/lib/models/store/vm/interfaces'
80
- import { cpuOptionsFunc } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/lib/config/cpuOptions'
81
-
82
- const props = defineProps<{
83
- maxCpus: number
84
- cpuModels: UI_I_OptionItem[]
85
- isEdit: boolean
86
- errorValidationFields: UI_I_ErrorValidationField<string>[]
87
- vmCpuHelpTextSecond?: string
88
- state?: string | number
89
- cpu?: API_UI_I_VmEditCpu
90
- }>()
91
- const emits = defineEmits<{
92
- (event: 'send-data', value: UI_I_SendDataCpu): void
93
- (event: 'invalid', value: boolean): void
94
- (event: 'remove-error-by-title', value: string): void
95
- }>()
96
-
97
- const { $store }: any = useNuxtApp()
98
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
99
-
100
- const localization = computed<UI_I_Localization>(() => useLocal())
101
-
102
- const isDisabled = computed<boolean>(() => {
103
- return props.state === 2
104
- })
105
-
106
- const cpuOptions = computed<UI_I_OptionItem[]>(() =>
107
- cpuOptionsFunc(localization.value, 1, props.maxCpus)
108
- )
109
-
110
- const enableCpuHotAdd = ref<boolean>(false)
111
- const enableCpuHotAddDisabled = computed<boolean>(
112
- // () => selectedCpu.value >= props.maxCpus || isDisabled.value
113
- () => isDisabled.value // pc-1766
114
- )
115
- watch(enableCpuHotAdd, (newValue) => {
116
- if (newValue) return
117
-
118
- maxCpuInvalid.value = false
119
- selectedMaxCpu.value = 1
120
- })
121
-
122
- const selectedCpu = ref<number>(
123
- isDisabled.value && enableCpuHotAdd.value ? props.maxCpus : 2
124
- )
125
- const isCpuDisabled = computed<boolean>(
126
- () => isDisabled.value && !enableCpuHotAdd.value
127
- )
128
- watch(selectedCpu, (newValue) => {
129
- selectedCpu.value = Math.floor(+newValue)
130
- if (!(selectedCpu.value % selectedCorePerSocket.value) || isDisabled.value)
131
- return
132
- selectedCorePerSocket.value = 1
133
- })
134
- // watch(selectedCpu, (newValue) => {
135
- // if (enableCpuHotAdd.value && enableCpuHotAddDisabled.value) return
136
-
137
- // if (newValue >= props.maxCpus) { // pc-1766
138
- // enableCpuHotAdd.value = false
139
- // }
140
- // selectedMaxCpu.value =
141
- // selectedMaxCpu.value <= newValue ? newValue + 1 : selectedMaxCpu.value
142
- // if (selectedMaxCpu.value > props.maxCpus) selectedMaxCpu.value = props.maxCpus
143
- // })
144
- const maxCpuOptions = computed<UI_I_OptionItem[]>(() =>
145
- cpuOptionsFunc(localization.value, selectedCpu.value, props.maxCpus)
146
- )
147
- const selectedMaxCpu = ref<number>(1)
148
- watch(
149
- () => props.maxCpus,
150
- (newValue) => {
151
- selectedMaxCpu.value = newValue
152
- }
153
- )
154
-
155
- const selectedCpus = computed<number[]>(() =>
156
- enableCpuHotAdd.value
157
- ? [selectedCpu.value, selectedMaxCpu.value]
158
- : [selectedCpu.value]
159
- )
160
-
161
- const selectedCorePerSocket = ref<number>(1)
162
-
163
- const cpuErrorLocalText = computed<string>(() => {
164
- const validValue = /^\d+(\.\d+)?$/.test(selectedCpu.value + '')
165
- if (!validValue) {
166
- return localization.value.common.inputContainsInvalidCharacters
167
- }
168
-
169
- const min = cpuOptions.value[0].value
170
- const max = cpuOptions.value[1].value
171
- if (selectedCpu.value < min || selectedCpu.value > max) {
172
- return localization.value.vmWizard.cpuMustBe
173
- .replace('{0}', min)
174
- .replace('{1}', max)
175
- }
176
-
177
- return ''
178
- })
179
-
180
- const apiVcpusError = computed<string>(() => {
181
- return (
182
- props.errorValidationFields?.find(
183
- (message) => message.field === 'cpu.vcpus'
184
- )?.error_message || ''
185
- )
186
- })
187
-
188
- const vcpusLocalAndApiErrorsTexts = computed<string>(() => {
189
- const localError = cpuErrorLocalText.value
190
- const apiError = apiVcpusError.value
191
-
192
- let result = ''
193
- if (localError && !apiError) result = localError
194
- if (!localError && apiError) result = apiError
195
- if (localError && apiError) result = localError + ', ' + apiError
196
- if (!localError && apiError) result = apiError
197
-
198
- return result
199
- })
200
- const reservationInvalid = ref<boolean>(false)
201
- const limitInvalid = ref<boolean>(false)
202
- const sharesInvalid = ref<boolean>(false)
203
- const maxCpuInvalid = ref<boolean>(false)
204
- const cpuInvalid = computed<boolean>(
205
- () =>
206
- !!cpuErrorLocalText.value ||
207
- reservationInvalid.value ||
208
- limitInvalid.value ||
209
- sharesInvalid.value ||
210
- (enableCpuHotAdd.value &&
211
- // selectedCpu.value < props.maxCpus && // pc-1766
212
- maxCpuInvalid.value)
213
- )
214
- watch(
215
- cpuInvalid,
216
- (newValue: boolean) => {
217
- emits('invalid', newValue)
218
- },
219
- { immediate: true }
220
- )
221
-
222
- const reservation = ref<string>('1')
223
- const reservationType = ref<string>('mhz')
224
-
225
- const limit = ref<string>('Unlimited')
226
- const limitType = ref<string>('mhz')
227
-
228
- const shares = ref<string>('2000')
229
- const sharesType = ref<string>('2000')
230
-
231
- // const hardwareVirtualization = ref<boolean>(false)
232
- //
233
- // const performanceCounters = ref<boolean>(false)
234
- //
235
- // const schedulingAffinity = ref<string>('')
236
- //
237
- // const iommu = ref<boolean>(false)
238
-
239
- // const cpuModel = ref<string>(props.cpuModels[0]?.value || '')
240
- const cpuModel = ref<string>('host-model') // PNCWEB-389
241
- watch(
242
- () => props.cpuModels,
243
- (newValue) => {
244
- cpuModel.value = newValue[0].value
245
- }
246
- )
247
- const passthroughHostCpu = ref<boolean>(false)
248
- const hostModelCpu = ref<boolean>(false)
249
-
250
- // const isShowCpuHelp = ref<boolean>(false)
251
-
252
- const { $binary } = useNuxtApp()
253
- watch(
254
- [
255
- reservation,
256
- reservationType,
257
- limit,
258
- limitType,
259
- shares,
260
- selectedCpu,
261
- selectedMaxCpu,
262
- selectedCorePerSocket,
263
- enableCpuHotAdd,
264
- cpuModel,
265
- passthroughHostCpu,
266
- hostModelCpu,
267
- ],
268
- () => {
269
- const reservationInMhz =
270
- reservationType.value === 'ghz'
271
- ? $binary.ghzToMhz(+reservation.value)
272
- : +reservation.value
273
- const limitInMhz =
274
- limit.value === 'Unlimited'
275
- ? limit.value
276
- : limitType.value === 'ghz'
277
- ? $binary.ghzToMhz(+limit.value)
278
- : +limit.value
279
- const model = passthroughHostCpu.value
280
- ? 'host-passthrough'
281
- : hostModelCpu.value
282
- ? 'host-model'
283
- : cpuModel.value
284
-
285
- emits('send-data', {
286
- model,
287
- vcpus: selectedCpu.value,
288
- max_vcpus: enableCpuHotAdd.value ? selectedMaxCpu.value : 0,
289
- core_per_socket: selectedCorePerSocket.value,
290
- reservation_mhz: reservationInMhz,
291
- limit_mhz: limitInMhz,
292
- shares: +shares.value,
293
- hotplug: enableCpuHotAdd.value,
294
- })
295
- },
296
- {
297
- immediate: true,
298
- }
299
- )
300
-
301
- // Добавляем данные для редактирования
302
- watch(
303
- () => props.cpu,
304
- (newValue) => {
305
- if (!newValue) return
306
-
307
- enableCpuHotAdd.value = newValue.hotplug
308
- selectedCpu.value = newValue.vcpus
309
- selectedMaxCpu.value = newValue.hotplug ? newValue.max_vcpus : 1
310
- selectedCorePerSocket.value = newValue.core_per_socket
311
- reservation.value = '' + newValue.reservation_mhz
312
- limit.value = '' + newValue.limit_mhz
313
- shares.value = '' + newValue.shares
314
-
315
- switch (newValue.model) {
316
- case 'host-passthrough':
317
- passthroughHostCpu.value = true
318
- cpuModel.value = ''
319
- break
320
- case 'host-model':
321
- hostModelCpu.value = true
322
- cpuModel.value = ''
323
- break
324
- default:
325
- cpuModel.value =
326
- props.cpuModels.find((model) => model.value === newValue.model)
327
- ?.value || cpuModel.value
328
- }
329
- },
330
- { immediate: true }
331
- )
332
-
333
- const onRemoveValidationError = (): void => {
334
- emits('remove-error-by-title', 'cpu.vcpus')
335
- }
336
- </script>
337
-
338
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-virtual-hardware-cpu-new
3
+ v-if="isNewView"
4
+ v-model:selected-cpu="selectedCpu"
5
+ v-model:selected-core-per-socket="selectedCorePerSocket"
6
+ v-model:enable-cpu-hot-add="enableCpuHotAdd"
7
+ v-model:selected-max-cpu="selectedMaxCpu"
8
+ v-model:reservation="reservation"
9
+ v-model:reservation-type="reservationType"
10
+ v-model:limit="limit"
11
+ v-model:limit-type="limitType"
12
+ v-model:shares="shares"
13
+ v-model:shares-type="sharesType"
14
+ v-model:cpu-model="cpuModel"
15
+ v-model:passthrough-host-cpu="passthroughHostCpu"
16
+ v-model:host-model-cpu="hostModelCpu"
17
+ :max-cpus="props.maxCpus"
18
+ :cpu-models="props.cpuModels"
19
+ :is-edit="props.isEdit"
20
+ :error-validation-fields="props.errorValidationFields"
21
+ :cpu-invalid="cpuInvalid"
22
+ :vcpus-local-and-api-errors-texts="vcpusLocalAndApiErrorsTexts"
23
+ :cpu-options="cpuOptions"
24
+ :is-cpu-disabled="isCpuDisabled"
25
+ :selected-cpus="selectedCpus"
26
+ :is-disabled="isDisabled"
27
+ :enable-cpu-hot-add-disabled="enableCpuHotAddDisabled"
28
+ :max-cpu-options="maxCpuOptions"
29
+ :vm-cpu-help-text-second="vmCpuHelpTextSecond"
30
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
31
+ @remove-validation-error="onRemoveValidationError"
32
+ @max-cpu-invalid="maxCpuInvalid = $event"
33
+ @reservation-invalid="reservationInvalid = $event"
34
+ @limit-invalid="limitInvalid = $event"
35
+ @shares-invalid="sharesInvalid = $event"
36
+ />
37
+ <common-vm-actions-common-customize-hardware-virtual-hardware-cpu-old
38
+ v-else
39
+ v-model:selected-cpu="selectedCpu"
40
+ v-model:selected-core-per-socket="selectedCorePerSocket"
41
+ v-model:enable-cpu-hot-add="enableCpuHotAdd"
42
+ v-model:selected-max-cpu="selectedMaxCpu"
43
+ v-model:reservation="reservation"
44
+ v-model:reservation-type="reservationType"
45
+ v-model:limit="limit"
46
+ v-model:limit-type="limitType"
47
+ v-model:shares="shares"
48
+ v-model:shares-type="sharesType"
49
+ v-model:cpu-model="cpuModel"
50
+ v-model:passthrough-host-cpu="passthroughHostCpu"
51
+ v-model:host-model-cpu="hostModelCpu"
52
+ :max-cpus="props.maxCpus"
53
+ :cpu-models="props.cpuModels"
54
+ :is-edit="props.isEdit"
55
+ :error-validation-fields="props.errorValidationFields"
56
+ :cpu-invalid="cpuInvalid"
57
+ :vcpus-local-and-api-errors-texts="vcpusLocalAndApiErrorsTexts"
58
+ :cpu-options="cpuOptions"
59
+ :is-cpu-disabled="isCpuDisabled"
60
+ :selected-cpus="selectedCpus"
61
+ :is-disabled="isDisabled"
62
+ :enable-cpu-hot-add-disabled="enableCpuHotAddDisabled"
63
+ :max-cpu-options="maxCpuOptions"
64
+ :vm-cpu-help-text-second="vmCpuHelpTextSecond"
65
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
66
+ @remove-validation-error="onRemoveValidationError"
67
+ @max-cpu-invalid="maxCpuInvalid = $event"
68
+ @reservation-invalid="reservationInvalid = $event"
69
+ @limit-invalid="limitInvalid = $event"
70
+ @shares-invalid="sharesInvalid = $event"
71
+ />
72
+ </template>
73
+
74
+ <script setup lang="ts">
75
+ import type { UI_I_SendDataCpu } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
76
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
77
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
78
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
79
+ import type { API_UI_I_VmEditCpu } from '~/lib/models/store/vm/interfaces'
80
+ import { cpuOptionsFunc } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/lib/config/cpuOptions'
81
+
82
+ const props = defineProps<{
83
+ maxCpus: number
84
+ cpuModels: UI_I_OptionItem[]
85
+ isEdit: boolean
86
+ errorValidationFields: UI_I_ErrorValidationField<string>[]
87
+ vmCpuHelpTextSecond?: string
88
+ state?: string | number
89
+ cpu?: API_UI_I_VmEditCpu
90
+ }>()
91
+ const emits = defineEmits<{
92
+ (event: 'send-data', value: UI_I_SendDataCpu): void
93
+ (event: 'invalid', value: boolean): void
94
+ (event: 'remove-error-by-title', value: string): void
95
+ }>()
96
+
97
+ const { $store }: any = useNuxtApp()
98
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
99
+
100
+ const localization = computed<UI_I_Localization>(() => useLocal())
101
+
102
+ const isDisabled = computed<boolean>(() => {
103
+ return props.state === 2
104
+ })
105
+
106
+ const cpuOptions = computed<UI_I_OptionItem[]>(() =>
107
+ cpuOptionsFunc(localization.value, 1, props.maxCpus)
108
+ )
109
+
110
+ const enableCpuHotAdd = ref<boolean>(false)
111
+ const enableCpuHotAddDisabled = computed<boolean>(
112
+ // () => selectedCpu.value >= props.maxCpus || isDisabled.value
113
+ () => isDisabled.value // pc-1766
114
+ )
115
+ watch(enableCpuHotAdd, (newValue) => {
116
+ if (newValue) return
117
+
118
+ maxCpuInvalid.value = false
119
+ selectedMaxCpu.value = 1
120
+ })
121
+
122
+ const selectedCpu = ref<number>(
123
+ isDisabled.value && enableCpuHotAdd.value ? props.maxCpus : 2
124
+ )
125
+ const isCpuDisabled = computed<boolean>(
126
+ () => isDisabled.value && !enableCpuHotAdd.value
127
+ )
128
+ watch(selectedCpu, (newValue) => {
129
+ selectedCpu.value = Math.floor(+newValue)
130
+ if (!(selectedCpu.value % selectedCorePerSocket.value) || isDisabled.value)
131
+ return
132
+ selectedCorePerSocket.value = 1
133
+ })
134
+ // watch(selectedCpu, (newValue) => {
135
+ // if (enableCpuHotAdd.value && enableCpuHotAddDisabled.value) return
136
+
137
+ // if (newValue >= props.maxCpus) { // pc-1766
138
+ // enableCpuHotAdd.value = false
139
+ // }
140
+ // selectedMaxCpu.value =
141
+ // selectedMaxCpu.value <= newValue ? newValue + 1 : selectedMaxCpu.value
142
+ // if (selectedMaxCpu.value > props.maxCpus) selectedMaxCpu.value = props.maxCpus
143
+ // })
144
+ const maxCpuOptions = computed<UI_I_OptionItem[]>(() =>
145
+ cpuOptionsFunc(localization.value, selectedCpu.value, props.maxCpus)
146
+ )
147
+ const selectedMaxCpu = ref<number>(1)
148
+ watch(
149
+ () => props.maxCpus,
150
+ (newValue) => {
151
+ selectedMaxCpu.value = newValue
152
+ }
153
+ )
154
+
155
+ const selectedCpus = computed<number[]>(() =>
156
+ enableCpuHotAdd.value
157
+ ? [selectedCpu.value, selectedMaxCpu.value]
158
+ : [selectedCpu.value]
159
+ )
160
+
161
+ const selectedCorePerSocket = ref<number>(1)
162
+
163
+ const cpuErrorLocalText = computed<string>(() => {
164
+ const validValue = /^\d+(\.\d+)?$/.test(selectedCpu.value + '')
165
+ if (!validValue) {
166
+ return localization.value.common.inputContainsInvalidCharacters
167
+ }
168
+
169
+ const min = cpuOptions.value[0].value
170
+ const max = cpuOptions.value[1].value
171
+ if (selectedCpu.value < min || selectedCpu.value > max) {
172
+ return localization.value.vmWizard.cpuMustBe
173
+ .replace('{0}', min)
174
+ .replace('{1}', max)
175
+ }
176
+
177
+ return ''
178
+ })
179
+
180
+ const apiVcpusError = computed<string>(() => {
181
+ return (
182
+ props.errorValidationFields?.find(
183
+ (message) => message.field === 'cpu.vcpus'
184
+ )?.error_message || ''
185
+ )
186
+ })
187
+
188
+ const vcpusLocalAndApiErrorsTexts = computed<string>(() => {
189
+ const localError = cpuErrorLocalText.value
190
+ const apiError = apiVcpusError.value
191
+
192
+ let result = ''
193
+ if (localError && !apiError) result = localError
194
+ if (!localError && apiError) result = apiError
195
+ if (localError && apiError) result = localError + ', ' + apiError
196
+ if (!localError && apiError) result = apiError
197
+
198
+ return result
199
+ })
200
+ const reservationInvalid = ref<boolean>(false)
201
+ const limitInvalid = ref<boolean>(false)
202
+ const sharesInvalid = ref<boolean>(false)
203
+ const maxCpuInvalid = ref<boolean>(false)
204
+ const cpuInvalid = computed<boolean>(
205
+ () =>
206
+ !!cpuErrorLocalText.value ||
207
+ reservationInvalid.value ||
208
+ limitInvalid.value ||
209
+ sharesInvalid.value ||
210
+ (enableCpuHotAdd.value &&
211
+ // selectedCpu.value < props.maxCpus && // pc-1766
212
+ maxCpuInvalid.value)
213
+ )
214
+ watch(
215
+ cpuInvalid,
216
+ (newValue: boolean) => {
217
+ emits('invalid', newValue)
218
+ },
219
+ { immediate: true }
220
+ )
221
+
222
+ const reservation = ref<string>('1')
223
+ const reservationType = ref<string>('mhz')
224
+
225
+ const limit = ref<string>('Unlimited')
226
+ const limitType = ref<string>('mhz')
227
+
228
+ const shares = ref<string>('2000')
229
+ const sharesType = ref<string>('2000')
230
+
231
+ // const hardwareVirtualization = ref<boolean>(false)
232
+ //
233
+ // const performanceCounters = ref<boolean>(false)
234
+ //
235
+ // const schedulingAffinity = ref<string>('')
236
+ //
237
+ // const iommu = ref<boolean>(false)
238
+
239
+ // const cpuModel = ref<string>(props.cpuModels[0]?.value || '')
240
+ const cpuModel = ref<string>('host-model') // PNCWEB-389
241
+ watch(
242
+ () => props.cpuModels,
243
+ (newValue) => {
244
+ cpuModel.value = newValue[0].value
245
+ }
246
+ )
247
+ const passthroughHostCpu = ref<boolean>(false)
248
+ const hostModelCpu = ref<boolean>(false)
249
+
250
+ // const isShowCpuHelp = ref<boolean>(false)
251
+
252
+ const { $binary } = useNuxtApp()
253
+ watch(
254
+ [
255
+ reservation,
256
+ reservationType,
257
+ limit,
258
+ limitType,
259
+ shares,
260
+ selectedCpu,
261
+ selectedMaxCpu,
262
+ selectedCorePerSocket,
263
+ enableCpuHotAdd,
264
+ cpuModel,
265
+ passthroughHostCpu,
266
+ hostModelCpu,
267
+ ],
268
+ () => {
269
+ const reservationInMhz =
270
+ reservationType.value === 'ghz'
271
+ ? $binary.ghzToMhz(+reservation.value)
272
+ : +reservation.value
273
+ const limitInMhz =
274
+ limit.value === 'Unlimited'
275
+ ? limit.value
276
+ : limitType.value === 'ghz'
277
+ ? $binary.ghzToMhz(+limit.value)
278
+ : +limit.value
279
+ const model = passthroughHostCpu.value
280
+ ? 'host-passthrough'
281
+ : hostModelCpu.value
282
+ ? 'host-model'
283
+ : cpuModel.value
284
+
285
+ emits('send-data', {
286
+ model,
287
+ vcpus: selectedCpu.value,
288
+ max_vcpus: enableCpuHotAdd.value ? selectedMaxCpu.value : 0,
289
+ core_per_socket: selectedCorePerSocket.value,
290
+ reservation_mhz: reservationInMhz,
291
+ limit_mhz: limitInMhz,
292
+ shares: +shares.value,
293
+ hotplug: enableCpuHotAdd.value,
294
+ })
295
+ },
296
+ {
297
+ immediate: true,
298
+ }
299
+ )
300
+
301
+ // Добавляем данные для редактирования
302
+ watch(
303
+ () => props.cpu,
304
+ (newValue) => {
305
+ if (!newValue) return
306
+
307
+ enableCpuHotAdd.value = newValue.hotplug
308
+ selectedCpu.value = newValue.vcpus
309
+ selectedMaxCpu.value = newValue.hotplug ? newValue.max_vcpus : 1
310
+ selectedCorePerSocket.value = newValue.core_per_socket
311
+ reservation.value = '' + newValue.reservation_mhz
312
+ limit.value = '' + newValue.limit_mhz
313
+ shares.value = '' + newValue.shares
314
+
315
+ switch (newValue.model) {
316
+ case 'host-passthrough':
317
+ passthroughHostCpu.value = true
318
+ cpuModel.value = ''
319
+ break
320
+ case 'host-model':
321
+ hostModelCpu.value = true
322
+ cpuModel.value = ''
323
+ break
324
+ default:
325
+ cpuModel.value =
326
+ props.cpuModels.find((model) => model.value === newValue.model)
327
+ ?.value || cpuModel.value
328
+ }
329
+ },
330
+ { immediate: true }
331
+ )
332
+
333
+ const onRemoveValidationError = (): void => {
334
+ emits('remove-error-by-title', 'cpu.vcpus')
335
+ }
336
+ </script>
337
+
338
+ <style scoped lang="scss"></style>