经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Go语言 » 查看文章
GoJs分组绘图模板go.Group使用示例详解
来源:jb51  时间:2023/4/19 9:01:08  对本文有异议

前言

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

Group的使用

  1. //data
  2. nodes: [
  3. {
  4. key: "1",
  5. text: "三国人物志",
  6. isGroup: true
  7. },
  8. {
  9. key: "1-1",
  10. text: "魏",
  11. group: "1",
  12. isGroup: true
  13. },
  14. {
  15. key: "1-1-1",
  16. text: "曹丕",
  17. group: "1-1",
  18. },
  19. {
  20. key: "1-2",
  21. text: "蜀",
  22. group: "1",
  23. isGroup: true
  24. },
  25. {
  26. key: "1-2-1",
  27. text: "刘备",
  28. group: "1-2",
  29. },
  30. {
  31. key: "1-3",
  32. text: "吴",
  33. group: "1",
  34. isGroup: true
  35. },
  36. {
  37. key: "1-3-1",
  38. text: "孙权",
  39. group: "1-3",
  40. },
  41. ],
  42. links: [
  43. ],
  44. //methods
  45. this.myDiagram = $$(go.Diagram, "myDiagramDiv", {
  46. });
  47. this.myDiagram.nodeTemplate = $$(
  48. go.Node,
  49. "Horizontal",
  50. $$(go.TextBlock,{background:"#67B73C"},new go.Binding("text", "text")),
  51. );
  52. this.myDiagram.model = new go.GraphLinksModel(this.nodes, this.links);

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

Group的属性

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

handlesDragDropForMembers、isSubGraphExpanded属性

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

isSubGraphExpanded属性

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

  1. this.myDiagram.groupTemplate = $$(
  2. go.Group,
  3. "Auto",
  4. {
  5. isSubGraphExpanded: false,
  6. },
  7. $$(go.Shape, "Rectangle", { fill: null, stroke: "#67B73c" }),
  8. $$(
  9. go.Panel,
  10. "Table",
  11. $$(
  12. go.TextBlock,
  13. {
  14. row: 0,
  15. column: 1,
  16. stroke: "#FF9900",
  17. textAlign: "center",
  18. stretch: go.GraphObject.Horizontal,
  19. },
  20. new go.Binding("text")
  21. )
  22. )
  23. );

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

ungroupable、wasSubGraphExpanded属性

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

  1. this.myDiagram.groupTemplate = $$(
  2. go.Group,
  3. "Auto",
  4. {
  5. wasSubGraphExpanded:true,
  6. },
  7. $$(go.Shape, "Rectangle", { fill: null, stroke: "#67B73c" }),
  8. $$(
  9. go.Panel,
  10. "Table",
  11. $$("SubGraphExpanderButton", { row: 0, column: 0, margin: 3 }),
  12. $$(
  13. go.TextBlock,
  14. {
  15. row: 0,
  16. column: 1,
  17. stroke: "#FF9900",
  18. textAlign: "center",
  19. stretch: go.GraphObject.Horizontal,
  20. },
  21. new go.Binding("text")
  22. ),
  23. $$(
  24. go.Placeholder,
  25. { row: 1, columnSpan: 2, padding: 10, alignment: go.Spot.TopLeft },
  26. new go.Binding("padding", "isSubGraphExpanded", function (exp) {
  27. return exp ? 10 : 0;
  28. })
  29. )
  30. )
  31. );

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

结语

在真正的开发过程中,一般遇到这种分组的情况比较少,但是gojs还是提供了组的绘图模板供我们使用。也是拓展了很多可视化图形的显示空间

以上就是GoJs分组绘图模板go.Group使用示例详解的详细内容,更多关于GoJs分组绘图模板Group的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号