4
This commit is contained in:
parent
5a35e6fd1a
commit
a6b733df7e
|
|
@ -128,6 +128,8 @@ const registEvents = () => {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
const runDiffForceLayout = (layoutConfig, layoutType, isAsync) => {
|
||||
function handleLayoutSuccess() {
|
||||
//处理四个关系图的差异函数
|
||||
|
|
@ -204,7 +206,10 @@ const runDiffForceLayout = (layoutConfig, layoutType, isAsync) => {
|
|||
}
|
||||
)
|
||||
}
|
||||
graphVis.autoGroupLayout(graphVis.nodes)
|
||||
// graphVis.autoGroupLayout(graphVis.nodes)
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
new Map([
|
||||
|
|
@ -244,15 +249,20 @@ const clusterAnalyze = () => {
|
|||
node.fillColor = color
|
||||
node.color = color
|
||||
})
|
||||
if(storeId !== "anomalousGroup"){
|
||||
graphVis.addNodesInGroup(nodes, {
|
||||
shape: "circle", //circle|rect|polygon|bubbleset
|
||||
color: color,
|
||||
alpha: 0.2
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
graphVis.autoGroupLayout(graphVis.nodes)
|
||||
// graphVis.autoGroupLayout(graphVis.nodes)
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 仅对“异常群体模块”生效:时间变化时强制重绘一次
|
||||
if (storeId === "anomalousGroup") {
|
||||
watch(
|
||||
|
|
@ -286,7 +296,12 @@ const initChart = () => {
|
|||
createGraph()
|
||||
graphVis.addGraph({ ...toRaw(graph.value) })
|
||||
clusterAnalyze()
|
||||
if(storeId === "anomalousGroup"){
|
||||
runDiffForceLayout({ strength: -500, ajustCluster: true }, "simulation", true)
|
||||
}else {
|
||||
runDiffForceLayout({ strength: -500, ajustCluster: true }, "simulation", true)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 添加更新图表的函数
|
||||
|
|
@ -299,7 +314,11 @@ const updateChart = (newGraphData) => {
|
|||
graphVis.addGraph({ ...toRaw(newGraphData) })
|
||||
// 重新运行力导向布局
|
||||
clusterAnalyze()
|
||||
if(storeId === "anomalousGroup"){
|
||||
runDiffForceLayout({ strength: -500, ajustCluster: true }, "simulation", true)
|
||||
}else {
|
||||
runDiffForceLayout({ strength: -500, ajustCluster: true }, "simulation", true)
|
||||
}
|
||||
}
|
||||
|
||||
let lastLength = 0 //记录上一次的长度
|
||||
|
|
|
|||
|
|
@ -174,16 +174,6 @@ const initChart = async() => {
|
|||
// 添加鼠标悬浮事件监听
|
||||
chartInstance.on('mouseover', function(params) {
|
||||
if (!params.data) return;
|
||||
/* const isBridgeNode = params.data.category === 0;
|
||||
|
||||
if (isBridgeNode) {
|
||||
// 如果是桥梁节点
|
||||
const nodeId = params.data.originalId;
|
||||
// 无论当前是否有激活节点,都设置为当前节点
|
||||
activeNodeId.value = nodeId;
|
||||
updateNodeImage(nodeId, true);
|
||||
} */
|
||||
|
||||
if (params.dataType === 'node') {
|
||||
// 仅节点时触发相邻高亮
|
||||
chartInstance.dispatchAction({
|
||||
|
|
@ -192,7 +182,7 @@ const initChart = async() => {
|
|||
dataIndex: params.dataIndex
|
||||
});
|
||||
|
||||
// 你已有的桥梁节点头像切换逻辑
|
||||
// 已有的桥梁节点头像切换逻辑
|
||||
const isBridgeNode = params.data.category === 0;
|
||||
if (isBridgeNode) {
|
||||
const nodeId = params.data.originalId;
|
||||
|
|
@ -203,7 +193,6 @@ const initChart = async() => {
|
|||
// 悬浮在边上:不高亮
|
||||
chartInstance.dispatchAction({ type: 'unfocusNodeAdjacency', seriesIndex: SERIES_INDEX });
|
||||
chartInstance.dispatchAction({ type: 'downplay', seriesIndex: SERIES_INDEX });
|
||||
// 也可以顺手关掉 tooltip(你 formatter 已经返回空字符串,其实也行)
|
||||
}
|
||||
|
||||
});
|
||||
|
|
@ -211,15 +200,6 @@ const initChart = async() => {
|
|||
// 添加鼠标离开事件监听
|
||||
chartInstance.on('mouseout', function(params) {
|
||||
if (!params.data) return;
|
||||
/* const isBridgeNode = params.data.category === 0;
|
||||
if (isBridgeNode) {
|
||||
// 如果是桥梁节点
|
||||
const nodeId = params.data.originalId;
|
||||
if (activeNodeId.value === nodeId) {
|
||||
activeNodeId.value = null;
|
||||
updateNodeImage(nodeId, false);
|
||||
}
|
||||
} */
|
||||
if (params.dataType === 'node') {
|
||||
// 仅节点移出时取消相邻高亮
|
||||
chartInstance.dispatchAction({
|
||||
|
|
|
|||
|
|
@ -51,6 +51,24 @@ const initChart = async () => {
|
|||
// 初始化图表
|
||||
chart = echarts.init(document.getElementById("container"))
|
||||
|
||||
const SERIES_INDEX = 0;
|
||||
// 添加鼠标悬浮事件监听
|
||||
chart.on('mouseover', function(params) {
|
||||
if (!params.data) return;
|
||||
if (params.dataType === 'node') {
|
||||
// 仅节点时触发相邻高亮
|
||||
chart.dispatchAction({
|
||||
type: 'focusNodeAdjacency',
|
||||
seriesIndex: SERIES_INDEX,
|
||||
dataIndex: params.dataIndex
|
||||
});
|
||||
} else if (params.dataType === 'edge') {
|
||||
// 悬浮在边上:不高亮
|
||||
chart.dispatchAction({ type: 'unfocusNodeAdjacency', seriesIndex: SERIES_INDEX });
|
||||
chart.dispatchAction({ type: 'downplay', seriesIndex: SERIES_INDEX });
|
||||
}
|
||||
});
|
||||
|
||||
//处理data
|
||||
//统计每一个锚点在某些社团,这个社团包含锚点的个数(key: 社团id, value: 这个社团含有几个锚点)
|
||||
//统计每个社团包含的锚点id列表
|
||||
|
|
@ -267,12 +285,18 @@ const initChart = async () => {
|
|||
width: 1
|
||||
},
|
||||
emphasis: {
|
||||
// 高亮配置
|
||||
focus: "adjacency", // 高亮相邻节点
|
||||
lineStyle: {
|
||||
// 高亮时线条样式
|
||||
width: 5 // 线条宽度(10)
|
||||
}
|
||||
focus: 'adjacency', // 有了这个,才会触发“其他元素进入 blur 状态”
|
||||
blurScope: 'series', // 只在本系列里变暗
|
||||
scale: false, // 不要把节点放大,避免跳动
|
||||
lineStyle: { opacity: 1 },
|
||||
itemStyle: { opacity: 1 },
|
||||
label: { opacity: 1 }
|
||||
},
|
||||
blur: {
|
||||
// 非相邻元素进入“模糊/暗”状态时的样式(相当于“隐藏”)
|
||||
lineStyle: { opacity: 0.05 },
|
||||
itemStyle: { opacity: 0.1 },
|
||||
label: { opacity: 0 }
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user