Skip to content

Feature: Project Timesheet Page#1177

Open
b1ink0 wants to merge 10 commits intofeat/redesignfrom
feat/project-timesheet
Open

Feature: Project Timesheet Page#1177
b1ink0 wants to merge 10 commits intofeat/redesignfrom
feat/project-timesheet

Conversation

@b1ink0
Copy link
Copy Markdown
Collaborator

@b1ink0 b1ink0 commented Apr 6, 2026

Description

This PR adds Project Timesheet page, displaying data grouped by Week/Project/Member/Task.

Note for reviewer: This PR uses a workaround to display live data, which will be replaced with the newly introduced API endpoint from #828.

Screenshots

Screenshot 2026-04-06 at 6 01 31 PM

This PR also simplifies the sidebar and header options for users with limited access.

Screenshot 2026-04-07 at 5 20 18 PM

Checklist

  • I have carefully reviewed the code before submitting it for review.
  • This code is adequately covered by unit tests to validate its functionality.
  • I have conducted thorough testing to ensure it functions as intended.
  • A member of the QA team has reviewed and tested this PR (To be checked by QA or code reviewer)

Fixes #826

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new Project Timesheet page that renders timesheet data grouped by Week → Project → Member → Task, using a temporary “live data” workaround pending the dedicated aggregation API (#828).

Changes:

  • Introduces a Project Timesheet provider/context that loads compact-view weeks and then fetches member timesheets to build week/project/member groupings.
  • Adds the Project Timesheet table UI with infinite scrolling and a grouped row layout.
  • Extends shared timesheet-row utilities and exports a new ProjectTimesheetRow component.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
frontend/packages/app/src/pages/timesheet/project/provider.tsx Fetches/aggregates project + compact-view + per-member timesheets into week/project/member groupings.
frontend/packages/app/src/pages/timesheet/project/projectTimesheetTable.tsx Renders the Project Timesheet UI (filters header, infinite scroll, grouped rows).
frontend/packages/app/src/pages/timesheet/project/index.tsx Wires the new provider + table into the route/page.
frontend/packages/app/src/pages/timesheet/project/context.ts Defines Project Timesheet context and grouping types.
frontend/packages/app/src/components/timesheet-row/utils.ts Adds helper to merge tasks across members for project-level totals.
frontend/packages/app/src/components/timesheet-row/projectTimesheetRow.tsx Implements Week → Project → Member → Task row rendering for the project view.
frontend/packages/app/src/components/timesheet-row/index.ts Exports ProjectTimesheetRow.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@b1ink0 b1ink0 marked this pull request as ready for review April 7, 2026 07:46
Comment on lines +26 to +29
const hasMoreWeeks = useProjectTimesheet(({ state }) => state.hasMoreWeeks);
const isLoadingProjectData = useProjectTimesheet(
({ state }) => state.isLoadingProjectData,
);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks like this thing. Loading more entries and appending them can used to encapsulated into a hook. This can be used in all project pages atleast.

We may also want to use a virtual list in the future but thats overkill for now.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Looks like this thing. Loading more entries and appending them can used to encapsulated into a hook. This can be used in all project pages atleast.

Okay, since we will need to refactor once we have the API anyway, we can handle everything together and use an improved infinite scroll with all the loading logic abstracted away.

@b1ink0 b1ink0 requested a review from ayushnirwal April 7, 2026 11:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants