Skip to content

Commit 9d179ce

Browse files
authored
Update dashboard.html
Reverted back to old version
1 parent 8b2e328 commit 9d179ce

File tree

1 file changed

+87
-66
lines changed

1 file changed

+87
-66
lines changed

dashboard.html

Lines changed: 87 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -168,26 +168,6 @@ <h3 class="card-title">Reports</h3>
168168
<h3 class="card-title">🌱 Expert Recommendations</h3>
169169
<div class="loading">⏳ Loading...</div>
170170
</div>
171-
172-
<div class="card" id="tutorials-card">
173-
<h3 class="card-title">🎓 Tutorials</h3>
174-
<div class="loading">⏳ Loading...</div>
175-
</div>
176-
177-
<div class="card" id="iot-sensor-card">
178-
<h3 class="card-title">🌡️ Real-Time Field Sensors</h3>
179-
<div class="sensor-grid" id="sensor-readings"></div>
180-
</div>
181-
182-
<div class="card" id="predictive-card">
183-
<h3 class="card-title">🔮 Yield Prediction</h3>
184-
<div id="predictive-chart"></div>
185-
</div>
186-
187-
<div class="card" id="equipment-card">
188-
<h3 class="card-title">🚜 Equipment Status</h3>
189-
<div class="equipment-list" id="equipment-status"></div>
190-
</div>
191171
</div>
192172

193173
<!-- Modal -->
@@ -204,27 +184,12 @@ <h3 id="modal-title"></h3>
204184
loadDashboardData();
205185
});
206186

207-
function loadDashboardData() {
208-
const fieldsData = JSON.parse(localStorage.getItem('fieldsData')) || { fields: [] };
209-
const climateData = JSON.parse(localStorage.getItem('climateData')) || {};
210-
const waterData = JSON.parse(localStorage.getItem('waterData')) || {};
211-
const reportsData = JSON.parse(localStorage.getItem('reportsData')) || {};
212-
const recommendationsData = JSON.parse(localStorage.getItem('recommendationsData')) || {};
213-
const tutorialsData = JSON.parse(localStorage.getItem('tutorialsData')) || {};
214-
215-
document.getElementById('fields-card').innerHTML = `<h3 class="card-title">Field Status</h3>${renderFields(fieldsData)}`;
216-
document.getElementById('climate-card').innerHTML = `<h3 class="card-title">Climate Overview</h3>${renderClimate(climateData)}`;
217-
document.getElementById('water-card').innerHTML = `<h3 class="card-title">Water Resources</h3>${renderWater(waterData)}`;
218-
document.getElementById('reports-card').innerHTML = `<h3 class="card-title">Reports</h3>${renderReports(reportsData)}`;
219-
document.getElementById('recommendations-card').innerHTML = `<h3 class="card-title">🌱 Expert Recommendations</h3>${renderRecommendations(recommendationsData)}`;
220-
document.getElementById('tutorials-card').innerHTML = `<h3 class="card-title">🎓 Tutorials</h3>${renderTutorials(tutorialsData)}`;
221-
}
222-
223-
function renderFields(data) {
224-
if (!data.fields.length) {
187+
async function fetchFieldsData() {
188+
const fieldsData = JSON.parse(localStorage.getItem('fieldData')) || { fields: [] };
189+
if (fieldsData.fields.length === 0) {
225190
return '<p>No fields registered yet.</p>';
226191
}
227-
return data.fields.map(field => `
192+
return fieldsData.fields.map(field => `
228193
<div>
229194
<p><strong>${field.name}</strong></p>
230195
<p>Crop: ${field.crop}</p>
@@ -235,56 +200,112 @@ <h3 id="modal-title"></h3>
235200
`).join('');
236201
}
237202

238-
function renderClimate(data) {
203+
async function fetchClimateData() {
204+
const climateData = JSON.parse(localStorage.getItem('climateDashboardData')) || {};
239205
return `
240206
<div>
241-
<p>Average Temperature: ${data.avgTemp}°C</p>
242-
<p>Last Recorded Precipitation: ${data.lastPrecip}mm</p>
207+
<p>Average Temperature: ${climateData.avgTemp}°C</p>
208+
<p>Last Recorded Precipitation: ${climateData.lastPrecip}mm</p>
243209
</div>
244210
`;
245211
}
246212

247-
function renderWater(data) {
213+
async function fetchWaterData() {
214+
const waterData = JSON.parse(localStorage.getItem('waterData')) || {
215+
surface: [],
216+
groundwater: [],
217+
irrigation: []
218+
};
248219
return `
249220
<div>
250-
<p>Surface Water: ${data.surface.length} bodies</p>
251-
<p>Groundwater: ${data.groundwater.length} regions</p>
252-
<p>Irrigation: ${data.irrigation.length} schedules</p>
221+
<p>Surface Water: ${waterData.surface.length} bodies</p>
222+
<p>Groundwater: ${waterData.groundwater.length} regions</p>
223+
<p>Irrigation: ${waterData.irrigation.length} schedules</p>
253224
</div>
254225
`;
255226
}
256227

257-
function renderReports(data) {
228+
async function fetchReportsData() {
229+
const reportData = JSON.parse(localStorage.getItem('agritoolReport')) || {};
258230
return `
259231
<div>
260-
<p>Last Report Generated: ${new Date(data.lastGenerated).toLocaleDateString()}</p>
232+
<p>Last Report Generated: ${new Date(reportData.lastGenerated).toLocaleDateString()}</p>
261233
</div>
262234
`;
263235
}
264236

265-
function renderRecommendations(data) {
266-
if (!data.recommendations.length) {
267-
return '<p>No recommendations available.</p>';
237+
async function fetchRecommendationsData() {
238+
try {
239+
const response = await fetch("/api/recommendations");
240+
const data = await response.json();
241+
renderRecommendationCards(data);
242+
} catch (error) {
243+
showError("Failed to load agricultural recommendations");
244+
document.getElementById('recommendations-card').innerHTML = `
245+
<h3 class="card-title">🌱 Expert Recommendations</h3>
246+
<div class="loading">❌ Failed to load recommendations.</div>
247+
`;
268248
}
269-
return data.recommendations.map(rec => `
270-
<div>
249+
}
250+
251+
async function getRecommendationDetails(index) {
252+
try {
253+
const response = await fetch("/api/details", {
254+
method: 'POST',
255+
headers: {'Content-Type': 'application/json'},
256+
body: JSON.stringify({ index })
257+
});
258+
const details = await response.json();
259+
displayDetailsModal(details);
260+
} catch (error) {
261+
showError("Could not load recommendation details");
262+
}
263+
}
264+
265+
async function loadDashboardData() {
266+
try {
267+
const [fields, climate, water, reports] = await Promise.all([
268+
fetchFieldsData(),
269+
fetchClimateData(),
270+
fetchWaterData(),
271+
fetchReportsData(),
272+
fetchRecommendationsData()
273+
]);
274+
275+
document.getElementById('fields-card').innerHTML = `<h3 class="card-title">Field Status</h3>${fields}`;
276+
document.getElementById('climate-card').innerHTML = `<h3 class="card-title">Climate Overview</h3>${climate}`;
277+
document.getElementById('water-card').innerHTML = `<h3 class="card-title">Water Resources</h3>${water}`;
278+
document.getElementById('reports-card').innerHTML = `<h3 class="card-title">Reports</h3>${reports}`;
279+
} catch (error) {
280+
console.error('Dashboard error:', error);
281+
document.querySelectorAll('.loading').forEach(el => {
282+
el.textContent = '❌ Failed to load data.';
283+
});
284+
}
285+
}
286+
287+
function renderRecommendationCards(recommendations) {
288+
const recommendationsCard = document.getElementById('recommendations-card');
289+
recommendationsCard.innerHTML = `<h3 class="card-title">🌱 Expert Recommendations</h3>`;
290+
recommendations.forEach((rec, index) => {
291+
const recElement = document.createElement('div');
292+
recElement.innerHTML = `
271293
<p><strong>${rec.title}</strong></p>
272294
<p>${rec.details}</p>
273-
</div>
274-
`).join('');
295+
`;
296+
recommendationsCard.appendChild(recElement);
297+
});
275298
}
276299

277-
function renderTutorials(data) {
278-
if (!data.tutorials.length) {
279-
return '<p>No tutorials available.</p>';
280-
}
281-
return data.tutorials.map(tutorial => `
282-
<div>
283-
<p><strong>${tutorial.title}</strong></p>
284-
<p>${tutorial.description}</p>
285-
<p>Duration: ${tutorial.duration} minutes</p>
286-
</div>
287-
`).join('');
300+
function displayDetailsModal(details) {
301+
const modal = document.getElementById('detail-modal');
302+
document.getElementById('modal-title').innerText = details.title;
303+
document.getElementById('modal-details').innerText = details.content;
304+
modal.style.display = 'flex';
305+
}
306+
307+
function showError(message) {
308+
console.error(message);
288309
}
289310

290311
function timeSince(dateString) {

0 commit comments

Comments
 (0)