3.15.1 • Published 3 days ago

hz-graph-canvas v3.15.1

Weekly downloads
-
License
ISC
Repository
-
Last release
3 days ago

graph.canvas 图渲染组件说明

简单使用

引用hz-graph-canvas,然后参考app.js 的调用

import GraphCanvas from 'hz-graph-canvas'
import GraphData from './data/mockGraph'

const force = new GraphCanvas(canvas.current, {
  data: GraphData,
})
force.init()

定制化使用

由于图渲染组件都是纯js文件。如果需要定制化开发一些复杂的图析功能。可以采用继承的方式重写部分关键代码

// force.business.js
import ForceCanvas from 'hz-graph-canvas'
export default class ForceBusiness extends ForceCanvas {
  constructor(ele, options) {
      super(ele, options)
      this.state = {}
      if (!Object.__proto__) { // 兼容ie10
          ForceCanvas.call(this, ele, options)
      }
  }
  // 重写draw函数
  draw() {

  }
}
// 使用定制化后的图析组件
import ForceBusiness from './force.business.js'
import GraphData from './data/mockGraph'

const force = new ForceBusiness(canvas.current, {
  data: GraphData,
})
force.init()

参数说明

{
    width: window.innerWidth, // 画布宽度
    height: window.innerHeight, // 画布高度
    data: { vertexes: [], edges: [] }, // 图谱数据
    theme: 'pure', // 默认纯净主题(业务配置)
    radius: 20, // 节点默认大小
    lineWidth: 1, // 边默认粗细
    force_to_ring_optimization: false, // force_to_ring_optimization为true时,表示force布局在数据量小的情况下直接采用 ring 布局,提高渲染速度
    // boldLineWidth: 2, // 数据需要鼠标悬浮时高亮路径时的路径线条粗细
    fontSize: 10, // 文案默认大小
    optimizeVertexThreshold: 500, // 触发渲染优化所需要的最小节点个数(目前看好像是有节点的附加样式的展示、边label的展示)
    zoomOptimize: { // 缩放优化
        enableOptimize: true, // 是否开启优化
        optimizeMaxVertex: 500, // 触发缩放优化所需要的最小节点个数
        optimizeMaxEdge: 500
    },
    // fontFamily: 'PingFang SC, Microsoft YaHei, Helvetica, Arial, Verdana, sans-serif',
    fontFamily: 'character, PingFang SC, Microsoft YaHei, Helvetica, Arial, Verdana, sans-serif, iconfont, FontAwesome', // 默认字体
    displayTextThreshold: 0.5, // 字体展示的缩放阈值,默认放大到 0.5 倍时才展示节点中的文字
    arrowLength: 5, // 边箭头斜边长度
    arrowDt: Math.PI / 6, // 箭头斜边与边的夹脚
    scaleExtent: [0.01, 2],
    canvasShift: [0, 0], // left, top shift
    // highlightEdgeWidth: 4,
    // 不同主题对应的节点边默认颜色
    light: {
        vertex: '#4FA2F1',
        edge: '#64C69F',
        centerVertex: '#EF4772'
    },
    deep: {
        vertex: '#82C896',
        edge: '#4FA2F1'
    },
    mix: {
        vertex: '#FFFFFF',
        edge: '#5A5D7A'
    },
    pure: {
        vertex: '#82C896',
        edge: '#4FA2F1'
    },
    onRenderEnd: () => { },
    onClickVertex: () => { },
    onClickEdge: () => { },
    onZoom: () => { },
    onRenderEndProcessData: () => {},
    onRenderEndAni: () => {},
    onDragStart: () => {},
    onClickOutSide: () => {},
    onContextmenu: () => {},
    onHoverVertexAndEdge: () => {},
    layout: { // 布局类型
        /**
         * force: 力导向布局
         * card: 卡片式布局
         * tree: 树状布局
         * grid: 网格布局
         * flow: 流向布局
         * horization: 横向布局
         * annular: 环状布局
         * octopus: 八爪鱼布局
         * random: 随机布局
        */
        type: 'force'
    },
    vertex: {
        type: 'circle',
        vertexRadiusMap: {  //节点大小映射列表,对应节点数据属性uiconfig.size
            1: 30,
            2: 25,
            3: 20,
        }
    },
    edge: {
        type: 'line',
        edgeLineWidthMap: { //边尺寸映射列表,对应边数据属性uiconfig.size
            '1': 3,
            '2': 2,
            '3': 1,
            'xSmall': 1,
            'small': 1,
            'normal': 1,
            'large': 1,
            'xLarge': 1,
        }
    },
    combo: {
        type: 'circle'
    },
    cardWidth: 166, // 树状卡片式布局卡片宽度
    cardHeight: 60, // 树状卡片式布局卡片高度
    graphCenterBy: 'POS', // 'NODE' 中心节点居中 || 'POS' 图数据中心位置居中
    vertexClickConfig: { // 节点点击配置
        isNormalRelateVertex: true // 是否将关联的实体置为正常状态
    },
    minMap: {
        show: true, //是否显示小地图
        id: 'thumbnail', // 绘制小地图canvas id 默认值 thumbnail
        operationId: 'thumbnailOperation' // 绘制小地图操作项 id 默认值 thumbnailOperation
    },
    showEdgeLabel: true, // 是否默认展示关系label
    showVertexLabel: true, // 是否默认展示实体label
    animationOptions: { // 动画的配置提供(目前仅布局切换以及展开)
        isAnimateActive: false, // 是否开启
        animateDuration: 1000, // 可选 动画持续时间
        animationCurve: null //可选 动画执行曲线函数 
    },
    octopusOptions: { // 八爪鱼布局的参数 如果不调用内置的api转化数据,需要提供如下以保证功能可用
        levelDataMap: new Map() // 层级关系
        foldVertexMap: new Map() // 存储八爪鱼的节点收起后的各自的归属关系
    }
}

graphData 说明

  • graphData
参数名必选类型说明
vertexesArray节点列表
edgesArray边列表
gdbUiConfigobject图样式对象
  • 单个顶点vertex参数
参数名必选类型说明
_idstring顶点id,当需要自定义使用八爪鱼布局时 指定为OctopusNode/123456
_tagstring实体标记(起点START、终点END),可以为NULL = ‘START’, ‘END’, ‘MARK’
_labelstring显示内容(由可视化配置(如 ${name}-{sex} )决定)
fieldUiConfigsArray字段的可视化样式配置,可以为NULL
schemaInfoobject表基本信息
timelineFieldValuedate时间轴字段值,可以为NULL
uiConfigobject顶点/边的样式对象
xdouble横坐标
ydouble纵坐标
octopusInfoobject使用八爪鱼布局且不调用内置api转化数据时需要提供的数据
  • 单个边edge参数
参数名必选类型说明
_idstring顶点id,当需要自定义使用八爪鱼布局时 OctopusEdge/123456
_fromstring本边对应的起始节点id
_tostring本边对应的结束节点id
_labelstring显示内容(由可视化配置(如 ${name}-{sex} )决定)
fieldUiConfigsArray字段的可视化样式配置,可以为NULL
schemaInfoobject表基本信息
timelineFieldValuedate时间轴字段值,可以为NULL
uiConfigobect顶点/边的样式对象
sourceobject本边对应的起始节点vertex对象
targetobject本边对应的结束节点vertex对象
  • schemaInfo 表基本信息
参数名必选类型说明
directedboolean是否有方向
schemaNamestring图元所属表物理名称
schemaNameCnstring图元所属表中文名称
  • 外观uiConfig参数
参数名必选类型说明
colorstring颜色,色值
radiusnumber尺寸(半径)
stylestring图标,iconfont的class
shapestring形状,实体独有,根据0-8映射
  • 实体形状shape参数
形状id对应形状
'1'圆形
'2'方形
'3'三角形
'4'五角星
'5'菱形
'6'五边形
'7'六边形
'8'椭圆
'0'无形状,即如只有图标则只展示图标,实际还是圆形打底
  • octopusInfo 八爪鱼布局下的实体数据
参数名类型说明
octopusEdgesarray关系转化前的原始id数组
downStreamNodearray下游节点的id数组
upStreamNodestring上游节点id

八爪鱼布局的使用

  • 目前提供两种方式来使用,一种是调用内置api完成八爪鱼特定数据的转化即可使用 另外一种可手动提供所需要的数据以及必要参数则无需转换。
  • 详细可看如上参数说明,结合项目下demo有简单演示
3.15.1

3 days ago

4.1.4

3 days ago

2.16.4

5 months ago

2.16.1

5 months ago

4.1.1

5 months ago

3.15.0

7 months ago

4.1.0

6 months ago

1.14.7

12 months ago

3.13.1

9 months ago

3.6.2

12 months ago

3.6.1

12 months ago

3.6.0

12 months ago

3.12.0

9 months ago

3.14.0

9 months ago

3.6.4

11 months ago

3.6.3

11 months ago

3.13.0

9 months ago

3.9.2

10 months ago

3.9.1

10 months ago

3.9.0

10 months ago

3.5.8

12 months ago

3.10.1

9 months ago

3.8.0

10 months ago

3.10.0

10 months ago

3.8.2

10 months ago

3.8.1

10 months ago

3.11.0

9 months ago

3.7.0

11 months ago

1.14.5

1 year ago

1.14.4

1 year ago

1.14.3

1 year ago

1.14.6

1 year ago

3.2.2

1 year ago

3.2.0

1 year ago

3.2.3

1 year ago

3.1.0

1 year ago

3.5.3

1 year ago

3.5.2

1 year ago

3.5.1

1 year ago

3.5.0

1 year ago

3.5.7

1 year ago

3.5.6

1 year ago

3.5.5

1 year ago

3.5.4

1 year ago

3.4.0

1 year ago

3.0.0

1 year ago

3.3.1

1 year ago

3.3.0

1 year ago

1.14.1

1 year ago

1.14.0

1 year ago

1.14.2

1 year ago

2.15.0

1 year ago

1.13.4

1 year ago

1.13.3

1 year ago

2.16.0

1 year ago

2.14.1

1 year ago

2.14.2

1 year ago

2.14.0

1 year ago

2.13.2

1 year ago

2.11.0

2 years ago

2.11.1

2 years ago

2.8.1

2 years ago

2.8.0

2 years ago

2.9.2

2 years ago

2.9.1

2 years ago

2.9.4

2 years ago

2.9.3

2 years ago

2.9.6

2 years ago

2.9.5

2 years ago

2.11.2

2 years ago

2.9.7

2 years ago

2.10.0

2 years ago

2.7.0

2 years ago

2.7.1

2 years ago

2.8.2

2 years ago

2.6.0

2 years ago

2.13.0

1 year ago

2.13.1

1 year ago

1.13.2

2 years ago

2.12.0

1 year ago

2.9.0

2 years ago

2.4.1

2 years ago

2.4.0

2 years ago

2.4.3

2 years ago

2.4.2

2 years ago

2.4.5

2 years ago

2.4.4

2 years ago

2.5.6

2 years ago

2.5.5

2 years ago

2.3.2

2 years ago

2.3.1

2 years ago

2.4.7

2 years ago

2.4.6

2 years ago

1.13.1

2 years ago

2.5.0

2 years ago

2.5.2

2 years ago

2.5.1

2 years ago

2.5.4

2 years ago

2.5.3

2 years ago

2.3.0

2 years ago

2.2.1

2 years ago

1.12.0

2 years ago

1.8.2

2 years ago

1.8.1

2 years ago

1.8.0

2 years ago

2.2.0

2 years ago

1.7.12

2 years ago

1.11.0

2 years ago

1.13.0

2 years ago

1.9.0

2 years ago

2.1.2

2 years ago

2.1.1

2 years ago

2.1.3

2 years ago

2.1.0

2 years ago

1.8.5

2 years ago

1.8.4

2 years ago

1.8.3

2 years ago

1.10.0

2 years ago

1.6.2

2 years ago

1.6.1

2 years ago

1.6.0

2 years ago

1.7.10

2 years ago

1.7.9

2 years ago

1.7.8

2 years ago

1.7.7

2 years ago

1.7.6

2 years ago

1.7.5

2 years ago

1.7.1

2 years ago

1.7.0

2 years ago

1.5.21

2 years ago

1.5.20

2 years ago

1.5.12

2 years ago

1.5.11

2 years ago

1.5.14

2 years ago

1.5.13

2 years ago

1.5.15

2 years ago

1.5.19

2 years ago

1.5.9

2 years ago

1.5.10

2 years ago

1.1.29

2 years ago

1.1.28

2 years ago

1.2.8

2 years ago

1.2.7

2 years ago

1.2.6

2 years ago

1.2.5

2 years ago

1.4.2

2 years ago

1.2.4

2 years ago

1.4.0

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.1.31

2 years ago

1.5.8

2 years ago

1.5.7

2 years ago

1.5.6

2 years ago

1.2.10

2 years ago

1.5.5

2 years ago

1.5.4

2 years ago

1.5.3

2 years ago

1.5.2

2 years ago

1.5.1

2 years ago

1.5.0

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.1.27

2 years ago

1.1.26

2 years ago

1.1.12

3 years ago

1.1.16

2 years ago

1.1.15

3 years ago

1.1.19

2 years ago

1.1.17

2 years ago

1.1.23

2 years ago

1.1.22

2 years ago

1.1.21

2 years ago

1.1.20

2 years ago

1.1.25

2 years ago

1.1.24

2 years ago

1.1.9

3 years ago

1.1.8

3 years ago

1.1.7

3 years ago

1.1.6

3 years ago

1.1.5

3 years ago

1.1.4

3 years ago

1.1.3

3 years ago

1.1.2

3 years ago

1.1.11

3 years ago

1.1.10

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago