Files
jobtrackingapp/docs/redesign/phase-3/JOBS_WORKSPACE.md
2026-09-10 18:15:05 +02:00

5.9 KiB
Raw Permalink Blame History

Jobs workspace

ARC-06; PRES-J01–PRES-J10, PRES-W01, PRES-E07–PRES-E09, PRES-S03. Current JobTable, KanbanBoard, SavedViewsMenu and EditJobDialog remain the owners.

Structure and defaults

Page header: Jobs, result count and Add/import job. Secondary row: Tracked, Discover, Follow-ups, Companies, Offers; Trash in visible utilities menu. Inside Tracked: Table / Board switch, Search, Filters, Saved views, Columns, Comfortable/Compact. Desktop defaults to Table; phone Table choice means structured cards. The view switch is not another primary nav destination.

Explicit view query wins over an optional remembered owner-local choice. First use stays table; saved preference must not override a shared URL. Existing /kanban remains functional until matching query semantics and keyboard behavior work in the unified owner. Do not recreate AddJobModal or create jobs as a side effect of route mounting.

Table information

Default visible Optional but preserved Conditional new columns
Selection, company, role with next-action cue, status, location, deadline, applied date, row actions Existing days-since and external source link toggles; page size 15/20/25; all current toggle behavior Follow-up date, package readiness, recorded match with provenance, favourite/priority after its explicit contract

Show “Not applied” for null DateApplied, not today or zero days. Long text wraps to a controlled second line with full accessible text and full page access. A row action must not also navigate; selection/status menu/external link remain independent. Do not hide existing information under hover-only interaction. Salary, contacts, descriptions and full timeline belong in preview/detail rather than making every row tall.

New optional match cells need bounded list data, not a request or AI call for every row. Unknown/insufficient match shows no invented percentage.

Filter and saved-view contract

Retain server q, status (including raw custom values), companyId, location, needsFollowUp, readiness, deleted/includeDeleted, sortBy, sortDir and pagination. Filter changes reset pagination as today. Search retains debounce/error behavior. Active filters are visible chips with Clear all; clear does not alter column/density settings or stored named views.

Saved views already exist and are justified by repeat searches. Preserve create/select/delete and owner isolation. Do not introduce a second “saved filter” store. View/layout/density may be added only through versioned compatible presentation metadata; existing saved views must still load. Board must apply the same supported filters and result scope before consolidation; retain existing large-list limits explicitly, never silently omit jobs.

Selection is explicit and page-scoped unless a later “all matching” server contract is added. Show selected count and scope. On view/filter/result changes clear invalid selections deliberately, with no action on invisible stale IDs.

Bulk and row actions

Keep edit, exact status choice, delete-to-trash, restore and existing confirmation/partial failure behavior. After partial failure report successes/failures and keep failed items actionable; never announce all succeeded. Confirmation names count and action. Trash retains deleted-only behavior and restoration, not permanent deletion.

JSON/CSV import/export stays in Settings → Data with a contextual Jobs utility link to that existing function. Preserve B05 bytes/formula safety; do not export only the visible page without explicit labeling.

Status semantics and customization

Current statuses: Saved, Interested, Preparing, Applied, Waiting, Interview, Offer, Rejected, Ghosted, Withdrawn. Keep aliases, raw/custom values, unknown Other fallback and server rules. Board groups are NotApplied, Active and Closed; group-drop destinations Saved, Applied and Rejected remain distinct from precise status choices. Offer is active on the board despite its success analytics category.

NEW-03 proposes an owner status configuration screen under Settings, reached from Jobs: label, order and explicit mapping to existing system semantics. Until a backend contract exists, keep current free-text/custom behavior and Other group. Do not replace defaults with illustrative Screening/Final Interview/Accepted or auto-map unknown statuses. Rules, analytics and history mapping require a dedicated cross-layer change and regression before UI adoption.

Favourite/priority is NEW-09: no current JobApplication field was found. Propose a simple owner flag later, default off, independently filterable; do not repurpose Tags, NextAction, operation Priority or status. Defer its control until persistence/ownership and product choice are settled.

Quick preview

NEW-10 creates an optional read-only drawer for scanning: role/company, status/dates, short description, next action, CV/document summary and Open full job. Do not embed another full editable seven-tab workspace or a second save queue. Existing ApplicationWorkspace overlay props remain protected but are not evidence of a currently mounted preview.

Open via explicit row Preview action; role/title link still opens full page. Escape closes and returns focus; opening full page preserves list filters/page/focus context. Mobile may use a full-height preview or go straight to full page if testing shows no benefit; full functionality remains in the full page. No sending, destructive mutation or AI apply inside preview.

Validation before migration

Use PRES-J05/J06/J07 gaps from Phase 2: saved-view CRUD, partial bulk failure, trash restore, identical table/board filtered records, precise versus coarse stage movement, keyboard pickup/drop/cancel and mobile no-drag alternative. Add real App query/back/capture tests, ownership switching and long Bokmål data. Route and table/board owner changes must land together or keep the old entry; never redirect before parity.