import { HStack, Flex, Tabs } from "@chakra-ui/react"; import { useState, useEffect } from "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 { CancelButton } from "../components/CancelButton"; import { SaveButton } from "../components/SaveButton"; import DeleteAllButton from "../components/DeleteAllButton"; export function DashboardCanvas({ onCancel, isEditable, setIsEditable, isDelete, setIsDelete, view, layout, setLayout, originalLayout, setOriginalLayout, onLayoutChange, onChangeView }) { const [newCounter, setNewCounter] = useState(3); // Adding a widget triggers Edit mode const onAddWidget = () => { const newId = newCounter.toString(); setLayout(prev => [ ...prev, { i: newId, x: (prev.length * 3) % 12, y: Infinity, w: 3, h: 3, static: false, } ]); setNewCounter(prev => prev + 1); onEditWidgets(); }; const onEditWidgets = () => { console.log("widgets are now editable"); setOriginalLayout(layout); // Backup layout before editing // Set all widgets to editable, static: false setLayout(prevLayout => prevLayout.map(item => ({ ...item, static: false })) ); setIsEditable(true); // Enable edit mode } const onSave = () => { console.log("saving widgets..."); // Set all widgets back to static: true setLayout(prevLayout => prevLayout.map(item => ({ ...item, static: true })) ); setIsEditable(false); setIsDelete(false); setOriginalLayout([]); // Clear backup layout } 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 DeleteAll = () => { const confirm = window.confirm( "Are you sure you want to delete all widgets?" ); if (confirm) { setLayout([]); onSave(); } else return; } return ( /* HEADER */ { const nextView = e.value; onChangeView(nextView); }} > My Dashboard Gas Seismic Remote Sensing Daily Activity {isEditable ? ( <> {isDelete ? ( ):(null) } ):( <> )} {/* CANVAS */} ); }