# 内置插件
插件用于扩展图谱功能,通过添加自定义操作并调用图谱提供的方法以及修改图谱 store 等操作实现。今后也会添加更多插件功能,欢迎提需求。 可以通过在配置中禁用插件功能,一些插件也有单独的配置。
# 禁用所有插件
chart.init({
core: {
initPlugin: false
}
});
# 禁用部分插件
chart.init({
plugin: {
// 插件的公共配置
common: {
// 配置禁用的插件,默认为空
disable: ['changeNodeDrag', 'nodeInfo', 'changeLineWidth'],
}
}
});
# 插件的配置
chart.init({
plugin: {
// 与 common 配置项同级,除了 common 都是独立插件的配置。字段名为插件的名称
changeChart: { // 图谱切换插件配置
charts: ['force', 'annular'],
},
}
});
TIP
所有插件的配置都统一使用对象 {} 数据格式进行配置。
插件配置为空对象 {},说明此插件没有配置项。
# 核心插件
核心插件的配置通常用于图谱内部的操作,一般不需要配置核心插件
plugin: {
// 点击空白处,所有节点和线高亮功能
blankClick: {
click: true // 默认为 true,设为 false 则禁用。也可通过 disable 配置禁用。
},
// 拖拽空白处图谱移动功能
blankDrag: {
drag: true // 默认为 true,设为 false 则禁用。也可通过 disable 配置禁用。
},
// 点击节点高亮与之相连的点功能
nodeClick: {
click: true,
deep: false // 默认为 false,设置为 true 则会深度查找
},
// 节点拖拽功能
nodeDrag: {
drag: true // 默认为 true,设为 false 则禁用。也可通过 disable 配置禁用。
},
scaleOnPC: {}, // PC 端鼠标滚轮缩放功能
scaleOnMobile: {}, // 移动端双指缩放功能
}
# 工具栏插件
顶部工具栏按钮相关插件
plugin: {
changeAnimation: {}, // 图谱动画是否启动插件
changeChart: { // 图谱切换插件
charts: ['force'] // 配置可切换的图谱
},
changeLineWidth: { // 线条宽度切换插件
width: 1
},
changeNodeDrag: {}, // 节点拖拽功能是否启用插件
fullScreen: {}, // 全屏插件
hideSelectedNodes: {}, // 隐藏选中节点插件
lasso: { // 套索工具插件
backgroundColor: 'orange',
borderColor: 'red',
},
reset: {}, // 重置图谱插件
saveImg: {}, // 保存图谱为图片的插件
searchNode: {}, // 搜索节点插件
shortestPath: {}, // 最短路径插件
}
# 其它插件
plugin: {
deleteSelectedNodes: {}, // 删除选中的节点插件
// 鼠标悬停节点,显示信息浮动层
nodeInfo: {
// 节点鼠标悬停时会调用 getNodeInfo 方法,支持异步操作。
// 接收鼠标悬停的 node 节点对象
async getNodeInfo(node) {
// 这里使用 Promise 来模拟异步操作,返回展示的内容
return await new Promise((resolve, reject) => {
setTimeout(() => {
// 这里假设 node 节点上自定义了一个 info 字段来提供节点信息。
resolve(node.info);
}, 1000);
});
},
},
// 右键菜单功能
rightKey: {
// keys 的值为数组,每一项为一个菜单按钮功能
keys: [
{
name: '隐藏节点', // 右键菜单按钮显示的文本
/*
* 菜单点击时调用 click 方法。接收一个 params 对象
* @param isNode {bool} 是否为节点
* @param target {obj} 右键点击位置的目标对象
* @param $chart {obj} 当前图谱对象实例。同 new Chart(...) 得到的对象实例
*/
click: ({ isNode, target, $chart }) => {
const node = target.source; // 获取节点信息
$chart.util.hideNodes([node.id]); // 使用 chart 的工具方法隐藏节点
},
// isShow 方法用于决定当前点击的右键菜单中是否显示这个按钮,这个方法需要返回一个 bool 值
isShow({ isNode, target, $chart }) {
// 判断点击的是节点才显示此按钮
if (isNode) {
return true;
}
}
},
// 另一个按钮
{
name: '复位',
click({ $chart }) {
$chart.reset();
},
},
]
}
}