@aloudata/ink-lineage 0.0.1-beta.2 → 0.0.1-beta.21

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 (50) hide show
  1. package/package.json +10 -7
  2. package/src/assets/big/dataSourceTypeIcon.ts +0 -65
  3. package/src/assets/big/entityType.ts +0 -1
  4. package/src/assets/big/index.ts +0 -5
  5. package/src/assets/big/lineageIcon.ts +0 -35
  6. package/src/assets/big/tableTypeIcon.ts +0 -17
  7. package/src/assets/big/tipIcon.ts +0 -1
  8. package/src/assets/index.ts +0 -14
  9. package/src/components/Edges/DefaultEdge.ts +0 -196
  10. package/src/components/Edges/FoldEdge.ts +0 -97
  11. package/src/components/Edges/LineageEdge.ts +0 -24
  12. package/src/components/Edges/index.ts +0 -3
  13. package/src/components/Nodes/AssetNode.ts +0 -438
  14. package/src/components/Nodes/ColumnNode.ts +0 -491
  15. package/src/components/Nodes/CustomNode.ts +0 -63
  16. package/src/components/Nodes/DefaultNode.ts +0 -74
  17. package/src/components/Nodes/DowngradeNode.ts +0 -115
  18. package/src/components/Nodes/TableNode.ts +0 -534
  19. package/src/components/Nodes/index.ts +0 -4
  20. package/src/components/index.ts +0 -2
  21. package/src/constant/index.ts +0 -1
  22. package/src/constant/nodeStyle.ts +0 -141
  23. package/src/index.ts +0 -6
  24. package/src/manager/BaseManager.ts +0 -20
  25. package/src/manager/DataProcessor.ts +0 -782
  26. package/src/manager/ExpandManager.ts +0 -93
  27. package/src/manager/FoldLineageManager.ts +0 -196
  28. package/src/manager/GraphEventManager.ts +0 -90
  29. package/src/manager/LineageManager.ts +0 -680
  30. package/src/manager/RightKeyMenuManager.ts +0 -114
  31. package/src/manager/SearchNodeManager.ts +0 -188
  32. package/src/manager/ToolbarManager.ts +0 -42
  33. package/src/manager/index.ts +0 -8
  34. package/src/manager/nodeManager/AssetEventManager.ts +0 -442
  35. package/src/manager/nodeManager/BaseEventManager.ts +0 -68
  36. package/src/manager/nodeManager/ColumnEventManager.ts +0 -467
  37. package/src/manager/nodeManager/CustomEventManager.ts +0 -11
  38. package/src/manager/nodeManager/TableEventManager.ts +0 -87
  39. package/src/manager/nodeManager/index.ts +0 -3
  40. package/src/types/NodeConfig.ts +0 -69
  41. package/src/types/eventEnum.ts +0 -58
  42. package/src/types/index.ts +0 -3
  43. package/src/types/manager.ts +0 -75
  44. package/src/types/node.ts +0 -246
  45. package/src/utils/downgradeNode.ts +0 -22
  46. package/src/utils/foldNode.ts +0 -345
  47. package/src/utils/getIconByType.ts +0 -104
  48. package/src/utils/index.ts +0 -3
  49. package/src/utils/node.ts +0 -294
  50. package/tsconfig.json +0 -30
@@ -1,93 +0,0 @@
1
- import { Graph, Image } from '@aloudata/ink-graph-new';
2
- import { InkLineageManager } from './LineageManager';
3
- import { BaseManager } from './BaseManager';
4
- import { NODE_WIDTH, SIDE_ICON_SIZE, TABLE_HEADER_HEIGHT } from '../constant';
5
- import {
6
- EDirection,
7
- EExpandType,
8
- EXPAND_BUTTON_TYPE,
9
- INode,
10
- IColResBase,
11
- TDataBase,
12
- } from '../types';
13
-
14
- export class ExpandManager<
15
- TTableData extends TDataBase<TColumnData>,
16
- TColumnData extends IColResBase,
17
- > extends BaseManager<TTableData, TColumnData> {
18
- expandingButton: Image;
19
-
20
- isExpanding: boolean = false;
21
-
22
- prevStartRelatedColumnId: string = '';
23
- constructor(lineageManager: InkLineageManager<TTableData, TColumnData>) {
24
- super(lineageManager);
25
- }
26
-
27
- init(graph: Graph): void {
28
- this.graph = graph;
29
- this.initExpandingButton();
30
- }
31
-
32
- initExpandingButton() {
33
- this.expandingButton = new Image({
34
- name: `control-img-loading`,
35
- style: {
36
- x: -Math.max(),
37
- y: -Math.max(),
38
- width: SIDE_ICON_SIZE,
39
- height: SIDE_ICON_SIZE,
40
- cursor: 'not-allowed',
41
- zIndex: 11,
42
- img: EXPAND_BUTTON_TYPE[EExpandType.LODING],
43
- visibility: 'hidden',
44
- },
45
- });
46
-
47
- this.graph.canvas.appendChild(this.expandingButton);
48
- }
49
-
50
- showExpandLoading(target: INode, direction: EDirection) {
51
- if (!target) return;
52
-
53
- this.isExpanding = true;
54
- const nodePosition = target.config?.position;
55
-
56
- const height = this.graph.mode === 'SIMPLE' ? 44 : TABLE_HEADER_HEIGHT;
57
-
58
- const { x, y } = nodePosition;
59
-
60
- if (direction === EDirection.INPUT) {
61
- if (target.config.tableId) {
62
- this.expandingButton.setPosition([-999, -999]);
63
- } else {
64
- // table
65
- this.expandingButton.setPosition([
66
- x - SIDE_ICON_SIZE - 5,
67
- y + height / 2 - SIDE_ICON_SIZE / 2 + 1,
68
- ]);
69
- }
70
-
71
- this.expandingButton.setAttribute('visibility', 'visible');
72
- }
73
-
74
- if (direction === EDirection.OUTPUT) {
75
- if (target.config.tableId) {
76
- this.expandingButton.setPosition([-999, -999]);
77
- } else {
78
- this.expandingButton.setPosition([
79
- x + NODE_WIDTH + 5,
80
- y + height / 2 - SIDE_ICON_SIZE / 2 + 1,
81
- ]);
82
- }
83
-
84
- this.expandingButton.setAttribute('visibility', 'visible');
85
- }
86
- }
87
-
88
- hideExpandLoading() {
89
- this.isExpanding = false;
90
-
91
- this.expandingButton.setAttribute('visibility', 'hidden');
92
- }
93
- }
@@ -1,196 +0,0 @@
1
- import { IEdgeConfig, INodeConfig, TDataBase } from '../types';
2
- import { InkLineageManager } from './LineageManager';
3
- import _ from 'lodash';
4
-
5
- import { BaseManager } from './BaseManager';
6
- import {
7
- getFoldNodes,
8
- getFoldNodesGroup,
9
- getFoldNodesGroupMap,
10
- } from '../utils';
11
- import { LINEAGE_EDGE } from '../constant';
12
- import {
13
- IColResBase,
14
- } from '../types';
15
- export interface IFoldGroup<
16
- TTableData extends TDataBase<TColumnData>,
17
- TColumnData extends IColResBase,
18
- > {
19
- foldNodes: INodeConfig<TTableData, TColumnData>[];
20
- foldEdges: IEdgeConfig[];
21
- foldNodeEdgeConfig: {
22
- [key: string]: unknown;
23
- };
24
- foldColumnEdgeConfig: {
25
- [key: string]: unknown;
26
- };
27
- }
28
-
29
- export class FoldLineageManager<
30
- TTableData extends TDataBase<TColumnData>,
31
- TColumnData extends IColResBase,
32
- > extends BaseManager<TTableData, TColumnData> {
33
- constructor(lineageManager: InkLineageManager<TTableData, TColumnData>) {
34
- super(lineageManager);
35
- }
36
-
37
- isFoldChecked: boolean = true;
38
-
39
- foldNodesGroupMap = new Map<string, IFoldGroup<TTableData, TColumnData>>(); // 用来记录折叠的节点和边信息
40
-
41
- foldStatusMap = new Map<string, boolean>(); // 用来记录分组折叠的状态
42
-
43
- updateFoldStatus(checked: boolean) {
44
- this.handleNodesFold(checked);
45
-
46
- this.lineageManager.update();
47
- }
48
-
49
- handleNodesFold(checked: boolean) {
50
- this.isFoldChecked = checked;
51
- if (checked) {
52
- const foldStatusMap = this.foldStatusMap;
53
- for (const key of foldStatusMap.keys()) {
54
- this.setFoldStatus(key, true);
55
- }
56
- }
57
-
58
- this.unfoldNodes();
59
-
60
- this.lineageManager.layout();
61
-
62
- if (this.isFoldChecked) {
63
- this.foldNodes();
64
- }
65
- }
66
-
67
- unfoldNodes() {
68
- for (const key of this.foldNodesGroupMap.keys()) {
69
- this.unfoldNodeGroup(key);
70
- }
71
- }
72
-
73
- unfoldNodeGroup(foldGroupKey: string, saveStatus?: boolean) {
74
- const foldInfo = this.foldNodesGroupMap.get(foldGroupKey);
75
- if (!foldInfo) return;
76
-
77
- if (saveStatus === false) {
78
- this.setFoldStatus(foldGroupKey, false);
79
- }
80
-
81
- // 将删除的边重新添加到edges中
82
- const { foldNodes, foldEdges, foldNodeEdgeConfig, foldColumnEdgeConfig } =
83
- foldInfo;
84
-
85
- // 将添加的边剔除
86
- // remove table -> table edge & column -> column edge
87
- const edgesToRemove = [foldNodeEdgeConfig.id, foldColumnEdgeConfig.id];
88
- const pureEdgesConfig = _.reject(
89
- this.lineageManager.parsedData.edges,
90
- (obj) => edgesToRemove.includes(obj.id),
91
- );
92
-
93
- // 将隐藏的节点重新显示出来
94
- foldNodes.forEach((node) => {
95
- node.canBeFold = false;
96
- });
97
-
98
- // 将隐藏的边重新显示出来
99
- foldEdges.forEach((edge) => {
100
- edge.canBeFold = false;
101
- if (
102
- this.isFoldChecked &&
103
- edge.inFoldLink &&
104
- edge.data.relationTypeCode.includes('Column')
105
- ) {
106
- edge.style.fill = '#0000';
107
- edge.style.stroke = '#FFB01F';
108
- }
109
-
110
- // 合并链路关闭
111
- if (!this.isFoldChecked) {
112
- edge.type = LINEAGE_EDGE;
113
- }
114
- });
115
-
116
- this.lineageManager.setData({
117
- ...this.lineageManager.parsedData,
118
- edges: pureEdgesConfig,
119
- });
120
- }
121
-
122
- foldNodes() {
123
- if (!this.lineageManager) return;
124
-
125
- const { nodes, edges } = this.lineageManager.parsedData;
126
-
127
- // 获取所有可以被合并的node
128
- const foldNodes = getFoldNodes<TTableData, TColumnData>(nodes, edges, this.lineageManager);
129
-
130
- // 根据originEdgeMap中的上下游关系,将可合并的node分组,最终生成一个二维数组
131
- const foldNodesGroup = getFoldNodesGroup<TTableData, TColumnData>(foldNodes, edges);
132
-
133
- // 根据foldNodeGroups,生成一个可收起的节点集合"foldMap"
134
- const foldNodesGroupMap = getFoldNodesGroupMap<TTableData, TColumnData>(
135
- this.lineageManager,
136
- foldNodesGroup,
137
- edges,
138
- );
139
- this.foldNodesGroupMap = foldNodesGroupMap;
140
-
141
- for (const key of this.foldNodesGroupMap.keys()) {
142
- this.foldNodeGroup(key);
143
- }
144
- }
145
-
146
- foldNodeGroup(foldGroupKey: string, saveStatus?: boolean) {
147
- const foldInfo = this.foldNodesGroupMap.get(foldGroupKey);
148
- if (!foldInfo) return;
149
-
150
- if (saveStatus === true) {
151
- this.setFoldStatus(foldGroupKey, true);
152
- }
153
-
154
- const { foldNodes, foldEdges, foldNodeEdgeConfig, foldColumnEdgeConfig } =
155
- foldInfo;
156
-
157
- const edgesToAdd = [
158
- foldNodeEdgeConfig,
159
- foldColumnEdgeConfig,
160
- ] as IEdgeConfig[];
161
-
162
- // add table -> table edge & column -> column edge
163
- const newEdgesConfig = [
164
- ...this.lineageManager.parsedData.edges,
165
- ...edgesToAdd,
166
- ];
167
-
168
- foldNodes.forEach((node) => {
169
- node.canBeFold = true;
170
- });
171
-
172
- foldEdges.forEach((edge) => {
173
- edge.canBeFold = true;
174
- });
175
-
176
- // this.graph.setData({
177
- // ...this.lineageManager.parsedData,
178
- // edges: newEdgesConfig,
179
- // });
180
-
181
- this.lineageManager.setData({
182
- ...this.lineageManager.parsedData,
183
- edges: newEdgesConfig,
184
- });
185
-
186
- // this.lineageManager.update();
187
- }
188
-
189
- setFoldStatus(key: string, value: boolean) {
190
- return this.foldStatusMap.set(key, value);
191
- }
192
-
193
- resetFoldCheck() {
194
- this.isFoldChecked = true;
195
- }
196
- }
@@ -1,90 +0,0 @@
1
- import { Graph } from '@aloudata/ink-graph-new';
2
- import { InkLineageManager } from './LineageManager';
3
- import { IColResBase, TDataBase } from '../types';
4
-
5
- export class GraphEventManager<
6
- TTableData extends TDataBase<TColumnData>,
7
- TColumnData extends IColResBase,
8
- > {
9
- lineageManager: InkLineageManager<TTableData, TColumnData>;
10
-
11
- graph: Graph;
12
-
13
- isDragging: boolean;
14
-
15
- constructor(lineageManager: InkLineageManager<TTableData, TColumnData>) {
16
- this.lineageManager = lineageManager;
17
- }
18
-
19
- init(graph: Graph) {
20
- this.graph = graph;
21
- this.initEvents();
22
- }
23
-
24
- initEvents() {
25
- this.initGlobalEvent();
26
- }
27
-
28
- initGlobalEvent() {
29
- // 调整屏幕尺寸,触发resize
30
- const handleResizeCanvas = () => {
31
- if (this.lineageManager.canvasDomRoot) {
32
- this.graph?.canvas?.resize(
33
- this.lineageManager.canvasDomRoot.clientWidth,
34
- this.lineageManager.canvasDomRoot.clientHeight,
35
- );
36
- }
37
- };
38
-
39
- window.addEventListener('resize', handleResizeCanvas);
40
-
41
- this.graph?.canvas
42
- .addEventListener('click', (e: Event) => {
43
- // 判断当前点击对象是否为画布 | 右键菜单是否处于显示状态
44
- if (
45
- e.target === this.graph?.canvas?.document ||
46
- this.lineageManager?.rightKeyMenuManager?.contextMenuState?.visible
47
- ) {
48
- this.lineageManager?.hideContextMenu();
49
- }
50
- })
51
- .addEventListener('drag', () => {
52
- // 判断是否开始拖拽
53
- this.isDragging = true;
54
- // 判断是否滚动
55
- if (
56
- this.lineageManager?.rightKeyMenuManager?.contextMenuState?.visible
57
- ) {
58
- this.lineageManager?.hideContextMenu();
59
- }
60
- })
61
- .addEventListener('dragend', () => {
62
- // 判断是否结束拖拽
63
- this.isDragging = false;
64
- })
65
- .addEventListener('wheel', () => {
66
- // 判断是否滚动
67
- if (
68
- this.lineageManager?.rightKeyMenuManager?.contextMenuState?.visible
69
- ) {
70
- this.lineageManager?.hideContextMenu();
71
- }
72
- })
73
- .addEventListener('contextmenu', (e: Event) => {
74
- // 判断是否右键菜单,是则阻止默认事件
75
- e.preventDefault();
76
- })
77
- .addEventListener('dblclick', () => {
78
- // 双击事件,清空选中节点和相关节点
79
- this.lineageManager?.hideContextMenu();
80
- const onlyShowRelated =
81
- !!this.lineageManager?.rightKeyMenuManager?.onlyShowRelated;
82
-
83
- if (!onlyShowRelated) {
84
- this.lineageManager?.resetActiveNodes();
85
- this.lineageManager?.resetRelatedNodes();
86
- this.lineageManager?.resetHighLight();
87
- }
88
- });
89
- }
90
- }