Skip to content

Commit

Permalink
feat: Alter style of ForceGraph #162 (#1774)
Browse files Browse the repository at this point in the history
### What problem does this PR solve?

feat: alter style of ForceGraph #162
### Type of change


- [x] New Feature (non-breaking change which adds functionality)
  • Loading branch information
cike8899 authored Aug 1, 2024
1 parent e37b0d2 commit e8b9871
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 48 deletions.
Original file line number Diff line number Diff line change
@@ -1,25 +1,19 @@
import { Graph } from '@antv/g6';
import { useSize } from 'ahooks';
import { useFetchKnowledgeGraph } from '@/hooks/chunk-hooks';
import { ElementDatum, Graph, IElementEvent } from '@antv/g6';
import { useCallback, useEffect, useMemo, useRef } from 'react';
import { graphData } from './constant';
import { Converter, buildNodesAndCombos, isDataExist } from './util';
import { buildNodesAndCombos, isDataExist } from './util';

import { useFetchKnowledgeGraph } from '@/hooks/chunk-hooks';
import styles from './index.less';

const converter = new Converter();

const nextData = converter.buildNodesAndCombos(
graphData.nodes,
graphData.edges,
);
console.log('🚀 ~ nextData:', nextData);

const finalData = { ...graphData, ...nextData };
const TooltipColorMap = {
combo: 'red',
node: 'black',
edge: 'blue',
};

const ForceGraph = () => {
const containerRef = useRef<HTMLDivElement>(null);
const size = useSize(containerRef);
const graphRef = useRef<Graph | null>(null);
const { data } = useFetchKnowledgeGraph();

const nextData = useMemo(() => {
Expand All @@ -30,12 +24,12 @@ const ForceGraph = () => {
}
return { nodes: [], edges: [] };
}, [data]);
console.log('🚀 ~ nextData ~ nextData:', nextData);

const render = useCallback(() => {
const graph = new Graph({
container: containerRef.current!,
autoFit: 'view',
autoResize: true,
behaviors: [
'drag-element',
'drag-canvas',
Expand All @@ -49,16 +43,23 @@ const ForceGraph = () => {
plugins: [
{
type: 'tooltip',
getContent: (e, items) => {
if (items.every((x) => x?.description)) {
enterable: true,
getContent: (e: IElementEvent, items: ElementDatum) => {
if (Array.isArray(items)) {
let result = ``;
items.forEach((item) => {
result += `<h3>${item?.id}</h3>`;
result += `<section style="color:${TooltipColorMap[e['targetType'] as keyof typeof TooltipColorMap]};"><h3>${item?.id}</h3>`;
if (item?.entity_type) {
result += `<div style="padding-bottom: 6px;"><b>Entity type: </b>${item?.entity_type}</div>`;
}
if (item?.weight) {
result += `<div><b>Weight: </b>${item?.weight}</div>`;
}
if (item?.description) {
result += `<p>${item?.description}</p>`;
}
});
return result;
return result + '</section>';
}
return undefined;
},
Expand All @@ -68,44 +69,44 @@ const ForceGraph = () => {
type: 'combo-combined',
preventOverlap: true,
comboPadding: 1,
spacing: 20,
spacing: 100,
},
node: {
style: {
size: 20,
size: 150,
labelText: (d) => d.id,
labelPadding: 30,
// labelPadding: 30,
labelFontSize: 40,
// labelOffsetX: 20,
// labelOffsetY: 5,
labelOffsetY: 20,
labelPlacement: 'center',
labelWordWrap: true,
},
palette: {
type: 'group',
field: (d) => d.combo,
field: (d) => {
return d?.entity_type as string;
},
},
// state: {
// highlight: {
// fill: '#D580FF',
// halo: true,
// lineWidth: 0,
// },
// dim: {
// fill: '#99ADD1',
// },
// },
},
edge: {
style: (model) => {
const { size, color } = model.data;
const weight: number = Number(model?.weight) || 2;
const lineWeight = weight * 4;
return {
stroke: color || '#99ADD1',
lineWidth: size || 1,
stroke: '#99ADD1',
lineWidth: lineWeight > 10 ? 10 : lineWeight,
};
},
},
});

if (graphRef.current) {
graphRef.current.destroy();
}

graphRef.current = graph;

graph.setData(nextData);

graph.render();
Expand All @@ -117,7 +118,13 @@ const ForceGraph = () => {
}
}, [data, render]);

return <div ref={containerRef} className={styles.forceContainer} />;
return (
<div
ref={containerRef}
className={styles.forceContainer}
style={{ width: '100%', height: '80vh' }}
/>
);
};

export default ForceGraph;
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
.forceContainer {
width: 100%;
height: 100%;
:global(.tooltip) {
border-radius: 10px !important;
}
}

.modalContainer {
width: 90vw;
height: 80vh;
width: 100%;
height: 100%;
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import React, { useEffect, useState } from 'react';
import ForceGraph from './force-graph';

import styles from './index.less';
import { isDataExist } from './util';

const KnowledgeGraphModal: React.FC = () => {
const [isModalOpen, setIsModalOpen] = useState(false);
Expand All @@ -18,8 +19,7 @@ const KnowledgeGraphModal: React.FC = () => {
};

useEffect(() => {
if (data?.data && typeof data?.data !== 'boolean') {
console.log('🚀 ~ useEffect ~ data:', data);
if (isDataExist(data)) {
setIsModalOpen(true);
}
}, [setIsModalOpen, data]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,6 @@ export const buildNodesAndCombos = (nodes: any[]) => {
if (combo && combos.every((y) => y.id !== combo)) {
combos.push({
id: combo,
data: {
label: `Combo ${combo}`,
},
});
}
return {
Expand Down

0 comments on commit e8b9871

Please sign in to comment.