Skip to content

Commit 55268a1

Browse files
committed
fix: card view metrics
1 parent aa5b11e commit 55268a1

File tree

4 files changed

+15
-4
lines changed

4 files changed

+15
-4
lines changed

backend/src/database/programs.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,7 @@ func (db *DB) GetProgramsOverviewTable(args *models.QueryContext, timeFilter int
577577
mr.total_enrollments AS total_enrollments,
578578
mr.total_active_enrollments AS total_active_enrollments,
579579
mr.total_classes AS total_classes,
580+
mr.total_active_classes AS total_active_classes,
580581
mr.total_capacity AS total_capacity,
581582
time_filtered_rates.completion_rate AS completion_rate,
582583
time_filtered_rates.attendance_rate AS attendance_rate,
@@ -595,6 +596,7 @@ func (db *DB) GetProgramsOverviewTable(args *models.QueryContext, timeFilter int
595596
mr.total_enrollments AS total_enrollments,
596597
mr.total_active_enrollments AS total_active_enrollments,
597598
mr.total_classes AS total_classes,
599+
mr.total_active_classes AS total_active_classes,
598600
mr.total_capacity AS total_capacity,
599601
time_filtered_rates.completion_rate AS completion_rate,
600602
time_filtered_rates.attendance_rate AS attendance_rate,
@@ -614,6 +616,7 @@ func (db *DB) GetProgramsOverviewTable(args *models.QueryContext, timeFilter int
614616
COUNT(DISTINCT pce.id) AS total_enrollments,
615617
COUNT(DISTINCT CASE WHEN pce.enrollment_status = 'Enrolled' AND pce.enrolled_at IS NOT NULL AND (pce.enrollment_ended_at IS NULL OR pce.enrollment_ended_at > CURRENT_TIMESTAMP) THEN pce.id END) AS total_active_enrollments,
616618
COUNT(DISTINCT CASE WHEN pc.status != 'Cancelled' THEN pc.id END) AS total_classes,
619+
COUNT(DISTINCT CASE WHEN pc.status = 'Active' THEN pc.id END) AS total_active_classes,
617620
COALESCE(SUM(CASE WHEN pc.status != 'Cancelled' THEN pc.capacity ELSE 0 END), 0) AS total_capacity
618621
FROM programs p
619622
JOIN facilities_programs fp ON fp.program_id = p.id
@@ -632,6 +635,7 @@ func (db *DB) GetProgramsOverviewTable(args *models.QueryContext, timeFilter int
632635
COUNT(DISTINCT pce.id) AS total_enrollments,
633636
COUNT(DISTINCT CASE WHEN pce.enrollment_status = 'Enrolled' AND pce.enrolled_at IS NOT NULL AND (pce.enrollment_ended_at IS NULL OR pce.enrollment_ended_at > CURRENT_TIMESTAMP) THEN pce.id END) AS total_active_enrollments,
634637
COUNT(DISTINCT CASE WHEN pc.status != 'Cancelled' THEN pc.id END) AS total_classes,
638+
COUNT(DISTINCT CASE WHEN pc.status = 'Active' THEN pc.id END) AS total_active_classes,
635639
COALESCE(SUM(CASE WHEN pc.status != 'Cancelled' THEN pc.capacity ELSE 0 END), 0) AS total_capacity
636640
FROM programs p
637641
LEFT JOIN facilities_programs fp ON fp.program_id = p.id

backend/src/models/program.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ type ProgramsOverviewTable struct {
166166
TotalEnrollments *int64 `json:"total_enrollments"`
167167
TotalActiveEnrollments *int64 `json:"total_active_enrollments"`
168168
TotalClasses *int64 `json:"total_classes"`
169+
TotalActiveClasses *int64 `json:"total_active_classes"`
169170
TotalCapacity *int64 `json:"total_capacity"`
170171
CompletionRate *float64 `json:"completion_rate"`
171172
AttendanceRate *float64 `json:"attendance_rate"`

frontend-v2/src/pages/ProgramsPage.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export default function ProgramsPage() {
6363
const { user } = useAuth();
6464
const navigate = useNavigate();
6565
const { data: resp, mutate } = useSWR<ServerResponseMany<ProgramsOverviewTable>>(
66-
'/api/programs/detailed-list?include_archived=true'
66+
'/api/programs/detailed-list?include_archived=true&per_page=100'
6767
);
6868
const programs = resp?.data ?? [];
6969

@@ -610,7 +610,7 @@ export default function ProgramsPage() {
610610
</div>
611611
) : (
612612
<>
613-
<div className="grid grid-cols-2 gap-6">
613+
<div className="grid grid-cols-2 gap-6 mb-4">
614614
{paginatedPrograms.map((program) => (
615615
<ProgramCard
616616
key={program.program_id}
@@ -728,8 +728,13 @@ function ProgramCard({
728728
/>
729729
<MetricBox
730730
label="Classes"
731-
primaryValue={program.total_classes ?? 0}
732-
primaryLabel="total classes"
731+
primaryValue={program.total_active_classes ?? 0}
732+
primaryLabel="active"
733+
secondaryLines={[
734+
{
735+
value: `${program.total_classes ?? 0} total class${(program.total_classes ?? 0) !== 1 ? 'es' : ''}`
736+
}
737+
]}
733738
/>
734739
</div>
735740
{/* Credit & Funding Type */}

frontend-v2/src/types/program.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ export interface ProgramsOverviewTable {
117117
total_enrollments: number;
118118
total_active_enrollments: number;
119119
total_classes: number;
120+
total_active_classes: number;
120121
total_capacity: number;
121122
completion_rate: number;
122123
attendance_rate: number;

0 commit comments

Comments
 (0)