From ee9a5202b14017bf9306023a6784dde4dfe20c98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=99=BA=E6=B4=B2?= <1543046129@qq.com> Date: Sun, 20 Feb 2022 00:29:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=98=AF=E5=90=A6=E5=90=8C=E7=BB=84=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demoV2/Layouter/AdjoinMatrixGraph.js | 1 - demoV2/Layouter/LinkList.js | 47 +-- demoV2/Layouter/LinkStack.js | 2 +- demoV2/demo2.html | 501 +++++++++------------------ dist/sv.js | 6 +- src/Model/SVModel.ts | 3 +- src/Model/SVNode.ts | 192 +++++----- src/Model/modelConstructor.ts | 14 +- 8 files changed, 303 insertions(+), 463 deletions(-) diff --git a/demoV2/Layouter/AdjoinMatrixGraph.js b/demoV2/Layouter/AdjoinMatrixGraph.js index d1048aa..9cc79c6 100644 --- a/demoV2/Layouter/AdjoinMatrixGraph.js +++ b/demoV2/Layouter/AdjoinMatrixGraph.js @@ -20,7 +20,6 @@ const isNeighbor = function (itemA, itemB) { SV.registerLayout('AdjoinMatrixGraph', { - sourcesPreprocess(sources) { let dataLength = sources.length; let matrixNodeLength = dataLength * dataLength; diff --git a/demoV2/Layouter/LinkList.js b/demoV2/Layouter/LinkList.js index e24668f..951d011 100644 --- a/demoV2/Layouter/LinkList.js +++ b/demoV2/Layouter/LinkList.js @@ -1,11 +1,11 @@ SV.registerLayout('LinkList', { - + sourcesPreprocess(sources) { let root = sources[0]; - if(root.external) { + if (root.external) { root.rootExternal = root.external; delete root.external; } @@ -15,7 +15,7 @@ SV.registerLayout('LinkList', { defineOptions() { return { - node: { + node: { default: { type: 'link-list-node', label: '[data]', @@ -28,7 +28,7 @@ SV.registerLayout('LinkList', { } }, link: { - next: { + next: { type: 'line', sourceAnchor: 2, targetAnchor: 6, @@ -36,7 +36,7 @@ SV.registerLayout('LinkList', { stroke: '#333', endArrow: 'default', startArrow: { - path: G6.Arrow.circle(2, -1), + path: G6.Arrow.circle(2, -1), fill: '#333' } } @@ -50,7 +50,7 @@ SV.registerLayout('LinkList', { stroke: '#333', endArrow: 'default', startArrow: { - path: G6.Arrow.circle(2, -1), + path: G6.Arrow.circle(2, -1), fill: '#333' } } @@ -85,32 +85,17 @@ SV.registerLayout('LinkList', { }, - /** - * 对子树进行递归布局 - * @param node - * @param parent - */ - layoutItem(node, prev, layoutOptions) { - if(!node) { - return null; - } - - let width = node.get('size')[0]; - - if(prev) { - node.set('y', prev.get('y')); - node.set('x', prev.get('x') + layoutOptions.xInterval + width); - } - - if(node.next) { - this.layoutItem(node.next, node, layoutOptions); - } - }, - - layout(elements, layoutOptions) { - let root = elements[0]; - this.layoutItem(root, null, layoutOptions); + for (let i = 0; i < elements.length; i++) { + let node = elements[i], + prev = elements[1 - 1], + width = node.get('size')[0]; + + if (prev) { + node.set('y', prev.get('y')); + node.set('x', prev.get('x') + layoutOptions.xInterval + width); + } + } } }); diff --git a/demoV2/Layouter/LinkStack.js b/demoV2/Layouter/LinkStack.js index 3eb5fbd..9634ddd 100644 --- a/demoV2/Layouter/LinkStack.js +++ b/demoV2/Layouter/LinkStack.js @@ -83,7 +83,7 @@ let height = node.get('size')[1]; - if(prev) { + if(prev && node.isSameGroup(prev)) { node.set('x', prev.get('x')); node.set('y', prev.get('y') - layoutOptions.yInterval - height); } diff --git a/demoV2/demo2.html b/demoV2/demo2.html index 5eeb3ce..ff7f464 100644 --- a/demoV2/demo2.html +++ b/demoV2/demo2.html @@ -1,360 +1,193 @@ +
+ + +