LinkBundleInterface为GView组件添加了Link捆绑/解绑功能
Link通过bundleable属性设置是否可捆绑, GView组件通过link_bundleable属性设置所有的Link是否可捆绑, 捆绑以后, 同一分组的Link只有一条可见
默认返回data的bundleable属性, 可以重载以自定义捆绑规则
var gView = new z.gv.GView({
isLinkBundleable: function (link) {
return link.get("alarm_level") > 2; // 只有alarm_level>2的link可捆绑
}
})
当bundle指定link时, 列表中的所有link会被捆绑在一起, 可以重载以自定义捆绑规则 , 默认实现如下(优先级从高到底)
var gView = new z.gv.GView({
getLinkBundles: function (link) {
var from = link.get("from");
var to = link.get("to");
if (from && to) {
var link_bandwidth = link.get("bandwidth");
return z.util.filterArray(from.getLinksBetween(to), function (l) {//bandwidth相同的Link会被捆绑在一起
return l.get("bandwidth") === link_bandwidth
})
}
return [];
}
})
默认使用量getLinkBundles方法返回的列表中的第一条作为代理link, 可以重载以自定义规则
var gView = new z.gv.GView({
isLinkBundleAgent: function (link) { //weight最大的link作为代理Link
var links = this.getLinkBundles(link);
var agent = links[0];
var max_weight = agent.get("weight");
links.forEach(function (l) {
if (l.get("weight") > max_weight) {
agent = l;
max_weight = l.get("weight");
}
});
return agent;
}
})
view.getLinkBundleSize(aLink)
getLinkBundles方法返回的所有Link对象会捆绑在一起
view.bundleLink(aLink); //Link对象
view.bundleLink({name: "focus-ui"}); //name为"focus-ui"的Link对象
view.bundleLink([link1, link2]); //数组
getLinkBundles方法返回的所有Link对象都会被解绑
view.unbundleLink(aLink); //Link对象
view.unbundleLink({name: "focus-ui"}); //name为"focus-ui"的Link对象
view.unbundleLink([link1, link2]); //数组
view.bundleAllLinks();
view.unbundleAllLinks();
view.toggleLinkBundle(aLink); //Link对象
view.toggleLinkBundle({name: "focus-ui"}); //name为"focus-ui"的Link对象
view.getLinkBundled();
view.onLinkBundleChange(function (evt) {
console.log(evt.type); // type: add/remove/clear/set
console.log(evt.data); // data
});