@aloudata/ink-lineage 0.0.1-beta.1
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.
- package/package.json +27 -0
- package/src/assets/big/dataSourceTypeIcon.ts +65 -0
- package/src/assets/big/entityType.ts +1 -0
- package/src/assets/big/index.ts +5 -0
- package/src/assets/big/lineageIcon.ts +35 -0
- package/src/assets/big/tableTypeIcon.ts +17 -0
- package/src/assets/big/tipIcon.ts +1 -0
- package/src/assets/index.ts +14 -0
- package/src/components/Edges/DefaultEdge.ts +196 -0
- package/src/components/Edges/FoldEdge.ts +97 -0
- package/src/components/Edges/LineageEdge.ts +24 -0
- package/src/components/Edges/index.ts +3 -0
- package/src/components/Nodes/AssetNode.ts +438 -0
- package/src/components/Nodes/ColumnNode.ts +491 -0
- package/src/components/Nodes/CustomNode.ts +63 -0
- package/src/components/Nodes/DefaultNode.ts +74 -0
- package/src/components/Nodes/DowngradeNode.ts +115 -0
- package/src/components/Nodes/TableNode.ts +534 -0
- package/src/components/Nodes/index.ts +4 -0
- package/src/components/index.ts +2 -0
- package/src/constant/index.ts +1 -0
- package/src/constant/nodeStyle.ts +141 -0
- package/src/index.ts +6 -0
- package/src/manager/BaseManager.ts +20 -0
- package/src/manager/DataProcessor.ts +782 -0
- package/src/manager/ExpandManager.ts +93 -0
- package/src/manager/FoldLineageManager.ts +196 -0
- package/src/manager/GraphEventManager.ts +90 -0
- package/src/manager/LineageManager.ts +680 -0
- package/src/manager/RightKeyMenuManager.ts +114 -0
- package/src/manager/SearchNodeManager.ts +188 -0
- package/src/manager/ToolbarManager.ts +42 -0
- package/src/manager/index.ts +8 -0
- package/src/manager/nodeManager/AssetEventManager.ts +442 -0
- package/src/manager/nodeManager/BaseEventManager.ts +68 -0
- package/src/manager/nodeManager/ColumnEventManager.ts +467 -0
- package/src/manager/nodeManager/CustomEventManager.ts +11 -0
- package/src/manager/nodeManager/TableEventManager.ts +87 -0
- package/src/manager/nodeManager/index.ts +3 -0
- package/src/types/NodeConfig.ts +69 -0
- package/src/types/eventEnum.ts +58 -0
- package/src/types/index.ts +3 -0
- package/src/types/manager.ts +75 -0
- package/src/types/node.ts +246 -0
- package/src/utils/downgradeNode.ts +22 -0
- package/src/utils/foldNode.ts +345 -0
- package/src/utils/getIconByType.ts +104 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/node.ts +294 -0
- package/tsconfig.json +30 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const view24 =
|
|
2
|
+
"data:image/svg+xml;charset=utf-8;base64,Cjxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI1IiB2aWV3Qm94PSIwIDAgMjYgMjUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjEuNSIgeT0iMiIgd2lkdGg9IjIxIiBoZWlnaHQ9IjYiIGZpbGw9IiMxNUMzOTEiLz4KPHJlY3QgeD0iMS41IiB5PSI4IiB3aWR0aD0iMjEiIGhlaWdodD0iMTMiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8zNjkxXzEyNzAwMykiLz4KPHBhdGggZD0iTTguNSA4VjIyIiBzdHJva2U9IiM5Q0EzQUYiLz4KPHBhdGggZD0iTTE1LjUgOFYyMiIgc3Ryb2tlPSIjOUNBM0FGIi8+CjxwYXRoIGQ9Ik0yMiAxMi41TDEgMTIuNSIgc3Ryb2tlPSIjOUNBM0FGIi8+CjxwYXRoIGQ9Ik0yMiA4TDEgOCIgc3Ryb2tlPSIjMDk4ODY0Ii8+CjxwYXRoIGQ9Ik0yMiAxN0gxIiBzdHJva2U9IiM5Q0EzQUYiLz4KPHJlY3QgeD0iMS41IiB5PSIyIiB3aWR0aD0iMjEiIGhlaWdodD0iMTkuNSIgcng9IjAuODMzMzMzIiBzdHJva2U9IiM2QjcyODAiLz4KPGNpcmNsZSBjeD0iMTEuNDU0OCIgY3k9IjE5LjM2MzkiIHI9IjUuMDc3OTkiIHRyYW5zZm9ybT0icm90YXRlKC00NSAxMS40NTQ4IDE5LjM2MzkpIiBmaWxsPSJ3aGl0ZSIvPgo8Y2lyY2xlIGN4PSIyMC4xODE0IiBjeT0iMTkuMzYzOSIgcj0iNS4wNzc5OSIgdHJhbnNmb3JtPSJyb3RhdGUoLTQ1IDIwLjE4MTQgMTkuMzYzOSkiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0xMyAxOUgxOCIgc3Ryb2tlPSIjNkI3MjgwIi8+CjxjaXJjbGUgY3g9IjExLjQ1NDgiIGN5PSIxOS4zNjM5IiByPSIzLjE1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNDUgMTEuNDU0OCAxOS4zNjM5KSIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzM2OTFfMTI3MDAzKSIgc3Ryb2tlPSIjNkI3MjgwIiBzdHJva2Utd2lkdGg9IjAuOSIvPgo8Y2lyY2xlIGN4PSIyMC4zNjQyIiBjeT0iMTkuMzYzOSIgcj0iMy4xNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTQ1IDIwLjM2NDIgMTkuMzYzOSkiIGZpbGw9InVybCgjcGFpbnQyX2xpbmVhcl8zNjkxXzEyNzAwMykiIHN0cm9rZT0iIzZCNzI4MCIgc3Ryb2tlLXdpZHRoPSIwLjkiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8zNjkxXzEyNzAwMyIgeDE9IjEzLjUiIHkxPSI4IiB4Mj0iMTMuNSIgeTI9IjE1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNCMEIwQjAiLz4KPHN0b3Agb2Zmc2V0PSIwLjAwMDEiIHN0b3AtY29sb3I9IiNFNkU2RTYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSJ3aGl0ZSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfMzY5MV8xMjcwMDMiIHgxPSIxMS40NTQ4IiB5MT0iMTYuMjEzOSIgeDI9IjExLjQ1NDgiIHkyPSIyMi41MTM5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGMEZCRkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjOEVERUY3Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQyX2xpbmVhcl8zNjkxXzEyNzAwMyIgeDE9IjIwLjM2NDIiIHkxPSIxNi4yMTM5IiB4Mj0iMjAuMzY0MiIgeTI9IjIyLjUxMzkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0YwRkJGRiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4RURFRjciLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4="
|
|
3
|
+
|
|
4
|
+
export const taskSql =
|
|
5
|
+
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTExLjk0NDQgMC44MzMwMDhIMi41VjE5LjE2NjNIMTYuNjY2N1Y1LjY4NTk1TDExLjk0NDQgMC44MzMwMDhaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMTY4MzRfMTI3NDQ1KSIvPgo8cGF0aCBkPSJNMTIuNSAwLjgzMzAwOFY1LjgzMzAxSDE3LjA4MzMiIHN0cm9rZT0iIzlDQTNBRiIgc3Ryb2tlLXdpZHRoPSIwLjgzMzMzMyIvPgo8cGF0aCBkPSJNMTIuMDY3OSAwLjgzMzAwOEgzLjYxMTA3QzMuMjI3NTQgMC44MzMwMDggMi45MTY2MyAxLjE0MzkyIDIuOTE2NjMgMS41Mjc0NVYxOC40NzE5QzIuOTE2NjMgMTguODU1NCAzLjIyNzU0IDE5LjE2NjMgMy42MTEwNyAxOS4xNjYzSDE2LjM4ODhDMTYuNzcyNCAxOS4xNjYzIDE3LjA4MzMgMTguODU1NCAxNy4wODMzIDE4LjQ3MTlWNS45NjgwNkMxNy4wODMzIDUuNzg3MTYgMTcuMDEyNyA1LjYxMzQxIDE2Ljg4NjYgNS40ODM3NkwxMi41NjU2IDEuMDQzMTVDMTIuNDM0OCAwLjkwODggMTIuMjU1MyAwLjgzMzAwOCAxMi4wNjc5IDAuODMzMDA4WiIgc3Ryb2tlPSIjNkI3MjgwIiBzdHJva2Utd2lkdGg9IjAuODMzMzMzIi8+CjxyZWN0IHg9IjAuODMzMzc0IiB5PSI4LjMzMzAxIiB3aWR0aD0iMTguMzMzMyIgaGVpZ2h0PSI4LjMzMzMzIiByeD0iMC44MzMzMzMiIGZpbGw9IiNFM0E1NUIiIHN0cm9rZT0iI0MyNzIxMyIgc3Ryb2tlLXdpZHRoPSIwLjgzMzMzMyIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEzLjIzNDUgMTQuNjA5NlY5LjgzMzAxSDEzLjk2OTNWMTQuMjQyMkgxNS40MzlWMTQuOTc3SDEzLjYwMTlDMTMuMzk5IDE0Ljk3NyAxMy4yMzQ1IDE0LjgxMjUgMTMuMjM0NSAxNC42MDk2Wk01LjE1MDUxIDExLjMwMjlDNS4xNTA1MSAxMC40OTEyIDUuODA4NTMgOS44MzMxOSA2LjYyMDI0IDkuODMzMTlDNy40MzE5NCA5LjgzMzE5IDguMDg5OTYgMTAuNDkxMiA4LjA4OTk2IDExLjMwMjlINy4zNTUxQzcuMzU1MSAxMC44OTcxIDcuMDI2MDkgMTAuNTY4MSA2LjYyMDI0IDEwLjU2ODFDNi4yMTQzOCAxMC41NjgxIDUuODg1MzcgMTAuODk3MSA1Ljg4NTM3IDExLjMwMjlDNS44ODUzNyAxMS43MDg4IDYuMjE0MzggMTIuMDM3OCA2LjYyMDI0IDEyLjAzNzhDNy40MzE5NCAxMi4wMzc4IDguMDg5OTYgMTIuNjk1OCA4LjA4OTk2IDEzLjUwNzVDOC4wODk5NiAxNC4zMTkyIDcuNDMxOTQgMTQuOTc3MiA2LjYyMDI0IDE0Ljk3NzJDNS44MDg1MyAxNC45NzcyIDUuMTUwNTEgMTQuMzE5MiA1LjE1MDUxIDEzLjUwNzVINS44ODUzN0M1Ljg4NTM3IDEzLjkxMzQgNi4yMTQzOCAxNC4yNDI0IDYuNjIwMjQgMTQuMjQyNEM3LjAyNjA5IDE0LjI0MjQgNy4zNTUxIDEzLjkxMzQgNy4zNTUxIDEzLjUwNzVDNy4zNTUxIDEzLjEwMTcgNy4wMjYwOSAxMi43NzI2IDYuNjIwMjQgMTIuNzcyNkM1LjgwODUzIDEyLjc3MjYgNS4xNTA1MSAxMi4xMTQ2IDUuMTUwNTEgMTEuMzAyOVpNMTEuMDMwMiAxMy41MDczVjExLjMwMjdDMTEuMDMwMiAxMC44OTY5IDEwLjcwMTIgMTAuNTY3OSAxMC4yOTU0IDEwLjU2NzlDOS44ODk1IDEwLjU2NzkgOS41NjA0OSAxMC44OTY5IDkuNTYwNDkgMTEuMzAyN1YxMy41MDczQzkuNTYwNDkgMTMuOTEzMiA5Ljg4OTUgMTQuMjQyMiAxMC4yOTU0IDE0LjI0MjJDMTAuNzAxMiAxNC4yNDIyIDExLjAzMDIgMTMuOTEzMiAxMS4wMzAyIDEzLjUwNzNaTTEwLjI5NTQgOS44MzMwMUM5LjQ4MzY1IDkuODMzMDEgOC44MjU2MyAxMC40OTEgOC44MjU2MyAxMS4zMDI3VjEzLjUwNzNDOC44MjU2MyAxNC4zMTkgOS40ODM2NSAxNC45NzcgMTAuMjk1NCAxNC45NzdDMTAuNTY3OSAxNC45NzcgMTAuODIzIDE0LjkwMjkgMTEuMDQxOCAxNC43NzM2TDExLjUwNSAxNS4yMzY4TDEyLjAyNDYgMTQuNzE3MkwxMS41NjE1IDE0LjI1NDFDMTEuNjkwOCAxNC4wMzUyIDExLjc2NTEgMTMuNzc5OSAxMS43NjUxIDEzLjUwNzNWMTEuMzAyN0MxMS43NjUxIDEwLjQ5MSAxMS4xMDcxIDkuODMzMDEgMTAuMjk1NCA5LjgzMzAxWiIgZmlsbD0id2hpdGUiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xNjgzNF8xMjc0NDUiIHgxPSIxMC42NDU4IiB5MT0iLTAuMDAwMzI1NDYiIHgyPSIxMC42NDU4IiB5Mj0iOS45OTk2NyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRTZFNkU2Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0id2hpdGUiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K';
|
|
6
|
+
|
|
7
|
+
export const tableTemporary =
|
|
8
|
+
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjUgNUMyLjUgNC4xNzE1NyAzLjE3MTU3IDMuNSA0IDMuNUgyMEMyMC44Mjg0IDMuNSAyMS41IDQuMTcxNTcgMjEuNSA1VjEzLjg3MjJDMjEuMTk2NiAxMy41NzMgMjAuODYxNCAxMy4zMDU4IDIwLjUgMTMuMDc2MlY5LjVIMTUuNVYxMi40MTUxQzE1LjE1MiAxMi41MjM1IDE0LjgxNzYgMTIuNjYyOCAxNC41IDEyLjgyOTdWOS41SDkuNVYxNEgxMi45NDg1QzEyLjkwNTcgMTQuMDQ0OCAxMi44NjM2IDE0LjA5MDIgMTIuODIyMiAxNC4xMzYzQzEyLjU4MjEgMTQuNDAzNiAxMi4zNjU2IDE0LjY5MjYgMTIuMTc2MSAxNUg5LjVWMTkuNUgxMS40NDA5QzExLjUyMDcgMTkuODQ1NyAxMS42MzA0IDIwLjE4IDExLjc2NzIgMjAuNUg0QzMuMTcxNTcgMjAuNSAyLjUgMTkuODI4NCAyLjUgMTlWNVpNNCA0LjVDMy43MjM4NiA0LjUgMy41IDQuNzIzODYgMy41IDVWOC41SDIwLjVWNUMyMC41IDQuNzIzODYgMjAuMjc2MSA0LjUgMjAgNC41SDRaTTMuNSAxNFY5LjVIOC41VjE0SDMuNVpNMy41IDE5VjE1SDguNVYxOS41SDRDMy43MjM4NiAxOS41IDMuNSAxOS4yNzYxIDMuNSAxOVoiIGZpbGw9ImJsYWNrIi8+CjxwYXRoIGQ9Ik0yMS41NzM4IDE4LjA3NjRDMjEuNTczOCAyMC40MTcxIDE5LjY1NDQgMjIuMzE0NiAxNy4yODY5IDIyLjMxNDZDMTYuNTE5MSAyMi4zMTQ2IDE1Ljc5ODUgMjIuMTE1MSAxNS4xNzUyIDIxLjc2NTZDMTQuMDc3OCAyMS4xNTAzIDEzLjI4MiAyMC4wNzAzIDEzLjA2MTYgMTguNzk2MkMxMy4wMjExIDE4LjU2MjIgMTMgMTguMzIxNyAxMyAxOC4wNzY0QzEzIDE2Ljk4ODEgMTMuNDE0OSAxNS45OTU3IDE0LjA5NjggMTUuMjQ1MUMxNC44ODE2IDE0LjM4MTQgMTYuMDIwMSAxMy44MzgxIDE3LjI4NjkgMTMuODM4MUMxOS42NTQ0IDEzLjgzODEgMjEuNTczOCAxNS43MzU3IDIxLjU3MzggMTguMDc2NFoiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTkuMDAxOSAxOC4wNzY0SDE3LjI4NzFWMTYuMzgxMSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=';
|
|
9
|
+
|
|
10
|
+
export const table24 =
|
|
11
|
+
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxyZWN0IHg9IjEuNSIgeT0iMiIgd2lkdGg9IjIxIiBoZWlnaHQ9IjYiIGZpbGw9IiMxNUMzOTEiLz4KPHJlY3QgeD0iMS41IiB5PSI4IiB3aWR0aD0iMjEiIGhlaWdodD0iMTMiIGZpbGw9InVybCgjcGF0dGVybjApIi8+CjxwYXRoIGQ9Ik04LjUgOFYyMiIgc3Ryb2tlPSIjOUNBM0FGIi8+CjxwYXRoIGQ9Ik0xNS41IDhWMjIiIHN0cm9rZT0iIzlDQTNBRiIvPgo8cGF0aCBkPSJNMjIuNSAxMi41TDEuNSAxMi41IiBzdHJva2U9IiM5Q0EzQUYiLz4KPHBhdGggZD0iTTIyLjUgOEwxLjUgOCIgc3Ryb2tlPSIjMDk4ODY0Ii8+CjxwYXRoIGQ9Ik0yMi41IDE3SDEuNSIgc3Ryb2tlPSIjOUNBM0FGIi8+CjxyZWN0IHg9IjEuNSIgeT0iMiIgd2lkdGg9IjIxIiBoZWlnaHQ9IjE5LjUiIHJ4PSIwLjgzMzMzMyIgc3Ryb2tlPSIjNkI3MjgwIi8+CjxkZWZzPgo8cGF0dGVybiBpZD0icGF0dGVybjAiIHBhdHRlcm5Db250ZW50VW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4KPHVzZSB4bGluazpocmVmPSIjaW1hZ2UwXzE5MThfNTgzNzciIHRyYW5zZm9ybT0ibWF0cml4KDAuMDE1ODczIDAgMCAwLjAyNTY0MSAtMC4wMDc5MzY1MSAwKSIvPgo8L3BhdHRlcm4+CjxpbWFnZSBpZD0iaW1hZ2UwXzE5MThfNTgzNzciIHdpZHRoPSI2NCIgaGVpZ2h0PSIzOSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUFuQ0FZQUFBQy9tRTQ4QUFBQUNYQklXWE1BQUNFNEFBQWhPQUZGbGpGZ0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQVZHU1VSQlZIZ0JsVmdMY3VVNENBVEg5OTY5Ymk0UjV0a2xsS2JWeUk2cnBwd25JVDROTlBLNGZaN3Y3Ky8vZm41Ky92LzhHWjkvSGhGMkhFZDgxdng2Zng2LzVLNTFkNzlsVER6WDNpV2I3eUZ2Y0xiSXd4cnJMSDRNV2FsUDZGaDBYZnRYTE1OM3kvM3I3QW5PRjRYWHY0L3hzZVdMREFSc1lEQmxQV1ZSUHozaFloRWRCSHMrL0prQTJ5K0lKZWlCUHZwM3I0OVlwdTdVdndDQXYrRzlHR1kwVVk2Q0NUS2FNczRCZDJDQUwyZ0x6emxXWDRLR1o0WGNid1Y4MEVuVVBKRzZoQUMxNnNrYWVMN1p3UVJwR2pVS0ZrdWExaERNRVBweHo5UGZQRE1TaXVCajhtYWxKd0JaeXFwa01QWWdweDJNeEpDYi9XdUVXZXFBUlZrZEFHcEFKZ1BQSmgrQlRnUW8wTC94UnB1cEowNEtrRXVtbEV2MkZ4dk52VFQ4SVp3bEEvQTM5cXdUT0U1eWhlQWNPRWRrbCsyZ1R0VjZ0eHhXd0dKRUhKYkV4VDM1OWZXbHVPRHQ4NG9Qd05mcEp4RnlDZ1cyQmR0SkFPNHhBVUxzUkJtSFVHTFdPWXJ5cVRmTEZwazdBWWZxS3FNVW5GWGoxMFhHT2ZCTTRuQzVKb2Fud0N4NTdDTUlxaWdacE1NZVRSa0NJZlZpVUlvOEhjWmRJU3g4Q3hES21sRkxjQlhrKzJ5Y1EwRkdIamtCaVE4WkdFRUxJcU13S2xuSzNES0J1T3Z5Y21SUUdRd090VzRaOHloN29rSXFPMHZGZVNzRUJ6UDdQczRXZEhNZkFhTjNFSkFwR3dUSU1pV3NFdW1zdEhIVEswbmhsczF6YUtCVUFJMGdITjVUK2ZVSHNMeXhNUVNpZVlLRDlmVkdPVlhOUTc4dFZZREJpa2t1U1huME1STXBPZUE2ckhyZTF4aytleCtEc05xSHkxeTNKaWdub29LQXJBR1ZMenZCU1NONUUrZExTNTdzV0pjOTRkRFNMcmhuMEpjN2ZmaXhzM04yNkM4QkF5Qkd0bWNGQ0c0b25EQXJJQmVqZnZGaElOdlJpRUVSVHhUSFVoOEhxQUEycXg4NFRHd3BoL3NJSXB4aDBPY3Q4UWJnUE0rTFJHN2dockxDQ2VJckxNa2tBd3lVSFovUjB4RThRMnNsWTlESGFDUDdGL1VvWXJQVWd3a29HWU5XU1lCdkFQaTduL3NSMXJJTXNaU1F1ZVZOOEEzSnBRMWc5Rmw5cU0vcmxiYUFFREErQlFmd2hLazNRVnRKRDN2VEtWTVk0SklCMW1XLzVaNi9aeVVFZmIxQkVPNHJTYlk4NVhBQjg0WjhmUjJOM3Q0RURXYXQvYzVldzdtUHlrSHBCSkN6bGpmSkJFcjAvZ0l1M2dxeEdxRUtzU0lXQW1XUXFJS01PY0NkN3MzdTlYK0JDQWk4T3l5M1FpQkJkS2lVWVlKZy9kU1k4Z2srazV0NmFIOG1MZW9Vc2NrQlR3cUowUmRGSmxxSXh4eVJIT3NKWHk5ajZtNVNQc1BObGc4MTljMnd0RkR1bFRHNGdqZ3ppd3RJSnVyem1HV1lMTXNIQUxhTkNlNGdtYVdraGErZ2V2MGZJZGk4RjJYa2VNQjB2M2Q3dGxsM2VnZnRPYTNaSC9hdDJYT2hvOGdldEJDYnc3bVBseVIxemw0NDZjSXVrMnVJczI0MUVLV3pzeWxqTzJpaEo0RjNXV1ZEbldFT2hyT3psTzRmYkRDb0pzNVAyV09qd0lRaWRGUXFGR3RkdG5hT2R1V3V3T2pLWFAxR0hmZHpDQ1g4dU8zTHE4dXdrdDA1anVkUXRqdXpxd0tXN2RiblJXaFhLbDBKZHNBOGtSeTNnYkt4cTY0bllGaDIyMDZuclU0cjF1ZkRxa1Q5NFhkWEFlaGs1N2pSdW0xOGZsTnA4OEVLZUdMeXB3QzdwNnVXM1pqTmQyeCtzN3phZS9UcklFVzdIc3UxdjQ2L0hRbHg5anNPZVpvRWlqczZtMFd1dXdoMWluaGs3UkR2cXVvcG8vSHdOanFQZmxtanE2MmEwL1R6aEdMWHR5ajdwaHhkNk1UMUp6MVA3ZEQ1TngrdWdIaGhUTDEzanJ4cGw2ZE1tZERIWjd0eld3Q1B6VUZsbEM4d3ZLOGM2ZHBGVlpTUzZ4NVZMVy9BS1hzSE9mQ0VKdjdlVllBMHR0SGJFYUM2YUhtenZ4dTdiZzJwdjUwQ3ltZzBzcnltZ252VEZzb25QTU9Fdk9Pa1Z2OGhGQ3Rsdk02T2RSUERiRTlvS2tNZFdIeG05NmdreWVTZWpVRFh0enUwZDhaMmJkSlZVamNtelhvdzM4clB2LzhCVFE1UlZEbE9WNXNBQUFBQVNVVk9SSzVDWUlJPSIvPgo8L2RlZnM+Cjwvc3ZnPgo=';
|
|
12
|
+
|
|
13
|
+
export const custom24 =
|
|
14
|
+
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxwYXRoIGQ9Ik0xNC4zMzMzIDFIM1YyM0gyMFY2LjgyMzUzTDE0LjMzMzMgMVoiIGZpbGw9InVybCgjcGF0dGVybjApIi8+CjxwYXRoIGQ9Ik02IDEwSDEyIiBzdHJva2U9IiM5Q0EzQUYiLz4KPHBhdGggZD0iTTYgMTNIMTIiIHN0cm9rZT0iIzlDQTNBRiIvPgo8cGF0aCBkPSJNMTUgMVY3SDIwLjUiIHN0cm9rZT0iIzlDQTNBRiIvPgo8cGF0aCBkPSJNMTQuNDgxNSAxSDQuMzMzMzNDMy44NzMxIDEgMy41IDEuMzczMSAzLjUgMS44MzMzM1YyMi4xNjY3QzMuNSAyMi42MjY5IDMuODczMSAyMyA0LjMzMzMzIDIzSDE5LjY2NjdDMjAuMTI2OSAyMyAyMC41IDIyLjYyNjkgMjAuNSAyMi4xNjY3VjcuMTYyMDZDMjAuNSA2Ljk0NDk5IDIwLjQxNTMgNi43MzY0OCAyMC4yNjM5IDYuNTgwOTFMMTUuMDc4NyAxLjI1MjE4QzE0LjkyMTggMS4wOTA5NSAxNC43MDY0IDEgMTQuNDgxNSAxWiIgc3Ryb2tlPSIjNkI3MjgwIi8+CjxwYXRoIGQ9Ik0yMC4xOTI0IDEwTDIzLjAyMDggMTIuODI4NEwyMS44NDkyIDE0TDE1Ljk4OSAxOS44NjAyTDEzLjE2MDYgMTcuMDMxOEwxOSAxMS4xOTI0TDIwLjE5MjQgMTBaIiBmaWxsPSIjREVFOUZFIi8+CjxwYXRoIGQ9Ik0xNS45ODkgMTkuODYwMkwxMy4xNjA2IDE3LjAzMThNMTUuOTg5IDE5Ljg2MDJMMTIuNDE0MiAyMC42MDY2TDEzLjE2MDYgMTcuMDMxOE0xNS45ODkgMTkuODYwMkwyMS44NDkyIDE0TTEzLjE2MDYgMTcuMDMxOEwxOSAxMS4xOTI0TTE5IDExLjE5MjRMMjAuMTkyNCAxMEwyMy4wMjA4IDEyLjgyODRMMjEuODQ5MiAxNE0xOSAxMS4xOTI0TDIxLjg0OTIgMTQiIHN0cm9rZT0iIzRCNTU2MyIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8ZGVmcz4KPHBhdHRlcm4gaWQ9InBhdHRlcm4wIiBwYXR0ZXJuQ29udGVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+Cjx1c2UgeGxpbms6aHJlZj0iI2ltYWdlMF8xOTE4XzU4NDE0IiB0cmFuc2Zvcm09InNjYWxlKDAuMDI5NDExOCAwLjAyMjcyNzMpIi8+CjwvcGF0dGVybj4KPGltYWdlIGlkPSJpbWFnZTBfMTkxOF81ODQxNCIgd2lkdGg9IjM0IiBoZWlnaHQ9IjQ0IiB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNJQUFBQXNDQVlBQUFBQVRXcXlBQUFBQ1hCSVdYTUFBQllsQUFBV0pRRkpVaVR3QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBTnhTVVJCVkhnQnBWZE5ibU1oRExaZm8wcmR0WnR1cDFlWUkzUU9Qbk9GSGlHenJOUWZSVzBYVVpMSHdBdnd6SWNOVElvVUFjL0dmTmlmRGVIbjUrZVptY2s1eDBUay9JLzltS1pwY3ZNOGMraWpMT2lRMTExMFNHbEJGblJqdi9QOTQvMzkvUk1OdENtc2lrYkM1a1cvaWpoL1Q3SzBjZndWdXJHLzlmMmY5L2YzaDFFZ2FMd2FCNitrUG4yL3VycHlDdEFNS3Y1dWo4Zmo3eEV3L1BMeTRtSm9XbnBtT0JiaE9XUzE4WE1ZUTl0NmtML3U3dTYybGcxK2ZYMmQweVlweHFieWFqZ0JaN0hHd1J4YkFQTm9nZUczdHpmWDJyZ0JyUEpTQWlyV1NKM2crYisrVjhGTUdnOFNBU25HWDhUZWFZU1daQTAvWVF2bEQ3NVhDVHdKRXJKWXhMaEJOTDVNRkZKV21ZWTJoZnlIQm9aM3U1MUxaSk9oVU54TUErRXFkRHE2VzErbmNwajQ0K05qMXBRbE1Ta1d1WlJkb3M4YlN0QXlDeEdVQk9mNzdmWDE5ZVBOemMyV1B6OC81NmdRWllWSFdHN1lPcjJZOTBvQmVuNTdPQngrQmlET1VwYW5SSENqWUJBWWxJQzA1b20vdnI1U2h1U05MVU9hVWVsTkRYaXZMaVg1UmxURXpIQ3NsSkxJTE80Wk9hZTFLR0pZbTRkSTE4WW1wRlU4U1ZaT055NFl4Sk1WTnpPQ2kzWUswdko2eXhmckY5bCt2M2NDU01VQlNXTEpHeEZyTnVRcFhDekJLUE9sYmRDZDBvMnlUNmVSQUFDa0RDOTZ4bUg0MGp5RDhxa3pTeVh3RG1rRlRza1NMUk9Ld3dIZy9Kd0lqNjlsN044TE05WU9XbHN6aFJWaVY3Vkg4Vm9SMG55NDArazBTemNaUnJVM1IrRnVXbTlhL0U0Z1h6OUV3RXM0UFJCbmJZUkZDaHZXRnppeFJtcXlEcmI0RHhWa3cvaGozS25tVnY2T0hrWmdrb3RoTWhPcHowRGNrQ3dBRnpUa0NVOVV4clc0Y1pXeG81SUwycnBSQUhMdUpoQzBUc21OYjFXbUdYUDBhUDVOaXJKbVNKNmtCVnJ6akFZU283QjRwQmR2YnNnbFNLTGE1YWlyaFhzWjU2eHBOSzB1akpDMUZSSTV6bG5qQmpld2lJYWJ0WUNadGpkQ3FkZTRNKzhCMENwdHRqTlJ6V0JVeE1YL203WVdnQ1E3Lyswd09QTGRnaVUzNUk3TythbG9LUFJTazZsOXlZMGVKT3VrMEl5NG1odTl4WjlSMis2UzlKV2VzRHd5MGdxdkpZOGtRYTh5eW5uTEk5cW1MYnRPWG5xdHJNSHZDTm9pUEZGZHhMUytLR2hXMWJ1RWhHUUEweXJzMGlZeDF1NkJGZ2xUajJQcjltM2VWOGdSellEV05LQVdWNnkzYTFWWmU2ZlhtaGJPMXJwZURTcEMwL1BJcU9jdXlyeU5vZXdHRnBNeEp3TllVMjh5RnVLYkZPVUlRaEoxaE9CVi93OEhNOU1FTWRYSmZnQUFBQUJKUlU1RXJrSmdnZz09Ii8+CjwvZGVmcz4KPC9zdmc+Cg==';
|
|
15
|
+
|
|
16
|
+
export const column24 =
|
|
17
|
+
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxyZWN0IHg9IjEuNSIgeT0iMiIgd2lkdGg9IjIxIiBoZWlnaHQ9IjYiIGZpbGw9IiM3RkJFRjAiLz4KPHJlY3QgeD0iMS41IiB5PSI4IiB3aWR0aD0iMjEiIGhlaWdodD0iMTMiIGZpbGw9InVybCgjcGF0dGVybjApIi8+CjxwYXRoIGQ9Ik03LjUgOFYyMiIgc3Ryb2tlPSIjOUNBM0FGIi8+CjxwYXRoIGQ9Ik0xOCAxMS41SDEyIiBzdHJva2U9IiM5Q0EzQUYiLz4KPHBhdGggZD0iTTIyIDhMMSA4IiBzdHJva2U9IiM0ODgxQUYiLz4KPHBhdGggZD0iTTE4IDE3LjVIMTIiIHN0cm9rZT0iIzlDQTNBRiIvPgo8cGF0aCBkPSJNMTggMTQuNUgxMiIgc3Ryb2tlPSIjOUNBM0FGIi8+CjxyZWN0IHg9IjEuNSIgeT0iMiIgd2lkdGg9IjIxIiBoZWlnaHQ9IjE5LjUiIHJ4PSIwLjgzMzMzMyIgc3Ryb2tlPSIjNkI3MjgwIi8+CjxkZWZzPgo8cGF0dGVybiBpZD0icGF0dGVybjAiIHBhdHRlcm5Db250ZW50VW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4KPHVzZSB4bGluazpocmVmPSIjaW1hZ2UwXzE5MThfNTgzODYiIHRyYW5zZm9ybT0ibWF0cml4KDAuMDE1ODczIDAgMCAwLjAyNTY0MSAtMC4wMDc5MzY1MSAwKSIvPgo8L3BhdHRlcm4+CjxpbWFnZSBpZD0iaW1hZ2UwXzE5MThfNTgzODYiIHdpZHRoPSI2NCIgaGVpZ2h0PSIzOSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUFuQ0FZQUFBQy9tRTQ4QUFBQUNYQklXWE1BQUNFNEFBQWhPQUZGbGpGZ0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQVZHU1VSQlZIZ0JsVmdMY3VVNENBVEg5OTY5Ymk0UjV0a2xsS2JWeUk2cnBwd25JVDROTlBLNGZaN3Y3Ky8vZm41Ky92LzhHWjkvSGhGMkhFZDgxdng2Zng2LzVLNTFkNzlsVER6WDNpV2I3eUZ2Y0xiSXd4cnJMSDRNV2FsUDZGaDBYZnRYTE1OM3kvM3I3QW5PRjRYWHY0L3hzZVdMREFSc1lEQmxQV1ZSUHozaFloRWRCSHMrL0prQTJ5K0lKZWlCUHZwM3I0OVlwdTdVdndDQXYrRzlHR1kwVVk2Q0NUS2FNczRCZDJDQUwyZ0x6emxXWDRLR1o0WGNid1Y4MEVuVVBKRzZoQUMxNnNrYWVMN1p3UVJwR2pVS0ZrdWExaERNRVBweHo5UGZQRE1TaXVCajhtYWxKd0JaeXFwa01QWWdweDJNeEpDYi9XdUVXZXFBUlZrZEFHcEFKZ1BQSmgrQlRnUW8wTC94UnB1cEowNEtrRXVtbEV2MkZ4dk52VFQ4SVp3bEEvQTM5cXdUT0U1eWhlQWNPRWRrbCsyZ1R0VjZ0eHhXd0dKRUhKYkV4VDM1OWZXbHVPRHQ4NG9Qd05mcEp4RnlDZ1cyQmR0SkFPNHhBVUxzUkJtSFVHTFdPWXJ5cVRmTEZwazdBWWZxS3FNVW5GWGoxMFhHT2ZCTTRuQzVKb2Fud0N4NTdDTUlxaWdacE1NZVRSa0NJZlZpVUlvOEhjWmRJU3g4Q3hES21sRkxjQlhrKzJ5Y1EwRkdIamtCaVE4WkdFRUxJcU13S2xuSzNES0J1T3Z5Y21SUUdRd090VzRaOHloN29rSXFPMHZGZVNzRUJ6UDdQczRXZEhNZkFhTjNFSkFwR3dUSU1pV3NFdW1zdEhIVEswbmhsczF6YUtCVUFJMGdITjVUK2ZVSHNMeXhNUVNpZVlLRDlmVkdPVlhOUTc4dFZZREJpa2t1U1huME1STXBPZUE2ckhyZTF4aytleCtEc05xSHkxeTNKaWdub29LQXJBR1ZMenZCU1NONUUrZExTNTdzV0pjOTRkRFNMcmhuMEpjN2ZmaXhzM04yNkM4QkF5Qkd0bWNGQ0c0b25EQXJJQmVqZnZGaElOdlJpRUVSVHhUSFVoOEhxQUEycXg4NFRHd3BoL3NJSXB4aDBPY3Q4UWJnUE0rTFJHN2dockxDQ2VJckxNa2tBd3lVSFovUjB4RThRMnNsWTlESGFDUDdGL1VvWXJQVWd3a29HWU5XU1lCdkFQaTduL3NSMXJJTXNaU1F1ZVZOOEEzSnBRMWc5Rmw5cU0vcmxiYUFFREErQlFmd2hLazNRVnRKRDN2VEtWTVk0SklCMW1XLzVaNi9aeVVFZmIxQkVPNHJTYlk4NVhBQjg0WjhmUjJOM3Q0RURXYXQvYzVldzdtUHlrSHBCSkN6bGpmSkJFcjAvZ0l1M2dxeEdxRUtzU0lXQW1XUXFJS01PY0NkN3MzdTlYK0JDQWk4T3l5M1FpQkJkS2lVWVlKZy9kU1k4Z2srazV0NmFIOG1MZW9Vc2NrQlR3cUowUmRGSmxxSXh4eVJIT3NKWHk5ajZtNVNQc1BObGc4MTljMnd0RkR1bFRHNGdqZ3ppd3RJSnVyem1HV1lMTXNIQUxhTkNlNGdtYVdraGErZ2V2MGZJZGk4RjJYa2VNQjB2M2Q3dGxsM2VnZnRPYTNaSC9hdDJYT2hvOGdldEJDYnc3bVBseVIxemw0NDZjSXVrMnVJczI0MUVLV3pzeWxqTzJpaEo0RjNXV1ZEbldFT2hyT3psTzRmYkRDb0pzNVAyV09qd0lRaWRGUXFGR3RkdG5hT2R1V3V3T2pLWFAxR0hmZHpDQ1g4dU8zTHE4dXdrdDA1anVkUXRqdXpxd0tXN2RiblJXaFhLbDBKZHNBOGtSeTNnYkt4cTY0bllGaDIyMDZuclU0cjF1ZkRxa1Q5NFhkWEFlaGs1N2pSdW0xOGZsTnA4OEVLZUdMeXB3QzdwNnVXM1pqTmQyeCtzN3phZS9UcklFVzdIc3UxdjQ2L0hRbHg5anNPZVpvRWlqczZtMFd1dXdoMWluaGs3UkR2cXVvcG8vSHdOanFQZmxtanE2MmEwL1R6aEdMWHR5ajdwaHhkNk1UMUp6MVA3ZEQ1TngrdWdIaGhUTDEzanJ4cGw2ZE1tZERIWjd0eld3Q1B6VUZsbEM4d3ZLOGM2ZHBGVlpTUzZ4NVZMVy9BS1hzSE9mQ0VKdjdlVllBMHR0SGJFYUM2YUhtenZ4dTdiZzJwdjUwQ3ltZzBzcnltZ252VEZzb25QTU9Fdk9Pa1Z2OGhGQ3Rsdk02T2RSUERiRTlvS2tNZFdIeG05NmdreWVTZWpVRFh0enUwZDhaMmJkSlZVamNtelhvdzM4clB2LzhCVFE1UlZEbE9WNXNBQUFBQVNVVk9SSzVDWUlJPSIvPgo8L2RlZnM+Cjwvc3ZnPgo=';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const hotspot = "data:image/svg+xml;charset=utf-8;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTguNDc5MDUgMTguMzMzNEg4LjIyOTE5QzcuNDI0MTkgMTguMDY1IDYuNjc5MzcgMTcuNzM3MyA2LjAxNTYyIDE3LjM1OTVDNS42Nzg5MyAxNy4xNjg3IDUuMzU0MTcgMTYuOTU3NSA1LjA0MzEzIDE2LjcyNzJDNC43NDI1IDE2LjUwNDUgNC40NTgyOSAxNi4yNjA1IDQuMTkyNzEgMTUuOTk3QzQuMDYzMzcgMTUuODY4IDMuOTM5MzMgMTUuNzMzOSAzLjgyMDkgMTUuNTk0OUMzLjcwNDAxIDE1LjQ1NzYgMy41OTMxOSAxNS4zMTUyIDMuNDg4NzYgMTUuMTY4MkMzLjM4NTI2IDE1LjAyMjIgMy4yODg2OSAxNC44NzE1IDMuMTk5MzYgMTQuNzE2NkMzLjExMDI5IDE0LjU2MTkgMy4wMjg5OCAxNC40MDI4IDIuOTU1NzIgMTQuMjQwMUMyLjgwNzI4IDEzLjkxMDIgMi42OTQwOCAxMy41NjU2IDIuNjE3OTkgMTMuMjEyQzIuNTc4OSAxMy4wMjk4IDIuNTQ5NTMgMTIuODQ1NiAyLjUzIDEyLjY2MDNDMi41MDk5NCAxMi40Njg2IDIuNDk5OTMgMTIuMjc2MSAyLjUgMTIuMDgzM0MyLjUgMTEuODk2OSAyLjUwNTk4IDExLjcxMjggMi41MTc3OCAxMS41MzYzQzIuNTI4OTggMTEuMzY2NyAyLjU0NjI2IDExLjE5NzYgMi41Njk1NiAxMS4wMjkyQzIuNTkxNDcgMTAuODcxNiAyLjYxOTM0IDEwLjcxNSAyLjY1MzEzIDEwLjU1OTVDMi42ODUwNSAxMC40MTMxIDIuNzIyNzggMTAuMjY3OSAyLjc2NjIzIDEwLjEyNDVDMi44MDc1NyA5Ljk4ODI5IDIuODU0MzkgOS44NTM4MSAyLjkwNjU5IDkuNzIxMzhDMi45NTY2OCA5LjU5NDYyIDMuMDExODUgOS40Njk5NCAzLjA3MTk5IDkuMzQ3NjNDMy4xMzAxNSA5LjIyOTUyIDMuMTkyOTIgOS4xMTM3MiAzLjI2MDE0IDkuMDAwNTFDMy4zMjU3MiA4Ljg5MDI3IDMuMzk1MzIgOC43ODI0NyAzLjQ2ODgxIDguNjc3MzRDMy42MTI2NCA4LjQ3MjMzIDMuNzY5NTggOC4yNzY4NSAzLjkzODY3IDguMDkyMTJDNC4wOTU4MSA3LjkxOTQzIDQuMjY3NSA3Ljc0ODggNC40NjM1NSA3LjU3MDQ5QzQuODI3ODEgNy4yMzkxOCA1LjIyMzU3IDYuOTMwNjMgNS42MDYyOSA2LjYzMjI2QzUuOTY2NTUgNi4zNTEzOSA2LjMzOTA4IDYuMDYwOTcgNi42ODYyOSA1Ljc1MDlDNi44NzMyOCA1LjU4NDAzIDcuMDM4MTEgNS40MjQ5MyA3LjE5MDE5IDUuMjY0NzNDNy4zNTM1OSA1LjA5MzUxIDcuNTA3MTMgNC45MTMxNCA3LjY1MDA2IDQuNzI0NDlDNy45NTQ3NiA0LjMyMzkxIDguMTk5ODkgMy44ODEzNCA4LjM3NzgyIDMuNDEwNTVDOC40NzY5NyAzLjE0NzAxIDguNTU2NTEgMi44NzY1IDguNjE1NzkgMi42MDEyNEM4LjY4MTcgMi4yOTMxMyA4LjcyNjUzIDEuOTgwODkgOC43NDk5OSAxLjY2NjY5TDguNzUwNTEgMS42NjY4NEM4Ljc2NjIgMS42NzE4MSA4Ljg1MTMzIDEuNjk5MjcgOC45ODY2MyAxLjc1MTQ2QzkuMTIzMjQgMS44MDQxNCA5LjM0MDU3IDEuODkzNTggOS42MDAwMyAyLjAyMDQ2QzkuODkwNzEgMi4xNjI1NSAxMC4xNzMgMi4zMjEyOCAxMC40NDU0IDIuNDk1ODVDMTAuNzc0IDIuNzA1ODUgMTEuMDg1OCAyLjk0MTE5IDExLjM3NzggMy4xOTk3QzEyLjA5NiAzLjgzODc0IDEyLjYxNjUgNC41NzI3MyAxMi45MjQ3IDUuMzgxM0MxMy4wMTQzIDUuNjE2NTIgMTMuMDg2MSA1Ljg1ODEyIDEzLjEzOTYgNi4xMDQwNkMxMy4xOTY1IDYuMzY3MjggMTMuMjMzMyA2LjYzNDQ2IDEzLjI0OTYgNi45MDMyN0MxMy4yNjY5IDcuMTk2MDEgMTMuMjYyNSA3LjQ4OTY0IDEzLjIzNjUgNy43ODE3M0MxMy4yMDczIDguMTA1MDQgMTMuMTU1NyA4LjQyNTk1IDEzLjA4MjIgOC43NDIxNkMxMy4yMTc4IDguNjMyNDEgMTMuMzQ2MyA4LjUxNDI1IDEzLjQ2NyA4LjM4ODM4QzEzLjYwMSA4LjI1MTUxIDEzLjczMzYgOC4xMDI2NyAxMy44NjEzIDcuOTQ2MTdDMTQuMDIyOCA3Ljc0NzkgMTQuMTczNiA3LjU0MTI1IDE0LjMxMzMgNy4zMjcwNkwxNC4zMTM2IDcuMzI3MjVDMTQuMzMyIDcuMzQyMDQgMTQuNTAwOCA3LjQ3ODc1IDE0Ljc0NjEgNy43MjAxNUMxNC44OTY5IDcuODY4NSAxNS4wNDYxIDguMDI2MzggMTUuMTg5NyA4LjE4OTM5QzE1LjM2ODUgOC4zOTIyNCAxNS41MzgyIDguNjAyOTEgMTUuNjk4MyA4LjgyMDc4QzE2LjEwMDMgOS4zNjg1MiAxNi40MjA3IDkuOTM3MjEgMTYuNjUwNCAxMC41MTFDMTYuNzE2MyAxMC42NzU1IDE2Ljc3NTQgMTAuODQyNiAxNi44Mjc2IDExLjAxMTlDMTYuODgxMSAxMS4xODU5IDE2LjkyNjcgMTEuMzYyMyAxNi45NjQyIDExLjU0MDRDMTcuMDAyNiAxMS43MjM2IDE3LjAzMiAxMS45MDg2IDE3LjA1MjEgMTIuMDk0N0MxNy4wNzI4IDEyLjI4NjggMTcuMDgzMiAxMi40Nzk4IDE3LjA4MzMgMTIuNjcyOUMxNy4wODMzIDEyLjgwOTYgMTcuMDc2MSAxMi45NDYxIDE3LjA2MTcgMTMuMDgyQzE3LjA0NzIgMTMuMjE2OSAxNy4wMjU2IDEzLjM1MSAxNi45OTY4IDEzLjQ4MzdDMTYuOTY3NyAxMy42MTY5IDE2LjkzMTYgMTMuNzQ4NSAxNi44ODg2IDEzLjg3OEMxNi44NDQ3IDE0LjAwOTUgMTYuNzk0MiAxNC4xMzg2IDE2LjczNzEgMTQuMjY0OUMxNi42Nzk3IDE0LjM5MjEgMTYuNjE0MSAxNC41MTk4IDE2LjU0MjMgMTQuNjQ0NUMxNi40NzA1IDE0Ljc2OTIgMTYuMzkwNSAxNC44OTQ0IDE2LjMwNDIgMTUuMDE2N0MxNi4xMjE4IDE1LjI3MzIgMTUuOTE5MiAxNS41MTQ4IDE1LjY5ODMgMTUuNzM5QzE1LjQ1NCAxNS45ODY3IDE1LjE5MzggMTYuMjE4MSAxNC45MTkzIDE2LjQzMThDMTQuNjEzOCAxNi42Njk1IDE0LjI5NiAxNi44OTA5IDEzLjk2NzEgMTcuMDk1MUMxMy42MjI1IDE3LjMxMDMgMTMuMjQzOSAxNy41MjM1IDEyLjg0MTkgMTcuNzI4OUMxMi40Mzk4IDE3LjkzNDIgMTIuMDAzIDE4LjEzNzYgMTEuNTQzNSAxOC4zMzMySDExLjA5NUMxMS4xOTAxIDE4LjE4OTcgMTEuMjc3NiAxOC4wNDEzIDExLjM1NzEgMTcuODg4NUMxMS40NDE5IDE3LjcyOCAxMS41MTk3IDE3LjU2MzcgMTEuNTkgMTcuMzk2M0MxMS42NzQ2IDE3LjE5NTYgMTEuNzQ3IDE2Ljk5IDExLjgwNjcgMTYuNzgwNkMxMS45NTE5IDE2LjI2NyAxMS45OTY0IDE1Ljc4NTIgMTEuOTM4OSAxNS4zNDgzQzExLjg3MjEgMTQuODEyNCAxMS42Mjk1IDE0LjMxMzkgMTEuMjQ4OSAxMy45MzA4QzEwLjk3MjUgMTMuNjY4NSAxMC43MTYzIDEzLjM4NTcgMTAuNDgyNSAxMy4wODQ3QzEwLjI5NyAxMi44NDU1IDEwLjEzMzUgMTIuNTkwMSA5Ljk5Mzg0IDEyLjMyMTZDOS43NzY4NyAxMS44OTc4IDkuNjU1NDYgMTEuNDgwNCA5LjYzMzEzIDExLjA4MUM5LjYyNDIgMTAuOTI3NyA5LjYzMDg0IDEwLjc3MzkgOS42NTI5NyAxMC42MjE5QzkuNjY5ODIgMTAuNTA2NiA5LjY5Njk4IDEwLjM5MyA5LjczNDEyIDEwLjI4MjZDOS43NjU2OSAxMC4xODM0IDkuODA5MyAxMC4wODg2IDkuODYzOTYgMTBDOS44NjI2MSAxMC4wMDA3IDkuNjk2NTQgMTAuMDgxOSA5LjQ0ODgzIDEwLjIzNDRDOS4zMDAxOCAxMC4zMjYxIDkuMTU0NyAxMC40MjI4IDkuMDEyNjQgMTAuNTI0NEM4LjgzNTI1IDEwLjY1MTIgOC42NjM0IDEwLjc4NTUgOC40OTc1NiAxMC45MjdDOC4wODI1MSAxMS4yODE2IDcuNzMwNTEgMTEuNjYzMyA3LjQ1MTMxIDEyLjA2MTNDNy4xMDIzMyAxMi41NTkgNi44NjY4MyAxMy4wODM4IDYuNzUxMzEgMTMuNjIxM0M2LjQzMjMgMTUuMTA1OCA3LjAxMzU5IDE2LjY5MTEgOC40Nzg5OSAxOC4zMzMyTDguNDc5MDUgMTguMzMzNFoiIGZpbGw9IiNFRjQ0NDQiLz4KPC9zdmc+Cg=="
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// 放大
|
|
2
|
+
export const zoomInSVG =
|
|
3
|
+
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9ImFkZC1MLWxpbmUiPgo8cGF0aCBpZD0iSWNvbiIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS41IDExLjVWNEgxMi41VjExLjVIMjBWMTIuNUgxMi41VjIwSDExLjVWMTIuNUg0VjExLjVIMTEuNVoiIGZpbGw9ImJsYWNrIi8+CjwvZz4KPC9zdmc+Cg==';
|
|
4
|
+
|
|
5
|
+
// 缩小
|
|
6
|
+
export const zoomOutSVG =
|
|
7
|
+
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9InN1YnRyYWN0LUwtbGluZSI+CjxwYXRoIGlkPSJJY29uIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIxIDExLjVWMTIuNUgzVjExLjVIMjFaIiBmaWxsPSJibGFjayIvPgo8L2c+Cjwvc3ZnPgo=';
|
|
8
|
+
|
|
9
|
+
// 重置定位
|
|
10
|
+
export const resetPositionSVG =
|
|
11
|
+
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgaWQ9ImNlbnRlci1jaXJjbGUtbGluZSI+CjxwYXRoIGlkPSJJY29uIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgNS4wMTc1OFY3SDEyLjVWNS4wMTc1OEMxNS45Njc1IDUuMjYyMyAxOC43Mzc3IDguMDMyNTEgMTguOTgyNCAxMS41SDE3VjEyLjVIMTguOTgyNEMxOC43Mzc3IDE1Ljk2NzUgMTUuOTY3NSAxOC43Mzc3IDEyLjUgMTguOTgyNFYxN0gxMS41VjE4Ljk4MjRDOC4wMzI1MSAxOC43Mzc3IDUuMjYyMyAxNS45Njc1IDUuMDE3NTggMTIuNUg3VjExLjVINS4wMTc1OEM1LjI2MjMgOC4wMzI1MSA4LjAzMjUxIDUuMjYyMyAxMS41IDUuMDE3NThaTTExLjUgNC4wMTUzN0M3LjQ3OTk5IDQuMjYzMjcgNC4yNjMyNyA3LjQ3OTk5IDQuMDE1MzcgMTEuNUgyVjEyLjVINC4wMTUzN0M0LjI2MzI3IDE2LjUyIDcuNDc5OTkgMTkuNzM2NyAxMS41IDE5Ljk4NDZWMjJIMTIuNVYxOS45ODQ2QzE2LjUyIDE5LjczNjcgMTkuNzM2NyAxNi41MiAxOS45ODQ2IDEyLjVIMjJWMTEuNUgxOS45ODQ2QzE5LjczNjcgNy40Nzk5OSAxNi41MiA0LjI2MzI3IDEyLjUgNC4wMTUzN1YySDExLjVWNC4wMTUzN1oiIGZpbGw9ImJsYWNrIi8+CjwvZz4KPC9zdmc+Cg==';
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
export * from './big';
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { vec3 } from 'gl-matrix';
|
|
2
|
+
import { Cursor } from '@aloudata/ink/dist/displayObjects/types';
|
|
3
|
+
import {
|
|
4
|
+
Graph,
|
|
5
|
+
Group,
|
|
6
|
+
IBaseNodeConfig,
|
|
7
|
+
Path,
|
|
8
|
+
Rect,
|
|
9
|
+
BaseEdge,
|
|
10
|
+
bezierPath,
|
|
11
|
+
loopBackPath,
|
|
12
|
+
selfConnectPath,
|
|
13
|
+
} from '@aloudata/ink-graph-new';
|
|
14
|
+
import { InkLineageManager } from '../../manager';
|
|
15
|
+
import {
|
|
16
|
+
IColResBase,
|
|
17
|
+
IEdgeConfig,
|
|
18
|
+
TDataBase,
|
|
19
|
+
} from '../../types';
|
|
20
|
+
|
|
21
|
+
export interface IEdgeDataConfig {
|
|
22
|
+
name: string;
|
|
23
|
+
style: {
|
|
24
|
+
path: string;
|
|
25
|
+
fill: string;
|
|
26
|
+
stroke: string;
|
|
27
|
+
strokeDasharray: number[];
|
|
28
|
+
lineWidth: number;
|
|
29
|
+
zIndex: number;
|
|
30
|
+
cursor: Cursor;
|
|
31
|
+
markerMid?: Rect;
|
|
32
|
+
markerEnd?: Path;
|
|
33
|
+
markerEndOffset?: number;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export class DefaultEdge extends BaseEdge {
|
|
38
|
+
static lineageManager: InkLineageManager<TDataBase<IColResBase>, IColResBase>;
|
|
39
|
+
|
|
40
|
+
edgeConfig: IEdgeDataConfig;
|
|
41
|
+
|
|
42
|
+
get lineageManager(): InkLineageManager<TDataBase<IColResBase>, IColResBase> {
|
|
43
|
+
return DefaultEdge.lineageManager;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
constructor(graph: Graph, config: IEdgeConfig) {
|
|
47
|
+
super(graph, config);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// 折叠边和普通边公用部分
|
|
51
|
+
renderContent(cfg: IEdgeConfig, container: Group) {
|
|
52
|
+
const { target, source, visible, style } = cfg;
|
|
53
|
+
|
|
54
|
+
if (visible === false) return;
|
|
55
|
+
|
|
56
|
+
const srcNodeConfig = this.lineageManager.getNodeConfigById(source);
|
|
57
|
+
const dstNodeConfig = this.lineageManager.getNodeConfigById(target);
|
|
58
|
+
|
|
59
|
+
if (!srcNodeConfig || !dstNodeConfig) return;
|
|
60
|
+
|
|
61
|
+
if (!visible || !srcNodeConfig?.visible || !dstNodeConfig?.visible) return;
|
|
62
|
+
|
|
63
|
+
const isSrcRelatedColumn = srcNodeConfig.isRelatedColumn;
|
|
64
|
+
const isDstRelatedColumn = dstNodeConfig.isRelatedColumn;
|
|
65
|
+
|
|
66
|
+
container.style.zIndex = style?.zIndex || -1;
|
|
67
|
+
|
|
68
|
+
const defaultPos = 0;
|
|
69
|
+
let srcTransform: vec3;
|
|
70
|
+
let dstTransform: vec3;
|
|
71
|
+
|
|
72
|
+
const srcParentNodeConfig = this.getParentNodeConfig(srcNodeConfig);
|
|
73
|
+
const dstParentNodeConfig = this.getParentNodeConfig(dstNodeConfig);
|
|
74
|
+
if (isSrcRelatedColumn && !srcParentNodeConfig) return;
|
|
75
|
+
if (isDstRelatedColumn && !dstParentNodeConfig) return;
|
|
76
|
+
|
|
77
|
+
const srcPositionX = isSrcRelatedColumn
|
|
78
|
+
? srcNodeConfig.position.x + srcParentNodeConfig?.position?.x
|
|
79
|
+
: srcNodeConfig.position.x;
|
|
80
|
+
|
|
81
|
+
const srcPositionY = isSrcRelatedColumn
|
|
82
|
+
? srcNodeConfig.position.y + 100 + 8 + srcParentNodeConfig?.position?.y
|
|
83
|
+
: srcNodeConfig.position.y;
|
|
84
|
+
|
|
85
|
+
const dstPositionX = isDstRelatedColumn
|
|
86
|
+
? dstNodeConfig.position.x + dstParentNodeConfig?.position?.x
|
|
87
|
+
: dstNodeConfig.position.x;
|
|
88
|
+
|
|
89
|
+
const dstPositionY = isDstRelatedColumn
|
|
90
|
+
? dstNodeConfig.position.y + 100 + 8 + dstParentNodeConfig?.position?.y
|
|
91
|
+
: dstNodeConfig.position.y;
|
|
92
|
+
srcTransform =
|
|
93
|
+
vec3.fromValues(srcPositionX, srcPositionY, 0) || vec3.create();
|
|
94
|
+
dstTransform =
|
|
95
|
+
vec3.fromValues(dstPositionX, dstPositionY, 0) || vec3.create();
|
|
96
|
+
|
|
97
|
+
// 剔除rootGroup的矩阵
|
|
98
|
+
let [rootX, rootY, rootScaleX, rootScaleY] = [0, 0, 1, 1];
|
|
99
|
+
const rootGroup = this.graph.rootGroup;
|
|
100
|
+
if (rootGroup && rootGroup.transformable) {
|
|
101
|
+
const rootGroupTrans = rootGroup.transformable;
|
|
102
|
+
|
|
103
|
+
rootScaleX = rootGroupTrans.scaling[0];
|
|
104
|
+
rootScaleY = rootGroupTrans.scaling[1];
|
|
105
|
+
rootX = rootGroupTrans.position[0];
|
|
106
|
+
rootY = rootGroupTrans.position[1];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const DEFAULT_ROOT_X = srcNodeConfig?.style?.width; // 目标节点的宽度
|
|
110
|
+
|
|
111
|
+
const DEFAULT_ROOT_Y =
|
|
112
|
+
(isSrcRelatedColumn
|
|
113
|
+
? srcNodeConfig?.style?.height
|
|
114
|
+
: (srcNodeConfig?.style?.headerHeight as number)) / 2; // 目标节点一半的高度
|
|
115
|
+
|
|
116
|
+
const startXOffset = 0;
|
|
117
|
+
|
|
118
|
+
// 起点原始位置
|
|
119
|
+
const [srcX = defaultPos, srcY = defaultPos] = [
|
|
120
|
+
(srcTransform[0] + (DEFAULT_ROOT_X + startXOffset) * rootScaleX - rootX) /
|
|
121
|
+
rootScaleX,
|
|
122
|
+
(srcTransform[1] + DEFAULT_ROOT_Y * rootScaleY - rootY) / rootScaleY,
|
|
123
|
+
];
|
|
124
|
+
|
|
125
|
+
// 终点原始位置
|
|
126
|
+
const target_height =
|
|
127
|
+
(isDstRelatedColumn
|
|
128
|
+
? dstNodeConfig.style.height
|
|
129
|
+
: (dstNodeConfig.style?.headerHeight as number)) / 2; // 目标节点一半的高度
|
|
130
|
+
|
|
131
|
+
const [dstX = defaultPos, dstY = defaultPos] = [
|
|
132
|
+
(dstTransform[0] - rootX) / rootScaleX,
|
|
133
|
+
(dstTransform[1] + target_height * rootScaleY - rootY) / rootScaleY,
|
|
134
|
+
];
|
|
135
|
+
|
|
136
|
+
const arrowOffsetX = 11;
|
|
137
|
+
|
|
138
|
+
const targetX = dstX - arrowOffsetX;
|
|
139
|
+
const targetY = dstY;
|
|
140
|
+
let d = '';
|
|
141
|
+
// 自环
|
|
142
|
+
if (srcNodeConfig.id === dstNodeConfig.id) {
|
|
143
|
+
d = selfConnectPath(srcX, srcY, dstX, dstY);
|
|
144
|
+
} else if (srcX > dstX) {
|
|
145
|
+
// 回环场景
|
|
146
|
+
d = loopBackPath(srcX, srcY, targetX, targetY);
|
|
147
|
+
// d += normalArrow;
|
|
148
|
+
} else {
|
|
149
|
+
// 普通场景
|
|
150
|
+
d = bezierPath(srcX, srcY, dstX, dstY);
|
|
151
|
+
// d += normalArrow;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (!d) return;
|
|
155
|
+
|
|
156
|
+
const arrowConfig = {
|
|
157
|
+
name: 'arrow',
|
|
158
|
+
style: {
|
|
159
|
+
path: 'M 3,3 L -3,0 L 3,-3 Z',
|
|
160
|
+
anchor: '0.5 0.5',
|
|
161
|
+
transformOrigin: 'center',
|
|
162
|
+
fill: style?.stroke || '#B1B1B1',
|
|
163
|
+
stroke: style?.stroke || '#B1B1B1',
|
|
164
|
+
strokeDasharray: style?.strokeDasharray || [0],
|
|
165
|
+
lineWidth: style?.lineWidth || 1,
|
|
166
|
+
zIndex: style?.zIndex || -1,
|
|
167
|
+
cursor: 'pointer' as Cursor,
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
this.markerEnd = new Path(arrowConfig);
|
|
171
|
+
|
|
172
|
+
this.edgeConfig = {
|
|
173
|
+
name: 'big-edge',
|
|
174
|
+
style: {
|
|
175
|
+
path: d,
|
|
176
|
+
fill: style?.fill || 'rgb(255, 255, 255,0)',
|
|
177
|
+
stroke: style?.stroke || '#B1B1B1',
|
|
178
|
+
strokeDasharray: style?.strokeDasharray || [0],
|
|
179
|
+
lineWidth: style?.lineWidth || 1,
|
|
180
|
+
zIndex: style?.zIndex || -1,
|
|
181
|
+
cursor: 'pointer' as Cursor,
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
if (srcNodeConfig.id !== dstNodeConfig.id) {
|
|
186
|
+
this.edgeConfig.style.markerEnd = this.markerEnd;
|
|
187
|
+
this.edgeConfig.style.markerEndOffset = -3;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
getParentNodeConfig(node: IBaseNodeConfig) {
|
|
192
|
+
let parentNode = this.graph.data.nodes.find((n) => n.id === node.tableId);
|
|
193
|
+
|
|
194
|
+
return parentNode;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Graph,
|
|
3
|
+
Group,
|
|
4
|
+
Path,
|
|
5
|
+
Rect,
|
|
6
|
+
Text,
|
|
7
|
+
} from '@aloudata/ink-graph-new';
|
|
8
|
+
import { DefaultEdge } from './DefaultEdge';
|
|
9
|
+
import { IEdgeConfig } from '../../types';
|
|
10
|
+
|
|
11
|
+
export class FoldEdge extends DefaultEdge {
|
|
12
|
+
constructor(public graph: Graph, public config: IEdgeConfig) {
|
|
13
|
+
super(graph, config);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
render(cfg: IEdgeConfig, container: Group) {
|
|
17
|
+
this.renderContent(cfg, container);
|
|
18
|
+
|
|
19
|
+
if (!this.edgeConfig) return;
|
|
20
|
+
|
|
21
|
+
const markerRect = new Rect({
|
|
22
|
+
name: 'edge-marker-rect',
|
|
23
|
+
style: {
|
|
24
|
+
width: 32,
|
|
25
|
+
height: 16,
|
|
26
|
+
fill: '#FEFAF1',
|
|
27
|
+
stroke: '#F28E2C',
|
|
28
|
+
lineWidth: 1,
|
|
29
|
+
radius: 3,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const { foldNodeId, foldTableId } = this.config;
|
|
34
|
+
const { foldStatusMap, foldNodesGroupMap } = this.lineageManager.foldLineageManager;
|
|
35
|
+
const foldNodeLen = foldNodesGroupMap.get(foldNodeId)?.foldNodes.length;
|
|
36
|
+
let markerText = new Text({
|
|
37
|
+
name: 'edge-marker-text',
|
|
38
|
+
style: {
|
|
39
|
+
text: `...${foldNodeLen}`,
|
|
40
|
+
x: 16,
|
|
41
|
+
y: 8,
|
|
42
|
+
textAlign: 'center',
|
|
43
|
+
textBaseline: 'middle',
|
|
44
|
+
fontSize: 11,
|
|
45
|
+
fontFamily: 'PingFang SC',
|
|
46
|
+
fill: '#F28E2C',
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
if (foldStatusMap.get(foldNodeId || foldTableId) === false) {
|
|
50
|
+
markerText = new Text({
|
|
51
|
+
name: 'edge-marker-text',
|
|
52
|
+
style: {
|
|
53
|
+
text: '收起',
|
|
54
|
+
x: 16,
|
|
55
|
+
y: 8,
|
|
56
|
+
textAlign: 'center',
|
|
57
|
+
textBaseline: 'middle',
|
|
58
|
+
fontSize: 11,
|
|
59
|
+
fontFamily: 'PingFang SC',
|
|
60
|
+
fill: '#F28E2C',
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
markerRect.appendChild(markerText);
|
|
66
|
+
|
|
67
|
+
this.edgeConfig.style.markerMid = markerRect;
|
|
68
|
+
const path = new Path(this.edgeConfig);
|
|
69
|
+
path.addEventListener('click', () => {
|
|
70
|
+
this.onMarkerMidClick();
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
this.path = path;
|
|
74
|
+
(path as any).node = this;
|
|
75
|
+
|
|
76
|
+
container.appendChild(path);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
onMarkerMidClick() {
|
|
80
|
+
const key = this.id;
|
|
81
|
+
const { foldNodeId, foldTableId } = this.config;
|
|
82
|
+
const { foldStatusMap } = this.lineageManager.foldLineageManager;
|
|
83
|
+
|
|
84
|
+
const foldGroupKey = foldNodeId || foldTableId;
|
|
85
|
+
if (foldStatusMap.get(foldGroupKey) === false) {
|
|
86
|
+
this.lineageManager.foldNodeGroup(foldGroupKey, true);
|
|
87
|
+
this.lineageManager.update();
|
|
88
|
+
} else {
|
|
89
|
+
this.lineageManager.unfoldNodeGroup(key, false);
|
|
90
|
+
this.lineageManager.update();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
onMarkerMidMouseEnter() {
|
|
95
|
+
this.config?.onMarkerMidMouseEnter?.(this);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Graph,
|
|
3
|
+
Group,
|
|
4
|
+
Path,
|
|
5
|
+
} from '@aloudata/ink-graph-new';
|
|
6
|
+
import { DefaultEdge } from './DefaultEdge';
|
|
7
|
+
import { IEdgeConfig } from '../../types';
|
|
8
|
+
|
|
9
|
+
export class LineageEdge extends DefaultEdge {
|
|
10
|
+
constructor(public graph: Graph, public config: IEdgeConfig) {
|
|
11
|
+
super(graph, config);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
render(cfg: IEdgeConfig, container: Group) {
|
|
15
|
+
this.renderContent(cfg, container);
|
|
16
|
+
if (!this.edgeConfig) return;
|
|
17
|
+
|
|
18
|
+
const path = new Path(this.edgeConfig);
|
|
19
|
+
this.path = path;
|
|
20
|
+
(path as any).node = this;
|
|
21
|
+
|
|
22
|
+
container.appendChild(path);
|
|
23
|
+
}
|
|
24
|
+
}
|