From 5f17293ac6c74eee2cceee26b53ad0285b463adf Mon Sep 17 00:00:00 2001 From: "Daniel S. Hansen" Date: Fri, 25 Jul 2025 13:19:09 -0700 Subject: [PATCH] Add persistant widget state across sidebar 'dashboard' button and canvas header nav 'my dashboard' button --- .../src/components/layout/Canvas/Canvas.jsx | 9 +++++++-- .../layout/Canvas/views/DashboardCanvas.jsx | 20 +++++++++---------- .../layout/Canvas/views/RegionalMapCanvas.jsx | 2 -- client/src/components/layout/Dashboard.jsx | 17 +++++++++++++++- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/client/src/components/layout/Canvas/Canvas.jsx b/client/src/components/layout/Canvas/Canvas.jsx index 96e61d2..bf4779e 100644 --- a/client/src/components/layout/Canvas/Canvas.jsx +++ b/client/src/components/layout/Canvas/Canvas.jsx @@ -9,10 +9,15 @@ import VolcanoCanvas from "./views/VolcanoCanvas"; import AdminCanvas from "./views/AdminCanvas"; import { DashboardCanvas } from "./views/DashboardCanvas"; -export default function Canvas({ view }) { +export default function Canvas({ view, layout, setLayout, onLayoutChange }) { return ( - {view === "widget" && } + {view === "widget" && + } {view === "global" && } {view === "regional" && } {view === "volcano" && } diff --git a/client/src/components/layout/Canvas/views/DashboardCanvas.jsx b/client/src/components/layout/Canvas/views/DashboardCanvas.jsx index 6a67254..868fcda 100644 --- a/client/src/components/layout/Canvas/views/DashboardCanvas.jsx +++ b/client/src/components/layout/Canvas/views/DashboardCanvas.jsx @@ -8,14 +8,14 @@ import { Seismic } from "./DashboardCanvasNav/Seismic"; import { RemoteSensing } from "./DashboardCanvasNav/RemoteSensing"; import { useState, useEffect } from "react"; -export function DashboardCanvas() { +export function DashboardCanvas({ layout, setLayout, onLayoutChange }) { const [isEditable, setIsEditable] = useState(false); // editable=true means static=false (vice versa) const [newCounter, setNewCounter] = useState(3); - const [layout, setLayout] = useState([ - { i: '0', x: 0, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: !isEditable }, - { i: '1', x: 3, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: !isEditable }, - { i: '2', x: 6, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: !isEditable } - ]); + // const [layout, setLayout] = useState([ + // { i: '0', x: 0, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: !isEditable }, + // { i: '1', x: 3, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: !isEditable }, + // { i: '2', x: 6, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: !isEditable } + // ]); const [originalLayout, setOriginalLayout] = useState([]); useEffect(() => { @@ -68,10 +68,10 @@ export function DashboardCanvas() { setLayout(prev => prev.filter(w => w.i !== id)); } - const onLayoutChange = (newLayout) => { - setLayout(newLayout); - console.log('Updated layout:', newLayout) - }; + // const onLayoutChange = (newLayout) => { + // setLayout(newLayout); + // console.log('Updated layout:', newLayout) + // }; return ( /* HEADER */ diff --git a/client/src/components/layout/Canvas/views/RegionalMapCanvas.jsx b/client/src/components/layout/Canvas/views/RegionalMapCanvas.jsx index 7bd3ef7..259e2fc 100644 --- a/client/src/components/layout/Canvas/views/RegionalMapCanvas.jsx +++ b/client/src/components/layout/Canvas/views/RegionalMapCanvas.jsx @@ -14,8 +14,6 @@ export default function RegionalMapCanvas() { display="flex" alignItems="center" justifyContent="center" - - > Regional Map Canvas coming soon! diff --git a/client/src/components/layout/Dashboard.jsx b/client/src/components/layout/Dashboard.jsx index 9e2710d..0cee7a6 100644 --- a/client/src/components/layout/Dashboard.jsx +++ b/client/src/components/layout/Dashboard.jsx @@ -11,6 +11,16 @@ export default function Dashboard() { // Lifted State - defaults to widget dashboard const [view, setView] = useState("widget"); + const [layout, setLayout] = useState([ + { i: '0', x: 0, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: true }, + { i: '1', x: 3, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: true }, + { i: '2', x: 6, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: true } + ]); + + const onLayoutChange = (newLayout) => { + setLayout(newLayout); + console.log('Updated layout:', newLayout) + }; return ( <> @@ -62,7 +72,12 @@ export default function Dashboard() { - + setLayout( newLayout )} + />