0.0.29-beta.9 • Published 1 year ago

butterfly-plugins-layout v0.0.29-beta.9

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

butterfly-plugins-layout

小蝴蝶布局插件,用于将数据转换为可以直接被渲染的小蝴蝶类。

插件布局本地DEMO

cd example
npm install
npm start

快速上手

graphviz layout

import {graphvizLayout} from 'butterfly-plugins-layout';

// ···

// 可以在画布初始化的时候传入layout参数作为布局方法
let canvas = new Canvas({
  // 如下属性
  root: dom,               //canvas的根节点(必传)
  layout: graphvizLayout,   //布局设置(选填),可使用集成的,也可自定义布局
  zoomable: true,          //可缩放(选填)
  moveable: true,          //可平移(选填)
  draggable: true,         //节点可拖动(选填)
  linkable: true,          //节点可连接(选填)
  disLinkable: true,       //节点可取消连接(选填)
});

// 也可以在画布数据导入完成后手动调用这个方法
// ...
graphvizLayout({
  data: {nodes, edges}
});

// ···

也可以使用部分引入减小包体积大小:

import graphvizLayout, {GraphvizEdge} from 'butterfly-plugins-layout/graphvizLayout';

kedroviz layout

import {kedrovizLayout, KedrovizEdge, BaseLayers, obstacleAvoidancePoints} from 'butterfly-plugins-layout';

// ···

// 可以在画布初始化的时候传入layout参数作为布局方法
let canvas = new Canvas({
  // 如下属性
  root: dom,               //canvas的根节点(必传)
  layout: {
    type: kedrovizLayout, 
    options: {rankdir: 'TB', visible: true, Class: BaseLayers}
  },                       //布局设置(选填),可使用集成的,也可自定义布局
  zoomable: true,          //可缩放(选填)
  moveable: true,          //可平移(选填)
  draggable: true,         //节点可拖动(选填)
  linkable: true,          //节点可连接(选填)
  disLinkable: true,       //节点可取消连接(选填)
  drawPath: obstacleAvoidancePoints //避障贝塞尔曲线
});

this.canvas.draw({nodes, edges, layers}, () => {

});
// ···

布局算法

graphviz layout

基于d3-graphviz排布的节点布局算法,传入数据后直接返回可以用于在小蝴蝶中渲染的node和edge数组。

注:使用这个布局方法,Edge需要继承由graphvizLayout导出的GraphvizEdge类(这个类已经继承了Butterfly的Edge),并且不覆盖其calcPath方法,否则可能会导致边绘制不正确的问题。

属性

属性遵循graphviz提供的dot语言,可直接传入在dot语言中的dot布局定义的属性来使得布局定制化。

nodesep <Double> (选填)

  节点布局同一等级节点的最小间隔;值类型 double,默认0.25,最小0.02

rankdir <String> (选填)

  布局方向,可选值为'TB','BT','LR','RL';值类型 string,默认 TB

ranksep <Double> (选填)

  节点布局不同等级之间的间隔;值类型 double,默认0.5,最小0.02

kedroviz layout

    Kedroviz layout适合节点分组的布局算法。其根据图数据中节点所属组(layer),自动计算节点的层级及位置。

注:使用这个布局方法,Edge需要继承由kedrovizLayout导出的KedrovizEdge类。Layers需要继承由kedrovizLayout导出的BaseLayers类。

代码演示

this.canvas = new Canvas({
  layout: {
    type: kedrovizLayout,
    options: {
      rankdir: 'TB',
      visible: true,
      Class: BaseLayers
    },
  },
  drawPath: obstacleAvoidancePoints
});

API

名称类型是否必须默认值可选值说明
rankdirStringfalseTB"TB/BT/LR/RL"布局的方向。T:top(上);B:bottom(下);L:left(左);R:right(右)。
visibleBooleanfalsetruetrue / false节点是否显示分组
ClassFunctiontrueBaseLayers分组(layers)的类

避障贝塞尔曲线

    避障贝塞尔曲线在节点连线时会自动避开中间节点。

注:使用该曲线时,Edge需要继承KedrovizEdge类。需要在Canvas中传入drawPath参数

代码演示

import {KedrovizEdge, obstacleAvoidancePoints} from 'butterfly-plugins-layout';

this.canvas = new Canvas({
  drawPath: obstacleAvoidancePoints
});

API

名称类型是否必须默认值可选值说明
drawPathFunctionobstacleAvoidancePoints计算避障节点的方法
0.0.29-beta.9

1 year ago

0.0.29-beta.8

1 year ago

0.0.29-beta.3

1 year ago

0.0.29-beta.5

1 year ago

0.0.29-beta.4

1 year ago

0.0.29-beta.7

1 year ago

0.0.29-beta.6

1 year ago

0.0.29-beta2

1 year ago

0.0.29-beta1

1 year ago

0.0.10-beta.2

1 year ago

0.0.10-beta.3

1 year ago

0.0.30

2 years ago

0.0.31

2 years ago

0.0.10-beta1

1 year ago

0.0.10-beta2

1 year ago

0.0.29

2 years ago

0.0.20

2 years ago

0.0.21

2 years ago

0.0.22

2 years ago

0.0.23

2 years ago

0.0.24

2 years ago

0.0.25

2 years ago

0.0.15

2 years ago

0.0.16

2 years ago

0.0.17

2 years ago

0.0.18

2 years ago

0.0.19

2 years ago

0.0.10

2 years ago

0.0.11

2 years ago

0.0.12

2 years ago

0.0.13

2 years ago

0.0.14

2 years ago

0.0.15-beta.11

2 years ago

0.0.15-beta.10

2 years ago

0.0.3

2 years ago

0.0.21-beta.8

2 years ago

0.0.21-beta.7

2 years ago

0.0.21-beta.6

2 years ago

0.0.21-beta.5

2 years ago

0.0.21-beta.4

2 years ago

0.0.26

2 years ago

0.0.21-beta.3

2 years ago

0.0.15-beta.7

2 years ago

0.0.9

2 years ago

0.0.27

2 years ago

0.0.21-beta.2

2 years ago

0.0.8

2 years ago

0.0.28

2 years ago

0.0.21-beta.1

2 years ago

0.0.15-beta.5

2 years ago

0.0.15-beta.6

2 years ago

0.0.15-beta.3

2 years ago

0.0.5

2 years ago

0.0.15-beta.4

2 years ago

0.0.4

2 years ago

0.0.15-beta.1

2 years ago

0.0.7

2 years ago

0.0.15-beta.2

2 years ago

0.0.6

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago