bfg-common 1.5.199 → 1.5.201

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 (127) hide show
  1. package/CODE_STYLE.md +109 -109
  2. package/components/atoms/TheIcon3.vue +50 -50
  3. package/components/atoms/perPage/PerPage.vue +58 -58
  4. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  5. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  6. package/components/atoms/tabs/VerticalTabs.vue +105 -105
  7. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  8. package/components/common/context/lib/models/interfaces.ts +31 -31
  9. package/components/common/context/recursion/RecursionNew.vue +238 -238
  10. package/components/common/diagramMain/DiagramMain.vue +897 -897
  11. package/components/common/diagramMain/Header.vue +214 -214
  12. package/components/common/graph/GraphOld.vue +50 -50
  13. package/components/common/graph/graphNew/GraphNew.vue +194 -194
  14. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  15. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  16. package/components/common/monitor/advanced/graphView/GraphView.vue +145 -178
  17. package/components/common/monitor/advanced/graphView/GraphViewOld.vue +56 -56
  18. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/utils.ts +1040 -1040
  19. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  20. package/components/common/pages/home/headline/Headline.vue +45 -45
  21. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  22. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  23. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  24. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  25. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  26. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  27. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  28. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  29. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  30. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  31. package/components/common/pages/packages/Packages.vue +208 -208
  32. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  33. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  34. package/components/common/recursionTree/RecursionTree.vue +223 -223
  35. package/components/common/select/button/ButtonDropdown.vue +108 -108
  36. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  37. package/components/common/vm/actions/add/folderTreeView/FolderTreeView.vue +72 -72
  38. package/components/common/vm/actions/add/folderTreeView/New.vue +40 -40
  39. package/components/common/vm/actions/add/folderTreeView/Old.vue +50 -50
  40. package/components/common/vm/actions/add/lib/config/steps.ts +263 -263
  41. package/components/common/vm/actions/clone/lib/config/steps.ts +291 -291
  42. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  43. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +337 -337
  44. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +480 -480
  45. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  46. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  47. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +100 -100
  48. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  49. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  50. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  51. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +78 -78
  52. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  53. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +2 -17
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/CpuNew.vue +190 -190
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/model/ModelNew.vue +237 -237
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/Shares.vue +140 -140
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/tooltip/TooltipNew.vue +154 -154
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +288 -304
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/MemoryNew.vue +154 -154
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +375 -382
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +289 -289
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/Location.vue +151 -151
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationNew.vue +73 -73
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/LocationOld.vue +83 -83
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +94 -94
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/inputDevices/InputDevicesNew.vue +40 -40
  82. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  83. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +106 -106
  84. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +81 -81
  85. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +32 -32
  86. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +60 -60
  87. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +174 -174
  88. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +67 -67
  89. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +149 -149
  90. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  91. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +31 -31
  92. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +31 -31
  93. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +128 -128
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +39 -39
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  98. package/components/common/vm/actions/common/lib/utils/capabilities.ts +52 -52
  99. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  100. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +134 -134
  101. package/components/common/vm/actions/common/select/computeResource/treeView/New.vue +44 -44
  102. package/components/common/vm/actions/common/select/computeResource/treeView/TreeView.vue +118 -118
  103. package/components/common/vm/actions/common/select/createType/CreateType.vue +38 -38
  104. package/components/common/vm/actions/common/select/createType/New.vue +84 -84
  105. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  106. package/components/common/vm/actions/common/select/name/Name.vue +167 -167
  107. package/components/common/vm/actions/common/select/os/New.vue +122 -122
  108. package/components/common/vm/actions/common/select/os/Old.vue +152 -152
  109. package/components/common/vm/actions/common/select/os/Os.vue +139 -139
  110. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  111. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  112. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  113. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  114. package/components/common/wizards/vm/migrate/lib/config/steps.ts +157 -157
  115. package/components/common/wizards/vm/migrate/lib/validations.ts +68 -68
  116. package/components/common/wizards/vm/migrate/select/computeResource/tableView/TableView.vue +137 -137
  117. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  118. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  119. package/composables/productNameLocal.ts +30 -30
  120. package/composables/useAppVersion.ts +21 -21
  121. package/package.json +2 -2
  122. package/plugins/date.ts +233 -233
  123. package/public/spice-console/lib/images/bitmap.js +203 -203
  124. package/public/spice-console/network/spicechannel.js +383 -383
  125. package/store/main/mutations.ts +7 -7
  126. package/store/main/state.ts +7 -7
  127. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,289 +1,289 @@
1
- <template>
2
- <ui-stack-block
3
- :has-children="true"
4
- :is-roll-back="props.type === 'removed'"
5
- :removable="props.isRemovable"
6
- :test-id="`hard-disk-stack-block-${props.index}`"
7
- @remove="emits('remove')"
8
- @roll-back="emits('roll-back')"
9
- >
10
- <template #stackBlockKey>
11
- <div
12
- :id="`vm-wizard-toggle-block-hard-disk-${props.index}`"
13
- :data-id="`vm-wizard-toggle-block-hard-disk-${props.index}`"
14
- class="vm-wizard-toggle-block-hard-disk flex-align-center"
15
- >
16
- <span class="title">{{ props.label }}</span>
17
- <ui-icon
18
- v-show="props.hardDiskInvalid"
19
- width="18px"
20
- height="18px"
21
- name="error-outline"
22
- class="ml-2"
23
- />
24
- </div>
25
- </template>
26
- <template #stackBlockContent>
27
- <div :class="['new-hard-disk-content flex-align-center', props.type]">
28
- <template v-if="props.type === 'removed'">
29
- <ui-tooltip
30
- id="device-will-removed-text"
31
- :margin-between-trigger="8"
32
- test-id="device-will-removed-text"
33
- size="md"
34
- position="bottom"
35
- position-by-tooltip="center"
36
- class="text-ellipsis"
37
- >
38
- <template #target>
39
- <span
40
- id="device-will-removed-text"
41
- class="device-will-removed-text text-ellipsis"
42
- >{{ localization.common.deviceWillRemoved }}</span
43
- >
44
- </template>
45
- <template #content>
46
- {{ localization.common.deviceWillRemoved }}
47
- </template>
48
- </ui-tooltip>
49
-
50
- <div class="flex-align-center checkbox-wrap">
51
- <ui-checkbox
52
- v-model="deleteFilesFromDatastore"
53
- :test-id="`hard-disk-delete-files-from-datastore-${props.index}`"
54
- :disabled="props.disabled"
55
- :label-text="localization.common.deleteFilesFromDatastore"
56
- />
57
- </div>
58
- </template>
59
- <template v-else>
60
- <ui-input-with-tooltip
61
- :id="`vm-wizard-hard-disk-${props.index}`"
62
- v-model.number="size"
63
- :test-id="`vm-wizard-hard-disk-${props.index}`"
64
- :disabled="props.isDisabledSize"
65
- :class="[
66
- 'spinfree edit-setting-input input-text-color',
67
- { 'has-error': props.hardDiskTypeErrorLocalText },
68
- ]"
69
- :error-text="props.errorText"
70
- input-style="rounded"
71
- type="number"
72
- size="sm"
73
- @blur="emits('validate-size')"
74
- />
75
-
76
- <ui-select
77
- :id="`hard-disk-type-select-${props.index}`"
78
- v-model="hardDiskType"
79
- :items="props.hardDiskTypeOptions"
80
- :disabled="props.type === 'exist'"
81
- :test-id="`hard-disk-type-select-${props.index}`"
82
- width="auto"
83
- class="unit"
84
- size="sm"
85
- @change="emits('validate-size')"
86
- />
87
- </template>
88
- </div>
89
- </template>
90
- <template #stackChildren>
91
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-maximum-size
92
- :free-mb="props.maxHardDisk"
93
- />
94
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-location
95
- v-if="props.isNewType"
96
- :location="props.location"
97
- :index="props.index"
98
- :error-validation-fields="props.errorValidationFields"
99
- :get-datastore-table-func="props.getDatastoreTableFunc"
100
- :datastore="props.datastore"
101
- @change="emits('change-storage', $event)"
102
- @remove-error-by-title="emits('remove-error-by-title', $event)"
103
- />
104
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-file
105
- v-else
106
- :path="props.hardDisk?.source"
107
- />
108
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-provisioning
109
- v-model:disk-provisioning="diskProvisioning"
110
- :index="props.index"
111
- :error-validation-fields="props.errorValidationFields"
112
- :disabled="(props.isEdit && !props.isNewType) || props.isRunning"
113
- @remove-error-by-title="emits('remove-error-by-title', $event)"
114
- />
115
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-sharing
116
- v-model:sharing="sharing"
117
- :index="props.index"
118
- :error-validation-fields="props.errorValidationFields"
119
- :disabled="props.isRunning && !props.isNewType"
120
- @remove-error-by-title="emits('remove-error-by-title', $event)"
121
- />
122
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-limit-iops
123
- v-model:limit-iops="limitIops"
124
- v-model:limit-iops-type="limitIopsType"
125
- :index="props.index"
126
- :error-validation-fields="props.errorValidationFields"
127
- :disabled="props.isRunning && !props.isNewType"
128
- @valid="limitIopsInvalid = $event"
129
- @remove-error-by-title="emits('remove-error-by-title', $event)"
130
- />
131
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-mode
132
- v-model:disk-mode="diskMode"
133
- :index="props.index"
134
- :error-validation-fields="props.errorValidationFields"
135
- :disabled="props.isRunning && !props.isNewType"
136
- @remove-error-by-title="emits('remove-error-by-title', $event)"
137
- />
138
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-cache
139
- v-model:cache="cache"
140
- :index="props.index"
141
- :error-validation-fields="props.errorValidationFields"
142
- :disabled="(props.isEdit && !props.isNewType) || props.isRunning"
143
- @remove-error-by-title="emits('remove-error-by-title', $event)"
144
- />
145
- <common-vm-actions-common-customize-hardware-virtual-hardware-bus
146
- v-model:bus="bus"
147
- :index="props.index"
148
- :error-validation-fields="props.errorValidationFields"
149
- :disabled="!props.isNewHardDisk && props.isRunning"
150
- :help-text="localization.common.busVirtioHelpDesc"
151
- :test-id="`vm-wizard-disk-bus-field-${props.index}`"
152
- component-type="disk_devices"
153
- :guest-machine-type="props.guestMachineType"
154
- :compute-resource="props.computeResource"
155
- @remove-error-by-title="emits('remove-error-by-title', $event)"
156
- />
157
- </template>
158
- </ui-stack-block>
159
- </template>
160
-
161
- <script setup lang="ts">
162
- import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
163
- import type { UI_I_SendDataNewHardDisk } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
164
- import type { UI_T_HardDiskType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
165
- import type { UI_I_Localization } from '~/lib/models/interfaces'
166
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
167
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
168
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
169
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
170
-
171
- const deleteFilesFromDatastore = defineModel<boolean>(
172
- 'deleteFilesFromDatastore',
173
- { required: true }
174
- )
175
- const size = defineModel<number>('size', { required: true })
176
- const hardDiskType = defineModel<number>('hardDiskType', { required: true })
177
- const diskProvisioning = defineModel<string>('diskProvisioning', {
178
- required: true,
179
- })
180
- const sharing = defineModel<string>('sharing', { required: true })
181
- const limitIops = defineModel<number>('limitIops', { required: true })
182
- const limitIopsType = defineModel<string>('limitIopsType', { required: true })
183
- const limitIopsInvalid = defineModel<boolean>('limitIopsInvalid', {
184
- required: true,
185
- })
186
- const diskMode = defineModel<string>('diskMode', { required: true })
187
- const cache = defineModel<string>('cache', { required: true })
188
- const bus = defineModel<string>('bus', { required: true })
189
-
190
- const props = defineProps<{
191
- isRemovable: boolean
192
- label: string
193
- hardDiskInvalid: boolean
194
- disabled: boolean
195
- errorText: string
196
- hardDiskTypeErrorLocalText: string
197
- isDisabledSize: boolean
198
- hardDiskTypeOptions: UI_I_OptionItem[]
199
- maxHardDisk: number
200
- location: UI_I_DatastoreTableItem | null
201
- isRunning: boolean
202
- isNewHardDisk: boolean
203
- isEdit: boolean
204
- datastore: UI_I_DatastoreTableItem[]
205
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
206
- errorValidationFields: UI_I_ErrorValidationField<string>[]
207
- index: number
208
- type: UI_T_HardDiskType
209
- hardDisk: UI_I_SendDataNewHardDisk
210
- guestMachineType?: UI_I_OptionItem | null
211
- isNewType?: boolean
212
- computeResource?: UI_I_TreeNode | null
213
- }>()
214
- const emits = defineEmits<{
215
- (event: 'remove'): void
216
- (event: 'roll-back'): void
217
- (event: 'validate-size'): void
218
- (event: 'change-storage', value: UI_I_DatastoreTableItem): void
219
- (event: 'remove-error-by-title', value: string): void
220
- }>()
221
-
222
- const localization = computed<UI_I_Localization>(() => useLocal())
223
- </script>
224
-
225
- <style>
226
- :root {
227
- --device-will-removed-color: #9da6ad;
228
- --device-will-removed-border-color: #e9ebeda3;
229
- }
230
- :root.dark-theme {
231
- --device-will-removed-color: #9da6ad;
232
- --device-will-removed-border-color: #e9ebed1f;
233
- }
234
-
235
- .light-theme {
236
- .stack-block-expanded {
237
- --device-will-removed-color: #9da6ad;
238
- --device-will-removed-border-color: #e9ebed1f;
239
-
240
- .ui-custom-checkbox {
241
- background-color: transparent;
242
- }
243
- }
244
- }
245
- .dark-theme {
246
- .stack-block-expanded {
247
- --device-will-removed-color: #9da6ad;
248
- --device-will-removed-border-color: #d3d6da66;
249
-
250
- .ui-custom-checkbox {
251
- background-color: transparent;
252
- }
253
- }
254
- }
255
- </style>
256
- <style scoped lang="scss">
257
- .new-hard-disk-content {
258
- gap: 8px;
259
- &.removed {
260
- gap: 0;
261
- }
262
-
263
- .device-will-removed-text {
264
- font-size: 13px;
265
- color: var(--device-will-removed-color);
266
- }
267
- .checkbox-wrap {
268
- padding: 0 12px;
269
- margin: 0 12px;
270
- border-right: 1px solid var(--device-will-removed-border-color);
271
- border-left: 1px solid var(--device-will-removed-border-color);
272
- }
273
- }
274
-
275
- :deep(.ui-main-select-toggle) {
276
- display: flex;
277
- justify-content: space-between;
278
- width: 108px;
279
- }
280
- .light-theme {
281
- :deep(.ui-main-select-toggle) {
282
- background-color: #ffffff;
283
- }
284
- }
285
-
286
- :deep(.unit .ui-main-select-toggle) {
287
- width: 80px;
288
- }
289
- </style>
1
+ <template>
2
+ <ui-stack-block
3
+ :has-children="true"
4
+ :is-roll-back="props.type === 'removed'"
5
+ :removable="props.isRemovable"
6
+ :test-id="`hard-disk-stack-block-${props.index}`"
7
+ @remove="emits('remove')"
8
+ @roll-back="emits('roll-back')"
9
+ >
10
+ <template #stackBlockKey>
11
+ <div
12
+ :id="`vm-wizard-toggle-block-hard-disk-${props.index}`"
13
+ :data-id="`vm-wizard-toggle-block-hard-disk-${props.index}`"
14
+ class="vm-wizard-toggle-block-hard-disk flex-align-center"
15
+ >
16
+ <span class="title">{{ props.label }}</span>
17
+ <ui-icon
18
+ v-show="props.hardDiskInvalid"
19
+ width="18px"
20
+ height="18px"
21
+ name="error-outline"
22
+ class="ml-2"
23
+ />
24
+ </div>
25
+ </template>
26
+ <template #stackBlockContent>
27
+ <div :class="['new-hard-disk-content flex-align-center', props.type]">
28
+ <template v-if="props.type === 'removed'">
29
+ <ui-tooltip
30
+ id="device-will-removed-text"
31
+ :margin-between-trigger="8"
32
+ test-id="device-will-removed-text"
33
+ size="md"
34
+ position="bottom"
35
+ position-by-tooltip="center"
36
+ class="text-ellipsis"
37
+ >
38
+ <template #target>
39
+ <span
40
+ id="device-will-removed-text"
41
+ class="device-will-removed-text text-ellipsis"
42
+ >{{ localization.common.deviceWillRemoved }}</span
43
+ >
44
+ </template>
45
+ <template #content>
46
+ {{ localization.common.deviceWillRemoved }}
47
+ </template>
48
+ </ui-tooltip>
49
+
50
+ <div class="flex-align-center checkbox-wrap">
51
+ <ui-checkbox
52
+ v-model="deleteFilesFromDatastore"
53
+ :test-id="`hard-disk-delete-files-from-datastore-${props.index}`"
54
+ :disabled="props.disabled"
55
+ :label-text="localization.common.deleteFilesFromDatastore"
56
+ />
57
+ </div>
58
+ </template>
59
+ <template v-else>
60
+ <ui-input-with-tooltip
61
+ :id="`vm-wizard-hard-disk-${props.index}`"
62
+ v-model.number="size"
63
+ :test-id="`vm-wizard-hard-disk-${props.index}`"
64
+ :disabled="props.isDisabledSize"
65
+ :class="[
66
+ 'spinfree edit-setting-input input-text-color',
67
+ { 'has-error': props.hardDiskTypeErrorLocalText },
68
+ ]"
69
+ :error-text="props.errorText"
70
+ input-style="rounded"
71
+ type="number"
72
+ size="sm"
73
+ @blur="emits('validate-size')"
74
+ />
75
+
76
+ <ui-select
77
+ :id="`hard-disk-type-select-${props.index}`"
78
+ v-model="hardDiskType"
79
+ :items="props.hardDiskTypeOptions"
80
+ :disabled="props.type === 'exist'"
81
+ :test-id="`hard-disk-type-select-${props.index}`"
82
+ width="auto"
83
+ class="unit"
84
+ size="sm"
85
+ @change="emits('validate-size')"
86
+ />
87
+ </template>
88
+ </div>
89
+ </template>
90
+ <template #stackChildren>
91
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-maximum-size
92
+ :free-mb="props.maxHardDisk"
93
+ />
94
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-location
95
+ v-if="props.isNewType"
96
+ :location="props.location"
97
+ :index="props.index"
98
+ :error-validation-fields="props.errorValidationFields"
99
+ :get-datastore-table-func="props.getDatastoreTableFunc"
100
+ :datastore="props.datastore"
101
+ @change="emits('change-storage', $event)"
102
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
103
+ />
104
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-file
105
+ v-else
106
+ :path="props.hardDisk?.source"
107
+ />
108
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-provisioning
109
+ v-model:disk-provisioning="diskProvisioning"
110
+ :index="props.index"
111
+ :error-validation-fields="props.errorValidationFields"
112
+ :disabled="(props.isEdit && !props.isNewType) || props.isRunning"
113
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
114
+ />
115
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-sharing
116
+ v-model:sharing="sharing"
117
+ :index="props.index"
118
+ :error-validation-fields="props.errorValidationFields"
119
+ :disabled="props.isRunning && !props.isNewType"
120
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
121
+ />
122
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-limit-iops
123
+ v-model:limit-iops="limitIops"
124
+ v-model:limit-iops-type="limitIopsType"
125
+ :index="props.index"
126
+ :error-validation-fields="props.errorValidationFields"
127
+ :disabled="props.isRunning && !props.isNewType"
128
+ @valid="limitIopsInvalid = $event"
129
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
130
+ />
131
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-mode
132
+ v-model:disk-mode="diskMode"
133
+ :index="props.index"
134
+ :error-validation-fields="props.errorValidationFields"
135
+ :disabled="props.isRunning && !props.isNewType"
136
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
137
+ />
138
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-cache
139
+ v-model:cache="cache"
140
+ :index="props.index"
141
+ :error-validation-fields="props.errorValidationFields"
142
+ :disabled="(props.isEdit && !props.isNewType) || props.isRunning"
143
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
144
+ />
145
+ <common-vm-actions-common-customize-hardware-virtual-hardware-bus
146
+ v-model:bus="bus"
147
+ :index="props.index"
148
+ :error-validation-fields="props.errorValidationFields"
149
+ :disabled="!props.isNewHardDisk && props.isRunning"
150
+ :help-text="localization.common.busVirtioHelpDesc"
151
+ :test-id="`vm-wizard-disk-bus-field-${props.index}`"
152
+ component-type="disk_devices"
153
+ :guest-machine-type="props.guestMachineType"
154
+ :compute-resource="props.computeResource"
155
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
156
+ />
157
+ </template>
158
+ </ui-stack-block>
159
+ </template>
160
+
161
+ <script setup lang="ts">
162
+ import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
163
+ import type { UI_I_SendDataNewHardDisk } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
164
+ import type { UI_T_HardDiskType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
165
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
166
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
167
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
168
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
169
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
170
+
171
+ const deleteFilesFromDatastore = defineModel<boolean>(
172
+ 'deleteFilesFromDatastore',
173
+ { required: true }
174
+ )
175
+ const size = defineModel<number>('size', { required: true })
176
+ const hardDiskType = defineModel<number>('hardDiskType', { required: true })
177
+ const diskProvisioning = defineModel<string>('diskProvisioning', {
178
+ required: true,
179
+ })
180
+ const sharing = defineModel<string>('sharing', { required: true })
181
+ const limitIops = defineModel<number>('limitIops', { required: true })
182
+ const limitIopsType = defineModel<string>('limitIopsType', { required: true })
183
+ const limitIopsInvalid = defineModel<boolean>('limitIopsInvalid', {
184
+ required: true,
185
+ })
186
+ const diskMode = defineModel<string>('diskMode', { required: true })
187
+ const cache = defineModel<string>('cache', { required: true })
188
+ const bus = defineModel<string>('bus', { required: true })
189
+
190
+ const props = defineProps<{
191
+ isRemovable: boolean
192
+ label: string
193
+ hardDiskInvalid: boolean
194
+ disabled: boolean
195
+ errorText: string
196
+ hardDiskTypeErrorLocalText: string
197
+ isDisabledSize: boolean
198
+ hardDiskTypeOptions: UI_I_OptionItem[]
199
+ maxHardDisk: number
200
+ location: UI_I_DatastoreTableItem | null
201
+ isRunning: boolean
202
+ isNewHardDisk: boolean
203
+ isEdit: boolean
204
+ datastore: UI_I_DatastoreTableItem[]
205
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
206
+ errorValidationFields: UI_I_ErrorValidationField<string>[]
207
+ index: number
208
+ type: UI_T_HardDiskType
209
+ hardDisk: UI_I_SendDataNewHardDisk
210
+ guestMachineType?: UI_I_OptionItem | null
211
+ isNewType?: boolean
212
+ computeResource?: UI_I_TreeNode | null
213
+ }>()
214
+ const emits = defineEmits<{
215
+ (event: 'remove'): void
216
+ (event: 'roll-back'): void
217
+ (event: 'validate-size'): void
218
+ (event: 'change-storage', value: UI_I_DatastoreTableItem): void
219
+ (event: 'remove-error-by-title', value: string): void
220
+ }>()
221
+
222
+ const localization = computed<UI_I_Localization>(() => useLocal())
223
+ </script>
224
+
225
+ <style>
226
+ :root {
227
+ --device-will-removed-color: #9da6ad;
228
+ --device-will-removed-border-color: #e9ebeda3;
229
+ }
230
+ :root.dark-theme {
231
+ --device-will-removed-color: #9da6ad;
232
+ --device-will-removed-border-color: #e9ebed1f;
233
+ }
234
+
235
+ .light-theme {
236
+ .stack-block-expanded {
237
+ --device-will-removed-color: #9da6ad;
238
+ --device-will-removed-border-color: #e9ebed1f;
239
+
240
+ .ui-custom-checkbox {
241
+ background-color: transparent;
242
+ }
243
+ }
244
+ }
245
+ .dark-theme {
246
+ .stack-block-expanded {
247
+ --device-will-removed-color: #9da6ad;
248
+ --device-will-removed-border-color: #d3d6da66;
249
+
250
+ .ui-custom-checkbox {
251
+ background-color: transparent;
252
+ }
253
+ }
254
+ }
255
+ </style>
256
+ <style scoped lang="scss">
257
+ .new-hard-disk-content {
258
+ gap: 8px;
259
+ &.removed {
260
+ gap: 0;
261
+ }
262
+
263
+ .device-will-removed-text {
264
+ font-size: 13px;
265
+ color: var(--device-will-removed-color);
266
+ }
267
+ .checkbox-wrap {
268
+ padding: 0 12px;
269
+ margin: 0 12px;
270
+ border-right: 1px solid var(--device-will-removed-border-color);
271
+ border-left: 1px solid var(--device-will-removed-border-color);
272
+ }
273
+ }
274
+
275
+ :deep(.ui-main-select-toggle) {
276
+ display: flex;
277
+ justify-content: space-between;
278
+ width: 108px;
279
+ }
280
+ .light-theme {
281
+ :deep(.ui-main-select-toggle) {
282
+ background-color: #ffffff;
283
+ }
284
+ }
285
+
286
+ :deep(.unit .ui-main-select-toggle) {
287
+ width: 80px;
288
+ }
289
+ </style>