feat(time): show work-item and task names in the time-entries list (MAPPS-168) #163

Merged
nrupard merged 2 commits from feat/mapps-168-time-entry-names into main 2026-06-15 21:35:02 +02:00
Owner

What

MAPPS-168: the time-entries Work Item column showed a bare "Ticket" / "Project" with no name. PMS-332 joined the work-item names into the time-entry response; this renders them.

  • Ticket entries: "Ticket {number}: {title}" (still links to the ticket).
  • Project entries: "{project_name} · {task_title}" (project · task), or just the project name when no task.
  • Falls back to the bare kind when a name is missing, "-" when unlinked.

RemoteTimeEntry gains ticket_number / ticket_title / project_name / task_title. A shared work_item_label helper builds the label and is reused by the list cell AND the edit modal's read-only work-item line (so both show the real name).

Notes

  • Depends on PMS-332 (merged) - verified live: TimeEntryResponse has the four nullable name fields, populated by LEFT JOINs in the list and get paths.
  • Not compiled locally (no Rust toolchain here). Mirrors existing list/modal idioms; CI gates. A reviewer pass found no compile/clippy issues.

Test plan

  • Log time against a ticket: the row shows "Ticket 123:
## What MAPPS-168: the time-entries Work Item column showed a bare "Ticket" / "Project" with no name. PMS-332 joined the work-item names into the time-entry response; this renders them. - **Ticket entries:** "Ticket {number}: {title}" (still links to the ticket). - **Project entries:** "{project_name} · {task_title}" (project · task), or just the project name when no task. - Falls back to the bare kind when a name is missing, "-" when unlinked. `RemoteTimeEntry` gains `ticket_number` / `ticket_title` / `project_name` / `task_title`. A shared `work_item_label` helper builds the label and is reused by the list cell AND the edit modal's read-only work-item line (so both show the real name). ## Notes - Depends on PMS-332 (merged) - verified live: `TimeEntryResponse` has the four nullable name fields, populated by LEFT JOINs in the list and get paths. - Not compiled locally (no Rust toolchain here). Mirrors existing list/modal idioms; CI gates. A reviewer pass found no compile/clippy issues. ## Test plan - Log time against a ticket: the row shows "Ticket 123: <title>" and still navigates to the ticket on click (without opening the edit modal). - Log time against a project task: the row shows "<project> · <task>". - Log against a project with no task: shows "<project>". - Open the edit modal: the read-only "Work item:" line shows the same name.
feat(time): show work-item and task names in the time-entries list
All checks were successful
Check / clippy + fmt + tests (pull_request) Successful in 55s
06877ae48f
MAPPS-168. The Work Item column showed a bare "Ticket" / "Project". PMS-329^H332 joined the names into the time-entry response; render them: "Ticket {number}: {title}" for ticket entries, and "{project} · {task}" for project entries (task name included). A shared work_item_label helper builds the label and is reused by the list cell and the edit modal's read-only work-item line. RemoteTimeEntry gains ticket_number/ticket_title/project_name/task_title.

Not compiled locally (no Rust toolchain in this environment); mirrors the existing list/modal idioms and is gated by CI (cargo clippy --all-targets -- -D warnings).

#MAPPS-168

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
docs(time): refresh RemoteTimeEntry comment now that names are joined
All checks were successful
Create release / Create release from merged PR (pull_request) Has been skipped
Check / clippy + fmt + tests (pull_request) Successful in 56s
c8c69c3e15
The struct doc still said work-item names "aren't joined into the response". PMS-332 joins them and the list renders them via work_item_label; update the comment to match.

#MAPPS-168

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
nrupard deleted branch feat/mapps-168-time-entry-names 2026-06-15 21:35:03 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-apps!163
No description provided.