Gojs 快速入门

作者: 前端xmv | 来源:发表于2018-10-31 19:04 被阅读0次

一、前言
Gojs提供了很多API给我们使用,下面只是提供完成关系图表(如下图)的某种方法,用其他方法也可以实现同样的效果。


image.png

二、准备图表数据
1、节点数据:

let nodeDataArray = [
{key: "iscroll容器-1", name: "iscroll容器-1", compId: "111", color: "pink", cursor: "grab",loc: "0 0"},
{key: "iscroll容器-2", name: "iscroll容器-1", compId: "222", color: "pink", cursor: "grab",loc: "0 -100"},
...
];

2、关系数据:

let relation = [
{from: "111", fromNodeType: "component", to: "222", toNodeType: "event"},
...
];

三、开始画图
由上图可以分析得到,图表由节点、文字、线、箭头组成。
1、创建图表

 //'go-graph-diagram': dom节点id
Let diagram = new go.Diagram('go-graph-diagram');

2、新建节点

let $ = go.GraphObject.make;
diagram.nodeTemplate = $(go.Node, 'Auto',  //'Auto':与css设置width:auto同样效果
        {
          // 添加点击事件
          click: function(e, obj) {}
        },
         // 将节点数据nodeDataArray .loc与图表位置建立联系
         new go.Binding('position', 'loc', go.Point.parse),
        //设置节点形状:带圆角的长方形
         $(go.Shape, 'RoundedRectangle',
          // 设置大小,边框大小、颜色,背景色,鼠标手势
          {desiredSize: new go.Size(160, NaN), strokeWidth: 0, fill: 'white', cursor: 'grab'},
          //将节点数据nodeDataArray .color与节点背景色建立联系
          new go.Binding('fill', 'color'), 
         //将节点数据nodeDataArray .cursor与节点鼠标手势建立联系
          new go.Binding('cursor', 'cursor')
        ),
        // 设置文本节点
        $(go.TextBlock,
          // 设置文本样式:大小,是否换行,margin
          {
            desiredSize: new go.Size(100, NaN),
            wrap: go.TextBlock.WrapFit,
            margin: 8
          }, 
          // bind TextBlock.text to Node.data.name
          new go.Binding('text', 'name'), 
          new go.Binding('cursor', 'cursor')
        )
      );

3、设置线条和箭头

this.diagram.linkTemplate = $(go.Link,
        $(go.Shape, // the link shape
          {strokeWidth: 2, stroke: 'white'}),
        $(go.Shape, // the arrowhead
          {toArrow: 'OpenTriangle',
            fill: null, stroke: 'white'})
      );

4、其他设置

// 将图表在画布中居中显示
this.diagram.initialContentAlignment = go.Spot.Center;
// 操作支持ctrl+z、ctrl+Y 实现undo和redo
this.diagram.undoManager.isEnabled = true;

5、新建关系图

// 通过节点数据和关系数组完成关系图。
this.diagram.model = new go.GraphLinksModel(nodeDataArray, relation); //nodeDataArray:graph, linkDataArray: relation

这里只是简单介绍如何快速完成一个关系图,当然如果你想改成树形图或者改箭头为闭合,改形状为圆形,插入图片等等,强大的gojs都能帮你实现,而且有完善的api和例子可以参考。
参考链接:
https://gojs.net/latest/index.html
https://gojs.net/latest/intro/viewport.html

相关文章

  • Gojs 快速入门

    一、前言Gojs提供了很多API给我们使用,下面只是提供完成关系图表(如下图)的某种方法,用其他方法也可以实现同样...

  • gojs库学习记录(一)

    gojs[https://gojs.net/latest/index.html] 图形库功能非常强大,大家先看它的...

  • C语言快速入门 - Hello World 详解

    目录 C语言快速入门 C语言快速入门 - Hello World 详解 C语言快速入门 - 变量 C语言快速入门 ...

  • C语言快速入门 - 简单运算符

    目录 C语言快速入门 C语言快速入门 - Hello World 详解 C语言快速入门 - 变量 C语言快速入门 ...

  • C语言快速入门 - 控制语句

    目录 C语言快速入门 C语言快速入门 - Hello World 详解 C语言快速入门 - 变量 C语言快速入门 ...

  • C语言快速入门 - 变量

    目录 C语言快速入门 C语言快速入门 - Hello World 详解 C语言快速入门 - 变量 C语言快速入门 ...

  • C语言快速入门

    目录 C语言快速入门 C语言快速入门 - Hello World 详解 C语言快速入门 - 变量 C语言快速入门 ...

  • gojs实现自定义图表

    效果图: 1、vuecli创建gojs-demo脚手架工程。 package.json文件中引入gojs组件,vs...

  • gojs

    Gojs项目文档 简介: Gojs 用canvas 作图,一般用来绘制流程图,关系图,表示节点与节点之间的关系,节...

  • 《分布式_Dubbo》_Dubbo快速入门和配置汇总

    Dubbo 快速入门,记录下 概要: Dubbo 快速入门 Dubbo 常规配置说明 一、Dubbo 快速入门 D...

网友评论

    本文标题:Gojs 快速入门

    本文链接:https://www.haomeiwen.com/subject/fkxztqtx.html