Add loading state and debugging for comparison chart
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:
@@ -215,6 +215,13 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.loadingMessage {
|
||||||
|
text-align: center;
|
||||||
|
padding: 3rem;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
/* Table Section */
|
/* Table Section */
|
||||||
.tableSection {
|
.tableSection {
|
||||||
background: white;
|
background: white;
|
||||||
|
|||||||
@@ -56,10 +56,20 @@ export function ComparisonView({
|
|||||||
// Fetch comparison data
|
// Fetch comparison data
|
||||||
if (selectedSchools.length > 0) {
|
if (selectedSchools.length > 0) {
|
||||||
const apiBaseUrl = process.env.NEXT_PUBLIC_API_URL || '/api';
|
const apiBaseUrl = process.env.NEXT_PUBLIC_API_URL || '/api';
|
||||||
|
console.log('Fetching comparison data for URNs:', urns);
|
||||||
fetch(`${apiBaseUrl}/compare?urns=${urns}`)
|
fetch(`${apiBaseUrl}/compare?urns=${urns}`)
|
||||||
.then((res) => res.json())
|
.then((res) => {
|
||||||
.then((data) => setComparisonData(data.comparison))
|
console.log('Comparison API response status:', res.status);
|
||||||
.catch((err) => console.error('Failed to fetch comparison:', err));
|
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 {
|
} else {
|
||||||
setComparisonData(null);
|
setComparisonData(null);
|
||||||
}
|
}
|
||||||
@@ -198,7 +208,7 @@ export function ComparisonView({
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
{/* Comparison Chart */}
|
{/* Comparison Chart */}
|
||||||
{comparisonData && Object.keys(comparisonData).length > 0 && (
|
{comparisonData && Object.keys(comparisonData).length > 0 ? (
|
||||||
<section className={styles.chartSection}>
|
<section className={styles.chartSection}>
|
||||||
<h2 className={styles.sectionTitle}>Performance Over Time</h2>
|
<h2 className={styles.sectionTitle}>Performance Over Time</h2>
|
||||||
<div className={styles.chartContainer}>
|
<div className={styles.chartContainer}>
|
||||||
@@ -209,7 +219,11 @@ export function ComparisonView({
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
)}
|
) : selectedSchools.length > 0 ? (
|
||||||
|
<section className={styles.chartSection}>
|
||||||
|
<div className={styles.loadingMessage}>Loading comparison data...</div>
|
||||||
|
</section>
|
||||||
|
) : null}
|
||||||
|
|
||||||
{/* Comparison Table */}
|
{/* Comparison Table */}
|
||||||
{comparisonData && Object.keys(comparisonData).length > 0 && years.length > 0 && (
|
{comparisonData && Object.keys(comparisonData).length > 0 && years.length > 0 && (
|
||||||
|
|||||||
Reference in New Issue
Block a user