diff --git a/client/src/components/layout/Canvas/components/SettingsButton.jsx b/client/src/components/layout/Canvas/components/SettingsButton.jsx index ee080ff..974ce67 100644 --- a/client/src/components/layout/Canvas/components/SettingsButton.jsx +++ b/client/src/components/layout/Canvas/components/SettingsButton.jsx @@ -5,7 +5,7 @@ import { Button, IconButton, Menu, Portal } from "@chakra-ui/react"; import { FiSettings } from "react-icons/fi"; -export function SettingsButton({onAddWidget, onEditWidgdets, onRemoveWidgets}) { +export function SettingsButton({onAddWidget, onEditWidgets, onDeleteWidgets}) { return ( // This uses Chakra's built in menu component @@ -18,9 +18,9 @@ export function SettingsButton({onAddWidget, onEditWidgdets, onRemoveWidgets}) { Add Widget - Edit Widgets + Edit Widgets diff --git a/client/src/components/layout/Canvas/views/DashboardCanvas.jsx b/client/src/components/layout/Canvas/views/DashboardCanvas.jsx index f2263a1..37f792f 100644 --- a/client/src/components/layout/Canvas/views/DashboardCanvas.jsx +++ b/client/src/components/layout/Canvas/views/DashboardCanvas.jsx @@ -6,16 +6,25 @@ import { DailyActivity } from "./DashboardCanvasNav/DailyActivity"; import { Gas } from "./DashboardCanvasNav/Gas"; import { Seismic } from "./DashboardCanvasNav/Seismic"; import { RemoteSensing } from "./DashboardCanvasNav/RemoteSensing"; -import { useState } from "react"; +import { useState, useEffect } from "react"; export function DashboardCanvas() { + 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: false }, - { i: '1', x: 3, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: false }, - { i: '2', x: 6, y: 0, w: 3, h: 3, minH: 3, minW: 1, static: false } + { 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 [newCounter, setNewCounter] = useState(3); + useEffect(() => { + setLayout(prevLayout => + prevLayout.map(item => ({ + ...item, + static: !isEditable // static false means resizable/editable + })) + ); + }, [isEditable]); const onAddWidget = () => { const newId = newCounter.toString(); @@ -32,7 +41,12 @@ export function DashboardCanvas() { setNewCounter(prev => prev + 1); }; - const onRemoveWidget = (id) => { + const onEditWidgets = () => { + console.log("widgets are now editable") + setIsEditable(true); + } + + const onDeleteWidgets = (id) => { setLayout(prev => prev.filter(w => w.i !== id)); } @@ -73,12 +87,12 @@ export function DashboardCanvas() { - + - diff --git a/client/src/components/layout/Canvas/views/DashboardCanvasNav/WidgetCanvas.jsx b/client/src/components/layout/Canvas/views/DashboardCanvasNav/WidgetCanvas.jsx index 7364386..523fc04 100644 --- a/client/src/components/layout/Canvas/views/DashboardCanvasNav/WidgetCanvas.jsx +++ b/client/src/components/layout/Canvas/views/DashboardCanvasNav/WidgetCanvas.jsx @@ -26,16 +26,16 @@ export default function WidgetCanvas({layout, onLayoutChange}) { return ( {layout.map((item) => ( // this flex wrapper allows the widget to shrink down to the header size, no less