实现功能:
初始加载P1相关的人物(a1,a2,a3,a4)以及关系,点击P1相关人物(a1),加载关于a1相关的人物和关系,同时展示P1相关的人物关系;如果a1相关人物关系已经在图上显示,再次点击此节点,则关闭此节点相关的人物关系展示
最初版本,逻辑可能会有些混乱,后面有时间再进行优化
以下为此项目代码:
export default {
data() {
return {
name: "李宇春",
datas: [],
links: [],
adddatas: [],
addlinks: [],
alldata: [],
alllink: [],
clickname: "",
jiandata: {},
};
},
deteleObject(obj) {
// 去除数组里重复的对象{}
var uniques = [];
var stringify = {};
for (var i = 0; i < obj.length; i++) {
var keys = Object.keys(obj[i]);
keys.sort(function (a, b) {
return Number(a) - Number(b);
});
var str = "";
for (var j = 0; j < keys.length; j++) {
str += JSON.stringify(keys[j]);
str += JSON.stringify(obj[i][keys[j]]);
}
if (!stringify.hasOwnProperty(str)) {
uniques.push(obj[i]);
stringify[str] = true;
}
}
uniques = uniques;
return uniques;
},
showchart(alldata, alllink) {
var option = {
title: {
text: "人物关系图" ,
textStyle:{
color:'#fff'
}
},
tooltip: {
formatter: function (x) {
return x.data.des;
},
},
toolbox: {
//可视化的工具箱
show: true,
feature: {
saveAsImage: {
//保存图片
show: true,
},
},
},
series: [
{
type: "graph",
layout: "force",
cursor: "pointer",
symbolSize: 80,