GoJs分组绘图模板go.Group使用示例详解

作者:沅芷湘兰 时间:2024-04-19 11:02:24 

前言

在可视化图形中,很多的节点和连线都有某一个特征或者属于某些分类,为了在使用可视化图形的时候更加直观的看出相同类型节点的集合,我们就会用到分组的绘图模板。

Group的使用

//data
nodes: [
   {
     key: "1",
     text: "三国人物志",
     isGroup: true
   },
   {
     key: "1-1",
     text: "魏",
     group: "1",
     isGroup: true
   },
   {
     key: "1-1-1",
     text: "曹丕",
     group: "1-1",
   },
   {
     key: "1-2",
     text: "蜀",
     group: "1",
     isGroup: true
   },
   {
     key: "1-2-1",
     text: "刘备",
     group: "1-2",
   },
   {
     key: "1-3",
     text: "吴",
     group: "1",
     isGroup: true
   },
   {
     key: "1-3-1",
     text: "孙权",
     group: "1-3",
   },
 ],
 links: [
 ],
 //methods
 this.myDiagram = $$(go.Diagram, "myDiagramDiv", {
 });
 this.myDiagram.nodeTemplate = $$(
   go.Node,
   "Horizontal",
   $$(go.TextBlock,{background:"#67B73C"},new go.Binding("text", "text")),
 );
 this.myDiagram.model = new go.GraphLinksModel(this.nodes, this.links);

GoJs分组绘图模板go.Group使用示例详解

可以看出通过group字段来判断自己这个节点属于哪个组,然后用isGroup来判断该对象是一个组,而不是一个普通节点。这些组成员之间的关系又构成了一个树形结构,这让我们很方便的分析这些成员之间的关系。

Group的属性

handlesDragDropForMembers//是否可以监听子组的拖拽
isSubGraphExpanded//是否显示组内的其他节点
ungroupable//是否可以解除对应组的的分类
wasSubGraphExpanded//是否可以折叠展开组

handlesDragDropForMembers、isSubGraphExpanded属性

handlesDragDropForMembers属性是设置是够允许组内的节点的拖拽的事件冒泡到组中,如果设置为true。则需要对组内的节点设置mouseDragEnter、mouseDragleave、mouseDrop来分别处理拖拽过程中对应的拖拽事件。这些放到后面事件的方法中详细解析。

isSubGraphExpanded属性

isSubGraphExpanded属性是设置是否显示组内的其他节点,默认为true,显示组内的其他节点。可以使用myDiagram上的groupTemplate做一些简单的配置看一下对应的效果。

this.myDiagram.groupTemplate = $$(
       go.Group,
       "Auto",
       {
         isSubGraphExpanded: false,
       },
       $$(go.Shape, "Rectangle", { fill: null, stroke: "#67B73c" }),
       $$(
         go.Panel,
         "Table",
         $$(
           go.TextBlock,
           {
             row: 0,
             column: 1,
             stroke: "#FF9900",
             textAlign: "center",
             stretch: go.GraphObject.Horizontal,
           },
           new go.Binding("text")
         )
       )
     );

GoJs分组绘图模板go.Group使用示例详解

由此可以看出设置isSubGraphExpanded为false会把所有的组进行折叠。

ungroupable、wasSubGraphExpanded属性

ungroupable属性是设置是否可以解除对应的组,默认为false。可以根据自己的需求去设置不同的属性。wasSubGraphExpanded属性设置是否可以展开和折叠组,我们可以对上面的组进行一些拓展,就是下面这个样子

this.myDiagram.groupTemplate = $$(
   go.Group,
   "Auto",
   {
     wasSubGraphExpanded:true,
   },
   $$(go.Shape, "Rectangle", { fill: null, stroke: "#67B73c" }),
   $$(
     go.Panel,
     "Table",
     $$("SubGraphExpanderButton", { row: 0, column: 0, margin: 3 }),
     $$(
       go.TextBlock,
       {
         row: 0,
         column: 1,
         stroke: "#FF9900",
         textAlign: "center",
         stretch: go.GraphObject.Horizontal,
       },
       new go.Binding("text")
     ),
     $$(
       go.Placeholder,
       { row: 1, columnSpan: 2, padding: 10, alignment: go.Spot.TopLeft },
       new go.Binding("padding", "isSubGraphExpanded", function (exp) {
         return exp ? 10 : 0;
       })
     )
   )
 );

GoJs分组绘图模板go.Group使用示例详解

然后图形就变成了这样,通过SubGraphExpanderButton按钮可以控制不同的组的折叠和显示。

来源:https://juejin.cn/post/7221868323104915493

标签:GoJs,分组绘图模板,Group
0
投稿

猜你喜欢

  • Python pymongo模块常用操作分析

    2021-06-13 11:01:05
  • pandas 时间偏移的实现

    2021-09-24 03:54:01
  • Python如何实现动态数组

    2022-11-24 04:44:02
  • MySQL 逻辑备份与恢复测试的相关总结

    2024-01-19 14:19:20
  • python 字符串只保留汉字的方法

    2022-07-15 00:34:49
  • bootstrap改变按钮加载状态

    2023-07-02 05:24:48
  • SQLserver中字符串查找功能patindex和charindex的区别

    2012-06-06 20:20:42
  • Python中集合创建与使用详解

    2022-04-30 05:29:42
  • 如何进行MySQL数据库表的故障检测

    2009-02-10 10:34:00
  • 解析Python3中的Import

    2023-01-10 05:11:47
  • 关于vue3中setup函数的使用

    2024-06-05 09:16:16
  • PHP制作图形验证码代码分享

    2024-05-11 09:26:01
  • 一篇文章带你了解kali局域网攻击

    2022-02-21 23:53:35
  • MySQL数据库重命名的快速且安全方法(3种)

    2024-01-27 23:33:54
  • Tensorflow 定义变量,函数,数值计算等名字的更新方式

    2021-08-10 22:48:09
  • python 网络爬虫初级实现代码

    2021-10-02 12:24:13
  • jupyter notebook中图片显示不出来的解决

    2023-12-16 20:44:54
  • Symfony控制层深入详解

    2023-11-14 20:43:33
  • Django values()和value_list()的使用

    2021-08-21 23:03:12
  • 基于Google的Python编码规范标准

    2023-02-21 12:40:38
  • asp之家 网络编程 m.aspxhome.com