ht.DataModel()

new DataModel()

数据模型

Methods

a(name, value) → {void}

设置attr属性

Parameters:
Name Type Attributes Description
name string

属性名

value any <optional>

属性值

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:
void
Example
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:
void
Example
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:
void
Example
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:
void
Example
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

Returns:
ht.List -

被反序列化的数据元素集合

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:
void
Example
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

Returns:
ht.Data -

查找到的Data

getDataByTag(tag) → {ht.Data}

根据tag快速查找,模型内部维护着一个tag->data的映射表,因此查找速度比遍历方式快

Parameters:
Name Type Description
tag string | number

要查找的tag

Returns:
ht.Data -

查找到的Data

getDatas() → {ht.List}

获取所有添加到容器的Data数据集合

Returns:
ht.List

getEnvmap() → {any}

获取环境光贴图

Returns:
any -

没有设置环境光的情况下会返回 undefined, 旧模式下返回 string, 新模式下返回 Array

getEnvmapType() → {string}

获取环境光模式

Returns:
string -

new / legacy 两种模式

getFullscreenDatas() → {Array.<any>}

获取全屏的数据

Returns:
Array.<any>

getHistoryManager() → {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}

获取该容器的选择模型

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:
void
Example
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:
void
Example
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:
void
Example
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 <optional>

遍历起点元素

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 any

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:
void
Example
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}

获取该容器的选择模型

toDatas(matchFunc, scope) → {ht.List}

以matchFunc为过滤函数构建新的元素集合并返回

Parameters:
Name Type Attributes Description
matchFunc function <optional>

过滤函数

scope any <optional>

函数域

Returns:
ht.List -

元素集合

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