GoJS是一款功能强大,快速且轻量级的流程图控件,可帮助你在JavaScript 和HTML5 Canvas程序中创建流程图,且极大地简化您的JavaScript / Canvas 程序。

SubTrees

树形图可能会变得非常大。简化图的一种方法是隐藏树的分支。“折叠”树节点意味着不显示其所有子节点及其链接,并递归折叠所有具有子节点的子节点。

要折叠树中的节点,请将Node.isTreeExpanded设置为false。为了确保它被扩展,将该属性设置为true。您不应在不是GraphObject.visible的Node上将此属性设置为true 。

通常,在节点上提供一个按钮以允许用户根据需要折叠和展开子树。 GoJS通过提供一种预定义的面板,称为“ TreeExpanderButton”,使该面板易于实现,该面板用作折叠和展开节点子树的按钮。此按钮更改子树除节点本身以外的所有部分的可见性。

单击扩展器按钮也会使对节点负责的布局无效。折叠子树通常会导致较大的空白区域,而展开子树通常会导致节点重叠,因此应再次执行新的布局以使树看起来更好。diagram.nodeTemplate =

$(go.Node, "Horizontal",

$(go.Panel, "Auto",

$(go.Shape, "Ellipse", { fill: null }),

$(go.TextBlock,

new go.Binding("text", "key"))

),

$("TreeExpanderButton")

);

diagram.layout = $(go.TreeLayout);

var nodeDataArray = [

{ key: "Alpha" }, { key: "Beta" }, { key: "Gamma" }, { key: "Delta" },

{ key: "Epsilon" }, { key: "Zeta" }, { key: "Eta" }, { key: "Theta" }

];

var linkDataArray = [

{ from: "Alpha", to: "Beta" },

{ from: "Beta", to: "Gamma" },

{ from: "Beta", to: "Delta" },

{ from: "Alpha", to: "Epsilon" },

{ from: "Epsilon", to: "Zeta" },

{ from: "Epsilon", to: "Eta" },

{ from: "Epsilon", to: "Theta" }

];

diagram.model = new go.GraphLinksModel(nodeDataArray, linkDataArray);

请注意,如果先折叠“ Beta”节点,然后折叠“ Alpha”根节点,然后再展开“ Alpha”节点,则“ Beta”节点将保持折叠状态,而“ Epsilon”节点将保持展开状态。这是因为折叠操作会记住子树内节点的状态,即属性Node.wasTreeExpanded。通过子树递归时,扩展操作会尊重该属性的值。

您可能还想从树上开始大部分或完全崩溃。首先,在模板中将Node.isTreeExpanded设置为false。这将仅显示树的根。其次,如果要显示树的三个级别,请调用Node.expandTree。diagram.nodeTemplate =

$(go.Node, "Horizontal",

{ isTreeExpanded: false },  // by default collapsed

$(go.Panel, "Auto",

$(go.Shape, "Ellipse", { fill: null }),

$(go.TextBlock,

new go.Binding("text", "key"))

),

$("TreeExpanderButton")

);

diagram.layout = $(go.TreeLayout);

// After the nodes and links have been created,

// expand each of the tree roots to 3 levels deep.

diagram.addDiagramListener("InitialLayoutCompleted", function(e) {

e.diagram.findTreeRoots().each(function(r) { r.expandTree(3); });

});

var nodeDataArray = [

{ key: "Alpha" }, { key: "Beta" }, { key: "Gamma" }, { key: "Delta" },

{ key: "Epsilon" }, { key: "Zeta" }, { key: "Eta" }, { key: "Theta" },

{ key: "Iota" }, { key: "Kappa" }, { key: "Lambda" }

];

var linkDataArray = [

{ from: "Alpha", to: "Beta" },

{ from: "Beta", to: "Gamma" },

{ from: "Beta", to: "Delta" },

{ from: "Alpha", to: "Epsilon" },

{ from: "Epsilon", to: "Zeta" },

{ from: "Epsilon", to: "Eta" },

{ from: "Eta", to: "Theta" },

{ from: "Gamma", to: "Iota" },

{ from: "Iota", to: "Kappa" },

{ from: "Iota", to: "Lambda" }

];

diagram.model = new go.GraphLinksModel(nodeDataArray, linkDataArray);

====================================================

想要购买GoJS正版授权的朋友可以咨询慧都官方客服

有关产品的最新消息和最新资讯,欢迎扫描关注下方微信公众号

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至hey@evget.com

文章转载自:GoJS

树状分支图的html如何编写,流程图控件GoJS教程:树状图的分支设置相关推荐

  1. c#编写activeX控件详细教程,底部附有下载地址

    1.新建windows窗体控件库,命名为 MyActiveXDemo,打开Properties/AssemblyInfo.cs,修改为如下: 2.打开工具箱,在自动生成的UserControl1.cs ...

  2. Unity 工具控件 之 Text 文本字间距调整(老版本的Unity编写工具控件/新版本Unity使用TMP)

    Unity 工具控件 之 Text 文本字间距调整(老版本的Unity编写工具控件/新版本Unity使用TMP) 目录 Unity 工具控件 之 Text 文本字间距调整(老版本的Unity编写工具控 ...

  3. 用C#编写ActiveX控件(三) 转载

    在前面我们已经完成了ActiveX控件的开发,接下来的就是发布它了. 首先,我们建立一个windows安装项目,并将ActiveX控件的主输出添加到项目输出中.然后,改动ActiveX控件的主输出文件 ...

  4. [转]用C#编写ActiveX控件(一)

    前些日子做一个Web项目,必须自己编写一个ActiveX控件.如今的ActiveX控件大多是使用VB/C++来开发的,而我对他们并不熟悉,因此考虑使用熟悉的C#编写ActiveX控件. 首先,建立一个 ...

  5. 关于用C#编写ActiveX控件4(转)

    在前面我们已经完成了ActiveX控件的开发,接下来的就是发布它了. 首先,我们建立一个windows安装项目,并将ActiveX控件的主输出添加到项目输出中.然后,改动ActiveX控件的主输出文件 ...

  6. 关于用C#编写ActiveX控件2(转)

        了解了上述相关的理论之后,我们来看一个用C#编写ActiveX的实例. 首先,建立一个WinForm控件项目HelloWorld,并拖入一个Label控件,文字设为HelloWorld,如图: ...

  7. ATL7 1编写ActiveX控件

    目录 ATL7.1编写ActiveX控件... 1 目录... 1 一创建ATL项目... 1 二创建ActiveX控件... 2 三解释向导的行为... 3 四标准属性... 4 背景属性... 4 ...

  8. 用C#编写ActiveX控件(二)

    原文地址为: 用C#编写ActiveX控件(二) 用C#编写ActiveX控件(二)                             Homer 在我的上一篇blog中,已经实现了一个最基本的 ...

  9. 编写ActiveX控件及其打包方法

    1.ActiveX控件概述 ActiveX控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面及Web应用中.在Windows操作系统以OCX结尾的文件,OCX代表"对象链接 ...

  10. 基于GDI+用C#编写的.NET流程图控件开发周记(2011-08-05)

    花了差不多一个月的业余时间,新编写了一个流程图控件(用于.NET和C#),这个控件现在终于有了一个原型.控件可以用在主界面的导航画面,也可以代替Visio来绘制流程图,最重要的是可以用于日后的工作流功 ...

最新文章

  1. linux中-i选项的作用,linux – find中的-prune选项有什么作用?
  2. cf552 G Minimum Possible LCMn个数,求最小得一对lcm
  3. 转tigase 安装
  4. 字符串匹配之KMP算法详解
  5. 室内高品质海报框架模型模板(Photoshop PSD)
  6. java读取串口设备信息_Java--串口之间的通信及扫描枪的读取
  7. 东南大学计算机考研数学教材,考东南大学计算机的看这里,双非学长逆袭!
  8. mysql句柄是什么_什么是句柄?为什么会有句柄?HANDLE
  9. 屏幕放大缩小及标注神器【Zommit】
  10. 微信小程序富文本编辑器
  11. 这是一个没有现金的国家——丹麦
  12. 基于腾讯地图实现精准定位,实现微信小程序考勤打卡功能
  13. 深度走心字节跳动内推
  14. 脚本小子-------使用python脚本完成mysql数据库备份、恢复、查询并生成excel
  15. 贸易融资实务:出口押汇与进口押汇
  16. 函数(详解)——C语言
  17. NYOJ_1273_宣传墙
  18. Kernel启动流程源码解析 1 head.S
  19. 怎么设置路由器当交换机用
  20. 尚硅谷大数据开发Day04

热门文章

  1. eas账号是什么意思_请问帐号和账号有什么区别,具体怎么用?
  2. BUUCTF:[WUSTCTF2020]girlfriend
  3. 柯美smb扫描出现服务器连接错误_柯尼卡美能达smb扫描设置方法是什么
  4. 【3D建模制作技巧分享】3dmax如何设置视图布局
  5. 从turtlesim到贪吃蛇……
  6. [10]STM32程序调试方法-STLINK调试和软件调试
  7. 使用PyInstaller脚本打包时提示Unable to open icon file 的一种情况
  8. 用计算python两点之间的距离math_Python求两点之间的直线距离(2种实现方法)
  9. 麒麟案例 | 南浔电商领头羊+麒麟计划,碰撞出了企业下一个10年增长之路!
  10. WIN7不能访问共享文件夹