butterfly-plugins-layout

0.0.29-beta.9 • Public • Published

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

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

避障贝塞尔曲线

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

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

代码演示

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

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

API

名称 类型 是否必须 默认值 可选值 说明
drawPath Function obstacleAvoidancePoints 计算避障节点的方法

Package Sidebar

Install

npm i butterfly-plugins-layout

Weekly Downloads

7

Version

0.0.29-beta.9

License

MIT

Unpacked Size

1.1 MB

Total Files

17

Last publish

Collaborators

  • noonnightstorm
  • sdjalft
  • wkexin