mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 13:00:39 +03:00
R: Fix updating procedure for graph nodes
This commit is contained in:
parent
d0fbaa7148
commit
0d826498f3
|
@ -95,6 +95,7 @@ function TGFlow({ onOpenEdit }: TGFlowProps) {
|
||||||
const [hoverCstDebounced] = useDebounce(hoverCst, PARAMETER.graphPopupDelay);
|
const [hoverCstDebounced] = useDebounce(hoverCst, PARAMETER.graphPopupDelay);
|
||||||
const [hoverLeft, setHoverLeft] = useState(true);
|
const [hoverLeft, setHoverLeft] = useState(true);
|
||||||
|
|
||||||
|
const [needReset, setNeedReset] = useState(true);
|
||||||
const [toggleResetView, setToggleResetView] = useState(false);
|
const [toggleResetView, setToggleResetView] = useState(false);
|
||||||
|
|
||||||
const onSelectionChange = useCallback(
|
const onSelectionChange = useCallback(
|
||||||
|
@ -127,10 +128,7 @@ function TGFlow({ onOpenEdit }: TGFlowProps) {
|
||||||
setHoverID(undefined);
|
setHoverID(undefined);
|
||||||
}, [controller.schema, filteredGraph]);
|
}, [controller.schema, filteredGraph]);
|
||||||
|
|
||||||
useEffect(() => {
|
const resetNodes = useCallback(() => {
|
||||||
if (!controller.schema) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const newNodes: Node<TGNodeData>[] = [];
|
const newNodes: Node<TGNodeData>[] = [];
|
||||||
filteredGraph.nodes.forEach(node => {
|
filteredGraph.nodes.forEach(node => {
|
||||||
const cst = controller.schema!.cstByID.get(node.id);
|
const cst = controller.schema!.cstByID.get(node.id);
|
||||||
|
@ -175,10 +173,29 @@ function TGFlow({ onOpenEdit }: TGFlowProps) {
|
||||||
|
|
||||||
setNodes(newNodes);
|
setNodes(newNodes);
|
||||||
setEdges(newEdges);
|
setEdges(newEdges);
|
||||||
// NOTE: Do not rerender on controller.selected change because it is only needed during first load
|
}, [
|
||||||
// eslint-disable-next-line react-compiler/react-compiler
|
controller.schema,
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
filteredGraph,
|
||||||
}, [filteredGraph, setNodes, setEdges, controller.schema, filterParams.noText, focusCst, coloring, colors, flow]);
|
setNodes,
|
||||||
|
setEdges,
|
||||||
|
filterParams.noText,
|
||||||
|
controller.selected,
|
||||||
|
focusCst,
|
||||||
|
coloring,
|
||||||
|
colors
|
||||||
|
]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setNeedReset(true);
|
||||||
|
}, [controller.schema, filterParams.noText, focusCst, coloring, colors, flow.viewportInitialized]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!controller.schema || !needReset || !flow.viewportInitialized) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setNeedReset(false);
|
||||||
|
resetNodes();
|
||||||
|
}, [needReset, controller.schema, resetNodes, flow.viewportInitialized]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user