diff --git a/frontend/src/pages/Watering/Watering.js b/frontend/src/pages/Watering/Watering.js index f777b7d..e972956 100644 --- a/frontend/src/pages/Watering/Watering.js +++ b/frontend/src/pages/Watering/Watering.js @@ -370,18 +370,20 @@ const Watering = () => { ) )} - {cov?.kind==='rect' && ( - - )} + {cov?.kind==='rect' && (()=>{ + const clat=Number(pt.lat), clng=Number(pt.lng); + const L=cov.length, W=cov.width; const hdg=(Number(pt.sprinkler_heading_degrees||0))*Math.PI/180; + const Rlat=111320, Rlng=Math.cos(clat*Math.PI/180)*111320; + const hf=L/2*0.3048, wf=W/2*0.3048; + const corners=[{x:hf,y:wf},{x:-hf,y:wf},{x:-hf,y:-wf},{x:hf,y:-wf}].map(({x,y})=>{ + const xr=x*Math.cos(hdg)-y*Math.sin(hdg); + const yr=x*Math.sin(hdg)+y*Math.cos(hdg); + const lat=clat + (yr/Rlat); + const lng=clng + (xr/Rlng); + return [lat,lng]; + }); + return ; + })()} ); })} @@ -394,25 +396,3 @@ const Watering = () => { }; export default Watering; - const onSelectPoint = (pt) => { - setSelectedPointId(pt.id); - setEditForm({ - durationMinutes: pt.duration_minutes || 0, - mountType: pt.sprinkler_mount, - sprinklerHeadType: pt.sprinkler_head_type, - gpm: Number(pt.sprinkler_gpm||0), - throwFeet: Number(pt.sprinkler_throw_feet||0), - degrees: Number(pt.sprinkler_degrees||360), - lengthFeet: Number(pt.sprinkler_length_feet||0), - widthFeet: Number(pt.sprinkler_width_feet||0), - headingDegrees: Number(pt.sprinkler_heading_degrees||0) - }); - }; - - const updatePointField = async (id, patch) => { - try { - const r = await wateringAPI.updatePoint(id, patch); - const np = r.data?.data?.point; - setPoints(prev => prev.map(p=> p.id===id? np: p)); - } catch(e){ toast.error('Failed to update point'); } - };