bfg-common 1.4.860 → 1.4.862

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 (143) hide show
  1. package/assets/scss/common/normalize.scss +361 -361
  2. package/components/atoms/TheIcon3.vue +50 -50
  3. package/components/atoms/autocomplete/Autocomplete.vue +301 -301
  4. package/components/atoms/collapse/CollapseNav.vue +164 -164
  5. package/components/atoms/dropdown/dropdown/Dropdown.vue +168 -168
  6. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  7. package/components/atoms/stack/StackBlock.vue +185 -185
  8. package/components/atoms/table/dataGrid/DataGrid.vue +1704 -1704
  9. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  10. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  11. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  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/context/Context.vue +111 -111
  19. package/components/common/context/lib/models/interfaces.ts +30 -30
  20. package/components/common/context/recursion/Recursion.vue +87 -87
  21. package/components/common/context/recursion/RecursionOld.vue +227 -227
  22. package/components/common/details/DetailsItem.vue +109 -109
  23. package/components/common/graph/Graph.vue +104 -104
  24. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  25. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  26. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  27. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/utils.ts +1040 -1040
  28. package/components/common/monitor/overview/OverviewNew.vue +142 -142
  29. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  30. package/components/common/monitor/overview/filters/Filters.vue +166 -166
  31. package/components/common/monitor/overview/filters/FiltersNew.vue +172 -172
  32. package/components/common/monitor/overview/filters/FiltersOld.vue +151 -151
  33. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +175 -175
  34. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModalOld.vue +161 -161
  35. package/components/common/pages/home/StatusContent.vue +49 -49
  36. package/components/common/pages/home/headline/Headline.vue +45 -45
  37. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  38. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  39. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  40. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  41. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  42. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  43. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  44. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  45. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  46. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  47. package/components/common/pages/packages/Packages.vue +208 -208
  48. package/components/common/recursionTree/RecursionTree.vue +223 -223
  49. package/components/common/select/button/ButtonDropdown.vue +108 -108
  50. package/components/common/spiceConsole/Drawer.vue +370 -370
  51. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  52. package/components/common/split/horizontal/HorizontalNew.vue +376 -376
  53. package/components/common/split/horizontal/HorizontalOld.vue +337 -337
  54. package/components/common/split/vertical/Vertical.vue +160 -160
  55. package/components/common/vm/actions/add/Add.vue +621 -621
  56. package/components/common/vm/actions/clone/Clone.vue +639 -639
  57. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  58. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +271 -271
  59. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +271 -271
  60. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +174 -174
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +694 -694
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +161 -161
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +165 -165
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +364 -364
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +229 -229
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +247 -247
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +283 -283
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  78. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  79. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  80. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  81. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +84 -84
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +81 -81
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  102. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  103. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  104. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  105. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  106. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  107. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  108. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  109. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  110. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  111. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  112. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  113. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  114. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  116. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  117. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  118. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  120. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  121. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  122. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  123. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  124. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  125. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  126. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  127. package/components/common/wizards/datastore/add/lib/config/steps.ts +138 -138
  128. package/components/common/wizards/vm/migrate/Migrate.vue +302 -302
  129. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  130. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  131. package/components/common/wizards/vm/migrate/select/network/table/network/Network.vue +150 -150
  132. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  133. package/components/common/wizards/vm/migrate/select/priority/Priority.vue +43 -43
  134. package/composables/productNameLocal.ts +30 -30
  135. package/composables/useAppVersion.ts +21 -21
  136. package/package.json +1 -1
  137. package/plugins/date.ts +233 -233
  138. package/plugins/recursion.ts +311 -311
  139. package/public/spice-console/lib/images/bitmap.js +203 -203
  140. package/public/spice-console/network/spicechannel.js +383 -383
  141. package/store/main/mutations.ts +7 -7
  142. package/store/main/state.ts +7 -7
  143. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,229 +1,229 @@
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
- />
23
- </div>
24
- </template>
25
- <template #stackBlockContent>
26
- <!-- <div class="flex-align-center flex-space-between mr-1">-->
27
- <div class="new-hard-disk-content flex-align-center">
28
- <template v-if="props.type === 'removed'">
29
- <span>{{ localization.common.deviceWillRemoved }}</span>
30
- <div class="flex-align-center" @click.stop>
31
- <ui-checkbox
32
- v-model="deleteFilesFromDatastore"
33
- :test-id="`hard-disk-delete-files-from-datastore-${props.index}`"
34
- :disabled="props.disabled"
35
- :label-text="localization.common.deleteFilesFromDatastore"
36
- />
37
- </div>
38
- </template>
39
- <template v-else>
40
- <ui-input-with-tooltip
41
- :id="`vm-wizard-hard-disk-${props.index}`"
42
- v-model.number="size"
43
- :test-id="`vm-wizard-hard-disk-${props.index}`"
44
- :disabled="props.isDisabledSize"
45
- :class="[
46
- 'spinfree edit-setting-input input-text-color',
47
- { 'has-error': props.hardDiskTypeErrorLocalText },
48
- ]"
49
- :error-text="props.errorText"
50
- input-style="rounded"
51
- type="number"
52
- size="md"
53
- @blur="emits('validate-size')"
54
- @click.stop
55
- />
56
-
57
- <ui-select
58
- :id="`hard-disk-type-select-${props.index}`"
59
- v-model="hardDiskType"
60
- width="auto"
61
- :items="props.hardDiskTypeOptions"
62
- :disabled="props.type === 'exist'"
63
- :test-id="`hard-disk-type-select-${props.index}`"
64
- class="unit"
65
- @change="emits('validate-size')"
66
- @click.stop
67
- />
68
- </template>
69
- </div>
70
- </template>
71
- <template #stackChildren>
72
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-maximum-size
73
- :free-mb="props.maxHardDisk"
74
- />
75
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-location
76
- v-if="props.isNewType"
77
- :location="props.location"
78
- :index="props.index"
79
- :error-validation-fields="props.errorValidationFields"
80
- :get-datastore-table-func="props.getDatastoreTableFunc"
81
- :datastore="props.datastore"
82
- @change="emits('change-storage', $event)"
83
- @remove-error-by-title="emits('remove-error-by-title', $event)"
84
- />
85
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-file
86
- v-else
87
- :path="props.hardDisk?.source"
88
- />
89
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-provisioning
90
- v-model:disk-provisioning="diskProvisioning"
91
- :index="props.index"
92
- :error-validation-fields="props.errorValidationFields"
93
- :disabled="(props.isEdit && !props.isNewType) || props.isRunning"
94
- @remove-error-by-title="emits('remove-error-by-title', $event)"
95
- />
96
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-sharing
97
- v-model:sharing="sharing"
98
- :index="props.index"
99
- :error-validation-fields="props.errorValidationFields"
100
- :disabled="props.isRunning && !props.isNewType"
101
- @remove-error-by-title="emits('remove-error-by-title', $event)"
102
- />
103
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-limit-iops
104
- v-model:limit-iops="limitIops"
105
- v-model:limit-iops-type="limitIopsType"
106
- :index="props.index"
107
- :error-validation-fields="props.errorValidationFields"
108
- :disabled="props.isRunning && !props.isNewType"
109
- @valid="limitIopsInvalid = $event"
110
- @remove-error-by-title="emits('remove-error-by-title', $event)"
111
- />
112
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-mode
113
- v-model:disk-mode="diskMode"
114
- :index="props.index"
115
- :error-validation-fields="props.errorValidationFields"
116
- :disabled="props.isRunning && !props.isNewType"
117
- @remove-error-by-title="emits('remove-error-by-title', $event)"
118
- />
119
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-cache
120
- v-model:cache="cache"
121
- :index="props.index"
122
- :error-validation-fields="props.errorValidationFields"
123
- :disabled="(props.isEdit && !props.isNewType) || props.isRunning"
124
- @remove-error-by-title="emits('remove-error-by-title', $event)"
125
- />
126
- <common-vm-actions-common-customize-hardware-virtual-hardware-bus
127
- v-model:bus="bus"
128
- :index="props.index"
129
- :error-validation-fields="props.errorValidationFields"
130
- :disabled="!props.isNewHardDisk && props.isRunning"
131
- :help-text="localization.common.busVirtioHelpDesc"
132
- :test-id="`vm-wizard-disk-bus-field-${props.index}`"
133
- component-type="disk_devices"
134
- :guest-machine-type="props.guestMachineType"
135
- @remove-error-by-title="emits('remove-error-by-title', $event)"
136
- />
137
- </template>
138
- </ui-stack-block>
139
- </template>
140
-
141
- <script setup lang="ts">
142
- import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
143
- import type { UI_I_SendDataNewHardDisk } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
144
- import type { UI_T_HardDiskType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
145
- import type { UI_I_Localization } from '~/lib/models/interfaces'
146
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
147
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
148
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
149
-
150
- const deleteFilesFromDatastore = defineModel<boolean>(
151
- 'deleteFilesFromDatastore',
152
- { required: true }
153
- )
154
- const size = defineModel<number>('size', { required: true })
155
- const hardDiskType = defineModel<number>('hardDiskType', { required: true })
156
- const diskProvisioning = defineModel<string>('diskProvisioning', {
157
- required: true,
158
- })
159
- const sharing = defineModel<string>('sharing', { required: true })
160
- const limitIops = defineModel<number>('limitIops', { required: true })
161
- const limitIopsType = defineModel<string>('limitIopsType', { required: true })
162
- const limitIopsInvalid = defineModel<boolean>('limitIopsInvalid', {
163
- required: true,
164
- })
165
- const diskMode = defineModel<string>('diskMode', { required: true })
166
- const cache = defineModel<string>('cache', { required: true })
167
- const bus = defineModel<string>('bus', { required: true })
168
-
169
- const props = defineProps<{
170
- isRemovable: boolean
171
- label: string
172
- hardDiskInvalid: boolean
173
- disabled: boolean
174
- errorText: string
175
- hardDiskTypeErrorLocalText: string
176
- isDisabledSize: boolean
177
- hardDiskTypeOptions: UI_I_OptionItem[]
178
- maxHardDisk: number
179
- location: UI_I_DatastoreTableItem | null
180
- isRunning: boolean
181
- isNewHardDisk: boolean
182
- isEdit: boolean
183
- datastore: UI_I_DatastoreTableItem[]
184
- getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
185
- errorValidationFields: UI_I_ErrorValidationField<string>[]
186
- index: number
187
- type: UI_T_HardDiskType
188
- hardDisk: UI_I_SendDataNewHardDisk
189
- guestMachineType?: UI_I_OptionItem | null
190
- isNewType?: boolean
191
- }>()
192
- const emits = defineEmits<{
193
- (event: 'remove'): void
194
- (event: 'roll-back'): void
195
- (event: 'validate-size'): void
196
- (event: 'change-storage', value: UI_I_DatastoreTableItem): void
197
- (event: 'remove-error-by-title', value: string): void
198
- }>()
199
-
200
- const localization = computed<UI_I_Localization>(() => useLocal())
201
- </script>
202
-
203
- <style scoped lang="scss">
204
- .title {
205
- margin-right: 10px;
206
- }
207
-
208
- .new-hard-disk-content {
209
- gap: 8px;
210
- }
211
-
212
- :deep(.ui-main-select-toggle) {
213
- display: flex;
214
- justify-content: space-between;
215
- width: 108px;
216
- }
217
- .light-theme {
218
- :deep(.ui-main-select-toggle) {
219
- background-color: #ffffff;
220
- }
221
- }
222
-
223
- :deep(.unit .ui-main-select-toggle) {
224
- width: 80px;
225
- }
226
- :deep(.ui-main.ui-main-sm .ui-main-input) {
227
- height: 26px;
228
- }
229
- </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
+ />
23
+ </div>
24
+ </template>
25
+ <template #stackBlockContent>
26
+ <!-- <div class="flex-align-center flex-space-between mr-1">-->
27
+ <div class="new-hard-disk-content flex-align-center">
28
+ <template v-if="props.type === 'removed'">
29
+ <span>{{ localization.common.deviceWillRemoved }}</span>
30
+ <div class="flex-align-center" @click.stop>
31
+ <ui-checkbox
32
+ v-model="deleteFilesFromDatastore"
33
+ :test-id="`hard-disk-delete-files-from-datastore-${props.index}`"
34
+ :disabled="props.disabled"
35
+ :label-text="localization.common.deleteFilesFromDatastore"
36
+ />
37
+ </div>
38
+ </template>
39
+ <template v-else>
40
+ <ui-input-with-tooltip
41
+ :id="`vm-wizard-hard-disk-${props.index}`"
42
+ v-model.number="size"
43
+ :test-id="`vm-wizard-hard-disk-${props.index}`"
44
+ :disabled="props.isDisabledSize"
45
+ :class="[
46
+ 'spinfree edit-setting-input input-text-color',
47
+ { 'has-error': props.hardDiskTypeErrorLocalText },
48
+ ]"
49
+ :error-text="props.errorText"
50
+ input-style="rounded"
51
+ type="number"
52
+ size="md"
53
+ @blur="emits('validate-size')"
54
+ @click.stop
55
+ />
56
+
57
+ <ui-select
58
+ :id="`hard-disk-type-select-${props.index}`"
59
+ v-model="hardDiskType"
60
+ width="auto"
61
+ :items="props.hardDiskTypeOptions"
62
+ :disabled="props.type === 'exist'"
63
+ :test-id="`hard-disk-type-select-${props.index}`"
64
+ class="unit"
65
+ @change="emits('validate-size')"
66
+ @click.stop
67
+ />
68
+ </template>
69
+ </div>
70
+ </template>
71
+ <template #stackChildren>
72
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-maximum-size
73
+ :free-mb="props.maxHardDisk"
74
+ />
75
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-location
76
+ v-if="props.isNewType"
77
+ :location="props.location"
78
+ :index="props.index"
79
+ :error-validation-fields="props.errorValidationFields"
80
+ :get-datastore-table-func="props.getDatastoreTableFunc"
81
+ :datastore="props.datastore"
82
+ @change="emits('change-storage', $event)"
83
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
84
+ />
85
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-file
86
+ v-else
87
+ :path="props.hardDisk?.source"
88
+ />
89
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-provisioning
90
+ v-model:disk-provisioning="diskProvisioning"
91
+ :index="props.index"
92
+ :error-validation-fields="props.errorValidationFields"
93
+ :disabled="(props.isEdit && !props.isNewType) || props.isRunning"
94
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
95
+ />
96
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-sharing
97
+ v-model:sharing="sharing"
98
+ :index="props.index"
99
+ :error-validation-fields="props.errorValidationFields"
100
+ :disabled="props.isRunning && !props.isNewType"
101
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
102
+ />
103
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-limit-iops
104
+ v-model:limit-iops="limitIops"
105
+ v-model:limit-iops-type="limitIopsType"
106
+ :index="props.index"
107
+ :error-validation-fields="props.errorValidationFields"
108
+ :disabled="props.isRunning && !props.isNewType"
109
+ @valid="limitIopsInvalid = $event"
110
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
111
+ />
112
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-mode
113
+ v-model:disk-mode="diskMode"
114
+ :index="props.index"
115
+ :error-validation-fields="props.errorValidationFields"
116
+ :disabled="props.isRunning && !props.isNewType"
117
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
118
+ />
119
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-hard-disk-cache
120
+ v-model:cache="cache"
121
+ :index="props.index"
122
+ :error-validation-fields="props.errorValidationFields"
123
+ :disabled="(props.isEdit && !props.isNewType) || props.isRunning"
124
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
125
+ />
126
+ <common-vm-actions-common-customize-hardware-virtual-hardware-bus
127
+ v-model:bus="bus"
128
+ :index="props.index"
129
+ :error-validation-fields="props.errorValidationFields"
130
+ :disabled="!props.isNewHardDisk && props.isRunning"
131
+ :help-text="localization.common.busVirtioHelpDesc"
132
+ :test-id="`vm-wizard-disk-bus-field-${props.index}`"
133
+ component-type="disk_devices"
134
+ :guest-machine-type="props.guestMachineType"
135
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
136
+ />
137
+ </template>
138
+ </ui-stack-block>
139
+ </template>
140
+
141
+ <script setup lang="ts">
142
+ import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
143
+ import type { UI_I_SendDataNewHardDisk } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
144
+ import type { UI_T_HardDiskType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
145
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
146
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
147
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
148
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
149
+
150
+ const deleteFilesFromDatastore = defineModel<boolean>(
151
+ 'deleteFilesFromDatastore',
152
+ { required: true }
153
+ )
154
+ const size = defineModel<number>('size', { required: true })
155
+ const hardDiskType = defineModel<number>('hardDiskType', { required: true })
156
+ const diskProvisioning = defineModel<string>('diskProvisioning', {
157
+ required: true,
158
+ })
159
+ const sharing = defineModel<string>('sharing', { required: true })
160
+ const limitIops = defineModel<number>('limitIops', { required: true })
161
+ const limitIopsType = defineModel<string>('limitIopsType', { required: true })
162
+ const limitIopsInvalid = defineModel<boolean>('limitIopsInvalid', {
163
+ required: true,
164
+ })
165
+ const diskMode = defineModel<string>('diskMode', { required: true })
166
+ const cache = defineModel<string>('cache', { required: true })
167
+ const bus = defineModel<string>('bus', { required: true })
168
+
169
+ const props = defineProps<{
170
+ isRemovable: boolean
171
+ label: string
172
+ hardDiskInvalid: boolean
173
+ disabled: boolean
174
+ errorText: string
175
+ hardDiskTypeErrorLocalText: string
176
+ isDisabledSize: boolean
177
+ hardDiskTypeOptions: UI_I_OptionItem[]
178
+ maxHardDisk: number
179
+ location: UI_I_DatastoreTableItem | null
180
+ isRunning: boolean
181
+ isNewHardDisk: boolean
182
+ isEdit: boolean
183
+ datastore: UI_I_DatastoreTableItem[]
184
+ getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
185
+ errorValidationFields: UI_I_ErrorValidationField<string>[]
186
+ index: number
187
+ type: UI_T_HardDiskType
188
+ hardDisk: UI_I_SendDataNewHardDisk
189
+ guestMachineType?: UI_I_OptionItem | null
190
+ isNewType?: boolean
191
+ }>()
192
+ const emits = defineEmits<{
193
+ (event: 'remove'): void
194
+ (event: 'roll-back'): void
195
+ (event: 'validate-size'): void
196
+ (event: 'change-storage', value: UI_I_DatastoreTableItem): void
197
+ (event: 'remove-error-by-title', value: string): void
198
+ }>()
199
+
200
+ const localization = computed<UI_I_Localization>(() => useLocal())
201
+ </script>
202
+
203
+ <style scoped lang="scss">
204
+ .title {
205
+ margin-right: 10px;
206
+ }
207
+
208
+ .new-hard-disk-content {
209
+ gap: 8px;
210
+ }
211
+
212
+ :deep(.ui-main-select-toggle) {
213
+ display: flex;
214
+ justify-content: space-between;
215
+ width: 108px;
216
+ }
217
+ .light-theme {
218
+ :deep(.ui-main-select-toggle) {
219
+ background-color: #ffffff;
220
+ }
221
+ }
222
+
223
+ :deep(.unit .ui-main-select-toggle) {
224
+ width: 80px;
225
+ }
226
+ :deep(.ui-main.ui-main-sm .ui-main-input) {
227
+ height: 26px;
228
+ }
229
+ </style>