Angular: trim mode on /tracker/activities/:id report page (epic #992) #996

Closed
opened 2026-08-07 03:50:59 +00:00 by spikerj · 1 comment
Owner

Part of epic #992. Web is the trim surface for routes recorded on any device (server-only routes).

  • recorded-routes service: TrimRecordedRouteRequest model + trimRoute(id, request) imperative POST then reloadSelected(); reloadList(); (mutations-imperative + reload rule; never hand-patch resources).
  • activity-report/services/route-trimmer.ts: pure suggestTrim + preview stats (reuse pinned math from gps-tracking.service.ts if exported, else fixture-pinned copy).
  • trim-layer.service.ts (@Service({ autoProvided: false }), component-provided, ensure-source pattern from analysis-layer.service.ts): trim-dimmed line + trim-handles circles.
  • trim-panel.component.ts (+spec): dual-thumb mat-slider, suggested-trim button, before/after strip, confirm/cancel. Transloco keys activityReport.trim.* (en first, pnpm i18n:scan for es _review).
  • activity-report.component.*: Trim toolbar toggle; trim mode hides analysis layers, hosts panel; confirm → trimRoute → resources reload → exit trim mode. Graceful when analysis 404s.
  • Specs for service/trimmer/panel/layer (shared fixture in route-trimmer.spec.ts); pnpm run lint:fix + lint:styles:fix.
Part of epic #992. Web is the trim surface for routes recorded on any device (server-only routes). - `recorded-routes` service: `TrimRecordedRouteRequest` model + `trimRoute(id, request)` imperative POST then `reloadSelected(); reloadList();` (mutations-imperative + reload rule; never hand-patch resources). - `activity-report/services/route-trimmer.ts`: pure `suggestTrim` + preview stats (reuse pinned math from `gps-tracking.service.ts` if exported, else fixture-pinned copy). - `trim-layer.service.ts` (`@Service({ autoProvided: false })`, component-provided, ensure-source pattern from `analysis-layer.service.ts`): `trim-dimmed` line + `trim-handles` circles. - `trim-panel.component.ts` (+spec): dual-thumb `mat-slider`, suggested-trim button, before/after strip, confirm/cancel. Transloco keys `activityReport.trim.*` (en first, `pnpm i18n:scan` for es `_review`). - `activity-report.component.*`: Trim toolbar toggle; trim mode hides analysis layers, hosts panel; confirm → `trimRoute` → resources reload → exit trim mode. Graceful when analysis 404s. - Specs for service/trimmer/panel/layer (shared fixture in `route-trimmer.spec.ts`); `pnpm run lint:fix` + `lint:styles:fix`.
Author
Owner

Verified complete 2026-08-07 — closing.

  • Code: spikersoft-angular@508d97a0 (PR #624, feat/route-trim-996, commit 817f227b) — "feat(tracker): web trim mode on activity report (#996)".
  • Live: deployed to learn.spikersoft.com —
    • https://learn.spikersoft.com/assets/i18n/en.json → activityReport.trim exists with the full key set introduced by this work: toggle, sliderLabel, suggested, keptPoints, cancel, apply, confirmTitle, confirmMessage, confirmApply, conflict, failed, dismiss (including the conflict string for the backend's 409 path — "This activity changed on another device").
    • the tracker/activities route is present in the deployed main-KZKZUOSX.js bundle.
    • server dependency live: POST https://api.spikersoft.com/api/recorded-routes/{id}/trim → 401 (deployed) vs 404 for a bogus sibling path.
  • Shipped by: angular PR #624.

Not migrated: nothing left to do.

— Opus 5 Agent

Verified complete 2026-08-07 — closing. - **Code:** `spikersoft-angular@508d97a0` (PR #624, `feat/route-trim-996`, commit `817f227b`) — "feat(tracker): web trim mode on activity report (#996)". - **Live:** deployed to `learn.spikersoft.com` — - `https://learn.spikersoft.com/assets/i18n/en.json` → `activityReport.trim` exists with the full key set introduced by this work: `toggle, sliderLabel, suggested, keptPoints, cancel, apply, confirmTitle, confirmMessage, confirmApply, conflict, failed, dismiss` (including the `conflict` string for the backend's 409 path — "This activity changed on another device"). - the `tracker/activities` route is present in the deployed `main-KZKZUOSX.js` bundle. - server dependency live: `POST https://api.spikersoft.com/api/recorded-routes/{id}/trim` → 401 (deployed) vs 404 for a bogus sibling path. - **Shipped by:** angular PR #624. Not migrated: nothing left to do. — Opus 5 Agent
Sign in to join this conversation.