Skip to content

Conversation

@ParasKhandelwal1616
Copy link
Contributor

PR: Display Task Completion Metrics in Filter Dropdowns

1. Description

This PR implements a feature to display task completion percentages directly within the filter dropdowns (Project and Tag).

2. Motivation & Context

The Problem: Previously, users could only see the name of a filter, lacking immediate insight into task progress within that filter. This made it difficult to quickly gauge completion status without navigating into each filter.

3. Changes Implemented

This change enhances the filter dropdowns by showing the number of completed tasks and their percentage alongside the filter name. The stats update dynamically.

Visual Examples:

  • Project: Website Redesign (3/10 tasks completed, 30%)
  • Tag: Urgent (5/8 tasks completed, 62%)

4. User Impact

  • Efficiency: Allows users to track task completion more efficiently.
  • UX: Makes the UI more informative.
  • Convenience: Reduces the need for extra clicks to view progress.

5. Type of Change

  • New feature (non-breaking change which adds functionality)
  • Bug fix (non-breaking change which fixes an issue)
  • Refactor (code change that neither fixes a bug nor adds a feature)

its-me-abhishek and others added 30 commits July 3, 2024 23:39
Update taskwarrior (3.0.2 -> 3.1.0) and pin Alpine version (runtime) to one compatible to the build stage
escapedStatus was being checked against 'completed' or 'deleted' but escapedStatus will always have 'status:' prepended.

Changed so that status will be used instead of escapedStatus

fixes: CCExtractor#52
fix: checking status instead of escapedStatus
Changes are made to
- RequestBody structs
- Task struct
generate UUID and Encryption Secret copied to utils
Seperated Taskwarrior functions from handle_tw to tw package
Hell1213 and others added 14 commits December 27, 2025 10:39
Covers routing structure and component rendering behavior
* test(hero):add test for hero.tsx

* test(hero):add test for hero.tsx
…Extractor#310)

- Implement `unsyncedTaskUuids` state to track locally modified tasks
- Add red border to task rows for immediate visual feedback
- Display pending unsynced count on Sync button via notification badge
- Auto-clear unsynced indicators on successful backend sync
- Add unit tests for red border visibility, counter, and state clearing

Fixes: CCExtractor#143
* feat: add time to due date

* fix: handle optional due date conversion and update tests
* test(navbar): improve coverage for NavbarDesktop

* test(navbar): improve NavbarDesktop testability and coverage

* test: improve NavbarDesktop interaction coverage

* test(navbar): update NavbarDesktop snapshot
* test:added test for NavbarMobile

* test:added test for NavbarMobile
…tractor#340)

- Add parseTaskwarriorDate utility for Taskwarrior date format (YYYYMMDDTHHMMSSZ)
- Fix weekly report to use start of week instead of last 7 days
- Use end date for completed tasks instead of modified date
- Use entry date as fallback for pending tasks without due date
- Add count labels on chart bars for better visibility
- Refactor isOverdue to use shared date parsing utility

Fixes: CCExtractor#322
…xtractor#345)

- Add isOverdue utility function to tasks-utils.ts for shared usage
- Update ReportsView to categorize pending tasks with past due dates as overdue
- Add overdue bar (red #F33434) to ReportChart component
- Update Tasks.tsx to import isOverdue from shared utility
- Add comprehensive test coverage for overdue categorization

Categorization logic:
- status === 'completed' -> Completed (pink)
- status === 'pending' && due < today -> Overdue (red)
- status === 'pending' && (due >= today || no due) -> Ongoing (blue)

Fixes: CCExtractor#341
@github-actions
Copy link

Thank you for opening this PR!

Before a maintainer takes a look, it would be really helpful if you could walk through your changes using GitHub's review tools.

Please take a moment to:

  • Check the "Files changed" tab
  • Leave comments on any lines for functions, comments, etc. that are important, non-obvious, or may need attention
  • Clarify decisions you made or areas you might be unsure about and/or any future updates being considered.
  • Finally, submit all the comments!

More information on how to conduct a self review:
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request

This helps make the review process smoother and gives us a clearer understanding of your thought process.

Once you've added your self-review, we'll continue from our side. Thank you!

@its-me-abhishek
Copy link
Collaborator

@ParasKhandelwal1616 please run npx prettier --write . in frontend directory to fix the prettier issues


export interface BottomBarProps {
projects: string[];
projects: string[] | { label: string; value: string }[];
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

value as a prop is a bit vague, needs to be renamed

setIsLoading: (val: boolean) => void;
}
) => {
interface Option {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all interfaces shall be moved to types.ts

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and Option seems to be vague as well. please use better variable names

.sort((a, b) => (a > b ? 1 : -1));
setUniqueProjects(filteredProjects);

const projectOptions = filteredProjects.map((project) => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this filtering should be a single function perhaps. easy to test and fix if and when it breaks

Copy link
Collaborator

@its-me-abhishek its-me-abhishek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please fix and also add some screenshots/videos to the PR description, for the changes

@its-me-abhishek
Copy link
Collaborator

Please rename the PR title as well, and follow the commit conventions as set in CONTRIBUTING.MD while naming PRs and commits. That really helps in keeping the merge history clean.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.