123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import React from "react";
- import { Graph } from "src/components/Graph";
- import { NodeModal } from "src/containers/Modals/NodeModal";
- import useGraph from "src/store/useGraph";
- export const GraphCanvas = ({ isWidget = false }: { isWidget?: boolean }) => {
- const [isModalVisible, setModalVisible] = React.useState(false);
- const [selectedNode, setSelectedNode] = React.useState<[string, string][]>([]);
- const openModal = React.useCallback(() => setModalVisible(true), []);
- const collapsedNodes = useGraph(state => state.collapsedNodes);
- const collapsedEdges = useGraph(state => state.collapsedEdges);
- const loading = useGraph(state => state.loading);
- React.useEffect(() => {
- const nodeList = collapsedNodes.map(id => `[id$="node-${id}"]`);
- const edgeList = collapsedEdges.map(id => `[class$="edge-${id}"]`);
- const hiddenItems = document.querySelectorAll(".hide");
- hiddenItems.forEach(item => item.classList.remove("hide"));
- if (nodeList.length) {
- const selectedNodes = document.querySelectorAll(nodeList.join(","));
- const selectedEdges = document.querySelectorAll(edgeList.join(","));
- selectedNodes.forEach(node => node.classList.add("hide"));
- selectedEdges.forEach(edge => edge.classList.add("hide"));
- }
- }, [collapsedNodes, collapsedEdges, loading]);
- return (
- <>
- <Graph
- openModal={openModal}
- setSelectedNode={setSelectedNode}
- isWidget={isWidget}
- />
- {!isWidget && (
- <NodeModal
- selectedNode={selectedNode}
- visible={isModalVisible}
- closeModal={() => setModalVisible(false)}
- />
- )}
- </>
- );
- };
|