Abhisingh-18's picture
Mirror of github.com/Abhisingh18/IISC-Assignment-1
8003028 verified
Raw
History Blame Contribute Delete
2.74 kB
let chartInstance = null;
document.getElementById("fileInput").addEventListener("change", function () {
let file = this.files[0];
if (!file) return;
let reader = new FileReader();
reader.onload = function (e) {
let text = e.target.result.trim();
let lines = text.split(/\r?\n/);
// Parse to float, ignore non-numeric
let values = [];
for (let line of lines) {
let v = parseFloat(line.trim());
if (!isNaN(v)) values.push(v);
}
if (values.length === 0) {
alert("No numeric data found in CSV");
return;
}
// Show first 10 values in left panel
document.getElementById("dataPreview").textContent =
values.slice(0, 10).join("\n");
// Call backend for prediction
fetch("/predict", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({ data: values })
})
.then(res => res.json())
.then(res => {
if (res.error) {
alert("Error from server: " + res.error);
return;
}
// RIGHT PANEL predictions
document.getElementById("lastValue").textContent = res.last.toFixed(6);
document.getElementById("nextPred").textContent = res.next.toFixed(6);
let future = res.future;
document.getElementById("futurePreds").textContent =
future.map(v => v.toFixed(6)).join("\n");
// LEFT PANEL MSE — ADD HERE
document.getElementById("trainMSE").textContent = res.train_mse.toFixed(6);
document.getElementById("testMSE").textContent = res.test_mse.toFixed(6);
// GRAPH
drawGraph(future);
})
.catch(err => {
console.error(err);
alert("Error calling backend");
});
};
reader.readAsText(file);
});
function drawGraph(data) {
const ctx = document.getElementById("forecastChart").getContext("2d");
if (chartInstance) {
chartInstance.destroy();
}
chartInstance = new Chart(ctx, {
type: "line",
data: {
labels: data.map((_, i) => i + 1),
datasets: [{
label: "Predicted Workload",
data: data,
borderColor: "#1e88e5",
fill: false,
tension: 0.3
}]
},
options: {
responsive: true,
scales: {
x: { title: { display: true, text: "Steps Ahead" } },
y: { title: { display: true, text: "Workload" } }
}
}
});
}