38 lines
1.2 KiB
Markdown
38 lines
1.2 KiB
Markdown
# Progress Tracking (Assignments & Subjects)
|
|
|
|
## What was done
|
|
- Implemented progress tracking for both assignments and subjects
|
|
- Used `Task.isCompleted` as the source of truth
|
|
- Synced `Assignment.isCompleted` based on task completion
|
|
|
|
## Logic implemented
|
|
- Created `CheckAssignmentCompletion(aId)`
|
|
- Assignment is marked completed only if all its tasks are completed
|
|
- Assignment remains incomplete if:
|
|
- Any task is incomplete
|
|
- No tasks exist
|
|
|
|
## Data handling
|
|
- Fetched assignments from Supabase
|
|
- Fetched all related tasks using assignment IDs
|
|
- Grouped tasks by `aId` into `tasksByAssignment`
|
|
- Used grouped data to calculate progress efficiently
|
|
|
|
## Progress calculation
|
|
- Assignment progress:
|
|
- completed tasks / total tasks
|
|
- Subject progress:
|
|
- completed tasks across all assignments / total tasks
|
|
|
|
## UI work
|
|
- Added progress bars to:
|
|
- Assignment cards
|
|
- Subject views
|
|
- Used basic inline styling for progress bars
|
|
- Fixed layout issues caused by incorrect placement inside `flex-row`
|
|
- Moved progress bar into content column to prevent UI breaking
|
|
|
|
## Result
|
|
- Progress updates dynamically based on task completion
|
|
- Assignment completion stays in sync with tasks
|
|
- UI correctly displays both assignment and subject progress |