import { useEffect, useState } from "react"; import "leaflet/dist/leaflet.css"; import { CustomMapContainer, MapEventListener } from "@/components/map"; import { NumberInput } from "@/components/input"; import useMapCircleDraw from "@/hook/useCircleDraw"; import useLocalVariable from "@/hook/useLocalVariable"; import { defaultZoneSettings } from "@/config/configurations"; import { ZoneTypes } from "@/config/types"; import { CircleZone } from "@/components/layer"; import { useAdmin } from "@/context/adminContext"; import { emitSettings } from "@/services/socket/emitters"; 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); return (<> { drawingMaxCircle ? : } { drawingMinCircle ? : } ); } export default function CircleZoneSelector({ display }) { const { settings } = useAdmin(); const [localZoneSettings, setLocalZoneSettings, applyLocalZoneSettings] = useLocalVariable(settings.playingZones, (e) => emitSettings({...settings, playingZones: e})); const [localOutOfZoneDelay, setLocalOutOfZoneDelay, applyLocalOutOfZoneDelay] = useLocalVariable(settings.outOfZoneDelay, (e) => emitSettings({...settings, outOfZoneDelay: e})); const [editMode, setEditMode] = useState(EditMode.MAX); useEffect(() => { if (!localZoneSettings || localZoneSettings.type != ZoneTypes.CIRCLE) { setLocalZoneSettings(defaultZoneSettings.circle); } }, [localZoneSettings, setLocalZoneSettings]); 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.MAX && } {editMode == EditMode.MIN && }

Nombre de rétrécissements

{"Durée d'une zone"}

Temps permis hors zone

}
); }