bfg-common 1.5.197 → 1.5.199

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 (157) 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 +5 -4
  7. package/assets/localization/local_en.json +5 -4
  8. package/assets/localization/local_hy.json +5 -4
  9. package/assets/localization/local_kk.json +5 -4
  10. package/assets/localization/local_ru.json +5 -4
  11. package/assets/localization/local_zh.json +5 -4
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/dropdown/Portlet.vue +1 -1
  14. package/components/atoms/perPage/PerPage.vue +58 -58
  15. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  16. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  17. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  18. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  19. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  20. package/components/common/browse/lib/models/interfaces.ts +5 -5
  21. package/components/common/context/lib/models/interfaces.ts +31 -31
  22. package/components/common/context/recursion/RecursionNew.vue +238 -238
  23. package/components/common/diagramMain/DiagramMain.vue +897 -897
  24. package/components/common/diagramMain/Header.vue +214 -214
  25. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  26. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  27. package/components/common/diagramMain/lib/models/types.ts +21 -21
  28. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  29. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  30. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  31. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  32. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  33. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  34. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  35. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  36. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  37. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  38. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  39. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  40. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  41. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  42. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  43. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  44. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  45. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  46. package/components/common/diagramMain/port/Ports.vue +47 -47
  47. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  48. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  49. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  50. package/components/common/pages/home/headline/Headline.vue +45 -45
  51. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  52. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  53. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  54. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  55. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  56. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  57. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  58. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  59. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  60. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  61. package/components/common/pages/packages/Packages.vue +208 -208
  62. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  63. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  64. package/components/common/recursionTree/RecursionTree.vue +223 -223
  65. package/components/common/select/button/ButtonDropdown.vue +108 -108
  66. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  67. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  68. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  69. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  70. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  71. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  72. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  73. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +337 -337
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +480 -480
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +17 -2
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +190 -190
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +237 -237
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +304 -288
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +154 -154
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +382 -375
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +289 -289
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +151 -151
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +73 -73
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +40 -40
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +106 -106
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +81 -81
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  116. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  117. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  118. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +67 -67
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +149 -149
  120. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  121. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +31 -31
  122. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +31 -31
  123. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  124. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +128 -128
  125. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  126. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  127. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  128. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  129. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  130. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +134 -134
  131. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  132. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  133. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  134. package/components/common/vm/actions/common/select/createType/New.vue +84 -84
  135. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  136. package/components/common/vm/actions/common/select/name/Name.vue +167 -167
  137. package/components/common/vm/actions/common/select/os/New.vue +122 -122
  138. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  139. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  140. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  141. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  142. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  143. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  144. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  145. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  146. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +137 -137
  147. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  148. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  149. package/composables/productNameLocal.ts +30 -30
  150. package/composables/useAppVersion.ts +21 -21
  151. package/package.json +2 -2
  152. package/plugins/date.ts +233 -233
  153. package/public/spice-console/lib/images/bitmap.js +203 -203
  154. package/public/spice-console/network/spicechannel.js +383 -383
  155. package/store/main/mutations.ts +7 -7
  156. package/store/main/state.ts +7 -7
  157. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,288 +1,304 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-virtual-hardware-memory-new
3
- v-if="isNewView"
4
- v-model:selected-memory="selectedMemory"
5
- v-model:memory-type="memoryType"
6
- v-model:reservation="reservation"
7
- v-model:reservation-type="reservationType"
8
- v-model:reserve-guest-memory="reserveGuestMemory"
9
- v-model:reservation-invalid="reservationInvalid"
10
- v-model:limit="limit"
11
- v-model:limit-type="limitType"
12
- v-model:limit-invalid="limitInvalid"
13
- v-model:memory-hot-plug="memoryHotPlug"
14
- :error-validation-fields="props.errorValidationFields"
15
- :memory-invalid="memoryInvalid"
16
- :error-text="memorySizeLocalAndApiErrorsTexts"
17
- :memory-options="memoryOptions"
18
- :is-memory-disabled="isMemoryDisabled"
19
- :memory-type-options="memoryTypeOptions"
20
- :is-disabled="isDisabled"
21
- :limit-options="limitOptions"
22
- :is-disabled-memory-hot-plug="isDisabledMemoryHotPlug"
23
- @select-memory="onSelectMemory"
24
- @remove-error="onRemoveValidationError"
25
- @remove-error-by-title="emits('remove-error-by-title', $event)"
26
- />
27
- <common-vm-actions-common-customize-hardware-virtual-hardware-memory-old
28
- v-else
29
- v-model:selected-memory="selectedMemory"
30
- v-model:memory-type="memoryType"
31
- v-model:reservation="reservation"
32
- v-model:reservation-type="reservationType"
33
- v-model:reserve-guest-memory="reserveGuestMemory"
34
- v-model:reservation-invalid="reservationInvalid"
35
- v-model:limit="limit"
36
- v-model:limit-type="limitType"
37
- v-model:limit-invalid="limitInvalid"
38
- v-model:memory-hot-plug="memoryHotPlug"
39
- :error-validation-fields="props.errorValidationFields"
40
- :memory-invalid="memoryInvalid"
41
- :error-text="memorySizeLocalAndApiErrorsTexts"
42
- :memory-options="memoryOptions"
43
- :is-memory-disabled="isMemoryDisabled"
44
- :memory-type-options="memoryTypeOptions"
45
- :is-disabled="isDisabled"
46
- :limit-options="limitOptions"
47
- :is-disabled-memory-hot-plug="isDisabledMemoryHotPlug"
48
- @select-memory="onSelectMemory"
49
- @remove-error="onRemoveValidationError"
50
- @remove-error-by-title="emits('remove-error-by-title', $event)"
51
- />
52
- </template>
53
-
54
- <script setup lang="ts">
55
- import type { API_UI_I_VmEditMemory } from '~/lib/models/store/vm/interfaces'
56
- import type { UI_I_SendDataMemory } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
57
- import type { UI_I_Localization } from '~/lib/models/interfaces'
58
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
59
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
60
- import {
61
- memoryOptionsFunc,
62
- memoryTypeOptionsFunc,
63
- } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/lib/config/memoryOptions'
64
-
65
- const props = defineProps<{
66
- maxMemory: number
67
- isEdit: boolean
68
- errorValidationFields: UI_I_ErrorValidationField[]
69
- state?: string | number
70
- memory?: API_UI_I_VmEditMemory
71
- }>()
72
- const emits = defineEmits<{
73
- (event: 'send-data', value: UI_I_SendDataMemory): void
74
- (event: 'invalid', value: boolean): void
75
- (event: 'remove-error-by-title', value: string): void
76
- }>()
77
-
78
- const { $store, $binary }: any = useNuxtApp()
79
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
80
-
81
- const localization = computed<UI_I_Localization>(() => useLocal())
82
-
83
- const minMemoryInMb = 128
84
- watch(
85
- () => props.maxMemory,
86
- (newValue) => {
87
- memoryOptions.value = memoryOptionsFunc(
88
- localization.value,
89
- minMemoryInMb,
90
- newValue
91
- )
92
- }
93
- )
94
-
95
- const isDisabled = computed<boolean>(() => {
96
- return props.state === 2
97
- })
98
-
99
- const isMemoryDisabled = computed<boolean>(
100
- () => isDisabled.value && !memoryHotPlug.value
101
- )
102
-
103
- const selectedMemory = ref<number>(4)
104
- watch(selectedMemory, (newValue) => {
105
- const valueInt = parseInt('' + newValue)
106
- selectedMemory.value = isNaN(valueInt) ? 0 : valueInt
107
- })
108
- const memoryType = ref<string>('gb')
109
- const memoryTypeOptions = ref<UI_I_OptionItem[]>(
110
- memoryTypeOptionsFunc(localization.value)
111
- )
112
- const memoryInMb = computed<number>(() => {
113
- if (memoryType.value === 'mb') {
114
- return +selectedMemory.value
115
- }
116
-
117
- return $binary.universalFromTo(+selectedMemory.value, memoryType.value, 'mb')
118
- })
119
-
120
- const memoryOptions = ref<UI_I_OptionItem[]>(
121
- memoryOptionsFunc(localization.value, minMemoryInMb, props.maxMemory)
122
- )
123
- const onSelectMemory = ({
124
- value,
125
- type,
126
- }: {
127
- value: number
128
- type: string
129
- }): void => {
130
- selectedMemory.value = value
131
- if (memoryType.value !== type) {
132
- memoryType.value = type
133
- }
134
- // if (memoryType.value === 'mb') {
135
- // selectedMemory.value = mb
136
- // return
137
- // }
138
- //
139
- // selectedMemory.value = $binary.universalFromTo(mb, 'mb', memoryType.value, 12)
140
- }
141
-
142
- const memoryErrorLocalText = computed<string>(() => {
143
- const validValue = /^\d+(\.\d+)?$/.test(selectedMemory.value + '')
144
- if (!validValue) {
145
- return localization.value.common.inputContainsInvalidCharacters
146
- }
147
-
148
- const maxMemoryInGb = $binary.mbToGb(props.maxMemory)
149
- if (memoryInMb.value < minMemoryInMb || memoryInMb.value > props.maxMemory) {
150
- return localization.value.common.memoryMustBe
151
- .replace('{0}', `${minMemoryInMb} ${localization.value.common.mb}`)
152
- .replace('{1}', `${maxMemoryInGb} ${localization.value.common.gb}`)
153
- }
154
-
155
- if (memoryInMb.value % 2 !== 0) {
156
- return localization.value.common.valueShouldMultiple.replace(
157
- '{0}',
158
- `${2} ${localization.value.common.mb}`
159
- )
160
- }
161
- return ''
162
- })
163
-
164
- const apiErrorLocal = computed<string>(() => {
165
- return (
166
- props.errorValidationFields?.find(
167
- (message) => message.field === 'memory.size_mb'
168
- )?.error_message || ''
169
- )
170
- })
171
-
172
- const memorySizeLocalAndApiErrorsTexts = computed<string>(() => {
173
- const localError = memoryErrorLocalText.value
174
- const apiError = apiErrorLocal.value
175
-
176
- let result = ''
177
- if (localError && !apiError) result = localError
178
- if (apiError && !localError) result = apiError
179
- if (localError && apiError) result = localError + ', ' + apiError
180
- if (!localError && apiError) result = apiError
181
-
182
- return result
183
- })
184
-
185
- const reservationInvalid = ref<boolean>(false)
186
- const limitInvalid = ref<boolean>(false)
187
- const memoryInvalid = computed<boolean>(
188
- () =>
189
- !!memorySizeLocalAndApiErrorsTexts.value ||
190
- reservationInvalid.value ||
191
- limitInvalid.value
192
- )
193
- watch(
194
- memoryInvalid,
195
- (newValue) => {
196
- emits('invalid', newValue)
197
- },
198
- { immediate: true }
199
- )
200
-
201
- const reservation = ref<string>('2')
202
- watch(reservation, (newValue) => {
203
- const valueInt = parseInt('' + newValue)
204
- reservation.value = isNaN(valueInt) ? '0' : '' + valueInt
205
- })
206
- const reservationType = ref<string>('mb')
207
- const reserveGuestMemory = ref<boolean>(false)
208
-
209
- const limit = ref<string>('Unlimited')
210
- watch(limit, (newValue) => {
211
- const valueInt = parseInt('' + newValue)
212
- limit.value !== 'Unlimited' &&
213
- (limit.value = isNaN(valueInt) ? '0' : '' + valueInt)
214
- })
215
- const limitType = ref<string>('mb')
216
- const limitOptions = computed<UI_I_OptionItem[] | undefined>(() => {
217
- if (memoryHotPlug.value)
218
- return memoryOptionsFunc(
219
- localization.value,
220
- memoryInMb.value,
221
- props.maxMemory
222
- )
223
- })
224
-
225
- const memoryHotPlug = ref<boolean>(false)
226
- const isDisabledMemoryHotPlug = computed<boolean>(
227
- () => memoryInMb.value >= props.maxMemory || isDisabled.value
228
- )
229
- watch(isDisabledMemoryHotPlug, (newValue) => {
230
- if (newValue) memoryHotPlug.value = false
231
- })
232
-
233
- watch(
234
- [memoryInMb, memoryHotPlug, reservation, reservationType, limit, limitType],
235
- () => {
236
- const reservationInMb =
237
- reservationType.value === 'mb'
238
- ? reservation.value
239
- : '' +
240
- $binary.universalFromTo(
241
- reservation.value,
242
- reservationType.value,
243
- 'mb',
244
- 12
245
- )
246
- const limitInMb =
247
- limit.value === 'Unlimited'
248
- ? limit.value
249
- : limitType.value === 'gb'
250
- ? $binary.gbToMb(+limit.value)
251
- : +limit.value
252
- emits('send-data', {
253
- memory: '' + memoryInMb.value,
254
- hotplug: memoryHotPlug.value,
255
- reservation_mb: reservationInMb,
256
- limit_mb: limitInMb,
257
- })
258
- },
259
- { immediate: true }
260
- )
261
-
262
- // Добавляем данные для редактирования
263
- watch(
264
- () => props.memory,
265
- (newValue) => {
266
- if (!newValue) return
267
-
268
- const sizeInGb = $binary.mbToGb(newValue.size_mb)
269
- if (sizeInGb < 1) {
270
- selectedMemory.value = newValue.size_mb
271
- memoryType.value = 'mb'
272
- } else {
273
- selectedMemory.value = sizeInGb
274
- }
275
-
276
- reservation.value = '' + newValue.reservation_mb
277
- limit.value = '' + newValue.limit_mb
278
- memoryHotPlug.value = newValue.hotplug
279
- },
280
- { immediate: true }
281
- )
282
-
283
- const onRemoveValidationError = (): void => {
284
- emits('remove-error-by-title', 'memory.size_mb')
285
- }
286
- </script>
287
-
288
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-virtual-hardware-memory-new
3
+ v-if="isNewView"
4
+ v-model:selected-memory="selectedMemory"
5
+ v-model:memory-type="memoryType"
6
+ v-model:reservation="reservation"
7
+ v-model:reservation-type="reservationType"
8
+ v-model:reserve-guest-memory="reserveGuestMemory"
9
+ v-model:reservation-invalid="reservationInvalid"
10
+ v-model:limit="limit"
11
+ v-model:limit-type="limitType"
12
+ v-model:limit-invalid="limitInvalid"
13
+ v-model:memory-hot-plug="memoryHotPlug"
14
+ :error-validation-fields="props.errorValidationFields"
15
+ :memory-invalid="memoryInvalid"
16
+ :error-text="memorySizeLocalAndApiErrorsTexts"
17
+ :memory-options="memoryOptions"
18
+ :is-memory-disabled="isMemoryDisabled"
19
+ :memory-type-options="memoryTypeOptions"
20
+ :is-disabled="isDisabled"
21
+ :limit-options="limitOptions"
22
+ :is-disabled-memory-hot-plug="isDisabledMemoryHotPlug"
23
+ @select-memory="onSelectMemory"
24
+ @remove-error="onRemoveValidationError"
25
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
26
+ />
27
+ <common-vm-actions-common-customize-hardware-virtual-hardware-memory-old
28
+ v-else
29
+ v-model:selected-memory="selectedMemory"
30
+ v-model:memory-type="memoryType"
31
+ v-model:reservation="reservation"
32
+ v-model:reservation-type="reservationType"
33
+ v-model:reserve-guest-memory="reserveGuestMemory"
34
+ v-model:reservation-invalid="reservationInvalid"
35
+ v-model:limit="limit"
36
+ v-model:limit-type="limitType"
37
+ v-model:limit-invalid="limitInvalid"
38
+ v-model:memory-hot-plug="memoryHotPlug"
39
+ :error-validation-fields="props.errorValidationFields"
40
+ :memory-invalid="memoryInvalid"
41
+ :error-text="memorySizeLocalAndApiErrorsTexts"
42
+ :memory-options="memoryOptions"
43
+ :is-memory-disabled="isMemoryDisabled"
44
+ :memory-type-options="memoryTypeOptions"
45
+ :is-disabled="isDisabled"
46
+ :limit-options="limitOptions"
47
+ :is-disabled-memory-hot-plug="isDisabledMemoryHotPlug"
48
+ @select-memory="onSelectMemory"
49
+ @remove-error="onRemoveValidationError"
50
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
51
+ />
52
+ </template>
53
+
54
+ <script setup lang="ts">
55
+ import type { API_UI_I_VmEditMemory } from '~/lib/models/store/vm/interfaces'
56
+ import type { UI_I_SendDataMemory } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
57
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
58
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
59
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
60
+ import {
61
+ memoryOptionsFunc,
62
+ memoryTypeOptionsFunc,
63
+ } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/lib/config/memoryOptions'
64
+
65
+ const props = defineProps<{
66
+ maxMemory: number
67
+ isEdit: boolean
68
+ errorValidationFields: UI_I_ErrorValidationField[]
69
+ state?: string | number
70
+ memory?: API_UI_I_VmEditMemory
71
+ }>()
72
+ const emits = defineEmits<{
73
+ (event: 'send-data', value: UI_I_SendDataMemory): void
74
+ (event: 'invalid', value: boolean): void
75
+ (event: 'remove-error-by-title', value: string): void
76
+ }>()
77
+
78
+ const { $store, $binary }: any = useNuxtApp()
79
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
80
+
81
+ const localization = computed<UI_I_Localization>(() => useLocal())
82
+
83
+ const minMemoryInMb = 128
84
+ watch(
85
+ () => props.maxMemory,
86
+ (newValue) => {
87
+ memoryOptions.value = memoryOptionsFunc(
88
+ localization.value,
89
+ minMemoryInMb,
90
+ newValue
91
+ )
92
+ }
93
+ )
94
+
95
+ const isDisabled = computed<boolean>(() => {
96
+ return props.state === 2
97
+ })
98
+
99
+ const isMemoryDisabled = computed<boolean>(
100
+ () => isDisabled.value && !memoryHotPlug.value
101
+ )
102
+
103
+ const selectedMemory = ref<number>(4)
104
+ watch(selectedMemory, (newValue) => {
105
+ const valueInt = parseInt('' + newValue)
106
+ selectedMemory.value = isNaN(valueInt) ? 0 : valueInt
107
+ })
108
+ const memoryType = ref<string>('gb')
109
+ const memoryTypeOptions = ref<UI_I_OptionItem[]>(
110
+ memoryTypeOptionsFunc(localization.value)
111
+ )
112
+ const memoryInMb = computed<number>(() => {
113
+ if (memoryType.value === 'mb') {
114
+ return +selectedMemory.value
115
+ }
116
+
117
+ return $binary.universalFromTo(+selectedMemory.value, memoryType.value, 'mb')
118
+ })
119
+
120
+ const memoryOptions = ref<UI_I_OptionItem[]>(
121
+ memoryOptionsFunc(localization.value, minMemoryInMb, props.maxMemory)
122
+ )
123
+ const onSelectMemory = ({
124
+ value,
125
+ type,
126
+ }: {
127
+ value: number
128
+ type: string
129
+ }): void => {
130
+ selectedMemory.value = value
131
+ if (memoryType.value !== type) {
132
+ memoryType.value = type
133
+ }
134
+ // if (memoryType.value === 'mb') {
135
+ // selectedMemory.value = mb
136
+ // return
137
+ // }
138
+ //
139
+ // selectedMemory.value = $binary.universalFromTo(mb, 'mb', memoryType.value, 12)
140
+ }
141
+
142
+ const memoryErrorLocalText = computed<string>(() => {
143
+ const validValue = /^\d+(\.\d+)?$/.test(selectedMemory.value + '')
144
+ if (!validValue) {
145
+ return localization.value.common.inputContainsInvalidCharacters
146
+ }
147
+
148
+ const maxMemoryInGb = $binary.mbToGb(props.maxMemory)
149
+ if (memoryInMb.value < minMemoryInMb || memoryInMb.value > props.maxMemory) {
150
+ return localization.value.common.memoryMustBe
151
+ .replace('{0}', `${minMemoryInMb} ${localization.value.common.mb}`)
152
+ .replace('{1}', `${maxMemoryInGb} ${localization.value.common.gb}`)
153
+ }
154
+
155
+ if (memoryInMb.value % 2 !== 0) {
156
+ return localization.value.common.valueShouldMultiple.replace(
157
+ '{0}',
158
+ `${2} ${localization.value.common.mb}`
159
+ )
160
+ }
161
+ return ''
162
+ })
163
+
164
+ const apiErrorLocal = computed<string>(() => {
165
+ return (
166
+ props.errorValidationFields?.find(
167
+ (message) => message.field === 'memory.size_mb'
168
+ )?.error_message || ''
169
+ )
170
+ })
171
+
172
+ const memorySizeLocalAndApiErrorsTexts = computed<string>(() => {
173
+ const localError = memoryErrorLocalText.value
174
+ const apiError = apiErrorLocal.value
175
+
176
+ let result = ''
177
+ if (localError && !apiError) result = localError
178
+ if (apiError && !localError) result = apiError
179
+ if (localError && apiError) result = localError + ', ' + apiError
180
+ if (!localError && apiError) result = apiError
181
+
182
+ return result
183
+ })
184
+
185
+ const reservationInvalid = ref<boolean>(false)
186
+ const limitInvalid = ref<boolean>(false)
187
+ const memoryInvalid = computed<boolean>(
188
+ () =>
189
+ !!memorySizeLocalAndApiErrorsTexts.value ||
190
+ reservationInvalid.value ||
191
+ limitInvalid.value
192
+ )
193
+ watch(
194
+ memoryInvalid,
195
+ (newValue) => {
196
+ emits('invalid', newValue)
197
+ },
198
+ { immediate: true }
199
+ )
200
+
201
+ const reservation = ref<string>('2')
202
+ watch(reservation, (newValue) => {
203
+ const valueInt = parseInt('' + newValue)
204
+ reservation.value = isNaN(valueInt) ? '0' : '' + valueInt
205
+ })
206
+ const reservationType = ref<string>('mb')
207
+ const reserveGuestMemory = ref<boolean>(false)
208
+
209
+ const limit = ref<string>('Unlimited')
210
+ watch(limit, (newValue) => {
211
+ const valueInt = parseInt('' + newValue)
212
+ limit.value !== 'Unlimited' &&
213
+ (limit.value = isNaN(valueInt) ? '0' : '' + valueInt)
214
+ })
215
+ const limitType = ref<string>('mb')
216
+ const limitOptions = computed<UI_I_OptionItem[] | undefined>(() => {
217
+ if (memoryHotPlug.value)
218
+ return memoryOptionsFunc(
219
+ localization.value,
220
+ memoryInMb.value,
221
+ props.maxMemory
222
+ )
223
+ })
224
+
225
+ const memoryHotPlug = ref<boolean>(false)
226
+ const isDisabledMemoryHotPlug = computed<boolean>(
227
+ () => memoryInMb.value >= props.maxMemory || isDisabled.value
228
+ )
229
+ watch(isDisabledMemoryHotPlug, (newValue) => {
230
+ if (newValue) memoryHotPlug.value = false
231
+ })
232
+
233
+ watch(
234
+ [memoryInMb, memoryHotPlug, reservation, reservationType, limit, limitType],
235
+ () => {
236
+ const reservationInMb =
237
+ reservationType.value === 'mb'
238
+ ? reservation.value
239
+ : '' +
240
+ $binary.universalFromTo(
241
+ reservation.value,
242
+ reservationType.value,
243
+ 'mb',
244
+ 12
245
+ )
246
+ const limitInMb =
247
+ limit.value === 'Unlimited'
248
+ ? limit.value
249
+ : limitType.value === 'gb'
250
+ ? $binary.gbToMb(+limit.value)
251
+ : +limit.value
252
+ emits('send-data', {
253
+ memory: '' + memoryInMb.value,
254
+ hotplug: memoryHotPlug.value,
255
+ reservation_mb: reservationInMb,
256
+ limit_mb: limitInMb,
257
+ })
258
+ },
259
+ { immediate: true }
260
+ )
261
+
262
+ // Добавляем данные для редактирования
263
+ watch(
264
+ () => props.memory,
265
+ (newValue) => {
266
+ if (!newValue) return
267
+
268
+ const sizeInGb = $binary.mbToGb(newValue.size_mb)
269
+ if (sizeInGb < 1) {
270
+ selectedMemory.value = newValue.size_mb
271
+ memoryType.value = 'mb'
272
+ } else {
273
+ selectedMemory.value = sizeInGb
274
+ }
275
+
276
+ const reservationInGb = $binary.mbToGb(newValue.reservation_mb)
277
+ if (reservationInGb < 1) {
278
+ reservation.value = newValue.reservation_mb
279
+ reservationType.value = 'mb'
280
+ } else {
281
+ reservation.value = reservationInGb
282
+ reservationType.value = 'gb'
283
+ }
284
+
285
+ const limitInGb = $binary.mbToGb(newValue.limit_mb)
286
+ if (limitInGb < 1) {
287
+ limit.value = newValue.limit_mb
288
+ limitType.value = 'mb'
289
+ } else {
290
+ limit.value = limitInGb
291
+ limitType.value = 'gb'
292
+ }
293
+
294
+ memoryHotPlug.value = newValue.hotplug
295
+ },
296
+ { immediate: true }
297
+ )
298
+
299
+ const onRemoveValidationError = (): void => {
300
+ emits('remove-error-by-title', 'memory.size_mb')
301
+ }
302
+ </script>
303
+
304
+ <style scoped lang="scss"></style>