new DataModel()
数据模型
Methods
-
a(name, value) → {void}
-
设置attr属性
Parameters:
Name Type Description name
string 属性名
value
any 属性值
Returns:
void -
add(data, index) → {void}
-
增加数据元素
Parameters:
Name Type Attributes Description data
ht.Data 数据元素
index
number <optional>
插入索引
Returns:
void -
addDataModelChangeListener(listener, scope, ahead) → {void}
-
增加数据模型增删变化事件监听器
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
ahead
boolean <optional>
是否将当前监听器插入到监听器列表开头
Returns:
voidExample
dataModel.addDataModelChangeListener(function(event) { //event格式: { kind: "add"|"remove"|"clear",//事件类型 data: data//事件相关data } });
-
addDataPropertyChangeListener(listener, scope, ahead) → {void}
-
增加模型中Data元素属性变化事件监听器
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
ahead
boolean <optional>
是否将当前监听器插入到监听器列表开头
Returns:
voidExample
dataModel.addDataPropertyChangeListener(function(event) { //event格式: { property: "name",//发生变化的属性 data: data,//属性发生变化的data oldValue: 0,//旧值 newValue: 1//新值 } });
-
addHierarchyChangeListener(listener, scope, ahead) → {void}
-
增加监听器,监听Data在DataModel中的层次(用于TreeView、TreeTableView等)变化事件
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
ahead
boolean <optional>
Returns:
voidExample
dataModel.addHierarchyChangeListener(function(event) { //event格式: { data: data,//事件相关Data oldIndex: 0,//旧层次 newIndex: 1//新层次 } });
-
addHistory(action) → {void}
-
增加一条记录
Parameters:
Name Type Description action
any Returns:
void -
addIndexChangeListener(listener, scope, ahead) → {void}
-
增加监听器,监听Data在DataModel中的索引(用于拓扑组件)变化事件
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
ahead
boolean <optional>
是否将当前监听器插入到监听器列表开头
Returns:
voidExample
dataModel.addIndexChangeListener(function(event) { //event格式: { data: data,//事件相关Data oldIndex: 0,//旧索引 newIndex: 1//新索引 } });
-
addPropertyChangeListener(listener, scope, ahead) → {void}
-
增加自身属性变化事件监听器
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
Object <optional>
监听器函数域
ahead
boolean <optional>
是否将当前监听器插入到监听器列表开头
Returns:
void -
addScheduleTask(task) → {void}
-
添加调度任务
Parameters:
Name Type Description task
ScheduleTask 调度任务对象
Returns:
void -
addSerializeListener(listener, scope, ahead) → {void}
-
增加序列化监听
Parameters:
Name Type Attributes Description listener
function scope
any <optional>
ahead
boolean <optional>
Returns:
void -
beginTransaction() → {void}
-
类似数据库里开启事务,从beginTransaction()到endTransaction()之间所有的修改可被一次性撤销或重做
Returns:
void -
bringForward(data) → {void}
-
将节点往前一级,即数组下标往后一级
Parameters:
Name Type Description data
ht.Data 对应节点
Returns:
void -
bringSelectionForward(sm) → {void}
-
将选中的节点往前移动一级,即数组下标往后一级
Parameters:
Name Type Attributes Description sm
ht.SelectionModel <optional>
选择模型,若不传则使用数据模型自带的
Returns:
void -
bringSelectionToFront(sm) → {void}
-
将选中节点页面中置顶,即数组下标移至最后
Parameters:
Name Type Attributes Description sm
ht.SelectionModel <optional>
选择模型,若不传则使用数据模型自带的
Returns:
void -
bringToFront(data) → {void}
-
将节点置顶,即数组下标移至最后
Parameters:
Name Type Description data
ht.Data Returns:
void -
clear() → {void}
-
删除容器中所有Data对象,该操作一次性清空,没有逐个remove的过程,不会影响Data父子关系
Returns:
void -
clearHistoryManager() → {void}
-
清空所有历史记录
Returns:
void -
contains(data) → {boolean}
-
判断容器是否包含该data对象
Parameters:
Name Type Description data
ht.Data 要判断的数据元素
Returns:
boolean -容器是否包含参数data
-
deserialize(json, rootParent, setId) → {ht.List}
-
反序列化数据到数据模型
Parameters:
Name Type Attributes Description json
string | Object 要被反序列化的json字符串
rootParent
ht.Data <optional>
指定反序列化的数据元素的父元素
setId
boolean <optional>
反序列化后的数据元素是否保留原id
-
disableAnimation() → {void}
-
停止全局动画定时器,如果不需要动画请关闭定时器,不然会造成性能浪费
Requires:
- module:ht-animation.js
Returns:
void -
disableHistoryManager() → {void}
-
禁用撤销重做功能
Returns:
void -
each(func, scope) → {void}
-
提供一个回调函数遍历此容器
Parameters:
Name Type Attributes Description func
Object 遍历函数
scope
any <optional>
函数域
Returns:
voidExample
dataModel.each(function(data) { console.log(data: Data); });
-
eachByBreadthFirst(func, data, scope) → {void}
-
以data为起始广度优先遍历Data对象
Parameters:
Name Type Attributes Description func
Object 遍历函数
data
ht.Data <optional>
遍历起点元素
scope
any <optional>
函数域
Returns:
void -
eachByDepthFirst(func, data, scope) → {void}
-
以data为起始深度优先遍历Data对象
Parameters:
Name Type Attributes Description func
Object 遍历函数
data
ht.Data <optional>
遍历起点元素
scope
any <optional>
函数域
Returns:
void -
eachByHierarchical(func, data, scope) → {void}
-
以树结构顺序遍历Data对象
Parameters:
Name Type Attributes Description func
Object 遍历函数
data
ht.Data <optional>
遍历起点元素
scope
any <optional>
函数域
Returns:
void -
enableAnimation(interval) → {void}
-
启动全局动画定时器
Parameters:
Name Type Attributes Description interval
number <optional>
全局动画间隔
Requires:
- module:ht-animation.js
Returns:
void -
enableHistoryManager() → {void}
-
启用撤销重做功能
Returns:
void -
endTransaction() → {void}
-
类似数据库里开启事务,从beginTransaction()到endTransaction()之间所有的修改可被一次性撤销或重做
Returns:
void -
firePropertyChange(property, oldValue, newValue) → {void}
-
派发属性变化事件,可使用fp的简写方式
Parameters:
Name Type Description property
string 属性
oldValue
any 旧值
newValue
any 新值
Returns:
void -
fireSerializeEvent(event) → {void}
-
主动派发序列化事件
Parameters:
Name Type Description event
any Returns:
void -
fp(property, oldValue, newValue) → {void}
-
派发属性变化事件,firePropertyChange 方法的简写
Parameters:
Name Type Description property
string 属性
oldValue
any 旧值
newValue
any 新值
Returns:
void -
getAnimationInterval() → {string|number}
-
获取动画间隔
Requires:
- module:ht-animation.js
Returns:
string | number -动画间隔
-
getAttr(name) → {Object}
-
获取attr属性
Parameters:
Name Type Description name
string 属性名
Returns:
Object -
getAttrObject() → {Object}
-
获取attr属性对象,该属性默认为空,用于存储用户业务信息
Returns:
Object -attr属性对象
-
getBackground() → {string}
-
获取背景颜色,这一属性在部分视图组件中生效
Returns:
string -背景色
-
getClass() → {function}
-
获取类声明(构造函数)
Returns:
function -
getClassName() → {string}
-
获取类全名
Returns:
string -
getDataAnimation(data) → {object}
-
获取节点上的动画对象
Parameters:
Name Type Description data
ht.Data 节点
Requires:
- module:ht-animation.js
Returns:
object -动画对象
-
getDataById(id) → {ht.Data}
-
根据id快速查找Data对象,模型内部维护着一个id->data的映射表,因此查找速度比遍历方式快
Parameters:
Name Type Description id
string | number 要查找的id
-
getDataByTag(tag) → {ht.Data}
-
根据tag快速查找,模型内部维护着一个tag->data的映射表,因此查找速度比遍历方式快
Parameters:
Name Type Description tag
string | number 要查找的tag
-
getDatas() → {ht.List}
-
获取所有添加到容器的Data数据集合
Returns:
ht.List -
getEnvmap() → {any}
-
获取环境光贴图
Returns:
any -没有设置环境光的情况下会返回 undefined, 旧模式下返回 string, 新模式下返回 Array
-
getEnvmapType() → {"new"|"legacy"}
-
获取环境光模式
Returns:
"new" | "legacy" -new / legacy 两种模式
-
getFullscreenDatas() → {Object}
-
获取DataModel中设置了全屏(s:fullscreen)的图元
Returns:
Object -
getHistoryManager() → {ht.HistoryManager}
-
获取历史管理器
Returns:
ht.HistoryManager -
getLayers() → {Array.<any>}
-
获取拓扑中已定义的层
Returns:
Array.<any> -
getName() → {string}
-
获取名字
Returns:
string -
getPostProcessingData() → {any}
-
获取后处理相关数据,后处理是 Bloom / Dof / 色彩饱和度
Returns:
any -
getReflectors() → {any}
-
获取镜反射对象
Returns:
any -
getRoots() → {ht.List}
-
获取所有parent为空的Data对象
Returns:
ht.List -
getSelectionModel() → {ht.SelectionModel}
-
获取该容器的选择模型
Returns:
ht.SelectionModel -
getSerializableAttrs() → {Object}
-
此函数返回一个map,决定序列化时哪些attr属性可被序列化,默认所有attr对象里的属性都会被序列化
Returns:
Object -需要被序列化的attr属性map
Example
function(){ var name, map = ; for (name in this._attrObject) { map[name] = 1; } returns map; }
-
getSiblings(data) → {ht.List}
-
获取和data同父子层次的兄弟数组,如果data父亲为空,则返回dataModel.getRoots()
Parameters:
Name Type Description data
ht.Data 目标data
Returns:
ht.List -
getSuperClass() → {function}
-
获取父类声明(构造函数),继承类时可以用来调用父类构造或函数
Returns:
function -
getTagMap() → {any}
-
获取当前数据的 tag map 对象
Returns:
any -
handleDataPropertyChange(event) → {void}
-
默认的数据属性变更处理函数
Parameters:
Name Type Description event
any Returns:
void -
isAutoAdjustIndex() → {boolean}
-
是否自动调整data在容器中索引顺序
Returns:
boolean -
isDeserializing() → {boolean}
-
是否正在序列化中
Returns:
boolean -
isEmpty() → {boolean}
-
判断容器是否为空
Returns:
boolean -
isHierarchicalRendering() → {boolean}
-
获取是否树层次结构渲染
Returns:
boolean -
md(listener, scope, ahead) → {void}
-
增加模型中Data元素属性变化事件监听器,addDataPropertyChangeListener的缩写
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
ahead
boolean <optional>
是否将当前监听器插入到监听器列表开头
Returns:
voidExample
dataModel.md(function(event) { //event格式: { property: "name",//发生变化的属性 data: data,//属性发生变化的data oldValue: 0,//旧值 newValue: 1//新值 } });
-
mh(listener, scope, ahead) → {void}
-
增加监听器,监听Data在DataModel中的层次(用于TreeView、TreeTableView等)变化事件,addHierarchyChangeListener的缩写
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
ahead
boolean <optional>
是否将当前监听器插入到监听器列表开头
Returns:
voidExample
dataModel.mh(function(event) { //event格式: { data: data,//事件相关Data oldIndex: 0,//旧层次 newIndex: 1//新层次 } });
-
mm(listener, scope, ahead) → {void}
-
增加数据模型增删变化事件监听器,addDataModelChangeListener的缩写
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
ahead
boolean <optional>
是否将当前监听器插入到监听器列表开头
Returns:
voidExample
dataModel.mm(function(event) { //event格式: { kind: "add"|"remove"|"clear",//事件类型 data: data//事件相关data } });
-
moveDown(data) → {void}
-
移动data到同层兄弟数组中的下一个位置
Parameters:
Name Type Description data
ht.Data 要移动的数据元素
Returns:
void -
moveSelectionDown(sm) → {void}
-
移动当前选中的数据元素到同层兄弟数组中的下一个位置
Parameters:
Name Type Attributes Description sm
ht.SelectionModel <optional>
要操作的选中模型,如果为空,使用dataModel自身绑定的选中模型
Returns:
void -
moveSelectionToBottom(sm) → {void}
-
移动当前选中的数据元素到同层兄弟数组的底部
Parameters:
Name Type Attributes Description sm
ht.SelectionModel <optional>
要操作的选中模型,如果为空,使用dataModel自身绑定的选中模型
Returns:
void -
moveSelectionToTop(sm) → {void}
-
移动当前选中的数据元素到同层兄弟数组的顶部
Parameters:
Name Type Attributes Description sm
ht.SelectionModel <optional>
要操作的选中模型,如果为空,使用dataModel自身绑定的选中模型
Returns:
void -
moveSelectionUp(sm) → {void}
-
移动当前选中的数据元素到同层兄弟数组中的上一个位置
Parameters:
Name Type Attributes Description sm
ht.SelectionModel <optional>
要操作的选中模型,如果为空,使用dataModel自身绑定的选中模型
Returns:
void -
moveTo(data, newIndex) → {void}
-
移动数据元素到同层兄弟数组中的指定索引
Parameters:
Name Type Description data
ht.Data 要移动的数据元素
newIndex
number 目标索引
Returns:
void -
moveToBottom(data) → {void}
-
移动数据元素到同层兄弟数组的底部
Parameters:
Name Type Description data
ht.Data 要移动的数据元素
Returns:
void -
moveToIndex(data, newIndex, oldIndex) → {void}
-
将指定节点移动至新下标位置
Parameters:
Name Type Attributes Description data
ht.Data 节点
newIndex
number 新下标
oldIndex
number <optional>
旧下标
Returns:
void -
moveToTop(data) → {void}
-
移动数据元素到同层兄弟数组的顶部
Parameters:
Name Type Description data
ht.Data 要移动的数据元素
Returns:
void -
moveUp(data) → {void}
-
移动数据元素到同层兄弟数组中的上一个位置
Parameters:
Name Type Description data
ht.Data 要移动的数据元素
Returns:
void -
mp(listener, scope, ahead) → {void}
-
增加自身属性变化事件监听器,addPropertyChangeListener的缩写
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
Object <optional>
ahead
boolean <optional>
是否将当前监听器插入到监听器列表开头
Returns:
void -
onAdded(data) → {void}
-
数据元素添加的回调函数,可重载做后续处理
Parameters:
Name Type Description data
ht.Data 新添加的数据元素
Returns:
void -
onDataPropertyChanged(data, e) → {void}
-
数据元素属性变化回调函数,可重载做后续处理
Parameters:
Name Type Description data
ht.Data 发生变化的数据元素
e
Object 事件信息
Returns:
void -
onHistoryManagerChanged() → {void}
-
历史记录发生变化时的回调,可以重载做额外处理
Returns:
void -
onRemoved(data) → {void}
-
数据元素删除时回调函数,可重载做后续处理
Parameters:
Name Type Description data
ht.Data 被删除的数据元素
Returns:
void -
redo() → {void}
-
重做操作,必须设置 historyManager 才会生效
Returns:
void -
remove(data, option) → {void}
-
删除数据元素,该操作有以下副作用:
- 其子孙被递归从DataModel中删除
- 被断开父子关系data.setParent(null)
- Edge类型通过edge.setSource(null)和data.setTarget(null)断开节点关系
- Node类型会将其关联的连线从DataModel中删除
- Node类型通过data.setHost(null)断开与宿主吸附节点关系
Parameters:
Name Type Attributes Description data
ht.Data 要删除的数据元素
option
Object <optional>
Returns:
void -
removeDataById(id) → {void}
-
通过id删除数据元素
Parameters:
Name Type Description id
string | number 要删除的数据元素id
Returns:
void -
removeDataByTag(tag) → {void}
-
通过tag删除数据元素
Parameters:
Name Type Description tag
string 要删除的数据元素tag
Returns:
void -
removeDataModelChangeListener(listener, scope) → {void}
-
删除数据模型增删变化事件监听器
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
Returns:
void -
removeDataPropertyChangeListener(listener, scope) → {void}
-
删除模型中Data元素属性变化事件监听器
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
Returns:
void -
removeHierarchyChangeListener(listener, scope) → {void}
-
删除监听Data在DataModel中的层次(用于TreeView、TreeTableView等)变化事件的监听器
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
Returns:
void -
removeIndexChangeListener(listener, scope) → {void}
-
删除监听Data在DataModel中的索引(用于拓扑组件)变化事件的监听器
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
Returns:
void -
removePropertyChangeListener(listener, scope) → {void}
-
移除自身属性变化事件监听器
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
Object <optional>
监听器函数域
Returns:
void -
removeScheduleTask(task) → {void}
-
删除调度任务
Parameters:
Name Type Description task
ScheduleTask 调度任务对象,注意必须是 add 时的同一引用对象
Returns:
void -
removeSerializeListener(listener, scope) → {void}
-
移除序列化监听
Parameters:
Name Type Attributes Description listener
function scope
any <optional>
Returns:
void -
reverseEachByHierarchical(func, data, scope) → {void}
-
以树结构反向顺序遍历Data对象
Parameters:
Name Type Attributes Description func
Object 遍历函数
data
ht.Data 遍历起点元素
scope
any <optional>
函数域
Returns:
void -
sendBackward(data) → {void}
-
将节点往后一级,即数组下标往前一级
Parameters:
Name Type Description data
ht.Data 对应节点
Returns:
void -
sendSelectionBackward(sm) → {void}
-
将选中的节点往后移动一级,即数组下标往前一级
Parameters:
Name Type Attributes Description sm
ht.SelectionModel <optional>
选择模型,若不传则使用数据模型自带的
Returns:
void -
sendSelectionToBack(sm) → {void}
-
将选中节点页面中置底,即数组下标移至开头
Parameters:
Name Type Attributes Description sm
ht.SelectionModel <optional>
选择模型,若不传则使用数据模型自带的
Returns:
void -
sendToBack(data) → {void}
-
将节点置底,即数组下标移至开头
Parameters:
Name Type Description data
ht.Data Returns:
void -
sendToBottom(data) → {void}
-
将data在拓扑上置底
Parameters:
Name Type Description data
ht.Data 要置底的数据元素
Returns:
void -
sendToTop(data) → {void}
-
将data在拓扑上置顶
Parameters:
Name Type Description data
ht.Data 要置顶的数据元素
Returns:
void -
serialize(space) → {string}
-
将数据模型序列化成JSON格式字符串
Parameters:
Name Type Attributes Description space
number <optional>
缩进空格数
Returns:
string -序列化字符串
-
setAttr(name, value) → {void}
-
设置attr属性
Parameters:
Name Type Description name
string 属性名
value
any 属性值
Returns:
void -
setAttrObject(attrObject) → {void}
-
设置attr属性对象,该属性默认为空,用于存储用户业务信息
Parameters:
Name Type Description attrObject
Object attr属性对象
Returns:
void -
setAutoAdjustIndex(autoAdjustIndex) → {void}
-
设置是否自动调整data在容器中索引顺序
Parameters:
Name Type Description autoAdjustIndex
boolean 是否自动调整data在容器中索引顺序
Returns:
void -
setBackground(color) → {void}
-
设置背景颜色
Parameters:
Name Type Description color
string 颜色
Returns:
void -
setDeserializing(deserializeing) → {void}
-
设置是否正在反序列化过程中
Parameters:
Name Type Description deserializeing
boolean Returns:
void -
setEnvmap(evnmap) → {void}
-
设置环境逛贴图
Parameters:
Name Type Description evnmap
string | Array.<any> 贴图位置
Returns:
void -
setEnvmapType(type) → {void}
-
设置环境光模式
Parameters:
Name Type Description type
"new" | "legacy" new / legacy 两种模式
Returns:
void -
setHierarchicalRendering(enable) → {void}
-
设置是否树层次结构渲染
GraphView 绘制层次逻辑是这样子的,HT 默认的 GraphView 是根据 DataModel.getDatas() 的顺序绘制图元,而 getDatas() 的图元索引顺序会一直自动调节变化,例如 Node 一般要呈现在其关联的 Edge 之上,孩子一般呈现在 Parent 之上,节点呈现在 Host 的吸附对象之上,包括 Group 的展开合并也会影响关联的 Edge 的显示顺序,所以对于网络拓扑图的应用一般由 HT 自行调节图元层次关系,不需要人工设置干预,操作点击时自定会有 sendToTop 的层次变化效果。但对于绘制工控 HMI 之类的界面图形,往往和传统的绘图软件类似,先绘制的图元呈现在下面,后绘制的在上面,可通过右键菜单之类的调节上移或下移图元,所以 HT 增加了关闭自动 sendToTop 的开关,dataModel.setHierarchicalRendering(true),这个参数默认为 false,设置为 true 时 GraphView 就会根据 dataModel.getRoots() 以及所有 Data.getChildren() 的父子关系来绘制
Parameters:
Name Type Description enable
boolean Returns:
void -
setLayers(layers) → {void}
-
定义拓扑中的层,参数为数组,数组中每个元素代表一个层,层在数组中的索引越大,在拓扑中就越靠上显示
注意,图元的默认layer是0,因此如果定义的层中不包含0,所有的图元默认将不可见Parameters:
Name Type Description layers
Array.<Object> 层数组
Returns:
voidExample
graphView.setLayers([0, 1, 'Layer2']); node.setLayer(1); node2.setLayer('Layer2');
-
setName(name) → {void}
-
设置名称
Parameters:
Name Type Description name
string 名称
Returns:
void -
setPostProcessingData(processingData) → {void}
-
设置后处理相关数据,后处理是 Bloom / Dof / 色彩饱和度
Parameters:
Name Type Description processingData
any Returns:
void -
size() → {number}
-
返回当前容器中Data对象的总数
Returns:
number -
sm() → {ht.SelectionModel}
-
获取该容器的选择模型
Returns:
ht.SelectionModel -
toDatas(matchFunc, scope) → {ht.List}
-
以matchFunc为过滤函数构建新的元素集合并返回
Parameters:
Name Type Attributes Description matchFunc
function <optional>
过滤函数
scope
any <optional>
函数域
-
toJSON() → {any}
-
将数据模型序列化成JSON格式对象
Returns:
any -JSON对象
-
umd(listener, scope) → {void}
-
删除模型中Data元素属性变化事件监听器,removeDataPropertyChangeListener的缩写
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
Returns:
void -
umh(listener, scope) → {void}
-
删除监听Data在DataModel中的层次(用于TreeView、TreeTableView等)变化事件的监听器,removeHierarchyChangeListener的缩写
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
Returns:
void -
umm(listener, scope) → {void}
-
删除数据模型增删变化事件监听器,removeDataModelChangeListener的缩写
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
any <optional>
监听器函数域
Returns:
void -
ump(listener, scope) → {void}
-
移除自身属性变化事件监听器,removePropertyChangeListener的缩写
Parameters:
Name Type Attributes Description listener
function 监听器函数
scope
Object <optional>
监听器函数域
Returns:
void -
undo() → {void}
-
恢复操作,必须设置 historyManager 才会生效
Returns:
void