gojs的简单运用和节点内容多样式渲染

前言

本文记录了我在日常工作中使用gojs实现的一些业务功能,在这里做个简单记录。话不多说看效果

QQ2025114-113512-HD

什么是 GoJs?

GoJs 是一个 JavaScript 和 typescript 库,用于构建交互式图表,可以轻易的实现日常开发中所需要的各种示意图、结构图、组织图、流程图、状态图、思维导图、树状图等。

快速入门(GoJs入门示例网站

这里只做简单示例,想了解更详细的可以去示例网站查阅
<template>
  <!-- 图形的容器 div 需要明确指定大小,否则无法显示 -->
  <div id="diagram" style="width:50%; height:50%; background-color: #DAE4E4;"></div>
</template>
import go from 'gojs'
// 获取 gojs 的方法
const $ = go.GraphObject.make;
// 初始化gojs
initGoJs() {
  // 将 gojs 挂载到 div 上 ,canvas 的大小由 div 的宽高决定
  this.diagram =
    $(go.Diagram, "diagram",
      {
        "undoManager.isEnabled": true
      });

  const myModel = $(go.Model);
  myModel.nodeDataArray = [
    { key: "Alpha" },
    { key: "Beta" },
    { key: "Gamma" }
  ];
  this.diagram.model = myModel;
}

小结:用法相当于我们常用的echars,在页面中创建一个div,明确指定大小作为一个画布

同一节点对文字不同颜色渲染

在节点和组里面的内容后面拼接了一个等级的字段,实现逻辑是用两个TextBlock,分开渲染
在这里插入图片描述

节点的渲染方法【水平布局,做两部分渲染】

 $go(
     go.Panel,
     "Auto",
     $go(
       go.Panel,
       "Horizontal", // 使用水平布局
       //第一部分渲染
       $go(
         go.TextBlock,
         {
           margin:  new go.Margin(8, 1, 8, 1),//节点边距
           editable: false
         }, 
         new go.Binding("text", "text").makeTwoWay(),//绑定的字段内容
         new go.Binding("stroke", "#048F95"),//文字颜色
         new go.Binding("font", "10pt Sans-Serif"),//文字大小
       ),
       //第二部分渲染
       $go(
         go.TextBlock,
         {
           margin: new go.Margin(8, 1, 8, 0),
           editable: false,
         },
         new go.Binding("text", "text2").makeTwoWay(),//绑定的字段内容
         new go.Binding("font", "10pt Sans-Serif"),//文字大小
		 new go.Binding("stroke", "red")//文字颜色
 )

组的渲染【水平布局,做两部分渲染】

主要解决的是文本显示的文本位置情况,所以TextBlock要放到同一个Panel中设置水平布局

$go(
  go.Panel,
  "Auto",
  $go(
    go.Panel,
    "Horizontal",//水平布局
    {
      alignment: go.Spot.TopLeft,
      alignmentFocus: new go.Spot(0, 0, 14, 4)
    },
     //第一部分
    $go(
      go.TextBlock,
      new go.Binding("font", "fontSize"),//这种写法是绑定变量,也可以写死
      {
        alignment: go.Spot.TopLeft,//文本定位在父级的左上角部分
        alignmentFocus: new go.Spot(0, 0, 14, 4),
        font: "15pt Sans-Serif"
      },
      new go.Binding("text", "text").makeTwoWay()//这种写法是绑定变量,也可以写死
      {
    ),
    //第二部分
    $go(
      go.TextBlock,
      new go.Binding("font", "fontSize"),//这种写法是绑定变量,也可以写死 15pt Sans-Serif
      {
        editable: false,//不允许修改
        alignment: go.Spot.TopLeft,
      },
      // 绑定等级
      new go.Binding("text", "text2").makeTwoWay(),//绑定第二文本内容
      new go.Binding("stroke", "red")//绑定第二部分颜色
  )
)

总结

这只是对昨天的问题做个小总结,总体代码很多就不全部贴出来了。GoJs还是很好玩的,用的上的可以玩起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值