-
Nine-Weeks Periods
-
+
Nine-Weeks Period
+
{['NW1', 'NW2', 'NW3', 'NW4'].map(period => (
-
+
))}
@@ -287,7 +267,8 @@ export const Metrics = () => {
checked={selectedClasses.includes(classKey)}
onChange={() => toggleClass(classKey)}
/>
-
{classData.className}
+
{classData.className}
+
{classData.period}
);
})}
@@ -299,14 +280,17 @@ export const Metrics = () => {
{Object.keys(filteredGrades).length === 0 ? (
📊
-
No grade data available for the selected filters
-
Try selecting different periods or classes
+
No grade data available for {PERIOD_NAMES[selectedPeriod]}
+
Try selecting a different period or classes
) : (
{Object.entries(filteredGrades).map(([key, classData]) => {
- const chartData = prepareChartData(classData.nineWeeks);
- const yDomain = calculateYDomain(classData.nineWeeks);
+ const gradeData = classData.nineWeeks[selectedPeriod];
+ const chartData = prepareChartData(gradeData);
+ const yDomain = calculateYDomain(gradeData);
+ const latest = getLatestGrade(gradeData);
+ const trend = calculateTrend(gradeData);
return (
@@ -317,10 +301,14 @@ export const Metrics = () => {
{classData.period} • {classData.teacher}
+
+ Current
+ {latest}%
+
-
+
{
fontSize: '0.75rem'
}}
labelStyle={{ color: '#d8b4fe' }}
- formatter={(value, name) => [
- value ? `${value.toFixed(2)}%` : 'N/A',
- PERIOD_NAMES[name]
- ]}
+ formatter={(value) => [`${value.toFixed(2)}%`, 'Grade']}
labelFormatter={(label) => `Update #${label}`}
/>
-
-
- {Object.entries(classData.nineWeeks).map(([nw, grades]) => {
- const latest = getLatestGrade(grades);
- const trend = calculateTrend(grades);
- return (
-
-
-
- {PERIOD_NAMES[nw]}
-
-
-
{latest}%
-
- {getTrendIcon(trend.trend)}
-
- {Math.abs(trend.change).toFixed(2)}%
-
-
-
({grades.length} updates)
-
-
- );
- })}
+
+
+
Trend
+
+ {getTrendIcon(trend.trend)}
+
+ {trend.change > 0 ? '+' : ''}{trend.change.toFixed(2)}%
+
+
+
+
+ Updates
+ {gradeData.length}
+
+
+ Period
+
+ {PERIOD_NAMES[selectedPeriod]}
+
+
);