树形布局 让key值是3的节点有个指向key是2的节点 出现一个箭头"nodeDataArray": [ {"key":1, "name":"Billy Aiken", "title":"Software", "parent":1}, {"key":2, "name":"Stan Wellback", "title":"Testing", "parent":1}, {"key":3, "name":"Marge Innovera", "title":"Hardware", "parent":2}, {"key":4, "name":"Evan Elpus", "title":"Quality", "parent":2}, {"key":5, "name":"Lotta B. Essen", "title":"Sales Rep", "parent":2} ]代码示例

时间: 2023-06-28 21:15:15 浏览: 43
这是一个渲染树形布局的示例代码,其中加入了绘制箭头的逻辑,使得key值为3的节点指向key值为2的节点: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Tree Layout Example</title> <script src="https://unpkg.com/gojs/release/go.js"></script> </head> <body> <div id="myDiagramDiv" style="width:500px; height:500px;"></div> <script> var $ = go.GraphObject.make; var myDiagram = $(go.Diagram, "myDiagramDiv", { initialAutoScale: go.Diagram.UniformToFill, contentAlignment: go.Spot.Center, layout: $(go.TreeLayout, { angle: 90, layerSpacing: 80, nodeSpacing: 40, setsPortSpot: false, setsChildPortSpot: false }) }); myDiagram.nodeTemplate = $(go.Node, "Auto", $(go.Shape, "RoundedRectangle", { fill: "white" }), $(go.TextBlock, { margin: 8 }, new go.Binding("text", "name")), $(go.Panel, "Vertical", { visible: false }, $(go.TextBlock, { margin: 8, font: "italic 10pt sans-serif" }, new go.Binding("text", "title")), $(go.TextBlock, { margin: 8 }, new go.Binding("text", "key"))), { selectionChanged: function(node) { if (node.isSelected) { node.findObject("VERTICAL").visible = true; } else { node.findObject("VERTICAL").visible = false; } } } ); myDiagram.linkTemplate = $(go.Link, { routing: go.Link.Orthogonal, corner: 5 }, $(go.Shape, { strokeWidth: 2 }), $(go.Shape, { toArrow: "Standard" }), { routing: go.Link.AvoidsNodes, curve: go.Link.JumpOver, corner: 10, toShortLength: 3 }); var nodeDataArray = [ {"key":1, "name":"Billy Aiken", "title":"Software", "parent":1}, {"key":2, "name":"Stan Wellback", "title":"Testing", "parent":1}, {"key":3, "name":"Marge Innovera", "title":"Hardware", "parent":2, "arrow": 2}, {"key":4, "name":"Evan Elpus", "title":"Quality", "parent":2}, {"key":5, "name":"Lotta B. Essen", "title":"Sales Rep", "parent":2} ]; myDiagram.model = new go.TreeModel(nodeDataArray); myDiagram.addDiagramListener("InitialLayoutCompleted", function(e) { var diagram = e.diagram; diagram.links.each(function(link) { var arrow = link.findObject("ARROW"); if (arrow !== null) { var fromNode = link.fromNode; var toNode = link.toNode; if (fromNode.data.arrow === toNode.data.key) { arrow.visible = true; } else { arrow.visible = false; } } }); }); </script> </body> </html> ``` 在节点数据中,我们添加了一个arrow属性,用于指定箭头的目标节点。在渲染树形布局时,我们通过添加一个名为VERTICAL的面板,在选中节点时显示出key和title属性,并且添加了一个名为ARROW的形状,用于绘制箭头。在InitialLayoutCompleted事件中,我们遍历所有的链接,根据箭头属性值显示或隐藏ARROW形状。

相关推荐

最新推荐

recommend-type

Python判断是否json是否包含一个key的方法

今天小编就为大家分享一篇Python判断是否json是否包含一个key的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

js获取对象,数组所有属性键值(key)和对应值(value)的方法示例

本文实例讲述了js获取对象,数组所有属性键值(key)和对应值(value)的方法。分享给大家供大家参考,具体如下: [removed] var values=function(object) { var values = []; for (var property in object) values....
recommend-type

记录无法安装mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql的解决办法

在aliyun上安装MySQL时由于上次错误卸载mysql 导致校验文件出问题。下面小编给大家分享记录无法安装mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql的解决方法,需要的朋友参考下吧
recommend-type

详解安装sql2012出现错误could not open key…解决办法

sql也不急着用,就一直没管,想用数据库做一些demo的时候,小编选择安装了一个mysql进行实践,近期小编要做一个图书管理系统平台,快速学习的方法就是看看别人是如何做的,然后分析他们的得失作为自己的经验,借鉴...
recommend-type

Java Map 通过 key 或者 value 过滤的实例代码

主要介绍了Java Map 通过 key 或者 value 过滤的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。