bfg-common 1.1.76 → 1.1.78

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 (82) hide show
  1. package/components/atoms/alert/Notification.vue +167 -167
  2. package/components/atoms/autocomplete/Autocomplete.vue +236 -236
  3. package/components/atoms/datepicker/Datepicker.vue +612 -612
  4. package/components/atoms/list/SelectList.vue +62 -62
  5. package/components/atoms/nav/NavBar.vue +116 -116
  6. package/components/atoms/nav/VerticalNavBar.vue +89 -89
  7. package/components/atoms/notificationBar/NotificationBar.vue +175 -175
  8. package/components/atoms/perPage/PerPage.vue +52 -52
  9. package/components/atoms/popup/SimplePopup.vue +90 -90
  10. package/components/atoms/step/VerticalStep.vue +104 -104
  11. package/components/atoms/switch/Switch.vue +107 -107
  12. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +206 -206
  13. package/components/atoms/table/dataGrid/DataGridPage.vue +189 -189
  14. package/components/atoms/tabs/Tabs.vue +189 -189
  15. package/components/atoms/tooltip/Signpost.vue +224 -224
  16. package/components/common/adapterManager/AddAdapterWarningModal.vue +82 -82
  17. package/components/common/adapterManager/NoActiveAdaptersModal.vue +62 -62
  18. package/components/common/adapterManager/NoConnectedActiveAdaptersModal.vue +62 -62
  19. package/components/common/browse/Browse.vue +182 -182
  20. package/components/common/browse/blocks/Title.vue +66 -66
  21. package/components/common/diagramMain/Diagram.vue +186 -186
  22. package/components/common/diagramMain/DiagramMain.vue +986 -986
  23. package/components/common/diagramMain/adapter/AdapterItem.vue +227 -227
  24. package/components/common/diagramMain/adapter/AdapterItems.vue +57 -57
  25. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +339 -339
  26. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +202 -202
  27. package/components/common/diagramMain/modals/remove/RemoveModal.vue +226 -226
  28. package/components/common/diagramMain/network/Contents.vue +238 -238
  29. package/components/common/feedback/Buttons.vue +232 -232
  30. package/components/common/feedback/Message.vue +468 -468
  31. package/components/common/feedback/VisitPortal.vue +54 -54
  32. package/components/common/help/navbar/left/Left.vue +159 -159
  33. package/components/common/help/navbar/left/utils/constructAccordion.ts +27 -27
  34. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +359 -359
  35. package/components/common/modals/Rename.vue +165 -165
  36. package/components/common/monitor/advanced/Advanced.vue +214 -221
  37. package/components/common/monitor/advanced/tools/Tools.vue +422 -441
  38. package/components/common/monitor/advanced/tools/chartOptionsModal/ChartOptionsModal.vue +452 -424
  39. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/Counters.vue +93 -86
  40. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/Table.vue +130 -121
  41. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/config/utils.ts +689 -688
  42. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/Timespan.vue +76 -73
  43. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/object/Object.vue +176 -129
  44. package/components/common/monitor/advanced/tools/chartOptionsModal/models/models.ts +19 -0
  45. package/components/common/perPage/PerPage.vue +51 -51
  46. package/components/common/recursionTree/RecursionTree.vue +201 -201
  47. package/components/common/vm/actions/add/config/capabilities.ts +777 -777
  48. package/components/common/vm/actions/add/customizeHardware/virtualHardware/VirtualHardware.vue +646 -646
  49. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +246 -246
  50. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/Cpu.vue +375 -375
  51. package/components/common/vm/actions/add/customizeHardware/virtualHardware/limit/Limit.vue +234 -234
  52. package/components/common/vm/actions/add/customizeHardware/virtualHardware/limit/config/options.ts +28 -28
  53. package/components/common/vm/actions/add/customizeHardware/virtualHardware/memory/Memory.vue +316 -316
  54. package/components/common/vm/actions/add/customizeHardware/virtualHardware/memory/config/memoryOptions.ts +35 -35
  55. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +445 -445
  56. package/components/common/vm/actions/add/customizeHardware/virtualHardware/reservation/Reservation.vue +235 -235
  57. package/components/common/vm/actions/add/customizeHardware/virtualHardware/videoCard/VideoCard.vue +177 -177
  58. package/components/common/vm/actions/add/customizeHardware/vmoptions/bootOptions/order/Order.vue +197 -197
  59. package/components/common/vm/actions/add/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +180 -180
  60. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/CopyPaste.vue +51 -51
  61. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +55 -55
  62. package/components/common/vm/actions/add/select/storage/config/config.ts +154 -154
  63. package/components/common/wizards/datastore/add/nfs/configuration/Configuration.vue +373 -373
  64. package/components/common/wizards/datastore/add/nfs/configuration/serversList/ServersList.vue +123 -123
  65. package/components/common/wizards/datastore/add/nfs/kerberosAuthentication/KerberosAuthentication.vue +54 -54
  66. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/hostTable/HostTable.vue +131 -131
  67. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/PartitionConfiguration.vue +230 -230
  68. package/models/store/interfaces.ts +37 -37
  69. package/models/store/storage/interfaces.ts +32 -32
  70. package/models/store/types.ts +32 -32
  71. package/modules/fixContentBuild/utils/methods.ts +114 -114
  72. package/package.json +1 -1
  73. package/public/spice-console/application/codec.js +257 -257
  74. package/public/spice-console/lib/rasterEngine.js +907 -907
  75. package/public/spice-console/network/spicechannel.js +369 -369
  76. package/public/spice-console-minify/lib/decoder/dixie.min.js +4 -4
  77. package/public/spice-console-minify/lib/jgestures.min.js +24 -24
  78. package/public/spice-console-minify/lib/jquery-2.0.3.min.js +24 -24
  79. package/public/spice-console-minify/lib/jquery-mousewheel.min.js +11 -11
  80. package/public/spice-console-minify/lib/jquery-visibility.min.js +1 -1
  81. package/public/spice-console-minify/lib/lodash.4.0.0.min.js +5 -5
  82. package/utils/contentBuild.ts +34 -34
@@ -1,246 +1,246 @@
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 | number
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
- target: props.cdDvdDrive.target,
213
- boot_order: props.cdDvdDrive.boot_order,
214
- detach: props.type === 'removed',
215
- remove: props.type === 'removed' && deleteFilesFromDatastore.value, // Проверяем если удалили диск и указали Delete files from datastore
216
- })
217
- },
218
- { immediate: true }
219
- )
220
-
221
- // Добавляем данные для редактирования
222
- watch(
223
- () => props.cdDvdDrive,
224
- (newValue) => {
225
- if (newValue.source !== '') {
226
- selectedCdDvdDrive.value = 'datastoreIsoFile'
227
- cdDvdMedia.value = newValue.source
228
- }
229
- if (newValue.bus !== '') {
230
- bus.value = newValue.bus
231
- }
232
- },
233
- { immediate: true }
234
- )
235
- watch(
236
- isRunning,
237
- (newValue) => {
238
- if (newValue && props.type === 'new') {
239
- bus.value = 'virtio'
240
- }
241
- },
242
- { immediate: true }
243
- )
244
- </script>
245
-
246
- <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 | number
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
+ target: props.cdDvdDrive.target,
213
+ boot_order: props.cdDvdDrive.boot_order,
214
+ detach: props.type === 'removed',
215
+ remove: props.type === 'removed' && deleteFilesFromDatastore.value, // Проверяем если удалили диск и указали Delete files from datastore
216
+ })
217
+ },
218
+ { immediate: true }
219
+ )
220
+
221
+ // Добавляем данные для редактирования
222
+ watch(
223
+ () => props.cdDvdDrive,
224
+ (newValue) => {
225
+ if (newValue.source !== '') {
226
+ selectedCdDvdDrive.value = 'datastoreIsoFile'
227
+ cdDvdMedia.value = newValue.source
228
+ }
229
+ if (newValue.bus !== '') {
230
+ bus.value = newValue.bus
231
+ }
232
+ },
233
+ { immediate: true }
234
+ )
235
+ watch(
236
+ isRunning,
237
+ (newValue) => {
238
+ if (newValue && props.type === 'new') {
239
+ bus.value = 'virtio'
240
+ }
241
+ },
242
+ { immediate: true }
243
+ )
244
+ </script>
245
+
246
+ <style lang="scss" scoped></style>