import { HStack, Flex, Tabs, Button, Box } from "@chakra-ui/react"; import WidgetCanvas from "./DashboardCanvasNav/WidgetCanvas"; import { SearchBar } from "../components/SearchBar"; import { SettingsButton } from "../components/SettingsButton"; import { DailyActivity } from "./DashboardCanvasNav/DailyActivity"; import { Gas } from "./DashboardCanvasNav/Gas"; import { Seismic } from "./DashboardCanvasNav/Seismic"; import { RemoteSensing } from "./DashboardCanvasNav/RemoteSensing"; import { useState, useEffect, useDebugValue } from "react"; import { CancelButton } from "../components/CancelButton"; import { SaveButton } from "../components/SaveButton"; export function DashboardCanvas() { console.log("rendering dashboardcanvas"); const [isEditable, setIsEditable] = useState(false); // editable=true means static=false (vice versa) const [isDelete, setIsDelete] = useState(false); 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 [originalLayout, setOriginalLayout] = useState([]); const onAddWidget = () => { const newId = newCounter.toString(); setLayout(prev => [ ...prev, { i: newId, x: (prev.length * 3) % 12, y: Infinity, w: 3, h: 3, } ]); setNewCounter(prev => prev + 1); }; useEffect(() => { console.log("static change effect"); setLayout(prevLayout => prevLayout.map(item => ({ ...item, static: !isEditable // static false means resizable/editable })) ); }, [isEditable]); const onEditWidgets = () => { console.log("widgets are now editable"); setOriginalLayout(layout); // Backup layout before editing setIsEditable(true); // Enable edit mode } const onSave = () => { console.log("saving widgets..."); setIsEditable(false); setIsDelete(false); setOriginalLayout([]) // Clear backup layout } const onCancel = () => { console.log("canceling changes..."); if (originalLayout.length) { setLayout(originalLayout.map(item => ({ ...item, static: true }))); }; setIsEditable(false); setIsDelete(false); setOriginalLayout([]); } const onDeleteWidgets = () => { console.log("Start deleting widgets..."); setOriginalLayout(layout); setIsEditable(true); setIsDelete(true); } const DeleteWidget = (id) => { console.log("Deleting widget with id: ", id); setLayout(layout => layout.filter(w => w.i !== id)); } const onLayoutChange = (newLayout) => { setLayout(newLayout); console.log('Updated layout:', newLayout) }; return ( /* HEADER */ My Dashboard Gas Seismic Remote Sensing Daily Activity {isEditable || isDelete ? ( <> ):( <> )} {/* CANVAS */} ); }