bfg-common 1.4.791 → 1.4.792

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 (171) hide show
  1. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  2. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  3. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  5. package/assets/scss/common/normalize.scss +361 -361
  6. package/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  8. package/components/atoms/stack/StackBlock.vue +185 -185
  9. package/components/atoms/table/dataGrid/DataGrid.vue +1704 -1704
  10. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  11. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  12. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  13. package/components/common/browse/BrowseNew.vue +237 -237
  14. package/components/common/browse/BrowseOld.vue +217 -217
  15. package/components/common/browse/blocks/contents/Files.vue +37 -37
  16. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  17. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  18. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  19. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  20. package/components/common/browse/lib/models/interfaces.ts +5 -5
  21. package/components/common/context/Context.vue +111 -111
  22. package/components/common/context/lib/models/interfaces.ts +30 -30
  23. package/components/common/context/recursion/Recursion.vue +87 -87
  24. package/components/common/context/recursion/RecursionNew.vue +237 -237
  25. package/components/common/context/recursion/RecursionOld.vue +227 -227
  26. package/components/common/details/DetailsItem.vue +109 -109
  27. package/components/common/diagramMain/Header.vue +211 -211
  28. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  29. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  30. package/components/common/diagramMain/lib/models/types.ts +21 -21
  31. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  32. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  33. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  34. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  35. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  36. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  37. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  38. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  39. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  40. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +398 -398
  41. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  42. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  43. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +23 -23
  44. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  45. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  46. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  47. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  48. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  49. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  50. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  51. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  52. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  53. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  54. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  55. package/components/common/diagramMain/port/Ports.vue +47 -47
  56. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  57. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  58. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +151 -151
  59. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +300 -300
  60. package/components/common/modals/confirmByInput/ConfirmByInput.vue +206 -206
  61. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  62. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +250 -250
  63. package/components/common/pages/home/StatusContent.vue +49 -49
  64. package/components/common/pages/home/headline/Headline.vue +45 -45
  65. package/components/common/pages/home/headline/HeadlineNew.vue +71 -71
  66. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  67. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  68. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  69. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  70. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  71. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  72. package/components/common/pages/home/widgets/hosts/HostsNew.vue +100 -100
  73. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  74. package/components/common/pages/home/widgets/services/lib/config/config.ts +108 -108
  75. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  76. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  77. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  78. package/components/common/pages/packages/Packages.vue +208 -208
  79. package/components/common/pages/tasks/Tasks.vue +1 -0
  80. package/components/common/pages/tasks/table/Table.vue +326 -293
  81. package/components/common/pages/tasks/table/errorInfo/ErrorInfo.vue +17 -4
  82. package/components/common/pages/tasks/table/expandDetails/ExpandDetails.vue +12 -0
  83. package/components/common/pages/tasks/table/lib/config/config.ts +5 -5
  84. package/components/common/recursionTree/RecursionTree.vue +223 -223
  85. package/components/common/select/button/ButtonDropdown.vue +108 -108
  86. package/components/common/spiceConsole/Drawer.vue +370 -370
  87. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  88. package/components/common/split/horizontal/HorizontalNew.vue +376 -376
  89. package/components/common/split/horizontal/HorizontalOld.vue +337 -337
  90. package/components/common/split/vertical/Vertical.vue +160 -160
  91. package/components/common/vm/actions/add/Add.vue +621 -621
  92. package/components/common/vm/actions/clone/Clone.vue +639 -639
  93. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  94. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +271 -271
  95. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +271 -271
  96. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +174 -174
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +161 -161
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +165 -165
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +357 -357
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +281 -281
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +84 -84
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +81 -81
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  135. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  136. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  137. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  138. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  139. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  140. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  141. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  142. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  143. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  144. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  145. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  146. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  147. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  148. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  149. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  150. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  151. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  152. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  153. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  154. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  155. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  156. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  157. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  158. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  159. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  160. package/components/common/wizards/datastore/add/lib/config/steps.ts +138 -138
  161. package/components/common/wizards/vm/migrate/Migrate.vue +288 -288
  162. package/composables/productNameLocal.ts +30 -30
  163. package/composables/useAppVersion.ts +21 -21
  164. package/package.json +2 -2
  165. package/plugins/date.ts +233 -233
  166. package/plugins/recursion.ts +311 -311
  167. package/public/spice-console/lib/images/bitmap.js +203 -203
  168. package/public/spice-console/network/spicechannel.js +383 -383
  169. package/store/main/mutations.ts +7 -7
  170. package/store/main/state.ts +7 -7
  171. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,281 +1,281 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-network-new
3
- v-if="isNewView"
4
- v-model:selected-location="selectedLocation"
5
- v-model:adapter-type="adapterType"
6
- v-model:mac-address="macAddress"
7
- v-model:mac-address-type="macAddressType"
8
- v-model:new-network-invalid="newNetworkInvalid"
9
- :index="props.index"
10
- :type="props.type"
11
- :networks-table="props.networksTable"
12
- :error-validation-fields="props.errorValidationFields"
13
- :is-removable="isRemovable"
14
- :label="label"
15
- :error-text="apiError"
16
- :type-error="typeError"
17
- :location-options="locationOptions"
18
- :is-running="isRunning"
19
- :location-modal-is-show="locationModalIsShow"
20
- :state="props.state"
21
- @remove="emits('remove')"
22
- @remove-error-by-title="onRemoveValidationError"
23
- @change-location="changeLocation"
24
- @hide-location-modal="onHideLocationModal"
25
- @select-location="onSelectLocation"
26
- />
27
- <common-vm-actions-common-customize-hardware-virtual-hardware-new-network-old
28
- v-else
29
- v-model:selected-location="selectedLocation"
30
- v-model:adapter-type="adapterType"
31
- v-model:mac-address="macAddress"
32
- v-model:mac-address-type="macAddressType"
33
- v-model:new-network-invalid="newNetworkInvalid"
34
- :index="props.index"
35
- :type="props.type"
36
- :networks-table="props.networksTable"
37
- :error-validation-fields="props.errorValidationFields"
38
- :is-removable="isRemovable"
39
- :label="label"
40
- :error-text="apiError"
41
- :type-error="typeError"
42
- :location-options="locationOptions"
43
- :is-running="isRunning"
44
- :location-modal-is-show="locationModalIsShow"
45
- :state="props.state"
46
- @remove="emits('remove')"
47
- @remove-error-by-title="onRemoveValidationError"
48
- @change-location="changeLocation"
49
- @hide-location-modal="onHideLocationModal"
50
- @select-location="onSelectLocation"
51
- />
52
- </template>
53
-
54
- <script setup lang="ts">
55
- import type { UI_T_Project } from '~/lib/models/types'
56
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
57
- import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
58
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
59
- import type { UI_I_SendDataNewNetwork } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
60
- import type { UI_T_NetworkType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
61
- import type {
62
- UI_I_Localization,
63
- UI_I_HTMLSelectElement,
64
- } from '~/lib/models/interfaces'
65
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
66
-
67
- const props = defineProps<{
68
- project: UI_T_Project
69
- index: number
70
- type: UI_T_NetworkType
71
- network: UI_I_SendDataNewNetwork
72
- networksTable: UI_I_NetworkTableItem[]
73
- errorValidationFields: UI_I_ErrorValidationField[]
74
- isEdit: boolean
75
- state?: string | number
76
- }>()
77
- const emits = defineEmits<{
78
- (event: 'send-data', value: UI_I_SendDataNewNetwork): void
79
- (event: 'invalid', value: boolean): void
80
- (event: 'remove'): void
81
- (event: 'remove-error-by-title', value: string): void
82
- (event: 'get-networks-table', value: UI_I_TablePayload): void
83
- }>()
84
-
85
- const { $store }: any = useNuxtApp()
86
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
87
-
88
- const localization = computed<UI_I_Localization>(() => useLocal())
89
-
90
- const isRunning = computed<boolean>(() => {
91
- return props.state === 2
92
- })
93
-
94
- const isRemovable = computed<boolean>(() => {
95
- return (
96
- !props.isEdit ||
97
- !isRunning.value ||
98
- (isRunning.value && adapterType.value === 'virtio')
99
- )
100
- })
101
-
102
- const label = computed<string>(() => {
103
- if (props.type === 'edit')
104
- return `${localization.value.common.networkAdapter} ${props.index + 1}`
105
-
106
- return `${localization.value.common.newNetwork} *`
107
- })
108
-
109
- // const removeNetwork = (): void => {
110
- // emits('remove')
111
- // }
112
-
113
- const selectedLocationOld = ref<string>('')
114
- const selectedLocation = ref<string>('')
115
- const locationOptions = ref<UI_I_OptionItem[]>([])
116
-
117
- const getNetworks = (): void => {
118
- // if (props.networksTable.length) return // Из-за этого кода был баг. Открыть визард вм -> создать сеть -> открыть визард вм и в списке сетей нету новой сети
119
-
120
- const payload: UI_I_TablePayload = {
121
- pagination: {
122
- page: 1,
123
- pageSize: 100,
124
- },
125
- schema: 'full',
126
- type: 'network',
127
- sortBy: null,
128
- }
129
- emits('get-networks-table', payload)
130
- }
131
- getNetworks()
132
-
133
- const newNetworkInvalid = ref<boolean>(false)
134
- watch(
135
- newNetworkInvalid,
136
- (newValue) => {
137
- emits('invalid', newValue)
138
- },
139
- { immediate: true }
140
- )
141
-
142
- const valueProp: 'net_bridge' | 'id' =
143
- props.project === 'procurator' ? 'net_bridge' : 'id'
144
- watch(
145
- () => props.networksTable,
146
- (newValue) => {
147
- const isExistValue = newValue.some(
148
- (network) => network[valueProp] === selectedLocation.value
149
- )
150
- if (!newValue.length) {
151
- locationOptions.value = [
152
- { text: localization.value.vmWizard.noAvailableNetworks, value: '' },
153
- ]
154
- newNetworkInvalid.value = true
155
- return
156
- }
157
- newNetworkInvalid.value = false
158
-
159
- if (props.type === 'edit' || isExistValue) return
160
-
161
- selectedLocationOld.value = newValue[0][valueProp]
162
- selectedLocation.value = newValue[0][valueProp]
163
-
164
- locationOptions.value = [
165
- { text: newValue[0].name, value: newValue[0][valueProp] },
166
- { text: `${localization.value.common.browse}...`, value: '' },
167
- ]
168
- },
169
- { immediate: true }
170
- )
171
-
172
- const locationModalIsShow = ref<boolean>(false)
173
- const onHideLocationModal = (): void => {
174
- locationModalIsShow.value = false
175
- selectedLocation.value = selectedLocationOld.value
176
- }
177
- const changeLocation = (event: UI_I_HTMLSelectElement): void => {
178
- const value = event.target.value
179
- if (value === '') {
180
- locationModalIsShow.value = true
181
- return
182
- }
183
-
184
- selectedLocationOld.value = value
185
- selectedLocation.value = value
186
- // netBridge.value = value
187
- }
188
- const onSelectLocation = (network: UI_I_NetworkTableItem): void => {
189
- locationModalIsShow.value = false
190
-
191
- selectedLocationOld.value = network[valueProp]
192
- selectedLocation.value = network[valueProp]
193
-
194
- const hasNetwork = locationOptions.value.some(
195
- (option) => option.value === network[valueProp]
196
- )
197
- if (hasNetwork) {
198
- return
199
- }
200
-
201
- locationOptions.value = [
202
- ...locationOptions.value.slice(0, -1),
203
- { text: network.name, value: network[valueProp] },
204
- locationOptions.value[locationOptions.value.length - 1],
205
- ]
206
- }
207
-
208
- const adapterType = ref<string>('rtl8139')
209
-
210
- const target = ref<string>('')
211
-
212
- const macAddress = ref<string>('')
213
- const macAddressType = ref<string>('automatic')
214
-
215
- watch(
216
- [selectedLocation, adapterType, macAddress, macAddressType, locationOptions],
217
- () => {
218
- const option = locationOptions.value.find(
219
- (option) => option.value === selectedLocation.value
220
- )
221
- if (!option) return
222
-
223
- emits('send-data', {
224
- network: option.text,
225
- net_bridge: props.project === 'procurator' ? option.value : '',
226
- target: target.value,
227
- model: adapterType.value,
228
- mac: macAddress.value,
229
- boot_order: props.network.boot_order,
230
- })
231
- },
232
- { immediate: true }
233
- )
234
-
235
- // Добавляем данные для редактирования
236
- watch(
237
- () => props.network,
238
- (newValue) => {
239
- if (props.type !== 'edit') return
240
-
241
- locationOptions.value = [
242
- { text: newValue.network, value: newValue[valueProp] },
243
- { text: `${localization.value.common.browse}...`, value: '' },
244
- ]
245
- selectedLocation.value = newValue[valueProp]
246
-
247
- adapterType.value = newValue.model
248
- macAddress.value = newValue.mac
249
- target.value = newValue.target
250
- },
251
- { immediate: true }
252
- )
253
-
254
- watch(
255
- isRunning,
256
- (newValue) => {
257
- if (newValue && props.type === 'new') {
258
- adapterType.value = 'virtio'
259
- }
260
- },
261
- { immediate: true }
262
- )
263
-
264
- const typeError = computed<string>(
265
- () => `network_devices[${props.index}].network`
266
- )
267
-
268
- const apiError = computed<string>(() => {
269
- return (
270
- props.errorValidationFields?.find(
271
- (message) => message.field === typeError.value
272
- )?.error_message || ''
273
- )
274
- })
275
-
276
- const onRemoveValidationError = (): void => {
277
- emits('remove-error-by-title', typeError.value)
278
- }
279
- </script>
280
-
281
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-network-new
3
+ v-if="isNewView"
4
+ v-model:selected-location="selectedLocation"
5
+ v-model:adapter-type="adapterType"
6
+ v-model:mac-address="macAddress"
7
+ v-model:mac-address-type="macAddressType"
8
+ v-model:new-network-invalid="newNetworkInvalid"
9
+ :index="props.index"
10
+ :type="props.type"
11
+ :networks-table="props.networksTable"
12
+ :error-validation-fields="props.errorValidationFields"
13
+ :is-removable="isRemovable"
14
+ :label="label"
15
+ :error-text="apiError"
16
+ :type-error="typeError"
17
+ :location-options="locationOptions"
18
+ :is-running="isRunning"
19
+ :location-modal-is-show="locationModalIsShow"
20
+ :state="props.state"
21
+ @remove="emits('remove')"
22
+ @remove-error-by-title="onRemoveValidationError"
23
+ @change-location="changeLocation"
24
+ @hide-location-modal="onHideLocationModal"
25
+ @select-location="onSelectLocation"
26
+ />
27
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-network-old
28
+ v-else
29
+ v-model:selected-location="selectedLocation"
30
+ v-model:adapter-type="adapterType"
31
+ v-model:mac-address="macAddress"
32
+ v-model:mac-address-type="macAddressType"
33
+ v-model:new-network-invalid="newNetworkInvalid"
34
+ :index="props.index"
35
+ :type="props.type"
36
+ :networks-table="props.networksTable"
37
+ :error-validation-fields="props.errorValidationFields"
38
+ :is-removable="isRemovable"
39
+ :label="label"
40
+ :error-text="apiError"
41
+ :type-error="typeError"
42
+ :location-options="locationOptions"
43
+ :is-running="isRunning"
44
+ :location-modal-is-show="locationModalIsShow"
45
+ :state="props.state"
46
+ @remove="emits('remove')"
47
+ @remove-error-by-title="onRemoveValidationError"
48
+ @change-location="changeLocation"
49
+ @hide-location-modal="onHideLocationModal"
50
+ @select-location="onSelectLocation"
51
+ />
52
+ </template>
53
+
54
+ <script setup lang="ts">
55
+ import type { UI_T_Project } from '~/lib/models/types'
56
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
57
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
58
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
59
+ import type { UI_I_SendDataNewNetwork } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
60
+ import type { UI_T_NetworkType } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/types'
61
+ import type {
62
+ UI_I_Localization,
63
+ UI_I_HTMLSelectElement,
64
+ } from '~/lib/models/interfaces'
65
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
66
+
67
+ const props = defineProps<{
68
+ project: UI_T_Project
69
+ index: number
70
+ type: UI_T_NetworkType
71
+ network: UI_I_SendDataNewNetwork
72
+ networksTable: UI_I_NetworkTableItem[]
73
+ errorValidationFields: UI_I_ErrorValidationField[]
74
+ isEdit: boolean
75
+ state?: string | number
76
+ }>()
77
+ const emits = defineEmits<{
78
+ (event: 'send-data', value: UI_I_SendDataNewNetwork): void
79
+ (event: 'invalid', value: boolean): void
80
+ (event: 'remove'): void
81
+ (event: 'remove-error-by-title', value: string): void
82
+ (event: 'get-networks-table', value: UI_I_TablePayload): void
83
+ }>()
84
+
85
+ const { $store }: any = useNuxtApp()
86
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
87
+
88
+ const localization = computed<UI_I_Localization>(() => useLocal())
89
+
90
+ const isRunning = computed<boolean>(() => {
91
+ return props.state === 2
92
+ })
93
+
94
+ const isRemovable = computed<boolean>(() => {
95
+ return (
96
+ !props.isEdit ||
97
+ !isRunning.value ||
98
+ (isRunning.value && adapterType.value === 'virtio')
99
+ )
100
+ })
101
+
102
+ const label = computed<string>(() => {
103
+ if (props.type === 'edit')
104
+ return `${localization.value.common.networkAdapter} ${props.index + 1}`
105
+
106
+ return `${localization.value.common.newNetwork} *`
107
+ })
108
+
109
+ // const removeNetwork = (): void => {
110
+ // emits('remove')
111
+ // }
112
+
113
+ const selectedLocationOld = ref<string>('')
114
+ const selectedLocation = ref<string>('')
115
+ const locationOptions = ref<UI_I_OptionItem[]>([])
116
+
117
+ const getNetworks = (): void => {
118
+ // if (props.networksTable.length) return // Из-за этого кода был баг. Открыть визард вм -> создать сеть -> открыть визард вм и в списке сетей нету новой сети
119
+
120
+ const payload: UI_I_TablePayload = {
121
+ pagination: {
122
+ page: 1,
123
+ pageSize: 100,
124
+ },
125
+ schema: 'full',
126
+ type: 'network',
127
+ sortBy: null,
128
+ }
129
+ emits('get-networks-table', payload)
130
+ }
131
+ getNetworks()
132
+
133
+ const newNetworkInvalid = ref<boolean>(false)
134
+ watch(
135
+ newNetworkInvalid,
136
+ (newValue) => {
137
+ emits('invalid', newValue)
138
+ },
139
+ { immediate: true }
140
+ )
141
+
142
+ const valueProp: 'net_bridge' | 'id' =
143
+ props.project === 'procurator' ? 'net_bridge' : 'id'
144
+ watch(
145
+ () => props.networksTable,
146
+ (newValue) => {
147
+ const isExistValue = newValue.some(
148
+ (network) => network[valueProp] === selectedLocation.value
149
+ )
150
+ if (!newValue.length) {
151
+ locationOptions.value = [
152
+ { text: localization.value.vmWizard.noAvailableNetworks, value: '' },
153
+ ]
154
+ newNetworkInvalid.value = true
155
+ return
156
+ }
157
+ newNetworkInvalid.value = false
158
+
159
+ if (props.type === 'edit' || isExistValue) return
160
+
161
+ selectedLocationOld.value = newValue[0][valueProp]
162
+ selectedLocation.value = newValue[0][valueProp]
163
+
164
+ locationOptions.value = [
165
+ { text: newValue[0].name, value: newValue[0][valueProp] },
166
+ { text: `${localization.value.common.browse}...`, value: '' },
167
+ ]
168
+ },
169
+ { immediate: true }
170
+ )
171
+
172
+ const locationModalIsShow = ref<boolean>(false)
173
+ const onHideLocationModal = (): void => {
174
+ locationModalIsShow.value = false
175
+ selectedLocation.value = selectedLocationOld.value
176
+ }
177
+ const changeLocation = (event: UI_I_HTMLSelectElement): void => {
178
+ const value = event.target.value
179
+ if (value === '') {
180
+ locationModalIsShow.value = true
181
+ return
182
+ }
183
+
184
+ selectedLocationOld.value = value
185
+ selectedLocation.value = value
186
+ // netBridge.value = value
187
+ }
188
+ const onSelectLocation = (network: UI_I_NetworkTableItem): void => {
189
+ locationModalIsShow.value = false
190
+
191
+ selectedLocationOld.value = network[valueProp]
192
+ selectedLocation.value = network[valueProp]
193
+
194
+ const hasNetwork = locationOptions.value.some(
195
+ (option) => option.value === network[valueProp]
196
+ )
197
+ if (hasNetwork) {
198
+ return
199
+ }
200
+
201
+ locationOptions.value = [
202
+ ...locationOptions.value.slice(0, -1),
203
+ { text: network.name, value: network[valueProp] },
204
+ locationOptions.value[locationOptions.value.length - 1],
205
+ ]
206
+ }
207
+
208
+ const adapterType = ref<string>('rtl8139')
209
+
210
+ const target = ref<string>('')
211
+
212
+ const macAddress = ref<string>('')
213
+ const macAddressType = ref<string>('automatic')
214
+
215
+ watch(
216
+ [selectedLocation, adapterType, macAddress, macAddressType, locationOptions],
217
+ () => {
218
+ const option = locationOptions.value.find(
219
+ (option) => option.value === selectedLocation.value
220
+ )
221
+ if (!option) return
222
+
223
+ emits('send-data', {
224
+ network: option.text,
225
+ net_bridge: props.project === 'procurator' ? option.value : '',
226
+ target: target.value,
227
+ model: adapterType.value,
228
+ mac: macAddress.value,
229
+ boot_order: props.network.boot_order,
230
+ })
231
+ },
232
+ { immediate: true }
233
+ )
234
+
235
+ // Добавляем данные для редактирования
236
+ watch(
237
+ () => props.network,
238
+ (newValue) => {
239
+ if (props.type !== 'edit') return
240
+
241
+ locationOptions.value = [
242
+ { text: newValue.network, value: newValue[valueProp] },
243
+ { text: `${localization.value.common.browse}...`, value: '' },
244
+ ]
245
+ selectedLocation.value = newValue[valueProp]
246
+
247
+ adapterType.value = newValue.model
248
+ macAddress.value = newValue.mac
249
+ target.value = newValue.target
250
+ },
251
+ { immediate: true }
252
+ )
253
+
254
+ watch(
255
+ isRunning,
256
+ (newValue) => {
257
+ if (newValue && props.type === 'new') {
258
+ adapterType.value = 'virtio'
259
+ }
260
+ },
261
+ { immediate: true }
262
+ )
263
+
264
+ const typeError = computed<string>(
265
+ () => `network_devices[${props.index}].network`
266
+ )
267
+
268
+ const apiError = computed<string>(() => {
269
+ return (
270
+ props.errorValidationFields?.find(
271
+ (message) => message.field === typeError.value
272
+ )?.error_message || ''
273
+ )
274
+ })
275
+
276
+ const onRemoveValidationError = (): void => {
277
+ emits('remove-error-by-title', typeError.value)
278
+ }
279
+ </script>
280
+
281
+ <style scoped lang="scss"></style>