API篇
本篇主要根据策略协同中使用的拓扑组件,总结组建的相关用法
数据容器 DataModel
数据容器ht.DataModel(以下简称DataModel)作为承载Data数据的模型,管理着Data数据的增删以及变化事件派发,HT框架所有组件都是通过绑定DataModel,以不同的形式呈现到用户界面;同时组件也会监听DataModel模型的变化事件,实时同步更新界面数据信息,掌握了DataModel的操作就掌握了所有组件的模型驱动方式。
- getDataByTag(tag)
返回指定tag标示的Data对象 - getDatas()
返回所有添加到容器的Data数据ht.List数组 - add(data, index)
添加Data对象,index一般无需指定,其只在data的parent为空时才起作用,指定插入roots数组的索引位置 - remove(data)
删除Data对象,该操作有以下副作用:- 其子孙被递归从DataModel中删除
- 被断开父子关系data.setParent(null)
- Edge类型通过edge.setSource(null)和edge.setTarget(null)断开节点关系
- Node类型会将其关联的连线从DataModel中删除
- Node类型通过data.setHost(null)断开与宿主吸附节点关系
- clear()
删除容器中所有Data对象,该操作一次性清空,没有逐个remove的过程,不会影响Data父子关系 - toDatas(matchFunc, scope)
以matchFunc为过滤函数,返回筛选后的新ht.List对象数组,第一参数为空相当于复制全部对象数组 - toJSON()
将数据模型序列化成JSON格式对象 - beginTransaction()/endTransaction()
类似数据库里开启事务,从beginInteraction()到endInteraction()之间所有的修改可被一次性撤销或重做 - sm()
获取该容器的选择模型
选择模型 SelectionModel
ht.SelectionModel管理DataModel模型中Data对象的选择状态,每个DataModel对象都内置一个SelectionModel选择模型,控制这个SelectionModel即可控制所有绑定该DataModel的组件的对象选择状态,这意味着共享同一DataModel的组件默认就具有选中联动功能。
- ld()
返回最后被选中的对象,如果没有选中对象则返回空 - toSelection(matchFunc, scope)
返回过滤后的选中对象,matchFunc为空时代表复制全部到新数组
拓扑图形组件 GraphView
拓扑图形组件ht.graph.GraphView(以下简称GraphView)是HT框架中2D功能最丰富的组件,其相关类库都在ht.graph包下。GraphView具有基本图形的呈现和编辑功能,拓扑节点连线及自动布局功能。
getView()
获取拓扑组件的根层div,之后通过.style
可以设置组件样式getWidth()和getHeight()
获取拓扑组件的布局宽度和高度fitContent(anim, padding, notZoomIn)
缩放平移整个拓扑以展示所有的图元
参数: | 名称 | 类型 | 描述 | | —- | —- | —- | | anim | Boolean/Object | 默认false,是否使用动画,可以设置为true或者false或者animation动画对象 | | padding | Number | 缩放后图元区域与拓扑边缘的距离,默认为20 | | notZoomIn | Boolean | 是否将最小缩放值限定为1 |
getTranslateX(x)和setTranslateX(x)
获取和设置当前水平平移值,简写为tx()和tx(10),Y值同理deserialize(jsonUrl, callback)
根据 json 路径请求并反序列图纸validateImpl()
???验证生效日期getDataUI(node)
获取图元的UI类getCurrentSubGraph()
获取当前子网dm(dataModel)
获取或设置数据模型,没有参数时相当于getDataModel,有参数时相当于setDataModelenableToolTip()/disableToolTip()
启用或禁用ToolTipsetResettable(flag)
设置拓扑上是否允许通过空格将拓扑的缩放和平移值复位setRectSelectable(flag)
设置拓扑上是否允许框选操作setEditable(flag)
设置拓扑中的图元是否可编辑setMovableFunc(func)
设置移动过滤器函数onBackgroundClicked(event)
单击拓扑背景时回调,可重载做后续处理onDataClicked(data, e)
图元被点击时回调,可重载做后续处理getDataAt(pointOrEvent, filter, range)
传入逻辑坐标点或者交互event事件参数,返回当前点下的图元,filter可进行过滤
参数: | 名称 | 类型 | 描述 | | :—-: | :—-: | :—- | | pointOrEvent | Object/Event | 逻辑坐标点或交互事件对象(如鼠标事件对象) | | filter | Functoin | 过滤器函数,传入data,自定义逻辑返回true或false判断此data是否可被getDataAt返回 | | range | Number | 扩大点范围 |
handleDelete()
处理删除节点,可重载为空函数,阻止按Delete删除节点sm()
获取该容器的选择模型setInteractors(interactors)
设置交互器,参数为交互器对象集合lp(event)
传入HTML事件对象,将事件坐标转换为拓扑中的逻辑坐标,getLogicalPoint的缩写
缩放
- getZoom()和setZoom(value, anim, point)
获取和设置缩放值、最终设置的值会调用adjustZoom进行控制,point参数代表进行缩放的中心基准,一般会传入 - zoomIn(anim, point)和zoomOut(anim, point)
放大和缩小拓扑
交互
GraphView.setInteractors(list)组合这些交互器,用户也可以基于Interactor扩展自己的交互器(createEdgeInteractor)。
this.g2d.setInteractors(
[new magic.graph.DefaultInteractor(this.g2d),
new magic.graph.TouchInteractor(this.g2d, { selectable: false }),
new createEdgeInteractor(this.g2d, undefined, this.globalEvent)])
交互器类型:
- DefaultInteractor
实现Group、Edge和SubGraph图元的默认双击响应,手抓图平移,滚轮缩放,键盘响应等功能 - TouchInteractor
实现移动设备上的Touch交互功能
自动布局 AutoLayout
HT for Web提供了自动布局的功能,即根据节点和连线关系,提供多种类型算法进行自动排布节点位置。
自动布局常用于图元较多,或连接关系教复杂时,不易于人工拖拽摆放的场景。
ht.layout.AutoLayout类最重要的函数就是layout(type, finishFunc)自动布局函数。
其中type类型可为circular|symmetric|towardnorth|towardsouth|towardeast|towardwest|hierarchical七种自动布局类型
autoLayout = new ht.layout.AutoLayout(graphView);
autoLayout.layout('circular', function(){
graphView.fitContent(true);
});
是否加入自动布局等详细信息请参考自动布局
边框面板 BorderPane
边框面板可在上、下、左、右、中的五个区域位置摆放子组件,子组件可为HT框架提供的组件,也可为HTML原生组件,子组件以position为absolute方式进行绝对定位。
- isDisabled()和setDisabled(true/false, iconURL)获取和设置整个组件处于不可用状态
- topHeight顶部组件高度,可通过getTopHeight()/setTopHeight(topHeight)取值和设值
- topView顶部组件,可通过getTopView()/setTopView(view, topHeight)取值和设值
- bottomHeight底部组件高度,可通过getBottomHeight()/setBottomHeight(bottomHeight)取值和设值
- bottomView底部组件,可通过getBottomView()/setBottomView(view, bottomHeight)取值和设值
- leftWidth左侧组件宽度,可通过getLeftWidth()/setLeftWidth(leftWidth)取值和设值
- leftView左侧组件,可通过getLeftView()/setLeftView(view, leftWidth)取值和设值
- rightWidth右侧组件宽度,可通过getRightWidth()/setRightWidth(rightWidth)取值和设值
- rightView右侧组件,可通过getRightView()/setRightView(view, rightWidth)取值和设值
- centerView中间组件,可通过getCenterView()/setCenterView(value)取值和设值
鹰眼
鹰眼提供了全局鸟瞰图的功能,并支持在鹰眼上直接定位、缩放等导航功能。
鹰眼
主要配置属性如下:
- ht.graph.Overview构造函数传入其所绑定的ht.graph.GraphView组件对象
- 通过getMaskBackground和setMaskBackground获取和设置可见区域遮罩背景颜色
- 通过getContentBorderColor和setContentBorderColor获取和设置内容边框颜色
- 通过getContentBackground和setContentBackground获取和设置内容背景颜色
- 通过isAutoUpdate和setAutoUpdate获取和设置是否自动同步绑定的GraphView组件变化
- getView()
获取鹰眼组件根层DIV,之后可以通过.className
和style
设置组件名称和样式
右键菜单
ht.widget.ContextMenu可以使任意HTML元素响应右键菜单,支持任意层次子菜单,图片ICON,Check多选,Radio单选,禁用菜单项以及自定义菜单样式。
- enableGlobalKey()
启用全局快捷键,一旦启用此选项,菜单不再使用时需要显式调用dispose()销毁菜单 - addTo(dom)
参数为HTML元素,使其支持右键菜单 - setItems(json)
设置菜单项,参数为JSON对象 - hide()
隐藏菜单 - show(x, y)
显示菜单,x,y为菜单显示页面在中的坐标
右键菜单的内容由一个固定格式的JSON对象描述,包括菜单项的文字,图片以及相应的动作
json详细配置:右键菜单
var contextmenu = new ht.widget.ContextMenu(json);
contextmenu.addTo(document.getElementById("div"));
工具条组件 Toolbar
HT for Web提供了工具条组件类ht.widget.Toolbar,工具条上的元素可为原生的html元素,也支持ht提供的如ht-form.js的表单插件中的组件,并内置提供了按钮、单选按钮、复选框等组件。
- _itemGap属性
元素之间的间距,可以通过getItemGap和setItemGap获取和设置 - _separatorColor属性
分隔条颜色,可以通过getSeparatorColor和setSeparatorColor获取和设置 - getItems()和setItems(items)
获取和设置工具条元素数组
组件面板 Palette
允许用户快速访问按钮或命令。ht.widget.Palette支持自定义样式及单选、拖拽操作。
- getDataModel()
返回数据模型 - itemImageHeight
通过setItemImageHeight(newHeight)和getItemImageHeight()操作,控制所有按钮元素的高度,默认为50
矩阵 Matrix
???文档中没有