g6提供了提供了图的绘制、布局、分析、交互、动画等基础的图可视化能力。
元素 :节点、边、节点分组 Combo, 元素属性 :样式属性、其他属性
每一个元素是一个 item 实例,而实例中的数据模型 model
定义了该元素的样式、配置
1.数据结构(配置项)
元素共有数据结构(配置项)(id,style,type,label,labelCfg)
节点的数据结构 (配置项)
{
//继承元素属性
id: 'node0', // 元素的 id
type: 'circle', // 元素的图形
style: { // 元素样式
fill: '#000', // 样式属性,元素的填充色
stroke: '#888', // 样式属性,元素的描边色
// ... // 其他样式属性
},
label: 'node0' // 标签文字
labelCfg: { // 标签文字配置属性
positions: 'center',// 标签文字在元素中的位置
style: { // 标签文字样式
fontSize: 12
// ...
}
},
//节点私有属性
x: '', //x 坐标
y: '', //y 坐标
size: 40, // 元素的大小
}
边的数据结构(配置项)
与节点的数据结构相似,添加source和target字段,代表起始和终止节点的 id。
{
//继承元素属性
id: 'edge0', // 边的 id
type: 'line', // 边的图形
style: { // 边样式
},
label: 'node0' // 边文字
labelCfg: { // 文字配置属性
positions: 'center',
style: {
fontSize: 12
// ...
}
},
//边私有属性
source: '', //起始点 id
target: '', //结束点 id
sourceAnchor: '', //边的起始节点上的锚点的索引值。
targetAnchor: '' //边的终止节点上的锚点的索引值。
}
combo的数据结构(配置项)
{
//继承元素属性
id: 'node0', // 元素的 id
type: 'circle', // 元素的图形
style: { // 元素样式
fill: '#000', // 样式属性,元素的填充色
stroke: '#888', // 样式属性,元素的描边色
// ... // 其他样式属性
},
label: 'node0' // 标签文字
labelCfg: { // 标签文字配置属性
positions: 'center',// 标签文字在元素中的位置
style: { // 标签文字样式
fontSize: 12
// ...
}
},
//Combo私有属性
parentId: '', //该 Combo 的父 Combo 的 ID
size: '', //Combo 的最小大小
padding: '' //该 Combo 内边距。
}
2.实例方法
元素的方法大致分为元素的更新、销毁、通用、状态, 每一个元素是一个 item 实例
更新
item.update(model)
根据元素数据项,更新元素,model就是元素的数据结构(配置项)
item.refresh()
刷新元素,包括更新元素位置,更新元素样式,清除之前的缓存。
item.updatePosition(cfg)
更新元素位置,避免整体重新绘制。更新xy
销毁
item.destroy()
销毁元素,主要包括停止动画、删除 group 中的所有元素、清空配置项、设置 destroyed
为 true
等操作。
通用
item.getBBox()
获取元素的包围盒。包括x,y,width,height,centerX,centerY
item.getContainer()
获取元素的容器。
item.getKeyShape()
获取元素的关键形状,用于计算节点大小、连线截距等。
item.getModel()
获取元素的数据模型。
item.getType()
获取元素类型,如‘node’或‘edge’
item.enableCapture(enable)
是否拾取及触发该元素的交互事件。 enable为布尔型,是否允许元素响应事件
item.clearCache()
更新或刷新等操作后,清除缓存。
状态
item.show()
只显示元素本身,若想显示相关边调用graph.showItem(item)。
item.hide()
只隐藏元素本身,若想显示相关边调用graph.hideItem(item)。
item.changeVisibility(visible)
更改元素是否显示。visible为布尔值
item.isVisible()
查询元素显示状态。
item.toFront()
将元素的层级设置到最上层
item.toBack()
将元素的层级设置到最下层
item.setState(state, enable)
更新元素的状态。state为元素状态名,enable为是否启用
item.clearStates(states)
清除指定的状态,如果不传 states ,则默认清除第一个状态
item.getStates()
获取当前元素的所有状态
item.hasState(state)
判断元素是否具有某种指定的状态。
item.getStateStyle(state)
获取元素指定状态的样式
item.getOriginStyle()
获取元素 keyShape 的样式。
item.getCurrentStatesStyle()
获取当前元素的所有状态的样式。
node实例方法
Node 继承自 Item,上面元素的实例方法都可以调用,除此之外,node私有实例
node.lock()
锁定当前节点,不再响应拖动节点
node.unlock()
解锁锁定的节点。
node.hasLocked()
检测节点是否处于锁定状态。
node.getNeighbors(type)
type为'source' / 'target' / undefined,获取邻居节点
node.getEdges()
获取与当前节点有关联的所有边。
node.getInEdges()
获取与当前节点关联的所有入边。
node.getOutEdges()
获取与当前节点关联的所有出边。
node.getAnchorPoints()
获取节点上面定义的锚点。
node.getLinkPoint(point)
获取距离指定坐标最近的一个锚点。
node.getLinkPointByAnchor(index)
根据锚点索引获取连接点的 x、y 坐标。
node.addEdge(edge)
添加指定的边到当前节点上。
node.removeEdge(edge)
移除与当前节点相关的指定边。
edge实例方法
edge 继承自 Item,上面元素的实例方法都可以调用,除此之外,edge私有实例
edge.setSource(source)
设置边的起始节点。source类型为node
edge.setTarget(target)
设置边的终止节点。target类型为node
edge.getSource()
获取当前边的起始节点。
edge.getTarget()
获取当前边的终止节点。
combo实例方法
Combo 继承自 Node,具有 Node 的所有特性。,除此之外,Combo 私有实例
combo.getChildren()
获取 Combo 中所有的子元素
combo. getNodes()
获取 Combo 中所有子节点。
combo. getCombos()
获取 Combo 中所有子 combo。
combo. addChild(item: INode | ICombo)
向 Combo 中添加子 Node 或子 Combo。参数为节点 ID 或节点实例
combo. addNode(node: string | INode)
向 combo 中添加节点。
combo. addCombo(combo: ICombo)
向 combo 中添加 combo。
combo. removeChild(item: ICombo | INode)
移除子元素(子节点或子 combo)
combo. removeCombo(combo: ICombo)
移除指定的子 combo
combo. removeNode(node: INode)
移除指定的子 Node