Skip to content

Commit ed84914

Browse files
Create index.html
1 parent 17f1343 commit ed84914

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed

index.html

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
6+
<title>AI Data Science Backend</title>
7+
</head>
8+
<body>
9+
<h1>📈 AI Data Science App</h1>
10+
11+
<form id="uploadForm">
12+
<label for="fileInput">Upload CSV File:</label>
13+
<input type="file" id="fileInput" name="file" required />
14+
<button type="submit">Upload</button>
15+
</form>
16+
17+
<form id="predictForm">
18+
<label for="futureInput">Enter future dates (YYYY-MM-DD, comma-separated):</label>
19+
<input type="text" id="futureInput" name="future_x" />
20+
<button type="submit">Predict</button>
21+
</form>
22+
23+
<h3>🧠 Summary:</h3>
24+
<pre id="summary"></pre>
25+
26+
<h3>🔍 Logs:</h3>
27+
<pre id="log"></pre>
28+
29+
<h3>🔮 Forecast:</h3>
30+
<pre id="forecast"></pre>
31+
32+
<h3>📊 Plot:</h3>
33+
<img id="plot" style="display:none; max-width:600px;" />
34+
35+
<script>
36+
// Paste your full JavaScript code here (what you already sent)
37+
// No change needed
38+
document.getElementById('uploadForm').addEventListener('submit', async function (e) {
39+
e.preventDefault();
40+
const formData = new FormData();
41+
formData.append('file', document.getElementById('fileInput').files[0]);
42+
43+
try {
44+
const response = await fetch('/upload', {
45+
method: 'POST',
46+
body: formData
47+
});
48+
49+
if (!response.ok) {
50+
const errorText = await response.text();
51+
console.error("Upload error:", errorText);
52+
alert("Upload failed: " + response.status);
53+
return;
54+
}
55+
56+
const data = await response.json();
57+
document.getElementById('summary').textContent = data.summary;
58+
document.getElementById('log').textContent = data.log;
59+
document.getElementById('forecast').textContent = data.forecast;
60+
document.getElementById('plot').src = data.plot_url;
61+
document.getElementById('plot').style.display = 'block';
62+
63+
} catch (err) {
64+
console.error("Unexpected upload error:", err);
65+
alert("Upload failed: " + err.message);
66+
}
67+
});
68+
69+
document.getElementById('predictForm').addEventListener('submit', async function (e) {
70+
e.preventDefault();
71+
const futureX = document.getElementById('futureInput').value;
72+
73+
const formData = new FormData();
74+
formData.append('future_x', futureX);
75+
76+
try {
77+
const response = await fetch('/predict', {
78+
method: 'POST',
79+
body: formData
80+
});
81+
82+
if (!response.ok) {
83+
const errorText = await response.text();
84+
console.error("Predict error:", errorText);
85+
alert("Prediction failed: " + response.status);
86+
return;
87+
}
88+
89+
const data = await response.json();
90+
document.getElementById('forecast').textContent =
91+
typeof data.forecast === "string"
92+
? data.forecast
93+
: JSON.stringify(data.forecast, null, 2);
94+
document.getElementById('log').textContent = data.log;
95+
document.getElementById('plot').src = data.plot_url;
96+
document.getElementById('plot').style.display = 'block';
97+
98+
} catch (err) {
99+
console.error("Unexpected prediction error:", err);
100+
alert("Prediction failed: " + err.message);
101+
}
102+
});
103+
</script>
104+
</body>
105+
</html>

0 commit comments

Comments
 (0)