Spaces:
Sleeping
Sleeping
| let hsv = { hMin: 0, hMax: 0, sMin: 0, sMax: 0, vMin: 0, vMax: 0 }; | |
| function uploadPDF() { | |
| const file = document.getElementById('fileInput').files[0]; | |
| const formData = new FormData(); | |
| formData.append('file', file); | |
| fetch('/upload', { method: 'POST', body: formData }) | |
| .then(res => res.json()) | |
| .then(data => loadImage(data.image_path)); | |
| } | |
| function loadImage(src) { | |
| const img = new Image(); | |
| img.onload = function () { | |
| const canvas = document.getElementById('canvas'); | |
| canvas.width = img.width; | |
| canvas.height = img.height; | |
| const ctx = canvas.getContext('2d'); | |
| ctx.drawImage(img, 0, 0); | |
| }; | |
| img.src = src; | |
| } | |
| document.getElementById("canvas").addEventListener("click", function (e) { | |
| const canvas = this; | |
| const rect = canvas.getBoundingClientRect(); | |
| const scaleX = canvas.width / rect.width; | |
| const scaleY = canvas.height / rect.height; | |
| const x = Math.round((e.clientX - rect.left) * scaleX); | |
| const y = Math.round((e.clientY - rect.top) * scaleY); | |
| fetch('/click', { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify({ x: x, y: y }) | |
| }) | |
| .then(res => res.json()) | |
| .then(data => { | |
| document.getElementById('info').innerText = data.info; | |
| hsv = { | |
| hMin: data.hMin, hMax: data.hMax, | |
| sMin: data.sMin, sMax: data.sMax, | |
| vMin: data.vMin, vMax: data.vMax | |
| }; | |
| updateHSVLabels(); | |
| updateMask(); | |
| }); | |
| }); | |
| document.getElementById("proceed-button").addEventListener("click", async function () { | |
| try { | |
| const response = await fetch("/proceed", { | |
| method: "POST", | |
| }); | |
| const data = await response.json(); | |
| console.log("Processing result:", data); | |
| // Optional: show the legend or stats in UI | |
| alert("Processing complete!\nLegend:\n" + data.legend.map(row => `${row["Column Type"]}: ${row.Count}`).join("\n")); | |
| } catch (error) { | |
| console.error("Error during proceed:", error); | |
| } | |
| }); | |
| function updateHSVLabels() { | |
| document.getElementById('hMinVal').innerText = hsv.hMin; | |
| document.getElementById('hMaxVal').innerText = hsv.hMax; | |
| document.getElementById('sMinVal').innerText = hsv.sMin; | |
| document.getElementById('sMaxVal').innerText = hsv.sMax; | |
| document.getElementById('vMinVal').innerText = hsv.vMin; | |
| document.getElementById('vMaxVal').innerText = hsv.vMax; | |
| } | |
| function adjust(key, delta) { | |
| if (key === 'hMin') hsv.hMin = Math.max(0, hsv.hMin + delta); | |
| if (key === 'hMax') hsv.hMax = Math.min(179, hsv.hMax + delta); | |
| if (key === 'sMin') hsv.sMin = Math.max(0, hsv.sMin + delta); | |
| if (key === 'sMax') hsv.sMax = Math.min(255, hsv.sMax + delta); | |
| if (key === 'vMin') hsv.vMin = Math.max(0, hsv.vMin + delta); | |
| if (key === 'vMax') hsv.vMax = Math.min(255, hsv.vMax + delta); | |
| updateHSVLabels(); | |
| updateMask(); | |
| } | |
| function updateMask() { | |
| fetch('/update_mask', { | |
| method: 'POST', | |
| headers: { 'Content-Type': 'application/json' }, | |
| body: JSON.stringify(hsv) | |
| }) | |
| .then(res => res.json()) | |
| .then(data => { | |
| document.getElementById('segmented-img').src = data.image_path; | |
| }); | |
| } | |