diff --git a/apps/web/src/components/navbar/DatabaseManagement/dbConnectionSelector.tsx b/apps/web/src/components/navbar/DatabaseManagement/dbConnectionSelector.tsx index b8106764eccf22b1c3c887b173c1983e5efe04b4..7464dc8e763ca9e20cbb79bcc3c329596507f07b 100644 --- a/apps/web/src/components/navbar/DatabaseManagement/dbConnectionSelector.tsx +++ b/apps/web/src/components/navbar/DatabaseManagement/dbConnectionSelector.tsx @@ -25,7 +25,7 @@ export default function DatabaseSelector({}) { useEffect(() => { if ( - (session.saveStates && Object.keys(session.saveStates).length === 0 && settingsMenuOpen !== 'create') || + (session.saveStates && Object.keys(session.saveStates).length === 0 && settingsMenuOpen === undefined) || session.currentSaveState === nilUUID ) { setSettingsMenuOpen('create'); diff --git a/apps/web/src/components/navbar/DatabaseManagement/forms/settings.tsx b/apps/web/src/components/navbar/DatabaseManagement/forms/settings.tsx index b6e2ae560b31551a40aa0d0830cf86a69ece6f15..34a9e5a09d4bd992b512b992152f541cef6d63e4 100644 --- a/apps/web/src/components/navbar/DatabaseManagement/forms/settings.tsx +++ b/apps/web/src/components/navbar/DatabaseManagement/forms/settings.tsx @@ -61,7 +61,7 @@ export const SettingsForm = (props: { console.error('formDataRef.current.user_id is not equal to auth.userID'); formDataRef.current.user_id = auth.userID; } - if (data.status === 'success') { + if (data && data.status === 'success') { setConnection((prevState) => ({ updating: false, status: 'Database connection verified', diff --git a/libs/shared/lib/data-access/api/eventBus.tsx b/libs/shared/lib/data-access/api/eventBus.tsx index 219e3984f1be0fd0f7e938992653e1c60bbc6fe6..a3b1dee1e7f83eb4c09a9b1177b10b8d58264d26 100644 --- a/libs/shared/lib/data-access/api/eventBus.tsx +++ b/libs/shared/lib/data-access/api/eventBus.tsx @@ -167,10 +167,9 @@ export const EventBus = (props: { onRunQuery: Function; onAuthorized: Function } // Process URL Params const paramSaveState = getParam(URLParams.saveState); + deleteParam(URLParams.saveState); if (paramSaveState && paramSaveState !== nilUUID) { wsGetState(paramSaveState); - } else { - deleteParam(URLParams.saveState); } wsGetStates(); diff --git a/libs/shared/lib/vis/visualizations/nodelink/components/NLPixi.tsx b/libs/shared/lib/vis/visualizations/nodelink/components/NLPixi.tsx index 7e09cc63842c70f8c98a1484da89f21d13db918d..935fe3bc283ab63e1a4a7eb3d11c89f77911234d 100644 --- a/libs/shared/lib/vis/visualizations/nodelink/components/NLPixi.tsx +++ b/libs/shared/lib/vis/visualizations/nodelink/components/NLPixi.tsx @@ -34,6 +34,7 @@ export const NLPixi = (props: Props) => { const linkMap = useRef(new Map<string, Graphics>()); const viewport = useRef<Viewport>(); const ref = useRef<HTMLDivElement>(null); + const mouseInCanvas = useRef<boolean>(false); const isSetup = useRef(false); const ml = useML(); const dragging = useRef<{ node: NodeType; gfx: Graphics } | null>(null); @@ -94,7 +95,13 @@ export const NLPixi = (props: Props) => { } }, onHover(node: NodeType) { - if (viewport?.current && !viewport?.current?.pause && node && popups.filter((p) => p.node.id === node.id).length === 0) { + if ( + mouseInCanvas.current && + viewport?.current && + !viewport?.current?.pause && + node && + popups.filter((p) => p.node.id === node.id).length === 0 + ) { setQuickPopup({ node, pos: toGlobal(node) }); } }, @@ -192,10 +199,12 @@ export const NLPixi = (props: Props) => { gfx.off('mousedown'); gfx.on('mouseover', (e) => { e.stopPropagation(); + e.preventDefault(); if (imperative.current) imperative.current.onHover(node); }); gfx.on('mouseout', (e) => { e.stopPropagation(); + e.preventDefault(); if (imperative.current) imperative.current.onUnHover(); }); gfx.on('mousedown', (e) => onDragStart(e, node, gfx)); @@ -480,11 +489,18 @@ export const NLPixi = (props: Props) => { return ( <> - {popups.map((popup) => ( - <NLPopup onClose={() => {}} data={popup} key={popup.node.id} /> - ))} + {mouseInCanvas.current && popups.map((popup) => <NLPopup onClose={() => {}} data={popup} key={popup.node.id} />)} {quickPopup && <NLPopup onClose={() => {}} data={quickPopup} />} - <div className="h-full w-full overflow-hidden" ref={ref}></div> + <div + className="h-full w-full overflow-hidden" + ref={ref} + onMouseEnter={(e) => { + mouseInCanvas.current = true; + }} + onMouseOut={(e) => { + mouseInCanvas.current = false; + }} + ></div> </> ); };