bfg-common 1.4.878 → 1.4.879

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 (192) 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/localization/local_ru.json +1 -1
  6. package/assets/scss/common/normalize.scss +361 -361
  7. package/components/atoms/TheIcon3.vue +50 -50
  8. package/components/atoms/autocomplete/Autocomplete.vue +301 -301
  9. package/components/atoms/collapse/CollapseNav.vue +164 -164
  10. package/components/atoms/dropdown/dropdown/Dropdown.vue +168 -168
  11. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  12. package/components/atoms/stack/StackBlock.vue +185 -185
  13. package/components/atoms/table/dataGrid/DataGrid.vue +1704 -1704
  14. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  15. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  16. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  17. package/components/common/browse/BrowseNew.vue +237 -237
  18. package/components/common/browse/BrowseOld.vue +217 -217
  19. package/components/common/browse/blocks/contents/Files.vue +37 -37
  20. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  21. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  22. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  23. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  24. package/components/common/browse/lib/models/interfaces.ts +5 -5
  25. package/components/common/context/Context.vue +111 -111
  26. package/components/common/context/lib/models/interfaces.ts +30 -30
  27. package/components/common/context/recursion/Recursion.vue +87 -87
  28. package/components/common/context/recursion/RecursionOld.vue +227 -227
  29. package/components/common/details/DetailsItem.vue +109 -109
  30. package/components/common/diagramMain/Header.vue +211 -211
  31. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  32. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  33. package/components/common/diagramMain/lib/models/interfaces.ts +1 -1
  34. package/components/common/diagramMain/lib/models/types.ts +21 -21
  35. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  36. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  37. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  38. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  39. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  40. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  41. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  42. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  43. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  44. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  45. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  46. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +23 -23
  47. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  48. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  49. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  50. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  51. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  52. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  53. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  54. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  55. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  56. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  57. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  58. package/components/common/diagramMain/port/Ports.vue +47 -47
  59. package/components/common/graph/Graph.vue +104 -104
  60. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  61. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  62. package/components/common/layout/theHeader/userMenu/modals/preferences/view/ViewOld.vue +112 -112
  63. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +335 -335
  64. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +312 -312
  65. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  66. package/components/common/monitor/overview/OverviewNew.vue +142 -142
  67. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  68. package/components/common/monitor/overview/filters/Filters.vue +166 -166
  69. package/components/common/monitor/overview/filters/FiltersNew.vue +172 -172
  70. package/components/common/monitor/overview/filters/FiltersOld.vue +151 -151
  71. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +175 -175
  72. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModalOld.vue +161 -161
  73. package/components/common/pages/home/StatusContent.vue +49 -49
  74. package/components/common/pages/home/headline/Headline.vue +45 -45
  75. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  76. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  77. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  78. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  79. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  80. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  81. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  82. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  83. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  84. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  85. package/components/common/pages/packages/Packages.vue +208 -208
  86. package/components/common/pages/shortcuts/block/BlockNew.vue +96 -96
  87. package/components/common/pages/shortcuts/block/BlockOld.vue +68 -68
  88. package/components/common/pages/tasks/table/Table.vue +2 -3
  89. package/components/common/pages/tasks/table/lib/config/config.ts +5 -5
  90. package/components/common/recursionTree/RecursionTree.vue +223 -223
  91. package/components/common/select/button/ButtonDropdown.vue +108 -108
  92. package/components/common/spiceConsole/Drawer.vue +370 -370
  93. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  94. package/components/common/split/horizontal/HorizontalNew.vue +376 -376
  95. package/components/common/split/horizontal/HorizontalOld.vue +337 -337
  96. package/components/common/split/vertical/Vertical.vue +160 -160
  97. package/components/common/vm/actions/add/Add.vue +622 -622
  98. package/components/common/vm/actions/clone/Clone.vue +639 -639
  99. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  100. package/components/common/vm/actions/clone/toTemplate/ToTemplate.vue +634 -634
  101. package/components/common/vm/actions/clone/toTemplate/lib/config/steps.ts +116 -116
  102. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +275 -275
  103. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +274 -274
  104. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +177 -177
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +410 -410
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +319 -319
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/Bus.vue +99 -99
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDrive.vue +232 -232
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +164 -164
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +168 -168
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +368 -368
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +232 -232
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +250 -250
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +286 -282
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  135. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  136. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +84 -84
  137. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  138. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  139. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  140. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  141. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  142. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +81 -81
  143. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  144. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  145. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  146. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  147. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  148. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  149. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  150. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  151. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  152. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  153. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  154. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  155. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  156. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  157. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  158. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  159. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  160. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  161. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  162. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  163. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  164. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  165. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  166. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  167. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  168. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  169. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  170. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  171. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  172. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  173. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  174. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  175. package/components/common/wizards/datastore/add/lib/config/steps.ts +138 -138
  176. package/components/common/wizards/vm/migrate/Migrate.vue +302 -302
  177. package/components/common/wizards/vm/migrate/lib/config/constructDataReady.ts +220 -220
  178. package/components/common/wizards/vm/migrate/select/network/Network.vue +103 -103
  179. package/components/common/wizards/vm/migrate/select/network/table/network/Network.vue +150 -150
  180. package/components/common/wizards/vm/migrate/select/network/table/network/lib/config/advancedTable.ts +91 -91
  181. package/components/common/wizards/vm/migrate/select/priority/Priority.vue +43 -43
  182. package/composables/productNameLocal.ts +30 -30
  183. package/composables/useAppVersion.ts +21 -21
  184. package/lib/config/uiTable.ts +14 -14
  185. package/package.json +2 -2
  186. package/plugins/date.ts +233 -233
  187. package/plugins/recursion.ts +311 -311
  188. package/public/spice-console/lib/images/bitmap.js +203 -203
  189. package/public/spice-console/network/spicechannel.js +383 -383
  190. package/store/main/mutations.ts +7 -7
  191. package/store/main/state.ts +7 -7
  192. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,219 +1,219 @@
1
- <template>
2
- <div>
3
- <common-browse
4
- v-model:selected-file="selectedFile"
5
- v-model:selected-file-type="selectedFileType"
6
- :show="props.show"
7
- :nodes="props.nodes"
8
- :files="files"
9
- :info="selectedNodeInfo"
10
- :file-types="props.fileTypes"
11
- :browse-loading="browseLoading"
12
- @get-nodes="onGetCurrentDirNodes"
13
- @select-node="onSelectNode"
14
- @submit="onSubmit"
15
- @hide="emits('hide')"
16
- />
17
- </div>
18
- </template>
19
-
20
- <script lang="ts" setup>
21
- import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
22
- import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
23
- import type { UI_I_FolderOrFileTreePayload } from '~/lib/models/store/storage/interfaces'
24
- import type { UI_I_CurrentDirNodesArguments } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/lib/models/interfaces'
25
- import type { UI_I_Localization } from '~/lib/models/interfaces'
26
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
27
- import type { UI_I_FileInfo } from '~/components/common/browse/lib/models/interfaces'
28
-
29
- const props = defineProps<{
30
- show: boolean
31
- nodes: UI_I_FileTreeNode[]
32
- files: UI_I_FileTreeNode[]
33
- fileTypes?: UI_I_OptionItem[]
34
- }>()
35
- const emits = defineEmits<{
36
- (event: 'hide'): void
37
- (event: 'submit', value: UI_I_FileTreeNode | null): void
38
- (event: 'get-storage', value: UI_I_TablePayload): void
39
- (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
40
- (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
41
- (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
42
- }>()
43
-
44
- const { $recursion } = useNuxtApp()
45
-
46
- const localization = computed<UI_I_Localization>(() => useLocal())
47
-
48
- const selectedFileType = ref<string | null>(null)
49
- watch(
50
- selectedFileType,
51
- (newValue) => {
52
- if (newValue === null || selectedFile.value === null) return
53
-
54
- const isExist = files.value.includes(selectedFile.value)
55
- if (!isExist) selectedFile.value = null
56
- },
57
- { immediate: true, deep: true }
58
- )
59
- watch(
60
- () => props.fileTypes,
61
- (newValue) => {
62
- if (newValue?.length) selectedFileType.value = newValue[0].value
63
- },
64
- { immediate: true, deep: true }
65
- )
66
-
67
- const getStorage = (): void => {
68
- const payload: UI_I_TablePayload = {
69
- pagination: {
70
- page: 1,
71
- pageSize: 100,
72
- },
73
- sortBy: null,
74
- type: 'datastore',
75
- schema: 'full',
76
- }
77
-
78
- emits('get-storage', payload)
79
- }
80
- getStorage()
81
-
82
- const getFileNodes = (payload: UI_I_FolderOrFileTreePayload): void => {
83
- emits('get-folders-or-files', payload)
84
- }
85
-
86
- const files = computed<UI_I_FileTreeNode[]>(() => {
87
- if (!selectedNode.value) return []
88
-
89
- const files: UI_I_FileTreeNode[] = props.files
90
- if (selectedFileType.value === 'all' || selectedFileType.value === null)
91
- return files
92
-
93
- let type = 3
94
- if (selectedFileType.value === 'iso') type = 2
95
-
96
- return files.filter((file) => file.provisioned_type === type)
97
- })
98
-
99
- const getRootNodeById = (id: string): UI_I_FileTreeNode | null => {
100
- let result = null
101
- props.nodes.forEach((node) => {
102
- const findNode =
103
- node.id === id ? node : $recursion.find(node.nodes, id, 'id', 'nodes')
104
-
105
- findNode && (result = node)
106
- })
107
-
108
- return result
109
- }
110
- const onGetCurrentDirNodes = async ({
111
- node,
112
- cb,
113
- select = false,
114
- type = 'folder',
115
- }: UI_I_CurrentDirNodesArguments): Promise<void> => {
116
- if (!node) return
117
-
118
- const isRootNode = props.nodes?.some((item) => item.id === node.id)
119
-
120
- if (!select && (isRootNode || node.nodesShow)) {
121
- emits('show-datastore-child', node)
122
- cb && cb()
123
- return
124
- }
125
-
126
- const rootNode = getRootNodeById(node.id)
127
- if (!rootNode) return
128
-
129
- const payload: UI_I_FolderOrFileTreePayload = {
130
- type,
131
- id: rootNode.id,
132
- path: node.path,
133
- merge: true,
134
- show: !select,
135
- }
136
-
137
- await getFileNodes(payload)
138
- cb && cb()
139
- }
140
-
141
- const selectedNode = ref<UI_I_FileTreeNode | null>(null)
142
- const selectedFile = ref<UI_I_FileTreeNode | null>(null)
143
- const selectedNodeInfo = computed<UI_I_FileInfo[] | null>(() => {
144
- const node = selectedFile.value || selectedNode.value
145
- if (!node) return null
146
-
147
- const result = [
148
- {
149
- type: 'text',
150
- title: localization.value.common.name,
151
- value: node.name || '',
152
- },
153
- {
154
- type: 'size',
155
- title: localization.value.common.available,
156
- value: node.size || 0,
157
- },
158
- ]
159
-
160
- if (node.type !== 4) {
161
- const modified = node.modified_time || 0
162
- result.push({
163
- type: 'date',
164
- title: localization.value.common.modified,
165
- value: +modified * 1000,
166
- })
167
- }
168
-
169
- return result
170
- })
171
-
172
- // TODO найти решение получше
173
- const browseLoading = ref<boolean>(false)
174
- const onSelectNode = (node: UI_I_FileTreeNode): void => {
175
- selectedNode.value = node
176
- selectedFile.value = null
177
-
178
- onGetCurrentDirNodes({ node, select: true, type: 'file' })
179
-
180
- emits('get-active-device-child', node)
181
-
182
- setTimeout(() => {
183
- browseLoading.value = true
184
- }, 0)
185
- }
186
- watch(
187
- files,
188
- () => {
189
- browseLoading.value = false
190
- },
191
- { immediate: true, deep: true }
192
- )
193
-
194
- const onSubmit = (): void => {
195
- emits('submit', selectedFile.value)
196
- emits('hide')
197
- }
198
-
199
- let helper = false
200
- watch(
201
- () => props.nodes,
202
- (newValue: UI_I_FileTreeNode[]) => {
203
- if (helper || !newValue.length) return
204
- newValue.forEach((node) => {
205
- getFileNodes({
206
- id: node.id,
207
- path: `${node.id}:/`,
208
- type: 'folder',
209
- show: false,
210
- merge: false,
211
- })
212
- })
213
- helper = true
214
- },
215
- { immediate: true }
216
- )
217
- </script>
218
-
219
- <style lang="scss" scoped></style>
1
+ <template>
2
+ <div>
3
+ <common-browse
4
+ v-model:selected-file="selectedFile"
5
+ v-model:selected-file-type="selectedFileType"
6
+ :show="props.show"
7
+ :nodes="props.nodes"
8
+ :files="files"
9
+ :info="selectedNodeInfo"
10
+ :file-types="props.fileTypes"
11
+ :browse-loading="browseLoading"
12
+ @get-nodes="onGetCurrentDirNodes"
13
+ @select-node="onSelectNode"
14
+ @submit="onSubmit"
15
+ @hide="emits('hide')"
16
+ />
17
+ </div>
18
+ </template>
19
+
20
+ <script lang="ts" setup>
21
+ import type { UI_I_FileTreeNode } from '~/components/lib/models/interfaces'
22
+ import type { UI_I_TablePayload } from '~/lib/models/table/interfaces'
23
+ import type { UI_I_FolderOrFileTreePayload } from '~/lib/models/store/storage/interfaces'
24
+ import type { UI_I_CurrentDirNodesArguments } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/lib/models/interfaces'
25
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
26
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
27
+ import type { UI_I_FileInfo } from '~/components/common/browse/lib/models/interfaces'
28
+
29
+ const props = defineProps<{
30
+ show: boolean
31
+ nodes: UI_I_FileTreeNode[]
32
+ files: UI_I_FileTreeNode[]
33
+ fileTypes?: UI_I_OptionItem[]
34
+ }>()
35
+ const emits = defineEmits<{
36
+ (event: 'hide'): void
37
+ (event: 'submit', value: UI_I_FileTreeNode | null): void
38
+ (event: 'get-storage', value: UI_I_TablePayload): void
39
+ (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
40
+ (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
41
+ (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
42
+ }>()
43
+
44
+ const { $recursion } = useNuxtApp()
45
+
46
+ const localization = computed<UI_I_Localization>(() => useLocal())
47
+
48
+ const selectedFileType = ref<string | null>(null)
49
+ watch(
50
+ selectedFileType,
51
+ (newValue) => {
52
+ if (newValue === null || selectedFile.value === null) return
53
+
54
+ const isExist = files.value.includes(selectedFile.value)
55
+ if (!isExist) selectedFile.value = null
56
+ },
57
+ { immediate: true, deep: true }
58
+ )
59
+ watch(
60
+ () => props.fileTypes,
61
+ (newValue) => {
62
+ if (newValue?.length) selectedFileType.value = newValue[0].value
63
+ },
64
+ { immediate: true, deep: true }
65
+ )
66
+
67
+ const getStorage = (): void => {
68
+ const payload: UI_I_TablePayload = {
69
+ pagination: {
70
+ page: 1,
71
+ pageSize: 100,
72
+ },
73
+ sortBy: null,
74
+ type: 'datastore',
75
+ schema: 'full',
76
+ }
77
+
78
+ emits('get-storage', payload)
79
+ }
80
+ getStorage()
81
+
82
+ const getFileNodes = (payload: UI_I_FolderOrFileTreePayload): void => {
83
+ emits('get-folders-or-files', payload)
84
+ }
85
+
86
+ const files = computed<UI_I_FileTreeNode[]>(() => {
87
+ if (!selectedNode.value) return []
88
+
89
+ const files: UI_I_FileTreeNode[] = props.files
90
+ if (selectedFileType.value === 'all' || selectedFileType.value === null)
91
+ return files
92
+
93
+ let type = 3
94
+ if (selectedFileType.value === 'iso') type = 2
95
+
96
+ return files.filter((file) => file.provisioned_type === type)
97
+ })
98
+
99
+ const getRootNodeById = (id: string): UI_I_FileTreeNode | null => {
100
+ let result = null
101
+ props.nodes.forEach((node) => {
102
+ const findNode =
103
+ node.id === id ? node : $recursion.find(node.nodes, id, 'id', 'nodes')
104
+
105
+ findNode && (result = node)
106
+ })
107
+
108
+ return result
109
+ }
110
+ const onGetCurrentDirNodes = async ({
111
+ node,
112
+ cb,
113
+ select = false,
114
+ type = 'folder',
115
+ }: UI_I_CurrentDirNodesArguments): Promise<void> => {
116
+ if (!node) return
117
+
118
+ const isRootNode = props.nodes?.some((item) => item.id === node.id)
119
+
120
+ if (!select && (isRootNode || node.nodesShow)) {
121
+ emits('show-datastore-child', node)
122
+ cb && cb()
123
+ return
124
+ }
125
+
126
+ const rootNode = getRootNodeById(node.id)
127
+ if (!rootNode) return
128
+
129
+ const payload: UI_I_FolderOrFileTreePayload = {
130
+ type,
131
+ id: rootNode.id,
132
+ path: node.path,
133
+ merge: true,
134
+ show: !select,
135
+ }
136
+
137
+ await getFileNodes(payload)
138
+ cb && cb()
139
+ }
140
+
141
+ const selectedNode = ref<UI_I_FileTreeNode | null>(null)
142
+ const selectedFile = ref<UI_I_FileTreeNode | null>(null)
143
+ const selectedNodeInfo = computed<UI_I_FileInfo[] | null>(() => {
144
+ const node = selectedFile.value || selectedNode.value
145
+ if (!node) return null
146
+
147
+ const result = [
148
+ {
149
+ type: 'text',
150
+ title: localization.value.common.name,
151
+ value: node.name || '',
152
+ },
153
+ {
154
+ type: 'size',
155
+ title: localization.value.common.available,
156
+ value: node.size || 0,
157
+ },
158
+ ]
159
+
160
+ if (node.type !== 4) {
161
+ const modified = node.modified_time || 0
162
+ result.push({
163
+ type: 'date',
164
+ title: localization.value.common.modified,
165
+ value: +modified * 1000,
166
+ })
167
+ }
168
+
169
+ return result
170
+ })
171
+
172
+ // TODO найти решение получше
173
+ const browseLoading = ref<boolean>(false)
174
+ const onSelectNode = (node: UI_I_FileTreeNode): void => {
175
+ selectedNode.value = node
176
+ selectedFile.value = null
177
+
178
+ onGetCurrentDirNodes({ node, select: true, type: 'file' })
179
+
180
+ emits('get-active-device-child', node)
181
+
182
+ setTimeout(() => {
183
+ browseLoading.value = true
184
+ }, 0)
185
+ }
186
+ watch(
187
+ files,
188
+ () => {
189
+ browseLoading.value = false
190
+ },
191
+ { immediate: true, deep: true }
192
+ )
193
+
194
+ const onSubmit = (): void => {
195
+ emits('submit', selectedFile.value)
196
+ emits('hide')
197
+ }
198
+
199
+ let helper = false
200
+ watch(
201
+ () => props.nodes,
202
+ (newValue: UI_I_FileTreeNode[]) => {
203
+ if (helper || !newValue.length) return
204
+ newValue.forEach((node) => {
205
+ getFileNodes({
206
+ id: node.id,
207
+ path: `${node.id}:/`,
208
+ type: 'folder',
209
+ show: false,
210
+ merge: false,
211
+ })
212
+ })
213
+ helper = true
214
+ },
215
+ { immediate: true }
216
+ )
217
+ </script>
218
+
219
+ <style lang="scss" scoped></style>
@@ -1,99 +1,99 @@
1
- <template>
2
- <common-vm-actions-common-customize-hardware-virtual-hardware-bus-new
3
- v-if="isNewView"
4
- v-model:bus="bus"
5
- v-model:is-show-help="isShowHelp"
6
- :index="props.index"
7
- :component-type="props.componentType"
8
- :test-id="props.testId"
9
- :error-text="apiError"
10
- :bus-options="busOptions"
11
- :help-id="helpId"
12
- :disabled="disabled"
13
- :help-text="helpText"
14
- @remove-error="onRemoveValidationError"
15
- />
16
- <common-vm-actions-common-customize-hardware-virtual-hardware-bus-old
17
- v-else
18
- v-model:bus="bus"
19
- v-model:is-show-help="isShowHelp"
20
- :index="props.index"
21
- :component-type="props.componentType"
22
- :test-id="props.testId"
23
- :error-text="apiError"
24
- :bus-options="busOptions"
25
- :help-id="helpId"
26
- :disabled="disabled"
27
- :help-text="helpText"
28
- @remove-error="onRemoveValidationError"
29
- />
30
- </template>
31
-
32
- <script setup lang="ts">
33
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
34
- import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
35
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
36
- import { capabilities } from '~/components/common/vm/actions/common/lib/config/capabilities'
37
-
38
- const bus = defineModel<string>('bus')
39
-
40
- const props = defineProps<{
41
- index: number
42
- componentType: string
43
- testId: string
44
- errorValidationFields: UI_I_ErrorValidationField<string>[]
45
- disabled?: boolean
46
- shortOptions?: boolean
47
- helpText?: string
48
- guestMachineType?: UI_I_OptionItem | null
49
- computeResource?: UI_I_TreeNode | null
50
- }>()
51
- const emits = defineEmits<{
52
- (event: 'remove-error-by-title', value: string): void
53
- }>()
54
-
55
- const { $store }: any = useNuxtApp()
56
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
57
-
58
- const helpId = ref<string>(`bus-field-help-icon${useUniqueId()}`)
59
-
60
- const busOptions = ref<UI_I_OptionItem[]>([])
61
- watch(
62
- [() => props.guestMachineType, () => props.computeResource],
63
- () => {
64
- if (props.guestMachineType) {
65
- busOptions.value = capabilities.bus[props.guestMachineType.value]
66
- if (props.shortOptions) {
67
- busOptions.value = capabilities.cdromBus[props.guestMachineType.value]
68
- }
69
- if (busOptions.value) {
70
- const hasSelected = busOptions.value.some(
71
- (option) => option.value === bus.value
72
- )
73
- if (!hasSelected) bus.value = busOptions.value[0].value
74
- }
75
- }
76
- },
77
- { immediate: true, deep: true }
78
- )
79
-
80
- const busValidationType = computed<string>(
81
- () => `disk_devices[${props.index}].bus`
82
- )
83
-
84
- const apiError = computed<string>(() => {
85
- return (
86
- props.errorValidationFields?.find(
87
- (message) => message.field === busValidationType.value
88
- )?.error_message || ''
89
- )
90
- })
91
-
92
- const onRemoveValidationError = (): void => {
93
- emits('remove-error-by-title', busValidationType.value)
94
- }
95
-
96
- const isShowHelp = ref<boolean>(false)
97
- </script>
98
-
99
- <style scoped></style>
1
+ <template>
2
+ <common-vm-actions-common-customize-hardware-virtual-hardware-bus-new
3
+ v-if="isNewView"
4
+ v-model:bus="bus"
5
+ v-model:is-show-help="isShowHelp"
6
+ :index="props.index"
7
+ :component-type="props.componentType"
8
+ :test-id="props.testId"
9
+ :error-text="apiError"
10
+ :bus-options="busOptions"
11
+ :help-id="helpId"
12
+ :disabled="disabled"
13
+ :help-text="helpText"
14
+ @remove-error="onRemoveValidationError"
15
+ />
16
+ <common-vm-actions-common-customize-hardware-virtual-hardware-bus-old
17
+ v-else
18
+ v-model:bus="bus"
19
+ v-model:is-show-help="isShowHelp"
20
+ :index="props.index"
21
+ :component-type="props.componentType"
22
+ :test-id="props.testId"
23
+ :error-text="apiError"
24
+ :bus-options="busOptions"
25
+ :help-id="helpId"
26
+ :disabled="disabled"
27
+ :help-text="helpText"
28
+ @remove-error="onRemoveValidationError"
29
+ />
30
+ </template>
31
+
32
+ <script setup lang="ts">
33
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
34
+ import type { UI_I_ErrorValidationField } from '~/lib/models/store/interfaces'
35
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
36
+ import { capabilities } from '~/components/common/vm/actions/common/lib/config/capabilities'
37
+
38
+ const bus = defineModel<string>('bus')
39
+
40
+ const props = defineProps<{
41
+ index: number
42
+ componentType: string
43
+ testId: string
44
+ errorValidationFields: UI_I_ErrorValidationField<string>[]
45
+ disabled?: boolean
46
+ shortOptions?: boolean
47
+ helpText?: string
48
+ guestMachineType?: UI_I_OptionItem | null
49
+ computeResource?: UI_I_TreeNode | null
50
+ }>()
51
+ const emits = defineEmits<{
52
+ (event: 'remove-error-by-title', value: string): void
53
+ }>()
54
+
55
+ const { $store }: any = useNuxtApp()
56
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
57
+
58
+ const helpId = ref<string>(`bus-field-help-icon${useUniqueId()}`)
59
+
60
+ const busOptions = ref<UI_I_OptionItem[]>([])
61
+ watch(
62
+ [() => props.guestMachineType, () => props.computeResource],
63
+ () => {
64
+ if (props.guestMachineType) {
65
+ busOptions.value = capabilities.bus[props.guestMachineType.value]
66
+ if (props.shortOptions) {
67
+ busOptions.value = capabilities.cdromBus[props.guestMachineType.value]
68
+ }
69
+ if (busOptions.value) {
70
+ const hasSelected = busOptions.value.some(
71
+ (option) => option.value === bus.value
72
+ )
73
+ if (!hasSelected) bus.value = busOptions.value[0].value
74
+ }
75
+ }
76
+ },
77
+ { immediate: true, deep: true }
78
+ )
79
+
80
+ const busValidationType = computed<string>(
81
+ () => `disk_devices[${props.index}].bus`
82
+ )
83
+
84
+ const apiError = computed<string>(() => {
85
+ return (
86
+ props.errorValidationFields?.find(
87
+ (message) => message.field === busValidationType.value
88
+ )?.error_message || ''
89
+ )
90
+ })
91
+
92
+ const onRemoveValidationError = (): void => {
93
+ emits('remove-error-by-title', busValidationType.value)
94
+ }
95
+
96
+ const isShowHelp = ref<boolean>(false)
97
+ </script>
98
+
99
+ <style scoped></style>