GOJS的简单使用

快速上手GOJS

GoJS是一个用于实现交互式图表的JavaScript库。

每个 GoJS 图形实例都需要一个 HTML 容器 并明确指定其大小:div

<!-- 图形的容器 div 需要明确指定大小,否则无法显示,本例子中我们还给该 DIV 添加了一个背景颜色,可以很方便的查看其大小。 -->
<div id="myDiagramDiv"
  style="width:400px; height:150px; background-color: #DAE4E4;"></div>

在 JS 代码中,需要将 的 作为参数来创建图形。id

var $ = go.GraphObject.make;
var diagram =
    $(go.Diagram, "myDiagramDiv",
        {
            "undoManager.isEnabled": false // enable Ctrl-Z to undo and Ctrl-Y to redo
        });

栗子

var $ = go.GraphObject.make;
var diagram =
    $(go.Diagram, "myDiagramDiv",
        {
            "undoManager.isEnabled": false, // 启用Ctrl-Z撤销和Ctrl-Y重做
           // layout: $(go.LayeredDigraphLayout),
            layout: $(go.TreeLayout, // 指定一个图表。排列树的布局
                { angle: 90, layerSpacing: 35 }), // angle 获取或设置树生长的默认方向。 layerSpacing 获取或设置父节点与其子节点之间的距离。
        });
// 节点模板
diagram.nodeTemplate =
    $(go.Node, "Vertical",
        $(go.Shape,
            {
                // figure: "RoundedRectangle",//形状
                figure: "Circle",
                // fill: "white",
                width: 40,
            },  // default Shape.fill value
            new go.Binding("fill", "color")),  // binding to get fill from nodedata.color
        $(go.TextBlock,
            // { margin:0 },
            new go.Binding("text", "key")), // binding to get TextBlock.text from nodedata.key
        {
            click: function (e, node) {// 点击击事件
                nodeClick(e, node);//执行的方法
            }
        }
    );
//连线模板
diagram.linkTemplate =
    $(go.Link,
        { routing: go.Link.Orthogonal, corner: 500 },// corner拐角圆度 ,routing获取或设置链接的路径是否尝试避开其他节点。该值必须是 Normal, Orthogonal, or AvoidsNodes.。
        $(go.Shape, { strokeWidth: 3, stroke: "#555" })); // the link shape
var nodeDataArray = [
    { key: "Alpha", color: "lightblue" },  // note extra property for each node data: color
    { key: "Beta", color: "pink" },
    { key: "Beta2", color: "pink" },
];
var linkDataArray = [
    { from: "Alpha", to: "Beta" },
    { from: "Alpha", to: "Beta2" }
];


diagram.model = new go.GraphLinksModel(nodeDataArray, linkDataArray);
// 定义节点点击事件处理程序
function nodeClick(e, obj) {
    var clickedNode = obj?.part;
    if (clickedNode instanceof go.Node) {
        // 在控制台打印点击的节点的key
        console.log(clickedNode.data.key + " 被点击了");
    }
}
// 将节点点击事件绑定到图表上的每个节点
// diagram.addDiagramListener("ObjectSingleClicked", nodeClick);


图形和模型

布局

连线模板

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue中使用GoJS绘制流程图是很简单的。首先,你需要将GoJS库引入你的项目中。你可以通过npm安装GoJS,然后在你的Vue组件中引入它。 在你的组件的script标签中,首先你应该引入GoJS库: import * as go from 'gojs'; 然后,在Vue的生命周期钩子函数中,比如mounted函数中,使用GoJS创建一个图表: mounted() { const myDiagram = go.GraphObject.make(go.Diagram, 'myDiagramDiv'); // 创建一个布局 const layout = go.GraphObject.make(go.TreeLayout); // 将布局设置到图表上 myDiagram.layout = layout; ... } 上面的代码中,我们使用GoJS的make方法创建一个图表对象,并将它挂载到id为myDiagramDiv的DOM元素上。然后,我们创建一个布局对象并将其设置到图表上。你还可以根据需要自定义图表的样式和行为。 接下来,你可以使用GoJS的其他方法和属性来添加节点和链接,设置样式,添加事件等来绘制你的流程图。比如: const nodeDataArray = [ { key: 'Alpha', color: 'lightblue' }, { key: 'Gamma', color: 'lightgreen' }, { key: 'Beta', color: 'lightyellow' }, ]; // 添加节点 nodeDataArray.forEach(nodeData => { myDiagram.addNodeData(nodeData); }); // 添加链接 myDiagram.model.addLinkData({ from: 'Alpha', to: 'Beta' }); 在上面的代码中,我们使用GoJS的addNodeData方法来添加节点,并使用addLinkData方法来添加链接。你可以根据你的实际需求自定义节点和链接的数据和样式。 最后,在你的模板中,你可以使用一个DOM元素来放置你的图表: <template> <div id="myDiagramDiv" style="width:800px; height:600px;"></div> </template> 最后,通过一些Vue的工具方法,你可以在Vue组件中动态地操作图表,并将其与其他Vue组件进行交互。 总之,Vue和GoJS结合使用能够轻松地绘制流程图,并提供了丰富的功能和可定制性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值