diff --git a/src/features/cameras/components/CameraGrid.tsx b/src/features/cameras/components/CameraGrid.tsx index 27a5b0c..c661c6d 100644 --- a/src/features/cameras/components/CameraGrid.tsx +++ b/src/features/cameras/components/CameraGrid.tsx @@ -1,8 +1,8 @@ -import { useState } from "react"; +import { useRef, useState } from "react"; import VideoFeedGridPainter from "./Video/VideoFeedGridPainter"; import CameraSettings from "./CameraSettings/CameraSettings"; -import type { Region } from "../../../types/types"; +import type { PaintedCell, Region } from "../../../types/types"; import PlatePatch from "./PlatePatch/PlatePatch"; const CameraGrid = () => { @@ -14,14 +14,21 @@ const CameraGrid = () => { const [selectedRegionIndex, setSelectedRegionIndex] = useState(0); const [mode, setMode] = useState(""); const [tabIndex, setTabIndex] = useState(0); - console.log(tabIndex); + const updateRegionColour = (index: number, newColour: string) => { setRegions((prev) => prev.map((r, i) => (i === index ? { ...r, brushColour: newColour } : r))); }; - console.log(mode); + + const paintedCellsRef = useRef>(new Map()); + return ( -
- +
+ { onSelectMode={setMode} tabIndex={tabIndex} setTabIndex={setTabIndex} + paintedCells={paintedCellsRef} />
diff --git a/src/features/cameras/components/CameraSettings/CameraSettings.tsx b/src/features/cameras/components/CameraSettings/CameraSettings.tsx index b0ad443..5daf525 100644 --- a/src/features/cameras/components/CameraSettings/CameraSettings.tsx +++ b/src/features/cameras/components/CameraSettings/CameraSettings.tsx @@ -2,7 +2,8 @@ import Card from "../../../../ui/Card"; import { Tab, Tabs, TabList, TabPanel } from "react-tabs"; import "react-tabs/style/react-tabs.css"; import RegionSelector from "./RegionSelector"; -import type { Region } from "../../../../types/types"; +import type { PaintedCell, Region } from "../../../../types/types"; +import type { RefObject } from "react"; type CameraSettingsProps = { regions: Region[]; @@ -13,6 +14,7 @@ type CameraSettingsProps = { onSelectMode: (mode: string) => void; setTabIndex: (tabIndex: number) => void; tabIndex: number; + paintedCells: RefObject>; }; const CameraSettings = ({ @@ -24,9 +26,10 @@ const CameraSettings = ({ onSelectMode, tabIndex, setTabIndex, + paintedCells, }: CameraSettingsProps) => { return ( - + diff --git a/src/features/cameras/components/CameraSettings/ColourPicker.tsx b/src/features/cameras/components/CameraSettings/ColourPicker.tsx index f097cc4..6f44248 100644 --- a/src/features/cameras/components/CameraSettings/ColourPicker.tsx +++ b/src/features/cameras/components/CameraSettings/ColourPicker.tsx @@ -4,7 +4,16 @@ type ColourPickerProps = { }; const ColourPicker = ({ colour, setColour }: ColourPickerProps) => { - return setColour(e.target.value)} />; + return ( + setColour(e.target.value)} + className="h-8 w-8 p-0 rounded-md border border-slate-500 cursor-pointer" + /> + ); }; export default ColourPicker; diff --git a/src/features/cameras/components/CameraSettings/RegionSelector.tsx b/src/features/cameras/components/CameraSettings/RegionSelector.tsx index f03d132..d432669 100644 --- a/src/features/cameras/components/CameraSettings/RegionSelector.tsx +++ b/src/features/cameras/components/CameraSettings/RegionSelector.tsx @@ -1,5 +1,6 @@ import ColourPicker from "./ColourPicker"; -import type { Region } from "../../../../types/types"; +import type { PaintedCell, Region } from "../../../../types/types"; +import type { RefObject } from "react"; type RegionSelectorProps = { regions: Region[]; @@ -8,6 +9,7 @@ type RegionSelectorProps = { onChangeRegionColour: (index: number, colour: string) => void; mode: string; onSelectMode: (mode: string) => void; + paintedCells: RefObject>; }; const RegionSelector = ({ @@ -17,49 +19,100 @@ const RegionSelector = ({ onChangeRegionColour, mode, onSelectMode, + paintedCells, }: RegionSelectorProps) => { const handleChange = (e: { target: { value: string } }) => { onSelectMode(e.target.value); }; - return ( -
-
-

Region Select

-
-
- {regions.map((region, idx) => ( -
- - onChangeRegionColour(idx, c)} /> -
- ))} -
-

Tools

-
-
- + const handleResetClick = () => { + const map = paintedCells.current; + map.clear(); + }; -