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'); }
- };