bfg-common 1.1.62 → 1.1.63

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 (90) hide show
  1. package/assets/localization/local_be.json +1 -1
  2. package/assets/localization/local_hy.json +1 -1
  3. package/assets/localization/local_kk.json +1 -1
  4. package/assets/localization/local_ru.json +1 -1
  5. package/components/atoms/alert/Notification.vue +167 -167
  6. package/components/atoms/autocomplete/Autocomplete.vue +236 -236
  7. package/components/atoms/datepicker/Datepicker.vue +612 -612
  8. package/components/atoms/list/SelectList.vue +62 -62
  9. package/components/atoms/nav/NavBar.vue +116 -116
  10. package/components/atoms/nav/VerticalNavBar.vue +89 -89
  11. package/components/atoms/notificationBar/NotificationBar.vue +175 -175
  12. package/components/atoms/perPage/PerPage.vue +52 -52
  13. package/components/atoms/popup/SimplePopup.vue +90 -90
  14. package/components/atoms/step/VerticalStep.vue +104 -104
  15. package/components/atoms/switch/Switch.vue +107 -107
  16. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +206 -206
  17. package/components/atoms/table/dataGrid/DataGridPage.vue +189 -189
  18. package/components/atoms/tabs/Tabs.vue +189 -189
  19. package/components/atoms/tooltip/Signpost.vue +224 -224
  20. package/components/common/adapterManager/AddAdapterWarningModal.vue +82 -82
  21. package/components/common/adapterManager/NoActiveAdaptersModal.vue +62 -62
  22. package/components/common/adapterManager/NoConnectedActiveAdaptersModal.vue +62 -62
  23. package/components/common/browse/Browse.vue +182 -182
  24. package/components/common/browse/blocks/Title.vue +66 -66
  25. package/components/common/diagramMain/Diagram.vue +186 -186
  26. package/components/common/diagramMain/DiagramMain.vue +986 -986
  27. package/components/common/diagramMain/adapter/AdapterItem.vue +227 -227
  28. package/components/common/diagramMain/adapter/AdapterItems.vue +57 -57
  29. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +339 -339
  30. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +202 -202
  31. package/components/common/diagramMain/modals/remove/RemoveModal.vue +226 -226
  32. package/components/common/diagramMain/network/Contents.vue +238 -238
  33. package/components/common/feedback/Buttons.vue +232 -232
  34. package/components/common/feedback/Message.vue +468 -468
  35. package/components/common/feedback/VisitPortal.vue +54 -54
  36. package/components/common/graph/Graph.vue +20 -18
  37. package/components/common/help/navbar/left/Left.vue +159 -159
  38. package/components/common/help/navbar/left/utils/constructAccordion.ts +27 -27
  39. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +359 -359
  40. package/components/common/modals/Rename.vue +165 -165
  41. package/components/common/monitor/advanced/Advanced.vue +33 -3
  42. package/components/common/monitor/advanced/GraphView.vue +4 -4
  43. package/components/common/monitor/advanced/table/Table.vue +5 -5
  44. package/components/common/monitor/advanced/tools/Tools.vue +91 -27
  45. package/components/common/monitor/advanced/tools/chartOptionsModal/ChartOptionsModal.vue +101 -17
  46. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/Counters.vue +25 -7
  47. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/config/utils.ts +55 -0
  48. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/models/interfaces.ts +1 -1
  49. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/Timespan.vue +32 -3
  50. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/form/Form.vue +25 -8
  51. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/Object.vue +41 -19
  52. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/models/interfaces.ts +1 -1
  53. package/components/common/monitor/advanced/tools/config/advancedToolbar.ts +50 -38
  54. package/components/common/monitor/advanced/tools/utils/countCores.ts +7 -0
  55. package/components/common/monitor/config/getValidDateByOption.ts +105 -6
  56. package/components/common/monitor/overview/filters/Filters.vue +6 -6
  57. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +8 -8
  58. package/components/common/monitor/overview/filters/customIntervalModal/config/dateChecker.ts +1 -1
  59. package/components/common/perPage/PerPage.vue +51 -51
  60. package/components/common/recursionTree/RecursionTree.vue +201 -201
  61. package/components/common/vm/actions/add/customizeHardware/virtualHardware/VirtualHardware.vue +642 -641
  62. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +274 -245
  63. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/Cpu.vue +375 -375
  64. package/components/common/vm/actions/add/customizeHardware/virtualHardware/limit/Limit.vue +234 -234
  65. package/components/common/vm/actions/add/customizeHardware/virtualHardware/limit/config/options.ts +28 -28
  66. package/components/common/vm/actions/add/customizeHardware/virtualHardware/memory/Memory.vue +316 -316
  67. package/components/common/vm/actions/add/customizeHardware/virtualHardware/memory/config/memoryOptions.ts +35 -35
  68. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +447 -447
  69. package/components/common/vm/actions/add/customizeHardware/virtualHardware/reservation/Reservation.vue +235 -235
  70. package/components/common/vm/actions/add/select/storage/config/config.ts +154 -154
  71. package/components/common/wizards/datastore/add/nfs/configuration/Configuration.vue +373 -373
  72. package/components/common/wizards/datastore/add/nfs/configuration/serversList/ServersList.vue +123 -123
  73. package/components/common/wizards/datastore/add/nfs/kerberosAuthentication/KerberosAuthentication.vue +54 -54
  74. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/hostTable/HostTable.vue +131 -131
  75. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/PartitionConfiguration.vue +230 -230
  76. package/models/store/interfaces.ts +37 -37
  77. package/models/store/storage/interfaces.ts +32 -32
  78. package/models/store/types.ts +32 -32
  79. package/modules/fixContentBuild/utils/methods.ts +114 -114
  80. package/package.json +1 -1
  81. package/public/spice-console/application/codec.js +257 -257
  82. package/public/spice-console/lib/rasterEngine.js +907 -907
  83. package/public/spice-console/network/spicechannel.js +369 -369
  84. package/public/spice-console-minify/lib/decoder/dixie.min.js +4 -4
  85. package/public/spice-console-minify/lib/jgestures.min.js +24 -24
  86. package/public/spice-console-minify/lib/jquery-2.0.3.min.js +24 -24
  87. package/public/spice-console-minify/lib/jquery-mousewheel.min.js +11 -11
  88. package/public/spice-console-minify/lib/jquery-visibility.min.js +1 -1
  89. package/public/spice-console-minify/lib/lodash.4.0.0.min.js +5 -5
  90. package/utils/contentBuild.ts +34 -34
@@ -1,245 +1,274 @@
1
- <template>
2
- <div class="hardware-cd-dvd-drive">
3
- <atoms-stack-block
4
- :has-children="true"
5
- :is-roll-back="props.type === 'removed'"
6
- :removable="isRemovable"
7
- @remove="onRemoveCdDvdDrive"
8
- @roll-back="onRollBackCdDvdDrive"
9
- >
10
- <template #stackBlockKey>
11
- <div
12
- class="vm-wizard-toggle-block-cd-dvd-drive vm-wizard-toggle-block-hard-disk"
13
- >
14
- <span>{{ label }}</span>
15
- </div>
16
- </template>
17
- <template #stackBlockContent>
18
- <div class="flex-align-center flex-space-between">
19
- <template v-if="props.type === 'removed'">
20
- <span>{{ localization.deviceWillRemoved }}</span>
21
- <div @click.stop class="flex-align-center">
22
- <input
23
- :id="`cd-dvd-delete-files-from-datastore-${props.index}`"
24
- v-model="deleteFilesFromDatastore"
25
- :disabled="props.disabled"
26
- type="checkbox"
27
- class="pointer"
28
- @click.stop
29
- />
30
- <label
31
- :for="`cd-dvd-delete-files-from-datastore-${props.index}`"
32
- :class="[
33
- 'label-text-normal pointer',
34
- props.disabled && 'div-disabled',
35
- ]"
36
- >{{ localization.deleteFilesFromDatastore }}</label
37
- >
38
- </div>
39
- </template>
40
- <template v-else>
41
- <div class="select">
42
- <select
43
- id="vm-wizard-cd-dvd-drive-field"
44
- v-model="selectedCdDvdDrive"
45
- class="vm-wizard-cd-dvd-drive-field"
46
- @click.stop
47
- @change="changeCdDvdDrive"
48
- >
49
- <option
50
- v-for="(item, key) in cdDvdDriveOptions"
51
- :key="key"
52
- :value="item.value"
53
- >
54
- {{ item.text }}
55
- </option>
56
- </select>
57
- </div>
58
- </template>
59
- </div>
60
- </template>
61
- <template #stackChildren>
62
- <common-vm-actions-add-customize-hardware-virtual-hardware-cd-dvd-drive-media
63
- v-if="selectedCdDvdDrive === 'datastoreIsoFile'"
64
- v-model:cd-dvd-media="cdDvdMedia"
65
- @browse="isShowFileModal = true"
66
- />
67
-
68
- <common-vm-actions-add-customize-hardware-virtual-hardware-bus
69
- v-model:bus="bus"
70
- :index="indexByHardDisks"
71
- :validation-type="busValidationType"
72
- :error-validation-fields="props.errorValidationFields"
73
- :disabled="isRunning"
74
- component-type="disk_devices"
75
- @remove-error-by-title="emits('remove-error-by-title', $event)"
76
- />
77
- </template>
78
- </atoms-stack-block>
79
-
80
- <Teleport to="body">
81
- <common-vm-actions-add-customize-hardware-virtual-hardware-browse-view
82
- v-if="isShowFileModal"
83
- :show="isShowFileModal"
84
- :file-types="fileTypes"
85
- :nodes="props.nodes"
86
- :files="props.files"
87
- @submit="onSelectFile"
88
- @get-storage="emits('get-storage', $event)"
89
- @get-folders-or-files="emits('get-folders-or-files', $event)"
90
- @get-active-device-child="emits('get-active-device-child', $event)"
91
- @show-datastore-child="emits('show-datastore-child', $event)"
92
- @hide="isShowFileModal = false"
93
- />
94
- </Teleport>
95
- </div>
96
- </template>
97
-
98
- <script lang="ts" setup>
99
- import { UI_I_FileTreeNode } from '~/components/models/interfaces'
100
- import { UI_I_TablePayload } from '~/models/store/interfaces'
101
- import { UI_T_CdDvdDrive } from '~/components/common/vm/actions/add/customizeHardware/virtualHardware/cdDvdDrive/models/types'
102
- import { UI_I_SendDataNewCdDvdDrive } from '~/components/common/vm/actions/add/customizeHardware/virtualHardware/models/interfaces'
103
- import { UI_I_Localization, UI_I_HTMLSelectElement } from '~/models/interfaces'
104
- import { UI_I_ErrorValidationField } from '~/models/store/interfaces'
105
- import { UI_I_OptionItem } from '~/components/atoms/models/interfaces'
106
- import { UI_I_FolderOrFileTreePayload } from '~/models/store/storage/interfaces'
107
- import { UI_T_CdDvdType } from '~/components/common/vm/actions/add/customizeHardware/virtualHardware/models/types'
108
- import { cdDvdDriveOptionsFunc } from '~/components/common/vm/actions/add/customizeHardware/virtualHardware/cdDvdDrive/config/options'
109
- import { fileTypesFunc } from '~/components/common/vm/actions/add/customizeHardware/virtualHardware/cdDvdDrive/config/fileTypes'
110
-
111
- const props = defineProps<{
112
- hardDisksCount: number
113
- index: number
114
- cdDvdDrive: UI_I_SendDataNewCdDvdDrive
115
- nodes: UI_I_FileTreeNode[]
116
- files: UI_I_FileTreeNode[]
117
- errorValidationFields: UI_I_ErrorValidationField<string>[]
118
- type: UI_T_CdDvdType
119
- isEdit: boolean
120
- state?: string
121
- }>()
122
-
123
- const emits = defineEmits<{
124
- (event: 'send-data', value: UI_I_SendDataNewCdDvdDrive): void
125
- (event: 'remove'): void
126
- (event: 'roll-back'): void
127
- (event: 'remove-error-by-title', value: string): void
128
- (event: 'get-storage', value: UI_I_TablePayload): void
129
- (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
130
- (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
131
- (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
132
- }>()
133
-
134
- const localization = computed<UI_I_Localization>(() => useLocal())
135
-
136
- const isRunning = computed<boolean>(() => {
137
- return props.state === '1'
138
- })
139
-
140
- const isRemovable = computed<boolean>(() => {
141
- return (
142
- !props.isEdit ||
143
- !isRunning.value ||
144
- (isRunning.value && bus.value === 'virtio')
145
- )
146
- })
147
-
148
- const indexByHardDisks = computed<number>(
149
- () => props.index + props.hardDisksCount
150
- )
151
-
152
- const label = computed<string>(() => {
153
- if (props.type === 'edit' || props.type === 'removed')
154
- return `${localization.value.cdDvdDrive} ${props.index + 1}`
155
-
156
- return `${localization.value.newCdDvdDrive} *`
157
- })
158
-
159
- const busValidationType = computed<string>(
160
- () => `disk_devices[${indexByHardDisks}].bus`
161
- )
162
-
163
- const selectedCdDvdDrive = ref<UI_T_CdDvdDrive>('clientDevice')
164
- const cdDvdDriveOptions = ref<UI_I_OptionItem[]>(
165
- cdDvdDriveOptionsFunc(localization.value)
166
- )
167
- const changeCdDvdDrive = (event: UI_I_HTMLSelectElement): void => {
168
- const isDatastoreIsoFile = event.target.value === 'datastoreIsoFile'
169
- if (!isDatastoreIsoFile) return
170
-
171
- isShowFileModal.value = true
172
- }
173
- const isShowFileModal = ref<boolean>(false)
174
- const onSelectFile = (file: UI_I_FileTreeNode): void => {
175
- cdDvdMedia.value = file.path
176
- }
177
- const fileTypes = computed<UI_I_OptionItem[]>(() =>
178
- fileTypesFunc(localization.value)
179
- )
180
-
181
- const onRemoveCdDvdDrive = (): void => {
182
- emits('remove')
183
- }
184
- const onRollBackCdDvdDrive = (): void => {
185
- emits('roll-back')
186
- }
187
-
188
- const cdDvdMedia = ref<string>('')
189
- const bus = ref<string>('ide')
190
-
191
- const deleteFilesFromDatastore = ref<boolean>(false)
192
-
193
- watch(
194
- [cdDvdMedia, bus, deleteFilesFromDatastore, () => props.type],
195
- () => {
196
- emits('send-data', {
197
- create: props.cdDvdDrive.create,
198
- attach: props.cdDvdDrive.attach,
199
- source: cdDvdMedia.value,
200
- size: 0,
201
- bus: bus.value,
202
- device_type: 'cdrom',
203
- provision_type: 'thick',
204
- disk_mode: 'dependent',
205
- sharing: false,
206
- read_only: true,
207
- shares: 0,
208
- cache: 'none',
209
- io: 'native',
210
- limit_iops: 0,
211
- discard: 'unmap',
212
- boot_order: -1,
213
- detach: props.type === 'removed',
214
- remove: props.type === 'removed' && deleteFilesFromDatastore.value, // Проверяем если удалили диск и указали Delete files from datastore
215
- })
216
- },
217
- { immediate: true }
218
- )
219
-
220
- // Добавляем данные для редактирования
221
- watch(
222
- () => props.cdDvdDrive,
223
- (newValue) => {
224
- if (newValue.source !== '') {
225
- selectedCdDvdDrive.value = 'datastoreIsoFile'
226
- cdDvdMedia.value = newValue.source
227
- }
228
- if (newValue.bus !== '') {
229
- bus.value = newValue.bus
230
- }
231
- },
232
- { immediate: true }
233
- )
234
- watch(
235
- isRunning,
236
- (newValue) => {
237
- if (newValue && props.type === 'new') {
238
- bus.value = 'virtio'
239
- }
240
- },
241
- { immediate: true }
242
- )
243
- </script>
244
-
245
- <style lang="scss" scoped></style>
1
+ <template>
2
+ <div class="hardware-cd-dvd-drive">
3
+ <atoms-stack-block
4
+ :has-children="true"
5
+ :is-roll-back="props.type === 'removed'"
6
+ :removable="isRemovable"
7
+ @remove="onRemoveCdDvdDrive"
8
+ @roll-back="onRollBackCdDvdDrive"
9
+ >
10
+ <template #stackBlockKey>
11
+ <div
12
+ class="vm-wizard-toggle-block-cd-dvd-drive vm-wizard-toggle-block-hard-disk"
13
+ >
14
+ <span>{{ label }}</span>
15
+ </div>
16
+ </template>
17
+ <template #stackBlockContent>
18
+ <div class="flex-align-center flex-space-between">
19
+ <template v-if="props.type === 'removed'">
20
+ <span>{{ localization.deviceWillRemoved }}</span>
21
+ <div @click.stop class="flex-align-center">
22
+ <input
23
+ :id="`cd-dvd-delete-files-from-datastore-${props.index}`"
24
+ v-model="deleteFilesFromDatastore"
25
+ :disabled="props.disabled"
26
+ type="checkbox"
27
+ class="pointer"
28
+ @click.stop
29
+ />
30
+ <label
31
+ :for="`cd-dvd-delete-files-from-datastore-${props.index}`"
32
+ :class="[
33
+ 'label-text-normal pointer',
34
+ props.disabled && 'div-disabled',
35
+ ]"
36
+ >{{ localization.deleteFilesFromDatastore }}</label
37
+ >
38
+ </div>
39
+ </template>
40
+ <template v-else>
41
+ <div class="select">
42
+ <select
43
+ id="vm-wizard-cd-dvd-drive-field"
44
+ v-model="selectedCdDvdDrive"
45
+ class="vm-wizard-cd-dvd-drive-field"
46
+ @click.stop
47
+ @change="changeCdDvdDrive"
48
+ >
49
+ <option
50
+ v-for="(item, key) in cdDvdDriveOptions"
51
+ :key="key"
52
+ :value="item.value"
53
+ >
54
+ {{ item.text }}
55
+ </option>
56
+ </select>
57
+ </div>
58
+ </template>
59
+ </div>
60
+ </template>
61
+ <template #stackChildren>
62
+ <common-vm-actions-add-customize-hardware-virtual-hardware-cd-dvd-drive-media
63
+ v-if="selectedCdDvdDrive === 'datastoreIsoFile'"
64
+ v-model:cd-dvd-media="cdDvdMedia"
65
+ @browse="isShowFileModal = true"
66
+ />
67
+
68
+ <common-vm-actions-add-customize-hardware-virtual-hardware-bus
69
+ v-model:bus="bus"
70
+ :index="indexByHardDisks"
71
+ :validation-type="busValidationType"
72
+ :error-validation-fields="props.errorValidationFields"
73
+ :disabled="isRunning"
74
+ component-type="disk_devices"
75
+ @remove-error-by-title="emits('remove-error-by-title', $event)"
76
+ />
77
+ </template>
78
+ </atoms-stack-block>
79
+
80
+ <Teleport to="body">
81
+ <common-vm-actions-add-customize-hardware-virtual-hardware-browse-view
82
+ v-if="isShowFileModal"
83
+ :show="isShowFileModal"
84
+ :file-types="fileTypes"
85
+ :nodes="props.nodes"
86
+ :files="props.files"
87
+ @submit="onSelectFile"
88
+ @get-storage="emits('get-storage', $event)"
89
+ @get-folders-or-files="emits('get-folders-or-files', $event)"
90
+ @get-active-device-child="emits('get-active-device-child', $event)"
91
+ @show-datastore-child="emits('show-datastore-child', $event)"
92
+ @hide="isShowFileModal = false"
93
+ />
94
+ </Teleport>
95
+ </div>
96
+ </template>
97
+
98
+ <script lang="ts" setup>
99
+ import { UI_I_FileTreeNode } from '~/components/models/interfaces'
100
+ import { UI_I_TablePayload } from '~/models/store/interfaces'
101
+ import { UI_T_CdDvdDrive } from '~/components/common/vm/actions/add/customizeHardware/virtualHardware/cdDvdDrive/models/types'
102
+ import { UI_I_SendDataNewCdDvdDrive } from '~/components/common/vm/actions/add/customizeHardware/virtualHardware/models/interfaces'
103
+ import { UI_I_Localization, UI_I_HTMLSelectElement } from '~/models/interfaces'
104
+ import { UI_I_ErrorValidationField } from '~/models/store/interfaces'
105
+ import { UI_I_OptionItem } from '~/components/atoms/models/interfaces'
106
+ import { UI_I_FolderOrFileTreePayload } from '~/models/store/storage/interfaces'
107
+ import { UI_T_CdDvdType } from '~/components/common/vm/actions/add/customizeHardware/virtualHardware/models/types'
108
+ import { cdDvdDriveOptionsFunc } from '~/components/common/vm/actions/add/customizeHardware/virtualHardware/cdDvdDrive/config/options'
109
+ import { fileTypesFunc } from '~/components/common/vm/actions/add/customizeHardware/virtualHardware/cdDvdDrive/config/fileTypes'
110
+
111
+ const props = defineProps<{
112
+ hardDisksCount: number
113
+ index: number
114
+ cdDvdDrive: UI_I_SendDataNewCdDvdDrive
115
+ nodes: UI_I_FileTreeNode[]
116
+ files: UI_I_FileTreeNode[]
117
+ errorValidationFields: UI_I_ErrorValidationField<string>[]
118
+ type: UI_T_CdDvdType
119
+ isEdit: boolean
120
+ state?: string
121
+ }>()
122
+
123
+ const emits = defineEmits<{
124
+ (event: 'send-data', value: UI_I_SendDataNewCdDvdDrive): void
125
+ (event: 'remove'): void
126
+ (event: 'roll-back'): void
127
+ (event: 'remove-error-by-title', value: string): void
128
+ (event: 'get-storage', value: UI_I_TablePayload): void
129
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
130
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
131
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
132
+ }>()
133
+
134
+ const localization = computed<UI_I_Localization>(() => useLocal())
135
+
136
+ const isRunning = computed<boolean>(() => {
137
+ return props.state === '1'
138
+ })
139
+
140
+ const isRemovable = computed<boolean>(() => {
141
+ return (
142
+ !props.isEdit ||
143
+ !isRunning.value ||
144
+ (isRunning.value && bus.value === 'virtio')
145
+ )
146
+ })
147
+
148
+ const indexByHardDisks = computed<number>(
149
+ () => props.index + props.hardDisksCount
150
+ )
151
+
152
+ const label = computed<string>(() => {
153
+ if (props.type === 'edit' || props.type === 'removed')
154
+ return `${localization.value.cdDvdDrive} ${props.index + 1}`
155
+
156
+ return `${localization.value.newCdDvdDrive} *`
157
+ })
158
+
159
+ const busValidationType = computed<string>(
160
+ () => `disk_devices[${indexByHardDisks}].bus`
161
+ )
162
+
163
+ const selectedCdDvdDrive = ref<UI_T_CdDvdDrive>('clientDevice')
164
+ const cdDvdDriveOptions = ref<UI_I_OptionItem[]>(
165
+ cdDvdDriveOptionsFunc(localization.value)
166
+ )
167
+ const changeCdDvdDrive = (event: UI_I_HTMLSelectElement): void => {
168
+ const isDatastoreIsoFile = event.target.value === 'datastoreIsoFile'
169
+ if (!isDatastoreIsoFile) return
170
+
171
+ isShowFileModal.value = true
172
+ }
173
+ const isShowFileModal = ref<boolean>(false)
174
+ const onSelectFile = (file: UI_I_FileTreeNode): void => {
175
+ cdDvdMedia.value = file.path
176
+ }
177
+ const fileTypes = computed<UI_I_OptionItem[]>(() =>
178
+ fileTypesFunc(localization.value)
179
+ )
180
+
181
+ const onRemoveCdDvdDrive = (): void => {
182
+ emits('remove')
183
+ }
184
+ const onRollBackCdDvdDrive = (): void => {
185
+ emits('roll-back')
186
+ }
187
+
188
+ const cdDvdMedia = ref<string>('')
189
+ const bus = ref<string>('ide')
190
+
191
+ const deleteFilesFromDatastore = ref<boolean>(false)
192
+
193
+ watch(
194
+ [cdDvdMedia, bus, deleteFilesFromDatastore, , () => props.type],
195
+ () => {
196
+ emits('send-data', {
197
+ create: props.cdDvdDrive.create,
198
+ attach: props.cdDvdDrive.attach,
199
+ source: cdDvdMedia.value,
200
+ size: 0,
201
+ bus: bus.value,
202
+ device_type: 'cdrom',
203
+ provision_type: 'thick',
204
+ disk_mode: 'dependent',
205
+ sharing: false,
206
+ read_only: true,
207
+ shares: 0,
208
+ cache: 'none',
209
+ io: 'native',
210
+ limit_iops: 0,
211
+ discard: 'unmap',
212
+ boot_order: -1,
213
+ detach: props.type === 'removed',
214
+ remove: props.type === 'removed' && deleteFilesFromDatastore.value, // Проверяем если удалили диск и указали Delete files from datastore
215
+ })
216
+ // if (!props.isEdit) {
217
+ // emits('send-data', {
218
+ // create: false,
219
+ // source: cdDvdMedia.value,
220
+ // bus: bus.value,
221
+ // device_type: 'cdrom',
222
+ // boot_order: -1,
223
+ // })
224
+ // return
225
+ // }
226
+ // emits('send-data', {
227
+ // create: false,
228
+ // source: cdDvdMedia.value,
229
+ // bus: bus.value,
230
+ // device_type: 'cdrom',
231
+ // boot_order: -1,
232
+ // size: 0,
233
+ // target: 'hda',
234
+ // storage_id: '',
235
+ // provision_type: 'thick',
236
+ // disk_mode: 'dependent',
237
+ // sharing: false,
238
+ // read_only: true,
239
+ // shares: 0,
240
+ // cache: 'none',
241
+ // io: 'native',
242
+ // limit_iops: 0,
243
+ // discard: 'unmap',
244
+ // })
245
+ },
246
+ { immediate: true }
247
+ )
248
+
249
+ // Добавляем данные для редактирования
250
+ watch(
251
+ () => props.cdDvdDrive,
252
+ (newValue) => {
253
+ if (newValue.source !== '') {
254
+ selectedCdDvdDrive.value = 'datastoreIsoFile'
255
+ cdDvdMedia.value = newValue.source
256
+ }
257
+ if (newValue.bus !== '') {
258
+ bus.value = newValue.bus
259
+ }
260
+ },
261
+ { immediate: true }
262
+ )
263
+ watch(
264
+ isRunning,
265
+ (newValue) => {
266
+ if (newValue && props.type === 'new') {
267
+ bus.value = 'virtio'
268
+ }
269
+ },
270
+ { immediate: true }
271
+ )
272
+ </script>
273
+
274
+ <style lang="scss" scoped></style>