document.getElementById('lbw-form').addEventListener('submit', function(e) { e.preventDefault(); const formData = new FormData(this); fetch('/analyze', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { if (data.error) { document.getElementById('decision').textContent = `Error: ${data.error}`; } else { document.getElementById('decision').textContent = `Decision: ${data.decision} (Confidence: ${data.confidence})`; document.getElementById('details').innerHTML = ` Pitching: ${data.pitching.status}
Impact: ${data.impact.status}
Wickets: ${data.wicket} `; drawPitch(data.actual_path, data.projected_path, data.pitching, data.impact); } }) .catch(error => { document.getElementById('decision').textContent = `Error: ${error.message}`; }); }); function drawPitch(actualPath, projectedPath, pitching, impact) { const canvas = document.getElementById('pitchCanvas'); const ctx = canvas.getContext('2d'); ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.fillStyle = '#90EE90'; ctx.fillRect(50, 50, 300, 500); ctx.fillStyle = '#FFF'; ctx.fillRect(190, 50, 20, 10); ctx.strokeStyle = '#000'; ctx.beginPath(); ctx.moveTo(50, 150); ctx.lineTo(350, 150); ctx.moveTo(200, 50); ctx.lineTo(200, 150); ctx.stroke(); function scalePoint(point) { return { x: 50 + point.x * 300, y: 550 - point.y * 500 }; } if (actualPath.length > 0) { ctx.strokeStyle = 'red'; ctx.lineWidth = 2; ctx.beginPath(); const actualScaled = actualPath.map(scalePoint); ctx.moveTo(actualScaled[0].x, actualScaled[0].y); for (let i = 1; i < actualScaled.length; i++) { ctx.lineTo(actualScaled[i].x, actualScaled[i].y); } ctx.stroke(); } if (projectedPath.length > 0) { ctx.strokeStyle = 'blue'; ctx.lineWidth = 2; ctx.beginPath(); const projectedScaled = projectedPath.map(scalePoint); ctx.moveTo(projectedScaled[0].x, projectedScaled[0].y); ctx.lineTo(projectedScaled[1].x, projectedScaled[1].y); ctx.stroke(); } const pitchPt = scalePoint(pitching); ctx.fillStyle = 'black'; ctx.beginPath(); ctx.arc(pitchPt.x, pitchPt.y, 5, 0, 2 * Math.PI); ctx.fill(); const impactPt = scalePoint(impact); ctx.fillStyle = 'orange'; ctx.beginPath(); ctx.arc(impactPt.x, impactPt.y, 5, 0, 2 * Math.PI); ctx.fill(); }