bfg-common 1.4.562 → 1.4.563

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 (150) hide show
  1. package/assets/img/icons/icons-sprite-dark-1.svg +407 -407
  2. package/assets/img/icons/icons-sprite-dark-2.svg +343 -343
  3. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-dark-4.svg +255 -255
  5. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  6. package/assets/img/icons/icons-sprite-dark-6.svg +94 -94
  7. package/assets/img/icons/icons-sprite-light-1.svg +407 -407
  8. package/assets/img/icons/icons-sprite-light-2.svg +343 -343
  9. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  10. package/assets/img/icons/icons-sprite-light-4.svg +255 -255
  11. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  12. package/assets/img/icons/icons-sprite-light-6.svg +94 -94
  13. package/assets/localization/local_be.json +1 -5
  14. package/assets/localization/local_en.json +1 -5
  15. package/assets/localization/local_hy.json +1 -5
  16. package/assets/localization/local_kk.json +1 -5
  17. package/assets/localization/local_ru.json +1 -5
  18. package/assets/localization/local_zh.json +1 -5
  19. package/components/atoms/TheIcon3.vue +50 -50
  20. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  21. package/components/atoms/stack/StackBlock.vue +185 -185
  22. package/components/atoms/table/dataGrid/DataGrid.vue +1633 -1633
  23. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  24. package/components/common/browse/Browse.vue +3 -3
  25. package/components/common/browse/BrowseNew.vue +237 -237
  26. package/components/common/browse/BrowseOld.vue +217 -217
  27. package/components/common/browse/blocks/contents/Files.vue +35 -35
  28. package/components/common/browse/blocks/contents/FilesOld.vue +70 -70
  29. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +92 -92
  30. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  31. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  32. package/components/common/browse/lib/models/interfaces.ts +5 -5
  33. package/components/common/context/lib/models/interfaces.ts +30 -30
  34. package/components/common/context/recursion/Recursion.vue +86 -86
  35. package/components/common/context/recursion/RecursionNew.vue +199 -199
  36. package/components/common/context/recursion/RecursionOld.vue +213 -213
  37. package/components/common/diagramMain/Header.vue +211 -211
  38. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  39. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  40. package/components/common/diagramMain/lib/models/enums.ts +44 -44
  41. package/components/common/diagramMain/lib/models/types.ts +21 -21
  42. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  43. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  44. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  45. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  46. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  47. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  48. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  49. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  50. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  51. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +398 -398
  52. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  53. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  54. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +23 -23
  55. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  56. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  57. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  58. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  59. package/components/common/diagramMain/modals/migrateVmkernelAdapter/MigrateVmkernelAdapter.vue +537 -537
  60. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  61. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  62. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  63. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  64. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  65. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  66. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  67. package/components/common/diagramMain/port/Ports.vue +47 -47
  68. package/components/common/layout/theHeader/helpMenu/About.vue +85 -85
  69. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  70. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +152 -152
  71. package/components/common/modals/confirmation/Confirmation.vue +70 -74
  72. package/components/common/modals/confirmation/ConfirmationNew.vue +61 -10
  73. package/components/common/modals/confirmation/ConfirmationOld.vue +10 -10
  74. package/components/common/spiceConsole/Drawer.vue +370 -370
  75. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  76. package/components/common/vm/actions/add/Add.vue +619 -619
  77. package/components/common/vm/actions/clone/Clone.vue +2 -2
  78. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  79. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +267 -270
  80. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +264 -266
  81. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +0 -2
  82. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +0 -3
  83. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +1 -3
  84. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +1 -3
  85. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +215 -205
  86. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +118 -118
  87. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +161 -163
  88. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +165 -158
  89. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  90. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +55 -55
  91. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +147 -147
  92. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +55 -55
  93. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  94. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  95. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  96. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  97. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +74 -74
  98. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  99. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  100. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  101. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  102. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceNew.vue +85 -85
  103. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +91 -91
  104. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +35 -35
  105. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +48 -48
  106. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +30 -30
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +46 -46
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +27 -27
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  115. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  116. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  117. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  118. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  119. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  120. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  121. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  122. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  123. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  124. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  125. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  126. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  127. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  128. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  129. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  130. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  131. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +100 -100
  132. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  133. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  134. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  135. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  136. package/components/common/vm/actions/common/select/storage/new/New.vue +159 -159
  137. package/components/common/vm/actions/confirm/Confirm.vue +15 -8
  138. package/components/common/vm/actions/editSettings/EditSettings.vue +215 -217
  139. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +182 -184
  140. package/components/common/vm/actions/editSettings/new/New.vue +176 -178
  141. package/components/common/vm/actions/editSettings/new/Skeleton.vue +87 -87
  142. package/components/common/wizards/network/add/lib/config/steps.ts +464 -464
  143. package/composables/productNameLocal.ts +30 -30
  144. package/package.json +2 -2
  145. package/plugins/date.ts +233 -233
  146. package/plugins/recursion.ts +311 -311
  147. package/public/spice-console/lib/images/bitmap.js +203 -203
  148. package/public/spice-console/network/spicechannel.js +383 -383
  149. package/store/main/mutations.ts +7 -7
  150. package/store/main/state.ts +7 -7
@@ -1,205 +1,215 @@
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
- :files-loading="props.filesLoading"
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
- filesLoading: boolean
34
- fileTypes?: UI_I_OptionItem[]
35
- }>()
36
- const emits = defineEmits<{
37
- (event: 'hide'): void
38
- (event: 'submit', value: UI_I_FileTreeNode | null): void
39
- (event: 'get-storage', value: UI_I_TablePayload): void
40
- (event: 'get-folders-or-files', value: UI_I_FolderOrFileTreePayload): void
41
- (event: 'get-active-device-child', value: UI_I_FileTreeNode): void
42
- (event: 'show-datastore-child', value: UI_I_FileTreeNode): void
43
- }>()
44
-
45
- const { $recursion } = useNuxtApp()
46
-
47
- const localization = computed<UI_I_Localization>(() => useLocal())
48
-
49
- const selectedFileType = ref<string | null>(null)
50
- watch(
51
- selectedFileType,
52
- (newValue) => {
53
- if (newValue === null || selectedFile.value === null) return
54
-
55
- const isExist = files.value.includes(selectedFile.value)
56
- if (!isExist) selectedFile.value = null
57
- },
58
- { immediate: true, deep: true }
59
- )
60
- watch(
61
- () => props.fileTypes,
62
- (newValue) => {
63
- if (newValue?.length) selectedFileType.value = newValue[0].value
64
- },
65
- { immediate: true, deep: true }
66
- )
67
-
68
- const getStorage = (): void => {
69
- const payload: UI_I_TablePayload = {
70
- pagination: {
71
- page: 1,
72
- pageSize: 100,
73
- },
74
- sortBy: null,
75
- type: 'datastore',
76
- schema: 'full',
77
- }
78
-
79
- emits('get-storage', payload)
80
- }
81
- getStorage()
82
-
83
- const getFileNodes = (payload: UI_I_FolderOrFileTreePayload): void => {
84
- emits('get-folders-or-files', payload)
85
- }
86
-
87
- const files = computed<UI_I_FileTreeNode[]>(() => {
88
- if (!selectedNode.value) return []
89
-
90
- const files: UI_I_FileTreeNode[] = props.files
91
- if (selectedFileType.value === 'all' || selectedFileType.value === null)
92
- return files
93
-
94
- let type = 3
95
- if (selectedFileType.value === 'iso') type = 2
96
-
97
- return files.filter((file) => file.provisioned_type === type)
98
- })
99
-
100
- const getRootNodeById = (id: string): UI_I_FileTreeNode | null => {
101
- let result = null
102
- props.nodes.forEach((node) => {
103
- const findNode =
104
- node.id === id ? node : $recursion.find(node.nodes, id, 'id', 'nodes')
105
-
106
- findNode && (result = node)
107
- })
108
-
109
- return result
110
- }
111
- const onGetCurrentDirNodes = async ({
112
- node,
113
- cb,
114
- select = false,
115
- type = 'folder',
116
- }: UI_I_CurrentDirNodesArguments): Promise<void> => {
117
- if (!node) return
118
-
119
- const isRootNode = props.nodes?.some((item) => item.id === node.id)
120
-
121
- if (!select && (isRootNode || node.nodesShow)) {
122
- emits('show-datastore-child', node)
123
- cb && cb()
124
- return
125
- }
126
-
127
- const rootNode = getRootNodeById(node.id)
128
- if (!rootNode) return
129
-
130
- const payload: UI_I_FolderOrFileTreePayload = {
131
- type,
132
- id: rootNode.id,
133
- path: node.path,
134
- merge: true,
135
- show: !select,
136
- }
137
-
138
- await getFileNodes(payload)
139
- cb && cb()
140
- }
141
-
142
- const selectedNode = ref<UI_I_FileTreeNode | null>(null)
143
- const selectedFile = ref<UI_I_FileTreeNode | null>(null)
144
- const selectedNodeInfo = computed<UI_I_FileInfo[] | null>(() => {
145
- const node = selectedFile.value || selectedNode.value
146
- if (!node) return null
147
-
148
- const result = [
149
- {
150
- type: 'text',
151
- title: localization.value.common.name,
152
- value: node.name || '',
153
- },
154
- {
155
- type: 'size',
156
- title: localization.value.common.available,
157
- value: node.size || 0,
158
- },
159
- ]
160
-
161
- if (node.type !== 4) {
162
- const modified = node.modified_time || 0
163
- result.push({
164
- type: 'date',
165
- title: localization.value.common.modified,
166
- value: +modified * 1000,
167
- })
168
- }
169
-
170
- return result
171
- })
172
- const onSelectNode = (node: UI_I_FileTreeNode): void => {
173
- selectedNode.value = node
174
- selectedFile.value = null
175
-
176
- onGetCurrentDirNodes({ node, select: true, type: 'file' })
177
-
178
- emits('get-active-device-child', node)
179
- }
180
- const onSubmit = (): void => {
181
- emits('submit', selectedFile.value)
182
- emits('hide')
183
- }
184
-
185
- let helper = false
186
- watch(
187
- () => props.nodes,
188
- (newValue: UI_I_FileTreeNode[]) => {
189
- if (helper || !newValue.length) return
190
- newValue.forEach((node) => {
191
- getFileNodes({
192
- id: node.id,
193
- path: `${node.id}:/`,
194
- type: 'folder',
195
- show: false,
196
- merge: false,
197
- })
198
- })
199
- helper = true
200
- },
201
- { immediate: true }
202
- )
203
- </script>
204
-
205
- <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="props.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
+ const browseLoading = ref<boolean>(false)
172
+ const onSelectNode = (node: UI_I_FileTreeNode): void => {
173
+ browseLoading.value = true
174
+
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
+ watch(
183
+ files,
184
+ () => {
185
+ browseLoading.value = false
186
+ },
187
+ { immediate: true }
188
+ )
189
+
190
+ const onSubmit = (): void => {
191
+ emits('submit', selectedFile.value)
192
+ emits('hide')
193
+ }
194
+
195
+ let helper = false
196
+ watch(
197
+ () => props.nodes,
198
+ (newValue: UI_I_FileTreeNode[]) => {
199
+ if (helper || !newValue.length) return
200
+ newValue.forEach((node) => {
201
+ getFileNodes({
202
+ id: node.id,
203
+ path: `${node.id}:/`,
204
+ type: 'folder',
205
+ show: false,
206
+ merge: false,
207
+ })
208
+ })
209
+ helper = true
210
+ },
211
+ { immediate: true }
212
+ )
213
+ </script>
214
+
215
+ <style lang="scss" scoped></style>
@@ -1,118 +1,118 @@
1
- <template>
2
- <ui-stack-block :has-children="false">
3
- <template #stackBlockKey>
4
- {{ localization.common.bus }}
5
- </template>
6
- <template #stackBlockContent>
7
- <div class="flex-align-center justify-between">
8
- <ui-select
9
- :id="`vm-wizard-${props.componentType}-bus-field-${props.index}`"
10
- v-model="bus"
11
- width="auto"
12
- :items="props.busOptions"
13
- :disabled="props.disabled"
14
- :test-id="`${props.testId}-select`"
15
- :class="`vm-wizard-${props.componentType}-bus-field-${props.index}`"
16
- :error-text="props.errorText"
17
- @click.stop
18
- />
19
-
20
- <div v-if="props.helpText" :id="props.helpId" class="flex-align-center relative">
21
- <ui-icon
22
- fill="#0072a3"
23
- width="16"
24
- height="16"
25
- name="info"
26
- :data-id="`${props.testId}-show-help-icon`"
27
- class="pointer"
28
- @click.stop="isShowHelp = !isShowHelp"
29
- />
30
- <Teleport to="body">
31
- <ui-dropdown
32
- :show="isShowHelp"
33
- :elem-id="props.helpId"
34
- test-id=""
35
- :items="[]"
36
- width="auto"
37
- show-from-left
38
- @hide="isShowHelp = false"
39
- >
40
- <template #content>
41
- <div class="help-content">
42
- <div class="headline">
43
- <ui-icon name="info-2" width="16" height="16" />
44
- <h3 class="help-title">
45
- {{ localization.mainNavigation.help }}
46
- </h3>
47
- <ui-icon
48
- name="close"
49
- width="16"
50
- height="16"
51
- class="pointer"
52
- @click="isShowHelp = false"
53
- />
54
- </div>
55
-
56
- <p class="help-text">
57
- {{ props.helpText }}
58
- </p>
59
- </div>
60
- </template>
61
- </ui-dropdown>
62
- </Teleport>
63
- </div>
64
- </div>
65
- </template>
66
- </ui-stack-block>
67
- </template>
68
-
69
- <script setup lang="ts">
70
- import type { UI_I_Localization } from '~/lib/models/interfaces'
71
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
72
-
73
- const bus = defineModel<string>('bus')
74
- const isShowHelp = defineModel<boolean>('isShowHelp')
75
-
76
- const props = defineProps<{
77
- index: number
78
- componentType: string
79
- testId: string
80
- errorText: string
81
- busOptions: UI_I_OptionItem[]
82
- helpId: string
83
- disabled?: boolean
84
- helpText?: string
85
- }>()
86
- // const emits = defineEmits<{
87
- // (event: 'remove-error'): void
88
- // }>()
89
-
90
- const localization = computed<UI_I_Localization>(() => useLocal())
91
- </script>
92
-
93
- <style scoped>
94
- .help-content {
95
- padding: 16px;
96
-
97
- .headline {
98
- display: flex;
99
- align-items: center;
100
- gap: 8px;
101
- margin-bottom: 12px;
102
-
103
- .help-title {
104
- flex: 1;
105
- font-size: 14px;
106
- font-weight: 500;
107
- line-height: 16.94px;
108
- color: #4d5d69;
109
- }
110
- }
111
-
112
- .help-text {
113
- font-size: 13px;
114
- line-height: 15.73px;
115
- color: #4d5d69;
116
- }
117
- }
118
- </style>
1
+ <template>
2
+ <ui-stack-block :has-children="false">
3
+ <template #stackBlockKey>
4
+ {{ localization.common.bus }}
5
+ </template>
6
+ <template #stackBlockContent>
7
+ <div class="flex-align-center justify-between">
8
+ <ui-select
9
+ :id="`vm-wizard-${props.componentType}-bus-field-${props.index}`"
10
+ v-model="bus"
11
+ width="auto"
12
+ :items="props.busOptions"
13
+ :disabled="props.disabled"
14
+ :test-id="`${props.testId}-select`"
15
+ :class="`vm-wizard-${props.componentType}-bus-field-${props.index}`"
16
+ :error-text="props.errorText"
17
+ @click.stop
18
+ />
19
+
20
+ <div v-if="props.helpText" :id="props.helpId" class="flex-align-center relative">
21
+ <ui-icon
22
+ fill="#0072a3"
23
+ width="16"
24
+ height="16"
25
+ name="info"
26
+ :data-id="`${props.testId}-show-help-icon`"
27
+ class="pointer"
28
+ @click.stop="isShowHelp = !isShowHelp"
29
+ />
30
+ <Teleport to="body">
31
+ <ui-dropdown
32
+ :show="isShowHelp"
33
+ :elem-id="props.helpId"
34
+ test-id=""
35
+ :items="[]"
36
+ width="auto"
37
+ show-from-left
38
+ @hide="isShowHelp = false"
39
+ >
40
+ <template #content>
41
+ <div class="help-content">
42
+ <div class="headline">
43
+ <ui-icon name="info-2" width="16" height="16" />
44
+ <h3 class="help-title">
45
+ {{ localization.mainNavigation.help }}
46
+ </h3>
47
+ <ui-icon
48
+ name="close"
49
+ width="16"
50
+ height="16"
51
+ class="pointer"
52
+ @click="isShowHelp = false"
53
+ />
54
+ </div>
55
+
56
+ <p class="help-text">
57
+ {{ props.helpText }}
58
+ </p>
59
+ </div>
60
+ </template>
61
+ </ui-dropdown>
62
+ </Teleport>
63
+ </div>
64
+ </div>
65
+ </template>
66
+ </ui-stack-block>
67
+ </template>
68
+
69
+ <script setup lang="ts">
70
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
71
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
72
+
73
+ const bus = defineModel<string>('bus')
74
+ const isShowHelp = defineModel<boolean>('isShowHelp')
75
+
76
+ const props = defineProps<{
77
+ index: number
78
+ componentType: string
79
+ testId: string
80
+ errorText: string
81
+ busOptions: UI_I_OptionItem[]
82
+ helpId: string
83
+ disabled?: boolean
84
+ helpText?: string
85
+ }>()
86
+ // const emits = defineEmits<{
87
+ // (event: 'remove-error'): void
88
+ // }>()
89
+
90
+ const localization = computed<UI_I_Localization>(() => useLocal())
91
+ </script>
92
+
93
+ <style scoped>
94
+ .help-content {
95
+ padding: 16px;
96
+
97
+ .headline {
98
+ display: flex;
99
+ align-items: center;
100
+ gap: 8px;
101
+ margin-bottom: 12px;
102
+
103
+ .help-title {
104
+ flex: 1;
105
+ font-size: 14px;
106
+ font-weight: 500;
107
+ line-height: 16.94px;
108
+ color: #4d5d69;
109
+ }
110
+ }
111
+
112
+ .help-text {
113
+ font-size: 13px;
114
+ line-height: 15.73px;
115
+ color: #4d5d69;
116
+ }
117
+ }
118
+ </style>