@aloudata/ink-lineage 0.0.1-beta.1 → 0.0.1-beta.11

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 (268) hide show
  1. package/dist/assets/big/dataSourceTypeIcon.d.ts +23 -0
  2. package/dist/assets/big/dataSourceTypeIcon.d.ts.map +1 -0
  3. package/dist/assets/big/dataSourceTypeIcon.js +23 -0
  4. package/dist/assets/big/dataSourceTypeIcon.js.map +1 -0
  5. package/dist/assets/big/entityType.d.ts +2 -0
  6. package/dist/assets/big/entityType.d.ts.map +1 -0
  7. package/dist/assets/big/entityType.js +2 -0
  8. package/dist/assets/big/entityType.js.map +1 -0
  9. package/dist/assets/big/index.d.ts +6 -0
  10. package/dist/assets/big/index.d.ts.map +1 -0
  11. package/{src/assets/big/index.ts → dist/assets/big/index.js} +2 -1
  12. package/dist/assets/big/index.js.map +1 -0
  13. package/dist/assets/big/lineageIcon.d.ts +14 -0
  14. package/dist/assets/big/lineageIcon.d.ts.map +1 -0
  15. package/dist/assets/big/lineageIcon.js +14 -0
  16. package/dist/assets/big/lineageIcon.js.map +1 -0
  17. package/dist/assets/big/tableTypeIcon.d.ts +7 -0
  18. package/dist/assets/big/tableTypeIcon.d.ts.map +1 -0
  19. package/dist/assets/big/tableTypeIcon.js +7 -0
  20. package/dist/assets/big/tableTypeIcon.js.map +1 -0
  21. package/dist/assets/big/tipIcon.d.ts +2 -0
  22. package/dist/assets/big/tipIcon.d.ts.map +1 -0
  23. package/dist/assets/big/tipIcon.js +2 -0
  24. package/dist/assets/big/tipIcon.js.map +1 -0
  25. package/dist/assets/index.d.ts +5 -0
  26. package/dist/assets/index.d.ts.map +1 -0
  27. package/dist/assets/index.js +8 -0
  28. package/dist/assets/index.js.map +1 -0
  29. package/dist/components/Edges/DefaultEdge.d.ts +26 -0
  30. package/dist/components/Edges/DefaultEdge.d.ts.map +1 -0
  31. package/dist/components/Edges/DefaultEdge.js +145 -0
  32. package/dist/components/Edges/DefaultEdge.js.map +1 -0
  33. package/dist/components/Edges/FoldEdge.d.ts +9 -0
  34. package/dist/components/Edges/FoldEdge.d.ts.map +1 -0
  35. package/dist/components/Edges/FoldEdge.js +77 -0
  36. package/dist/components/Edges/FoldEdge.js.map +1 -0
  37. package/dist/components/Edges/LineageEdge.d.ts +7 -0
  38. package/dist/components/Edges/LineageEdge.d.ts.map +1 -0
  39. package/dist/components/Edges/LineageEdge.js +20 -0
  40. package/dist/components/Edges/LineageEdge.js.map +1 -0
  41. package/dist/components/Edges/index.d.ts +4 -0
  42. package/dist/components/Edges/index.d.ts.map +1 -0
  43. package/dist/components/Edges/index.js +4 -0
  44. package/dist/components/Edges/index.js.map +1 -0
  45. package/dist/components/Nodes/AssetNode.d.ts +21 -0
  46. package/dist/components/Nodes/AssetNode.d.ts.map +1 -0
  47. package/dist/components/Nodes/AssetNode.js +278 -0
  48. package/dist/components/Nodes/AssetNode.js.map +1 -0
  49. package/dist/components/Nodes/ColumnNode.d.ts +27 -0
  50. package/dist/components/Nodes/ColumnNode.d.ts.map +1 -0
  51. package/dist/components/Nodes/ColumnNode.js +327 -0
  52. package/dist/components/Nodes/ColumnNode.js.map +1 -0
  53. package/dist/components/Nodes/CustomNode.d.ts +10 -0
  54. package/dist/components/Nodes/CustomNode.d.ts.map +1 -0
  55. package/dist/components/Nodes/CustomNode.js +53 -0
  56. package/dist/components/Nodes/CustomNode.js.map +1 -0
  57. package/dist/components/Nodes/DefaultNode.d.ts +29 -0
  58. package/dist/components/Nodes/DefaultNode.d.ts.map +1 -0
  59. package/dist/components/Nodes/DefaultNode.js +162 -0
  60. package/dist/components/Nodes/DefaultNode.js.map +1 -0
  61. package/dist/components/Nodes/TableNode.d.ts +24 -0
  62. package/dist/components/Nodes/TableNode.d.ts.map +1 -0
  63. package/dist/components/Nodes/TableNode.js +384 -0
  64. package/dist/components/Nodes/TableNode.js.map +1 -0
  65. package/dist/components/Nodes/index.d.ts +4 -0
  66. package/dist/components/Nodes/index.d.ts.map +1 -0
  67. package/{src/components/Nodes/index.ts → dist/components/Nodes/index.js} +1 -1
  68. package/dist/components/Nodes/index.js.map +1 -0
  69. package/dist/components/Nodes/task/Column.d.ts +30 -0
  70. package/dist/components/Nodes/task/Column.d.ts.map +1 -0
  71. package/dist/components/Nodes/task/Column.js +222 -0
  72. package/dist/components/Nodes/task/Column.js.map +1 -0
  73. package/dist/components/Nodes/task/CustomNode.d.ts +38 -0
  74. package/dist/components/Nodes/task/CustomNode.d.ts.map +1 -0
  75. package/dist/components/Nodes/task/CustomNode.js +272 -0
  76. package/dist/components/Nodes/task/CustomNode.js.map +1 -0
  77. package/dist/components/Nodes/task/TableNode copy.d.ts +51 -0
  78. package/dist/components/Nodes/task/TableNode copy.d.ts.map +1 -0
  79. package/dist/components/Nodes/task/TableNode copy.js +642 -0
  80. package/dist/components/Nodes/task/TableNode copy.js.map +1 -0
  81. package/dist/components/Nodes/task/TableNode.d.ts +51 -0
  82. package/dist/components/Nodes/task/TableNode.d.ts.map +1 -0
  83. package/dist/components/Nodes/task/TableNode.js +642 -0
  84. package/dist/components/Nodes/task/TableNode.js.map +1 -0
  85. package/dist/components/index.d.ts +3 -0
  86. package/dist/components/index.d.ts.map +1 -0
  87. package/dist/components/index.js +3 -0
  88. package/dist/components/index.js.map +1 -0
  89. package/dist/constant/index.d.ts +2 -0
  90. package/dist/constant/index.d.ts.map +1 -0
  91. package/dist/constant/index.js +2 -0
  92. package/dist/constant/index.js.map +1 -0
  93. package/dist/constant/nodeStyle.d.ts +75 -0
  94. package/dist/constant/nodeStyle.d.ts.map +1 -0
  95. package/dist/constant/nodeStyle.js +111 -0
  96. package/dist/constant/nodeStyle.js.map +1 -0
  97. package/dist/index.d.ts +6 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/{src/index.ts → dist/index.js} +1 -1
  100. package/dist/index.js.map +1 -0
  101. package/dist/manager/BaseLineageManager.d.ts +51 -0
  102. package/dist/manager/BaseLineageManager.d.ts.map +1 -0
  103. package/dist/manager/BaseLineageManager.js +102 -0
  104. package/dist/manager/BaseLineageManager.js.map +1 -0
  105. package/dist/manager/BaseManager.d.ts +7 -0
  106. package/dist/manager/BaseManager.d.ts.map +1 -0
  107. package/dist/manager/BaseManager.js +8 -0
  108. package/dist/manager/BaseManager.js.map +1 -0
  109. package/dist/manager/DataProcessor.d.ts +27 -0
  110. package/dist/manager/DataProcessor.d.ts.map +1 -0
  111. package/dist/manager/DataProcessor.js +587 -0
  112. package/dist/manager/DataProcessor.js.map +1 -0
  113. package/dist/manager/ExpandManager.d.ts +13 -0
  114. package/dist/manager/ExpandManager.d.ts.map +1 -0
  115. package/dist/manager/ExpandManager.js +74 -0
  116. package/dist/manager/ExpandManager.js.map +1 -0
  117. package/dist/manager/FoldLineageManager.d.ts +17 -0
  118. package/dist/manager/FoldLineageManager.d.ts.map +1 -0
  119. package/dist/manager/FoldLineageManager.js +176 -0
  120. package/dist/manager/FoldLineageManager.js.map +1 -0
  121. package/dist/manager/GraphEventManager.d.ts +9 -0
  122. package/dist/manager/GraphEventManager.d.ts.map +1 -0
  123. package/dist/manager/GraphEventManager.js +72 -0
  124. package/dist/manager/GraphEventManager.js.map +1 -0
  125. package/dist/manager/LineageManager.d.ts +116 -0
  126. package/dist/manager/LineageManager.d.ts.map +1 -0
  127. package/dist/manager/LineageManager.js +495 -0
  128. package/dist/manager/LineageManager.js.map +1 -0
  129. package/dist/manager/RightKeyMenuManager.d.ts +21 -0
  130. package/dist/manager/RightKeyMenuManager.d.ts.map +1 -0
  131. package/dist/manager/RightKeyMenuManager.js +67 -0
  132. package/dist/manager/RightKeyMenuManager.js.map +1 -0
  133. package/dist/manager/SearchNodeManager.d.ts +12 -0
  134. package/dist/manager/SearchNodeManager.d.ts.map +1 -0
  135. package/dist/manager/SearchNodeManager.js +101 -0
  136. package/dist/manager/SearchNodeManager.js.map +1 -0
  137. package/dist/manager/ToolbarManager.d.ts +8 -0
  138. package/dist/manager/ToolbarManager.d.ts.map +1 -0
  139. package/dist/manager/ToolbarManager.js +23 -0
  140. package/dist/manager/ToolbarManager.js.map +1 -0
  141. package/dist/manager/index.d.ts +9 -0
  142. package/dist/manager/index.d.ts.map +1 -0
  143. package/{src/manager/index.ts → dist/manager/index.js} +1 -0
  144. package/dist/manager/index.js.map +1 -0
  145. package/dist/manager/nodeManager/AssetEventManager.d.ts +10 -0
  146. package/dist/manager/nodeManager/AssetEventManager.d.ts.map +1 -0
  147. package/dist/manager/nodeManager/AssetEventManager.js +287 -0
  148. package/dist/manager/nodeManager/AssetEventManager.js.map +1 -0
  149. package/dist/manager/nodeManager/BaseEventManager.d.ts +18 -0
  150. package/dist/manager/nodeManager/BaseEventManager.d.ts.map +1 -0
  151. package/dist/manager/nodeManager/BaseEventManager.js +89 -0
  152. package/dist/manager/nodeManager/BaseEventManager.js.map +1 -0
  153. package/dist/manager/nodeManager/ColumnEventManager.d.ts +12 -0
  154. package/dist/manager/nodeManager/ColumnEventManager.d.ts.map +1 -0
  155. package/dist/manager/nodeManager/ColumnEventManager.js +336 -0
  156. package/dist/manager/nodeManager/ColumnEventManager.js.map +1 -0
  157. package/dist/manager/nodeManager/CustomEventManager.d.ts +6 -0
  158. package/dist/manager/nodeManager/CustomEventManager.d.ts.map +1 -0
  159. package/dist/manager/nodeManager/CustomEventManager.js +19 -0
  160. package/dist/manager/nodeManager/CustomEventManager.js.map +1 -0
  161. package/dist/manager/nodeManager/TableEventManager.d.ts +11 -0
  162. package/dist/manager/nodeManager/TableEventManager.d.ts.map +1 -0
  163. package/dist/manager/nodeManager/TableEventManager.js +121 -0
  164. package/dist/manager/nodeManager/TableEventManager.js.map +1 -0
  165. package/dist/manager/nodeManager/index.d.ts +4 -0
  166. package/dist/manager/nodeManager/index.d.ts.map +1 -0
  167. package/{src/manager/nodeManager/index.ts → dist/manager/nodeManager/index.js} +2 -1
  168. package/dist/manager/nodeManager/index.js.map +1 -0
  169. package/dist/manager/task/DataProcessor.d.ts +22 -0
  170. package/dist/manager/task/DataProcessor.d.ts.map +1 -0
  171. package/dist/manager/task/DataProcessor.js +379 -0
  172. package/dist/manager/task/DataProcessor.js.map +1 -0
  173. package/dist/manager/task/GraphEventManager.d.ts +13 -0
  174. package/dist/manager/task/GraphEventManager.d.ts.map +1 -0
  175. package/dist/manager/task/GraphEventManager.js +77 -0
  176. package/dist/manager/task/GraphEventManager.js.map +1 -0
  177. package/dist/manager/task/LineageManager.d.ts +70 -0
  178. package/dist/manager/task/LineageManager.d.ts.map +1 -0
  179. package/dist/manager/task/LineageManager.js +399 -0
  180. package/dist/manager/task/LineageManager.js.map +1 -0
  181. package/dist/manager/task/RightKeyMenuManager.d.ts +44 -0
  182. package/dist/manager/task/RightKeyMenuManager.d.ts.map +1 -0
  183. package/dist/manager/task/RightKeyMenuManager.js +183 -0
  184. package/dist/manager/task/RightKeyMenuManager.js.map +1 -0
  185. package/dist/manager/task/SearchNodeManager.d.ts +12 -0
  186. package/dist/manager/task/SearchNodeManager.d.ts.map +1 -0
  187. package/dist/manager/task/SearchNodeManager.js +100 -0
  188. package/dist/manager/task/SearchNodeManager.js.map +1 -0
  189. package/dist/types/eventEnum.d.ts +45 -0
  190. package/dist/types/eventEnum.d.ts.map +1 -0
  191. package/dist/types/eventEnum.js +48 -0
  192. package/dist/types/eventEnum.js.map +1 -0
  193. package/dist/types/index.d.ts +4 -0
  194. package/dist/types/index.d.ts.map +1 -0
  195. package/dist/types/index.js +4 -0
  196. package/dist/types/index.js.map +1 -0
  197. package/dist/types/manager.d.ts +85 -0
  198. package/dist/types/manager.d.ts.map +1 -0
  199. package/dist/types/manager.js +34 -0
  200. package/dist/types/manager.js.map +1 -0
  201. package/dist/types/node.d.ts +208 -0
  202. package/dist/types/node.d.ts.map +1 -0
  203. package/dist/types/node.js +120 -0
  204. package/dist/types/node.js.map +1 -0
  205. package/dist/utils/foldNode.d.ts +14 -0
  206. package/dist/utils/foldNode.d.ts.map +1 -0
  207. package/dist/utils/foldNode.js +231 -0
  208. package/dist/utils/foldNode.js.map +1 -0
  209. package/dist/utils/getIconByType.d.ts +4 -0
  210. package/dist/utils/getIconByType.d.ts.map +1 -0
  211. package/dist/utils/getIconByType.js +72 -0
  212. package/dist/utils/getIconByType.js.map +1 -0
  213. package/dist/utils/index.d.ts +4 -0
  214. package/dist/utils/index.d.ts.map +1 -0
  215. package/{src/utils/index.ts → dist/utils/index.js} +1 -0
  216. package/dist/utils/index.js.map +1 -0
  217. package/dist/utils/manager.d.ts +5 -0
  218. package/dist/utils/manager.d.ts.map +1 -0
  219. package/dist/utils/manager.js +44 -0
  220. package/dist/utils/manager.js.map +1 -0
  221. package/dist/utils/node.d.ts +29 -0
  222. package/dist/utils/node.d.ts.map +1 -0
  223. package/dist/utils/node.js +286 -0
  224. package/dist/utils/node.js.map +1 -0
  225. package/package.json +9 -7
  226. package/src/assets/big/dataSourceTypeIcon.ts +0 -65
  227. package/src/assets/big/entityType.ts +0 -1
  228. package/src/assets/big/lineageIcon.ts +0 -35
  229. package/src/assets/big/tableTypeIcon.ts +0 -17
  230. package/src/assets/big/tipIcon.ts +0 -1
  231. package/src/assets/index.ts +0 -14
  232. package/src/components/Edges/DefaultEdge.ts +0 -196
  233. package/src/components/Edges/FoldEdge.ts +0 -97
  234. package/src/components/Edges/LineageEdge.ts +0 -24
  235. package/src/components/Edges/index.ts +0 -3
  236. package/src/components/Nodes/AssetNode.ts +0 -438
  237. package/src/components/Nodes/ColumnNode.ts +0 -491
  238. package/src/components/Nodes/CustomNode.ts +0 -63
  239. package/src/components/Nodes/DefaultNode.ts +0 -74
  240. package/src/components/Nodes/DowngradeNode.ts +0 -115
  241. package/src/components/Nodes/TableNode.ts +0 -534
  242. package/src/components/index.ts +0 -2
  243. package/src/constant/index.ts +0 -1
  244. package/src/constant/nodeStyle.ts +0 -141
  245. package/src/manager/BaseManager.ts +0 -20
  246. package/src/manager/DataProcessor.ts +0 -782
  247. package/src/manager/ExpandManager.ts +0 -93
  248. package/src/manager/FoldLineageManager.ts +0 -196
  249. package/src/manager/GraphEventManager.ts +0 -90
  250. package/src/manager/LineageManager.ts +0 -680
  251. package/src/manager/RightKeyMenuManager.ts +0 -114
  252. package/src/manager/SearchNodeManager.ts +0 -188
  253. package/src/manager/ToolbarManager.ts +0 -42
  254. package/src/manager/nodeManager/AssetEventManager.ts +0 -442
  255. package/src/manager/nodeManager/BaseEventManager.ts +0 -68
  256. package/src/manager/nodeManager/ColumnEventManager.ts +0 -467
  257. package/src/manager/nodeManager/CustomEventManager.ts +0 -11
  258. package/src/manager/nodeManager/TableEventManager.ts +0 -87
  259. package/src/types/NodeConfig.ts +0 -69
  260. package/src/types/eventEnum.ts +0 -58
  261. package/src/types/index.ts +0 -3
  262. package/src/types/manager.ts +0 -75
  263. package/src/types/node.ts +0 -246
  264. package/src/utils/downgradeNode.ts +0 -22
  265. package/src/utils/foldNode.ts +0 -345
  266. package/src/utils/getIconByType.ts +0 -104
  267. package/src/utils/node.ts +0 -294
  268. package/tsconfig.json +0 -30
@@ -1,782 +0,0 @@
1
- import {
2
- getNodeHeight,
3
- groupNodesByEdgesAndDirection,
4
- } from '@aloudata/ink-graph-new';
5
- import {
6
- EEntityType,
7
- EDirection,
8
- IEntity,
9
- IBseRelation,
10
- INodeConfig,
11
- IColumnConfig,
12
- IEdgeConfig,
13
- ILineageData,
14
- IColResBase,
15
- TDataBase,
16
- EDashType,
17
- } from '../types';
18
- import _ from 'lodash';
19
- import { BaseManager } from './BaseManager';
20
- import {
21
- COL_HEIGHT,
22
- CUSTOM_NODE,
23
- LINEAGE_EDGE,
24
- NODE_WIDTH,
25
- TABLE_HEADER_HEIGHT,
26
- TABLE_NODE,
27
- } from '../constant';
28
- import { InkLineageManager } from './LineageManager';
29
-
30
- export interface IParsedGraphData<
31
- TData extends TDataBase<TColumn>,
32
- TColumn extends IColResBase
33
- > {
34
- nodes: INodeConfig<TData, TColumn>[];
35
- edges: IEdgeConfig[];
36
- }
37
-
38
- export class DataProcessor<
39
- TData extends TDataBase<TColumn>,
40
- TColumn extends IColResBase
41
- > extends BaseManager<TData, TColumn> {
42
- static startNodes: string[] = [];
43
-
44
- constructor(lineageManager: InkLineageManager<TData, TColumn>) {
45
- super(lineageManager);
46
- }
47
-
48
- static parseData<
49
- TData extends TDataBase<TColumn>,
50
- TColumn extends IColResBase,
51
- >(
52
- data: ILineageData<TData, TColumn>,
53
- startNodes: string[],
54
- ): IParsedGraphData<TData, TColumn> {
55
- DataProcessor.startNodes = startNodes;
56
- // parse data here
57
- const { entities, relations } = data;
58
- const nodes = DataProcessor.parseEntities<TData, TColumn>(
59
- entities,
60
- startNodes,
61
- );
62
- const edges = DataProcessor.parseRelations(relations);
63
-
64
- const res = {
65
- nodes,
66
- edges,
67
- };
68
-
69
- return res;
70
- }
71
-
72
- static parseEntities<
73
- TData extends TDataBase<TColumn>,
74
- TColumn extends IColResBase,
75
- >(entities: IEntity<TData>[], startNodes: string[]) {
76
- const nodesId: string[] = [];
77
- const nodes: INodeConfig<TData, TColumn>[] = [];
78
-
79
- entities.forEach((entity) => {
80
- if (nodesId.includes(entity.guid)) return;
81
-
82
- const isStartNode = startNodes.includes(entity.guid);
83
- let node = null;
84
-
85
- switch (entity.typeCode) {
86
- case 'Table':
87
- case 'View':
88
- node = DataProcessor.parseTableEntity<TData, TColumn>(
89
- entity,
90
- isStartNode,
91
- );
92
- break;
93
- default:
94
- node = DataProcessor.parseCustomEntity<TData, TColumn>(
95
- entity,
96
- isStartNode,
97
- );
98
- break;
99
- }
100
-
101
- if (node) {
102
- nodes.push(node);
103
- nodesId.push(node.id);
104
- }
105
- });
106
-
107
- return nodes;
108
- }
109
-
110
- static parseRelations(relations: IBseRelation[]) {
111
- const existedEdgesMap = new Map<string, string>();
112
- const edges: IEdgeConfig[] = [];
113
-
114
- relations.forEach((relation) => {
115
- const edgeId = `${relation.srcGuid}___${relation.dstGuid}`;
116
-
117
- if (existedEdgesMap.has(edgeId)) {
118
- if (existedEdgesMap.get(edgeId) !== relation.relationTypeCode) {
119
- const edge = edges.find((e) => e.id === edgeId);
120
- if (edge) {
121
- edge.relationType = EDashType.ALL;
122
- edge.style.strokeDasharray = [0];
123
- }
124
- }
125
-
126
- return;
127
- }
128
-
129
- const isIndirect = relation.relationTypeCode.includes('Indirect');
130
-
131
- const edge = {
132
- id: edgeId,
133
- type: LINEAGE_EDGE,
134
- data: {
135
- ...relation,
136
- },
137
- source: relation.srcGuid,
138
- target: relation.dstGuid,
139
- visible: true,
140
- isActive: false,
141
- isFolded: false,
142
- canBeFold: false,
143
- relationType: isIndirect ? EDashType.INDIRECT : EDashType.DIRECT,
144
- style: {
145
- stroke: '#B1B1B1',
146
- strokeDasharray: isIndirect ? [2] : [0],
147
- lineWidth: 1,
148
- },
149
- points: [],
150
- } as IEdgeConfig;
151
-
152
- edges.push(edge);
153
- existedEdgesMap.set(edge.id, edge.data.relationTypeCode);
154
- });
155
-
156
- return edges;
157
- }
158
-
159
- static parseTableEntity<
160
- TData extends TDataBase<TColumn>,
161
- TColumn extends IColResBase
162
- >(entity: IEntity<TData>, isStartNode: boolean) {
163
- const cols = Array.isArray(entity.properties?.columns)
164
- ? entity.properties?.columns?.map((col) => {
165
- return DataProcessor.parseColumn<TColumn>(
166
- col,
167
- isStartNode,
168
- entity.guid,
169
- entity.properties?.name,
170
- );
171
- }) || []
172
- : [];
173
-
174
- // 只有起始资产的relatedCols一开始有元素
175
- const relatedCols = Array.isArray(entity.properties?.columns)
176
- ? entity.properties?.columns?.map((col) => {
177
- return DataProcessor.parseRelatedColumn<TColumn>(
178
- col,
179
- isStartNode,
180
- entity.guid,
181
- entity.properties?.name,
182
- );
183
- }) || []
184
- : [];
185
-
186
- const data = {
187
- id: entity.guid,
188
- type: TABLE_NODE,
189
- data: {
190
- ...entity.properties,
191
- type: (entity.properties?.type as EEntityType) || EEntityType.TABLE,
192
- guid: entity.guid,
193
- typeCode: entity.typeCode,
194
- },
195
- style: {
196
- width: NODE_WIDTH + 2,
197
- height: TABLE_HEADER_HEIGHT,
198
- headerHeight: TABLE_HEADER_HEIGHT,
199
- },
200
- position: {
201
- x: 0,
202
- y: 0,
203
- },
204
- isStartNode,
205
- isOpen: isStartNode,
206
- visible: true,
207
- isRelated: false,
208
- isFolded: false,
209
- isExpandOutput: false,
210
- isExpandInput: false,
211
- canExpandInput: false,
212
- canExpandOutput: false,
213
- canFoldInput: false,
214
- canFoldOutput: false,
215
- hasMoreInput: true,
216
- hasMoreOutput: true,
217
- children: cols,
218
- pagination: {
219
- pageNum: 1,
220
- pageSize: 10,
221
- total: 0,
222
- totalPage: 0,
223
- },
224
- relatedColumns: relatedCols,
225
- } as unknown as INodeConfig<TData, TColumn>;
226
-
227
- data.style.height = getNodeHeight(data);
228
-
229
- return data;
230
- }
231
-
232
- static parseColumn<TColumn extends IColResBase>(
233
- column: TColumn,
234
- isStartNode: boolean,
235
- tableId: string,
236
- tableName: string,
237
- ) {
238
- return {
239
- data: {
240
- ...column,
241
- },
242
- type: '',
243
- style: {
244
- width: NODE_WIDTH + 2,
245
- height: COL_HEIGHT,
246
- headerHeight: COL_HEIGHT,
247
- },
248
- position: { x: 8, y: 0 },
249
- id: column.guid,
250
- tableId,
251
- tableName: column.tableName || tableName,
252
- visible: true,
253
- isFolded: false,
254
- isStartNode,
255
- isRelated: false,
256
- canExpandInput: false,
257
- canExpandOutput: false,
258
- canFoldInput: false,
259
- canFoldOutput: false,
260
- hasMoreInput: true,
261
- hasMoreOutput: true,
262
- } as IColumnConfig<TColumn>;
263
- }
264
-
265
- static parseRelatedColumn<TColumn extends IColResBase>(
266
- column: TColumn,
267
- isStartNode: boolean,
268
- tableId: string,
269
- tableName: string,
270
- ) {
271
- return {
272
- data: {
273
- ...column,
274
- },
275
- type: '',
276
- style: {
277
- width: NODE_WIDTH + 2,
278
- height: COL_HEIGHT,
279
- headerHeight: COL_HEIGHT,
280
- },
281
- position: { x: 0, y: 0 },
282
- id: column.guid,
283
- tableId,
284
- tableName: column.tableName || tableName,
285
- visible: true,
286
- isFolded: false,
287
- isStartNode,
288
- isRelated: true,
289
- isRelatedColumn: true,
290
- canExpandInput: false,
291
- canExpandOutput: false,
292
- canFoldInput: false,
293
- canFoldOutput: false,
294
- hasMoreInput: true,
295
- hasMoreOutput: true,
296
- } as IColumnConfig<TColumn>;
297
- }
298
-
299
- static parseCustomEntity<
300
- TData extends TDataBase<TColumn>,
301
- TColumn extends IColResBase
302
- >(entity: IEntity<TData>, isStartNode: boolean) {
303
- const data = {
304
- id: entity.guid,
305
- type: CUSTOM_NODE,
306
- data: {
307
- ...entity.properties,
308
- type: (entity.properties?.type as EEntityType) || EEntityType.TABLE,
309
- guid: entity.guid,
310
- typeCode: entity.typeCode,
311
- typeCodeName: entity.typeCodeName,
312
- },
313
- style: {
314
- width: NODE_WIDTH + 2,
315
- height: TABLE_HEADER_HEIGHT,
316
- headerHeight: TABLE_HEADER_HEIGHT,
317
- },
318
- position: {
319
- x: 0,
320
- y: 0,
321
- },
322
- isStartNode,
323
- isOpen: isStartNode,
324
- visible: true,
325
- isRelated: false,
326
- canExpandInput: false,
327
- canExpandOutput: false,
328
- canFoldInput: false,
329
- canFoldOutput: false,
330
- hasMoreInput: true,
331
- hasMoreOutput: true,
332
- children: Array.isArray(entity.properties?.columns)
333
- ? entity.properties?.columns?.map((col) => {
334
- return DataProcessor.parseColumn<TColumn>(
335
- col,
336
- isStartNode,
337
- entity.guid,
338
- entity.properties?.name,
339
- );
340
- }) || []
341
- : [],
342
- pagination: {
343
- pageNum: 1,
344
- pageSize: 10,
345
- total: 0,
346
- totalPage: 0,
347
- },
348
- relatedColumns: [],
349
- } as unknown as INodeConfig<TData, TColumn>;
350
-
351
- data.style.height = getNodeHeight(data);
352
-
353
- return data;
354
- }
355
-
356
- updateSideIconVisible(
357
- data: IParsedGraphData<TData, TColumn>,
358
- ) {
359
- if (_.isNil(data)) return;
360
-
361
- const nodesConfig = data.nodes.filter((cfg) => cfg.visible);
362
- const edgesConfig = data.edges.filter((cfg) => cfg.visible);
363
- if (!nodesConfig) return;
364
-
365
- const startNodeIndex = nodesConfig.findIndex((node) => node.isStartNode);
366
- if (startNodeIndex < 0) return;
367
-
368
- const startNodeCfg = nodesConfig[startNodeIndex];
369
- if (!startNodeCfg) return;
370
-
371
- const nodesConfigMap = new Map<
372
- string,
373
- INodeConfig<TData, TColumn> | IColumnConfig<TColumn>
374
- >();
375
- nodesConfig?.forEach((n) => {
376
- nodesConfigMap.set(n.id, n);
377
- n.children?.forEach((child) => {
378
- nodesConfigMap.set(child.id, child);
379
- });
380
- });
381
-
382
- const inputGroupedData = groupNodesByEdgesAndDirection(
383
- startNodeCfg,
384
- nodesConfigMap,
385
- edgesConfig,
386
- EDirection.INPUT,
387
- );
388
-
389
- const outputGroupedData = groupNodesByEdgesAndDirection(
390
- startNodeCfg,
391
- nodesConfigMap,
392
- edgesConfig,
393
- EDirection.OUTPUT,
394
- );
395
-
396
- if (!inputGroupedData && !outputGroupedData) return;
397
-
398
- const { groupedNodes: inputGroupNodes } = inputGroupedData;
399
- const { groupedNodes: outputGroupNodes } = outputGroupedData;
400
- // 两个map合并
401
- const groupedNodes = new Map();
402
- if (inputGroupNodes) {
403
- for (const [key, value] of inputGroupNodes) {
404
- if (groupedNodes.has(key)) continue;
405
- groupedNodes.set(key, value);
406
- }
407
- }
408
-
409
- if (outputGroupNodes) {
410
- for (const [key, value] of outputGroupNodes) {
411
- if (groupedNodes.has(key)) continue;
412
- groupedNodes.set(key, value);
413
- }
414
- }
415
-
416
- const dstNodeIds = edgesConfig.map((edge) => edge.target);
417
- const srcNodeIds = edgesConfig.map((edge) => edge.source);
418
-
419
- // table
420
- nodesConfig?.forEach((n) => {
421
- n.canExpandInput = false;
422
- n.canExpandOutput = false;
423
- n.canFoldInput = false;
424
- n.canFoldOutput = false;
425
-
426
- const currNodeLevel = groupedNodes.get(n.id);
427
-
428
- if (_.isNil(currNodeLevel)) {
429
- console.warn(`get node level error '${n.id}'`);
430
- return;
431
- }
432
-
433
- let isInputLeaf = false;
434
- let isOutputLeaf = false;
435
- if (currNodeLevel === 0) {
436
- isInputLeaf = !dstNodeIds.includes(n.id);
437
- isOutputLeaf = !srcNodeIds.includes(n.id);
438
- } else if (currNodeLevel < 0) {
439
- isInputLeaf = !dstNodeIds.includes(n.id);
440
- } else {
441
- isOutputLeaf = !srcNodeIds.includes(n.id);
442
- }
443
-
444
- // input node exist & left of start node
445
- if (currNodeLevel <= 0 && !isInputLeaf) {
446
- n.canFoldInput = true;
447
- }
448
-
449
- // input node not exist & left of start node
450
- if (currNodeLevel <= 0 && isInputLeaf && n.hasMoreInput) {
451
- n.canExpandInput = true;
452
- }
453
-
454
- // output node exist & right of start node
455
- if (currNodeLevel >= 0 && !isOutputLeaf) {
456
- n.canFoldOutput = true;
457
- }
458
-
459
- // output node not exist & right of start node
460
- if (currNodeLevel >= 0 && isOutputLeaf && n.hasMoreOutput) {
461
- n.canExpandOutput = true;
462
- }
463
-
464
- // column: always true if isStartNode === true
465
- const columnRefreshList = n.isStartNode
466
- ? [...n.children, ...n.relatedColumns]
467
- : n.relatedColumns;
468
-
469
- columnRefreshList?.forEach((col) => {
470
- col.canExpandInput = false;
471
- col.canExpandOutput = false;
472
- col.canFoldInput = false;
473
- col.canFoldOutput = false;
474
-
475
- if (!col.isStartNode && !col.isRelatedColumn) return;
476
-
477
- let isInputLeaf_col = false;
478
- let isOutputLeaf_col = false;
479
- if (currNodeLevel === 0) {
480
- isInputLeaf_col = !dstNodeIds.includes(col.id);
481
- isOutputLeaf_col = !srcNodeIds.includes(col.id);
482
- } else if (currNodeLevel < 0) {
483
- isInputLeaf_col = !dstNodeIds.includes(col.id);
484
- } else {
485
- isOutputLeaf_col = !srcNodeIds.includes(col.id);
486
- }
487
-
488
- // input node exist & left of start node
489
- if (currNodeLevel <= 0 && !isInputLeaf_col) {
490
- col.canFoldInput = true;
491
- }
492
-
493
- // input node not exist & left of start node
494
- if (currNodeLevel <= 0 && isInputLeaf_col && col.hasMoreInput) {
495
- col.canExpandInput = true;
496
- }
497
-
498
- // output node exist & right of start node
499
- if (currNodeLevel >= 0 && !isOutputLeaf_col) {
500
- col.canFoldOutput = true;
501
- }
502
-
503
- // output node not exist & right of start node
504
- if (currNodeLevel >= 0 && isOutputLeaf_col && col.hasMoreOutput) {
505
- col.canExpandOutput = true;
506
- }
507
- });
508
- });
509
- }
510
-
511
- getNodeType(typeCode: string) {
512
- return typeCode === 'Table' ? TABLE_NODE : CUSTOM_NODE;
513
- }
514
-
515
- updateNodesVisible(
516
- data: IParsedGraphData<TData, TColumn>,
517
- edgeDashVisible: EDashType,
518
- onlyShowRelated: boolean,
519
- isFoldChecked: boolean,
520
- ) {
521
- if (_.isNil(data)) return;
522
-
523
- data.nodes.forEach((node) => {
524
- node.visible = this.getNodeVisible(
525
- node,
526
- data,
527
- edgeDashVisible,
528
- onlyShowRelated,
529
- isFoldChecked,
530
- );
531
-
532
- node.relatedColumns?.forEach((col) => {
533
- col.visible = this.getRelatedNodeVisible(col, data, edgeDashVisible);
534
- });
535
-
536
- node.children?.forEach((child) => {
537
- child.visible = this.getNodeVisible(
538
- child,
539
- data,
540
- edgeDashVisible,
541
- onlyShowRelated,
542
- isFoldChecked,
543
- );
544
- });
545
- });
546
- }
547
-
548
- updateEdgesVisible(
549
- data: IParsedGraphData<TData, TColumn>,
550
- edgeDashVisible: EDashType,
551
- onlyShowRelated: boolean,
552
- isFoldChecked: boolean,
553
- ) {
554
- if (_.isNil(data)) return;
555
-
556
- data.edges.forEach((edge) => {
557
- edge.visible = this.getEdgeVisible(
558
- edge,
559
- edgeDashVisible,
560
- onlyShowRelated,
561
- isFoldChecked,
562
- );
563
- });
564
- }
565
-
566
- getNodeVisible(
567
- nodeConfig: INodeConfig<TData, TColumn> | IColumnConfig<TColumn>,
568
- data: IParsedGraphData<TData, TColumn>,
569
- edgeDashVisible: EDashType,
570
- onlyShowRelated: boolean,
571
- isFoldChecked: boolean,
572
- ) {
573
- if (nodeConfig.isStartNode) return true;
574
-
575
- if (nodeConfig.isFolded) return false;
576
-
577
- // 只显示相关节点 & 该节点不是相关节点 & 该节点是表,则该节点不可见
578
- if (onlyShowRelated && !nodeConfig.isRelated && !nodeConfig.tableId)
579
- return false;
580
-
581
- if (nodeConfig.canBeFold && isFoldChecked) return false;
582
-
583
- // 找出所有target、source为该节点的边
584
- const relatedEdges = data.edges.filter((edge) => {
585
- return (
586
- // 上游表-当前表、当前表-下游表
587
- edge.target === nodeConfig.id ||
588
- edge.source === nodeConfig.id ||
589
- // 上游列-当前列、当前列-下游列
590
- (nodeConfig as INodeConfig<TData, TColumn>)?.relatedColumns?.some(
591
- (col) => {
592
- return edge.target === col.id || edge.source === col.id;
593
- },
594
- )
595
- );
596
- });
597
-
598
- if (!relatedEdges.length) return false;
599
-
600
- const allRelatedNodeInvisible = relatedEdges.every((edgeCfg) => {
601
- const srcNode = data.nodes.find((node) => node.id === edgeCfg.source);
602
- const tgtNode = data.nodes.find((node) => node.id === edgeCfg.target);
603
-
604
- if ((srcNode?.canBeFold || tgtNode?.canBeFold) && isFoldChecked)
605
- return true;
606
- });
607
-
608
- if (allRelatedNodeInvisible) return false;
609
-
610
- const isAllIndirectEdges = relatedEdges.every(
611
- (edge) => edge.relationType === EDashType.INDIRECT,
612
- );
613
-
614
- // 开关只有true false,直接、间接
615
- if (edgeDashVisible === EDashType.INDIRECT) {
616
- return true;
617
- } else {
618
- // 如果边都是间接边,那么该节点就隐藏
619
- if (isAllIndirectEdges) return false;
620
-
621
- return true;
622
- }
623
- }
624
-
625
- getRelatedNodeVisible(
626
- nodeConfig: INodeConfig<TData, TColumn> | IColumnConfig<TColumn>,
627
- data: IParsedGraphData<TData, TColumn>,
628
- edgeDashVisible: EDashType,
629
- ) {
630
- // 仅相关开启的情况下,如果高亮链路是表链路,隐藏非相关的列
631
- if (this.lineageManager?.rightKeyMenuManager?.onlyShowRelated) {
632
- if (!this.lineageManager?.activeNodes?.[0]?.tableName) {
633
- if (!_.some(this.lineageManager?.relatedNodes, { id: nodeConfig.id }))
634
- return false;
635
- }
636
- }
637
-
638
- // 找出所有target、source为该节点的边
639
- const relatedEdges = data.edges.filter(
640
- (edge) =>
641
- (edge.target === nodeConfig.id || edge.source === nodeConfig.id) &&
642
- edge.visible,
643
- );
644
-
645
- if (!relatedEdges.length) return false;
646
-
647
- const isAllIndirectEdges = relatedEdges.every(
648
- (edge) => edge.relationType === EDashType.INDIRECT,
649
- );
650
-
651
- // 开关只有true false,直接、间接
652
- if (edgeDashVisible === EDashType.INDIRECT) {
653
- return true;
654
- } else {
655
- // 如果边都是间接边,那么该节点就隐藏
656
- if (isAllIndirectEdges) return false;
657
-
658
- return true;
659
- }
660
- }
661
-
662
- getEdgeVisible(
663
- edgeCfg: IEdgeConfig,
664
- edgeDashVisible: EDashType,
665
- onlyShowRelated: boolean,
666
- isFoldChecked: boolean,
667
- ) {
668
- // 如果边被折叠了,那么该边就隐藏
669
- if (edgeCfg.isFolded) return false;
670
-
671
- let visible = false;
672
-
673
- if (isFoldChecked) {
674
- const foldStatus =
675
- this.lineageManager?.foldLineageManager?.foldStatusMap?.get(
676
- edgeCfg.foldTableId,
677
- );
678
-
679
- if (foldStatus) {
680
- visible = !!edgeCfg.isExtraFoldEdge;
681
- }
682
- }
683
-
684
- switch (edgeDashVisible) {
685
- case EDashType.DIRECT:
686
- visible =
687
- edgeCfg.relationType === EDashType.DIRECT ||
688
- edgeCfg.relationType === EDashType.ALL;
689
- break;
690
- case EDashType.INDIRECT:
691
- visible = true;
692
- break;
693
- }
694
-
695
- return visible;
696
- }
697
-
698
- updateNodesAndEdgesVisible(
699
- data: IParsedGraphData<TData, TColumn>,
700
- edgeDashVisible: EDashType,
701
- onlyShowRelated: boolean,
702
- isFoldChecked: boolean,
703
- ) {
704
- this.updateEdgesVisible(
705
- data,
706
- edgeDashVisible,
707
- onlyShowRelated,
708
- isFoldChecked,
709
- );
710
-
711
- // 更新节点本身、列、节点children的可见性
712
- this.updateNodesVisible(
713
- data,
714
- edgeDashVisible,
715
- onlyShowRelated,
716
- isFoldChecked,
717
- );
718
- }
719
-
720
- refreshRelatedNodesAndEdges(
721
- relatedNodes: (INodeConfig<TData, TColumn> | IColumnConfig<TColumn>)[],
722
- relatedEdges: IEdgeConfig[],
723
- ) {
724
- relatedNodes.forEach((n) => {
725
- if (!n) return;
726
-
727
- const nodeConfig = this.lineageManager.getNodeConfigById(n.id);
728
- if (!nodeConfig) return;
729
-
730
- nodeConfig.isRelated = true;
731
-
732
- nodeConfig.style.stroke = '#3271C9';
733
-
734
- if (!nodeConfig.isActive) {
735
- nodeConfig.style.fill = '#E4EFFF';
736
- }
737
-
738
- nodeConfig.style.zIndex = 3;
739
- });
740
-
741
- relatedEdges.forEach((e) => {
742
- if (!e) return;
743
-
744
- const edge = this.lineageManager.getEdgeConfigById(e.id);
745
- if (!edge) return;
746
- if (
747
- (edge.inFoldLink &&
748
- this.lineageManager.foldLineageManager.isFoldChecked) ||
749
- edge.isExtraFoldEdge
750
- )
751
- return;
752
-
753
- edge.style.stroke = '#3271C9';
754
- });
755
- }
756
-
757
- updateNodeHeight(data: IParsedGraphData<TData, TColumn>) {
758
- data.nodes.forEach((node) => {
759
- node.style.height = this.calcNodeHeight(node);
760
- });
761
- }
762
-
763
- updateColumnPosition(data: IParsedGraphData<TData, TColumn>) {
764
- data.nodes.forEach((node) => {
765
- const visibleRelatedColumns = node.relatedColumns?.filter(
766
- (col) => col.visible,
767
- );
768
- visibleRelatedColumns?.forEach((col, i) => {
769
- col.position.y = i * COL_HEIGHT;
770
- });
771
-
772
- const visibleColumns = node.children?.filter((col) => col.visible);
773
- visibleColumns?.forEach((col, i) => {
774
- col.position.y = node.position.y + COL_HEIGHT * i;
775
- });
776
- });
777
- }
778
-
779
- calcNodeHeight(node: INodeConfig<TData, TColumn>) {
780
- return getNodeHeight(node);
781
- }
782
- }