import { useEffect, useState } from "react"; import "leaflet/dist/leaflet.css"; import { CustomMapContainer, MapEventListener } from "@/components/map"; import { NumberInput } from "@/components/input"; import useAdmin from "@/hook/useAdmin"; import useMapCircleDraw from "@/hook/useCircleDraw"; import useLocalVariable from "@/hook/useLocalVariable"; import { defaultZoneSettings } from "@/util/configurations"; import { ZoneTypes } from "@/util/types"; import { CircleZone } from "@/components/layer"; const EditMode = { MIN: 0, MAX: 1 } function Drawings({ minZone, setMinZone, maxZone, setMaxZone, editMode }) { const { drawingCircle: drawingMaxCircle, handleLeftClick: maxLeftClick, handleRightClick: maxRightClick, handleMouseMove: maxHover } = useMapCircleDraw(maxZone, setMaxZone); const { drawingCircle: drawingMinCircle, handleLeftClick: minLeftClick, handleRightClick: minRightClick, handleMouseMove: minHover } = useMapCircleDraw(minZone, setMinZone); function MaxCircleZone() { return ( drawingMaxCircle ? : ); } function MinCircleZone() { return ( drawingMinCircle ? : ); } return (<> ); } export default function CircleZoneSelector({ display }) { const {zoneSettings, outOfZoneDelay, updateSettings} = useAdmin(); const [localZoneSettings, setLocalZoneSettings, applyLocalZoneSettings] = useLocalVariable(zoneSettings, (e) => updateSettings({zone: e})); const [localOutOfZoneDelay, setLocalOutOfZoneDelay, applyLocalOutOfZoneDelay] = useLocalVariable(outOfZoneDelay, (e) => updateSettings({outOfZoneDelay: e})); const [editMode, setEditMode] = useState(EditMode.MAX); useEffect(() => { if (!localZoneSettings || localZoneSettings.type != ZoneTypes.CIRCLE) { setLocalZoneSettings(defaultZoneSettings.circle); } }, [localZoneSettings]); function setMinZone(minZone) { setLocalZoneSettings({...localZoneSettings, min: minZone}); setEditMode(EditMode.MAX); } function setMaxZone(maxZone) { setLocalZoneSettings({...localZoneSettings, max: maxZone}); setEditMode(EditMode.MIN); } function updateReductionCount(reductionCount) { setLocalZoneSettings({...localZoneSettings, reductionCount: reductionCount}); } function updateDuration(duration) { setLocalZoneSettings({...localZoneSettings, duration: duration}); } function handleSubmit() { applyLocalZoneSettings(); applyLocalOutOfZoneDelay(); } return (
{localZoneSettings && localZoneSettings.type == ZoneTypes.CIRCLE && <>
{editMode == EditMode.MIN && } {editMode == EditMode.MAX && }

Reduction number

Zone duration

Timeout

}
); }