bfg-common 1.4.836 → 1.4.838

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 (184) 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/autocomplete/Autocomplete.vue +300 -300
  8. package/components/atoms/collapse/CollapseNav.vue +164 -164
  9. package/components/atoms/dropdown/dropdown/Dropdown.vue +168 -168
  10. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  11. package/components/atoms/stack/StackBlock.vue +185 -185
  12. package/components/atoms/table/dataGrid/DataGrid.vue +1704 -1704
  13. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  14. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  15. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  16. package/components/common/browse/BrowseNew.vue +237 -237
  17. package/components/common/browse/BrowseOld.vue +217 -217
  18. package/components/common/browse/blocks/contents/Files.vue +37 -37
  19. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  20. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  21. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  22. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  23. package/components/common/browse/lib/models/interfaces.ts +5 -5
  24. package/components/common/context/Context.vue +111 -111
  25. package/components/common/context/lib/models/interfaces.ts +30 -30
  26. package/components/common/context/recursion/Recursion.vue +87 -87
  27. package/components/common/context/recursion/RecursionNew.vue +237 -237
  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/types.ts +21 -21
  34. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  35. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  36. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  37. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  38. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  39. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  40. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  41. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  42. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  43. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  44. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  45. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +23 -23
  46. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  47. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  48. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  49. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  50. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  51. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  52. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  53. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  54. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  55. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  56. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  57. package/components/common/diagramMain/port/Ports.vue +47 -47
  58. package/components/common/graph/Graph.vue +104 -104
  59. package/components/common/graph/GraphNew.vue +144 -144
  60. package/components/common/graph/GraphOld.vue +31 -31
  61. package/components/common/layout/theHeader/helpMenu/About.vue +82 -82
  62. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +103 -103
  63. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  64. package/components/common/monitor/overview/Overview.vue +221 -221
  65. package/components/common/monitor/overview/OverviewNew.vue +142 -142
  66. package/components/common/monitor/overview/OverviewOld.vue +139 -139
  67. package/components/common/monitor/overview/filters/Filters.vue +166 -166
  68. package/components/common/monitor/overview/filters/FiltersNew.vue +172 -172
  69. package/components/common/monitor/overview/filters/FiltersOld.vue +151 -151
  70. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +175 -175
  71. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModalNew.vue +181 -181
  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/HeadlineNew.vue +71 -71
  76. package/components/common/pages/home/headline/HeadlineOld.vue +42 -42
  77. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  78. package/components/common/pages/home/widgets/Widgets.vue +49 -49
  79. package/components/common/pages/home/widgets/WidgetsNew.vue +86 -86
  80. package/components/common/pages/home/widgets/WidgetsOld.vue +34 -34
  81. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  82. package/components/common/pages/home/widgets/hosts/HostsNew.vue +100 -100
  83. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  84. package/components/common/pages/home/widgets/services/lib/config/config.ts +108 -108
  85. package/components/common/pages/home/widgets/vms/Vms.vue +26 -26
  86. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  87. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  88. package/components/common/pages/packages/Packages.vue +208 -208
  89. package/components/common/pages/tasks/Tasks.vue +3 -1
  90. package/components/common/pages/tasks/table/Table.vue +1 -0
  91. package/components/common/pages/tasks/table/errorInfo/ErrorInfo.vue +23 -7
  92. package/components/common/pages/tasks/table/expandDetails/ExpandDetails.vue +1 -0
  93. package/components/common/pages/tasks/table/lib/config/config.ts +2 -2
  94. package/components/common/recursionTree/RecursionTree.vue +223 -223
  95. package/components/common/select/button/ButtonDropdown.vue +108 -108
  96. package/components/common/spiceConsole/Drawer.vue +370 -370
  97. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  98. package/components/common/split/horizontal/HorizontalNew.vue +376 -376
  99. package/components/common/split/horizontal/HorizontalOld.vue +337 -337
  100. package/components/common/split/vertical/Vertical.vue +160 -160
  101. package/components/common/vm/actions/add/Add.vue +621 -621
  102. package/components/common/vm/actions/clone/Clone.vue +639 -639
  103. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  104. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +271 -271
  105. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +271 -271
  106. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +174 -174
  107. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +694 -694
  108. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +117 -117
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +161 -161
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +165 -165
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +70 -70
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaOld.vue +50 -50
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +364 -364
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +229 -229
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +247 -247
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +56 -56
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +283 -283
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +205 -205
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +66 -66
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +62 -62
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +31 -31
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +84 -84
  135. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +76 -76
  136. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  137. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  138. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  139. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +41 -41
  140. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +81 -81
  141. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +84 -84
  142. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  143. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  144. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  145. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +104 -104
  146. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +112 -112
  147. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  148. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  149. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  150. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  151. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  152. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  153. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  154. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  155. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  156. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  157. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  158. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  159. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  160. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  161. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  162. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  163. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  164. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  165. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  166. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  167. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  168. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  169. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  170. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  171. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  172. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  173. package/components/common/wizards/datastore/add/lib/config/steps.ts +138 -138
  174. package/components/common/wizards/vm/migrate/Migrate.vue +288 -288
  175. package/composables/productNameLocal.ts +30 -30
  176. package/composables/useAppVersion.ts +21 -21
  177. package/package.json +2 -2
  178. package/plugins/date.ts +233 -233
  179. package/plugins/recursion.ts +311 -311
  180. package/public/spice-console/lib/images/bitmap.js +203 -203
  181. package/public/spice-console/network/spicechannel.js +383 -383
  182. package/store/main/mutations.ts +7 -7
  183. package/store/main/state.ts +7 -7
  184. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,311 +1,311 @@
1
- export default defineNuxtPlugin(() => {
2
- const recursion = function () {
3
- const self: any = {}
4
-
5
- self.find = function (
6
- arr: any[],
7
- value: any,
8
- valueProp: string,
9
- itemsProp: string
10
- ) {
11
- let result = null
12
- if (!arr) {
13
- return result
14
- }
15
-
16
- for (let i = 0; i < arr.length; i++) {
17
- const item = arr[i]
18
- if (item[valueProp] === value) {
19
- result = item
20
- break
21
- }
22
- if (item[itemsProp].length) {
23
- result = self.find(item.nodes, value, valueProp, itemsProp)
24
- if (result) {
25
- break
26
- }
27
- }
28
- }
29
- return result
30
- }
31
- self.findParentNodeByType = function (
32
- node: any,
33
- types: string[],
34
- valueProp: string,
35
- parentProp: string
36
- ) {
37
- if (!node[parentProp] || types.includes(node[valueProp])) {
38
- return node
39
- }
40
-
41
- if (types.includes(node[parentProp][valueProp])) {
42
- return node[parentProp]
43
- }
44
-
45
- return self.findParentNodeByType(
46
- node[parentProp],
47
- types,
48
- valueProp,
49
- parentProp
50
- )
51
- }
52
-
53
- self.findAndShow = function (
54
- arr: any[],
55
- values: any[],
56
- valueProps: string[],
57
- itemsProp: string
58
- ): boolean {
59
- if (!arr) return false
60
- let res = false
61
-
62
- for (let i = 0; i < arr.length; i++) {
63
- const item: any = arr[i]
64
-
65
- const isFind = values.every(
66
- (value, index) => value === item[valueProps[index]]
67
- )
68
- if (isFind) {
69
- item.nodesShow = !item.nodesShow // TODO сейчас хардом написано nodesShow, нужно сделать динамически
70
- res = true
71
- break
72
- }
73
-
74
- if (item[itemsProp]?.length) {
75
- self.findAndShow(item.nodes, values, valueProps, itemsProp)
76
- }
77
- }
78
- return res
79
- }
80
-
81
- self.toggleAll = function (
82
- arr: any[],
83
- valueProp: string,
84
- itemsProp: string,
85
- isShow: boolean
86
- ): void {
87
- if (!arr) return
88
-
89
- for (let i = 0; i < arr.length; i++) {
90
- const item: any = arr[i]
91
-
92
- item[valueProp] = isShow
93
-
94
- if (item[itemsProp]?.length) {
95
- self.toggleAll(item.nodes, valueProp, itemsProp, isShow)
96
- }
97
- }
98
- }
99
-
100
- self.findAndRemove = function (
101
- arr: any[],
102
- values: any[],
103
- valueProps: string[],
104
- itemsProp: string
105
- ): boolean {
106
- if (!arr) return false
107
- let res = false
108
-
109
- for (let i = 0; i < arr.length; i++) {
110
- const item: any = arr[i]
111
-
112
- const isFind = values.some(
113
- (value, index) => value === item[valueProps[index]]
114
- )
115
- if (isFind) {
116
- arr.splice(i, 1)
117
- i--
118
- res = true
119
- }
120
-
121
- if (item[itemsProp]?.length) {
122
- self.findAndRemove(item[itemsProp], values, valueProps, itemsProp)
123
- }
124
- }
125
- return res
126
- }
127
- self.findAndMove = function (
128
- arr: any[],
129
- values: any[],
130
- valueProps: string[],
131
- itemsProp: string,
132
- moveArr: any,
133
- findIndex: string
134
- ) {
135
- let result = null
136
- if (!arr) return result
137
-
138
- for (let i = 0; i < arr.length; i++) {
139
- const item: any = arr[i]
140
-
141
- const isFind = values.every(
142
- (value, index) => value === item[valueProps[index]]
143
- )
144
-
145
- if (isFind) {
146
- // Remove from the original position
147
- const moveItem = arr.splice(i, 1)[0]
148
- const index = moveArr[itemsProp].findLastIndex(
149
- (x) => x.type === findIndex
150
- )
151
- moveArr[itemsProp].splice(index + 1, 0, moveItem)
152
-
153
- result = moveItem
154
- break
155
- }
156
-
157
- if (item[itemsProp]?.length) {
158
- result = self.findAndMove(
159
- item[itemsProp],
160
- values,
161
- valueProps,
162
- itemsProp,
163
- moveArr,
164
- findIndex
165
- )
166
- if (result) break
167
- }
168
- }
169
- return result
170
- }
171
-
172
- self.findAndActivate = function (
173
- arr: any[],
174
- values: any[],
175
- valueProps: string[],
176
- itemsProp: string
177
- ): boolean {
178
- if (!arr) return false
179
- let res = false
180
-
181
- for (let i = 0; i < arr.length; i++) {
182
- const item = arr[i]
183
- const isActive = values.every(
184
- (value, index) => value === item[valueProps[index]]
185
- )
186
- item.isActive = isActive
187
- if (isActive) {
188
- res = true
189
- }
190
-
191
- if (item[itemsProp]?.length) {
192
- const isFindInChild = self.findAndActivate(
193
- item.nodes,
194
- values,
195
- valueProps,
196
- itemsProp
197
- )
198
- if (!res) res = isFindInChild
199
- }
200
- }
201
- return res
202
- }
203
-
204
- // TODO изменить nodes и сделать динамичной
205
- self.filtrationTreeByExpectedTypeRecursion = (
206
- node: any,
207
- expectedType: string | string[]
208
- ): any[] | null | any => {
209
- if (!node.nodes.length) return { ...node }
210
-
211
- const result = []
212
-
213
- for (let i = 0; i < node.nodes.length; i++) {
214
- const item = { ...node.nodes[i] }
215
-
216
- // Проверка, является ли тип ожидаемым типом или массивом ожидаемых типов
217
- if (
218
- (typeof expectedType === 'string' && item.type === expectedType) ||
219
- (Array.isArray(expectedType) && expectedType.includes(item.type))
220
- ) {
221
- result.push(
222
- self.filtrationTreeByExpectedTypeRecursion(item, expectedType)
223
- )
224
- } else {
225
- item.nodes = []
226
- }
227
- }
228
- node.nodes = result
229
- return { ...node }
230
- }
231
-
232
- self.createAbsolutePathRecursion = (
233
- node: any,
234
- valueProp: string,
235
- parentProp: string
236
- ): string => {
237
- if (!node) return ''
238
-
239
- const parentPath = self.createAbsolutePathRecursion(
240
- node[parentProp],
241
- valueProp,
242
- parentProp
243
- )
244
- return (parentPath ? `${parentPath}/` : '') + node[valueProp]
245
- }
246
-
247
- self.findParentByValue = (
248
- node: any,
249
- value: any,
250
- valueProp: string,
251
- parentProp: string
252
- ): any | null => {
253
- if (!node) return null
254
-
255
- if (node[valueProp] === value) return node
256
- const parent = node[parentProp]
257
- if (parent)
258
- return self.findParentByValue(parent, value, valueProp, parentProp)
259
-
260
- return null
261
- }
262
-
263
- self.sortByProp = function (
264
- arr: any[],
265
- prop: string,
266
- up: boolean,
267
- itemsProp: string
268
- ): void {
269
- const value: 1 | -1 = up ? 1 : -1
270
- arr.sort((a, b) => {
271
- const first = a[prop].toLowerCase()
272
- const second = b[prop].toLowerCase()
273
- return first < second ? value : first > second ? -value : 0
274
- })
275
-
276
- for (let i = 0; i < arr.length; i++) {
277
- const item: any = arr[i]
278
-
279
- if (item[itemsProp]?.length) {
280
- self.sortByProp(item[itemsProp], prop, up, itemsProp)
281
- }
282
- }
283
- }
284
-
285
- self.calcCount = function (
286
- arr: any[],
287
- itemsProp: string
288
- ): number {
289
- if (!arr) return 0
290
- let res = 0
291
-
292
- for (let i = 0; i < arr.length; i++) {
293
- const item: any = arr[i]
294
- res++
295
-
296
- if (item[itemsProp]?.length) {
297
- res += self.calcCount(item[itemsProp], itemsProp)
298
- }
299
- }
300
- return res
301
- }
302
-
303
- return self
304
- }.call({})
305
-
306
- return {
307
- provide: {
308
- recursion,
309
- },
310
- }
311
- })
1
+ export default defineNuxtPlugin(() => {
2
+ const recursion = function () {
3
+ const self: any = {}
4
+
5
+ self.find = function (
6
+ arr: any[],
7
+ value: any,
8
+ valueProp: string,
9
+ itemsProp: string
10
+ ) {
11
+ let result = null
12
+ if (!arr) {
13
+ return result
14
+ }
15
+
16
+ for (let i = 0; i < arr.length; i++) {
17
+ const item = arr[i]
18
+ if (item[valueProp] === value) {
19
+ result = item
20
+ break
21
+ }
22
+ if (item[itemsProp].length) {
23
+ result = self.find(item.nodes, value, valueProp, itemsProp)
24
+ if (result) {
25
+ break
26
+ }
27
+ }
28
+ }
29
+ return result
30
+ }
31
+ self.findParentNodeByType = function (
32
+ node: any,
33
+ types: string[],
34
+ valueProp: string,
35
+ parentProp: string
36
+ ) {
37
+ if (!node[parentProp] || types.includes(node[valueProp])) {
38
+ return node
39
+ }
40
+
41
+ if (types.includes(node[parentProp][valueProp])) {
42
+ return node[parentProp]
43
+ }
44
+
45
+ return self.findParentNodeByType(
46
+ node[parentProp],
47
+ types,
48
+ valueProp,
49
+ parentProp
50
+ )
51
+ }
52
+
53
+ self.findAndShow = function (
54
+ arr: any[],
55
+ values: any[],
56
+ valueProps: string[],
57
+ itemsProp: string
58
+ ): boolean {
59
+ if (!arr) return false
60
+ let res = false
61
+
62
+ for (let i = 0; i < arr.length; i++) {
63
+ const item: any = arr[i]
64
+
65
+ const isFind = values.every(
66
+ (value, index) => value === item[valueProps[index]]
67
+ )
68
+ if (isFind) {
69
+ item.nodesShow = !item.nodesShow // TODO сейчас хардом написано nodesShow, нужно сделать динамически
70
+ res = true
71
+ break
72
+ }
73
+
74
+ if (item[itemsProp]?.length) {
75
+ self.findAndShow(item.nodes, values, valueProps, itemsProp)
76
+ }
77
+ }
78
+ return res
79
+ }
80
+
81
+ self.toggleAll = function (
82
+ arr: any[],
83
+ valueProp: string,
84
+ itemsProp: string,
85
+ isShow: boolean
86
+ ): void {
87
+ if (!arr) return
88
+
89
+ for (let i = 0; i < arr.length; i++) {
90
+ const item: any = arr[i]
91
+
92
+ item[valueProp] = isShow
93
+
94
+ if (item[itemsProp]?.length) {
95
+ self.toggleAll(item.nodes, valueProp, itemsProp, isShow)
96
+ }
97
+ }
98
+ }
99
+
100
+ self.findAndRemove = function (
101
+ arr: any[],
102
+ values: any[],
103
+ valueProps: string[],
104
+ itemsProp: string
105
+ ): boolean {
106
+ if (!arr) return false
107
+ let res = false
108
+
109
+ for (let i = 0; i < arr.length; i++) {
110
+ const item: any = arr[i]
111
+
112
+ const isFind = values.some(
113
+ (value, index) => value === item[valueProps[index]]
114
+ )
115
+ if (isFind) {
116
+ arr.splice(i, 1)
117
+ i--
118
+ res = true
119
+ }
120
+
121
+ if (item[itemsProp]?.length) {
122
+ self.findAndRemove(item[itemsProp], values, valueProps, itemsProp)
123
+ }
124
+ }
125
+ return res
126
+ }
127
+ self.findAndMove = function (
128
+ arr: any[],
129
+ values: any[],
130
+ valueProps: string[],
131
+ itemsProp: string,
132
+ moveArr: any,
133
+ findIndex: string
134
+ ) {
135
+ let result = null
136
+ if (!arr) return result
137
+
138
+ for (let i = 0; i < arr.length; i++) {
139
+ const item: any = arr[i]
140
+
141
+ const isFind = values.every(
142
+ (value, index) => value === item[valueProps[index]]
143
+ )
144
+
145
+ if (isFind) {
146
+ // Remove from the original position
147
+ const moveItem = arr.splice(i, 1)[0]
148
+ const index = moveArr[itemsProp].findLastIndex(
149
+ (x) => x.type === findIndex
150
+ )
151
+ moveArr[itemsProp].splice(index + 1, 0, moveItem)
152
+
153
+ result = moveItem
154
+ break
155
+ }
156
+
157
+ if (item[itemsProp]?.length) {
158
+ result = self.findAndMove(
159
+ item[itemsProp],
160
+ values,
161
+ valueProps,
162
+ itemsProp,
163
+ moveArr,
164
+ findIndex
165
+ )
166
+ if (result) break
167
+ }
168
+ }
169
+ return result
170
+ }
171
+
172
+ self.findAndActivate = function (
173
+ arr: any[],
174
+ values: any[],
175
+ valueProps: string[],
176
+ itemsProp: string
177
+ ): boolean {
178
+ if (!arr) return false
179
+ let res = false
180
+
181
+ for (let i = 0; i < arr.length; i++) {
182
+ const item = arr[i]
183
+ const isActive = values.every(
184
+ (value, index) => value === item[valueProps[index]]
185
+ )
186
+ item.isActive = isActive
187
+ if (isActive) {
188
+ res = true
189
+ }
190
+
191
+ if (item[itemsProp]?.length) {
192
+ const isFindInChild = self.findAndActivate(
193
+ item.nodes,
194
+ values,
195
+ valueProps,
196
+ itemsProp
197
+ )
198
+ if (!res) res = isFindInChild
199
+ }
200
+ }
201
+ return res
202
+ }
203
+
204
+ // TODO изменить nodes и сделать динамичной
205
+ self.filtrationTreeByExpectedTypeRecursion = (
206
+ node: any,
207
+ expectedType: string | string[]
208
+ ): any[] | null | any => {
209
+ if (!node.nodes.length) return { ...node }
210
+
211
+ const result = []
212
+
213
+ for (let i = 0; i < node.nodes.length; i++) {
214
+ const item = { ...node.nodes[i] }
215
+
216
+ // Проверка, является ли тип ожидаемым типом или массивом ожидаемых типов
217
+ if (
218
+ (typeof expectedType === 'string' && item.type === expectedType) ||
219
+ (Array.isArray(expectedType) && expectedType.includes(item.type))
220
+ ) {
221
+ result.push(
222
+ self.filtrationTreeByExpectedTypeRecursion(item, expectedType)
223
+ )
224
+ } else {
225
+ item.nodes = []
226
+ }
227
+ }
228
+ node.nodes = result
229
+ return { ...node }
230
+ }
231
+
232
+ self.createAbsolutePathRecursion = (
233
+ node: any,
234
+ valueProp: string,
235
+ parentProp: string
236
+ ): string => {
237
+ if (!node) return ''
238
+
239
+ const parentPath = self.createAbsolutePathRecursion(
240
+ node[parentProp],
241
+ valueProp,
242
+ parentProp
243
+ )
244
+ return (parentPath ? `${parentPath}/` : '') + node[valueProp]
245
+ }
246
+
247
+ self.findParentByValue = (
248
+ node: any,
249
+ value: any,
250
+ valueProp: string,
251
+ parentProp: string
252
+ ): any | null => {
253
+ if (!node) return null
254
+
255
+ if (node[valueProp] === value) return node
256
+ const parent = node[parentProp]
257
+ if (parent)
258
+ return self.findParentByValue(parent, value, valueProp, parentProp)
259
+
260
+ return null
261
+ }
262
+
263
+ self.sortByProp = function (
264
+ arr: any[],
265
+ prop: string,
266
+ up: boolean,
267
+ itemsProp: string
268
+ ): void {
269
+ const value: 1 | -1 = up ? 1 : -1
270
+ arr.sort((a, b) => {
271
+ const first = a[prop].toLowerCase()
272
+ const second = b[prop].toLowerCase()
273
+ return first < second ? value : first > second ? -value : 0
274
+ })
275
+
276
+ for (let i = 0; i < arr.length; i++) {
277
+ const item: any = arr[i]
278
+
279
+ if (item[itemsProp]?.length) {
280
+ self.sortByProp(item[itemsProp], prop, up, itemsProp)
281
+ }
282
+ }
283
+ }
284
+
285
+ self.calcCount = function (
286
+ arr: any[],
287
+ itemsProp: string
288
+ ): number {
289
+ if (!arr) return 0
290
+ let res = 0
291
+
292
+ for (let i = 0; i < arr.length; i++) {
293
+ const item: any = arr[i]
294
+ res++
295
+
296
+ if (item[itemsProp]?.length) {
297
+ res += self.calcCount(item[itemsProp], itemsProp)
298
+ }
299
+ }
300
+ return res
301
+ }
302
+
303
+ return self
304
+ }.call({})
305
+
306
+ return {
307
+ provide: {
308
+ recursion,
309
+ },
310
+ }
311
+ })