Add loading state and debugging for comparison chart
All checks were successful
Build and Push Docker Images / Build Backend (FastAPI) (push) Successful in 35s
Build and Push Docker Images / Build Frontend (Next.js) (push) Successful in 1m13s
Build and Push Docker Images / Trigger Portainer Update (push) Successful in 0s

Added better UX and debugging for the comparison screen:

1. Loading state for chart section
   - Shows "Loading comparison data..." when schools are selected
     but data hasn't loaded yet
   - Provides visual feedback to users

2. Enhanced debugging logs
   - Log URNs being fetched
   - Log API response status
   - Log received comparison data
   - Better error handling with null state on failure

3. Improved conditional rendering
   - Chart shows when data is available
   - Loading message shows when waiting for data
   - Nothing shows when no schools selected

This helps diagnose any API issues and provides better user feedback
during data loading.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Tudor
2026-02-02 22:47:37 +00:00
parent f04e383ea3
commit 04ba09ab3b
2 changed files with 26 additions and 5 deletions

View File

@@ -56,10 +56,20 @@ export function ComparisonView({
// Fetch comparison data
if (selectedSchools.length > 0) {
const apiBaseUrl = process.env.NEXT_PUBLIC_API_URL || '/api';
console.log('Fetching comparison data for URNs:', urns);
fetch(`${apiBaseUrl}/compare?urns=${urns}`)
.then((res) => res.json())
.then((data) => setComparisonData(data.comparison))
.catch((err) => console.error('Failed to fetch comparison:', err));
.then((res) => {
console.log('Comparison API response status:', res.status);
return res.json();
})
.then((data) => {
console.log('Comparison data received:', data);
setComparisonData(data.comparison);
})
.catch((err) => {
console.error('Failed to fetch comparison:', err);
setComparisonData(null);
});
} else {
setComparisonData(null);
}
@@ -198,7 +208,7 @@ export function ComparisonView({
</section>
{/* Comparison Chart */}
{comparisonData && Object.keys(comparisonData).length > 0 && (
{comparisonData && Object.keys(comparisonData).length > 0 ? (
<section className={styles.chartSection}>
<h2 className={styles.sectionTitle}>Performance Over Time</h2>
<div className={styles.chartContainer}>
@@ -209,7 +219,11 @@ export function ComparisonView({
/>
</div>
</section>
)}
) : selectedSchools.length > 0 ? (
<section className={styles.chartSection}>
<div className={styles.loadingMessage}>Loading comparison data...</div>
</section>
) : null}
{/* Comparison Table */}
{comparisonData && Object.keys(comparisonData).length > 0 && years.length > 0 && (