The companies table can be edited in place but only half of it can be narrowed #173

Closed
opened 2026-09-12 07:27:08 +00:00 by tiagoagueda · 0 comments
Owner

What was asked for on this table was filtering and sorting in the table itself. What
#135 built is editing in the table itself — the cell that turns into a form where it
sits. That is a different feature, and it went to the one column that now has it:
CompaniesTable.columns gives name editable="name", and nothing else is editable at
all.

The filter row and the sort links do exist — partials/table/head.html draws both, and
CompaniesTable declares some. They are simply not finished, and not reachable where most
of the narrowing would be done.

Columns that can be sorted, and columns that cannot

Sortable today: name, location, postings, applications, parent, contacts,
last_activity, created.

Not sortable, with no reason recorded: industry, website, careers, notes, and every
id_* identifier column. industry carries a comment explaining why it has no single
value to sort by, which is fair — the rest carry nothing.

Columns that can be narrowed, and columns that cannot

Filterable today: name, location, industry, parent, website, notes — all
filter="text".

Not filterable:

  • last_activity and created. head.html already draws a from/to pair for
    filter="date", and applications/tables.py already uses it on two columns, so this is
    proven machinery the companies table simply does not ask for.
  • postings, applications, contacts. These are counts, and there is no numeric filter
    at all — no filter="number" branch exists in head.html. "Companies I have applied to
    more than once" is the obvious question and cannot be asked.
  • careers and the id_* columns, which have neither a filter nor a sort.

The filter row does not exist on a phone

head.html draws it as:

<tr class="hidden border-t border-ink-100 md:table-row ..." data-filter-row>

Below the md breakpoint there is no per-column filtering whatsoever — only the single
search box above the table. On a phone the answer to "narrow this table" is currently "you
cannot", which is the same complaint as #73 and probably wants settling with it.

What finishing it means

  • A sort on every column where a sort has a meaning, and a recorded reason on the ones
    where it does not.
  • A date filter on last_activity and created, using the pair that already works.
  • A numeric filter for the three counts — a new filter="number" branch in head.html,
    min/max, shaped like the date pair.
  • Per-column narrowing that a phone can reach. Not necessarily this row: a row of inputs
    inside a table at 390px is not obviously the right answer, and whatever replaces it is
    shared by every table, not written for this one.
  • The counts stay uneditable, which the existing comment is right about. This issue does
    not remove editable="name" — inline editing is not wrong, it just was not what was
    asked for, and taking it out again would waste the work.
What was asked for on this table was **filtering and sorting in the table itself**. What `#135` built is **editing in the table itself** — the cell that turns into a form where it sits. That is a different feature, and it went to the one column that now has it: `CompaniesTable.columns` gives `name` `editable="name"`, and nothing else is editable at all. The filter row and the sort links do exist — `partials/table/head.html` draws both, and `CompaniesTable` declares some. They are simply not finished, and not reachable where most of the narrowing would be done. ### Columns that can be sorted, and columns that cannot Sortable today: `name`, `location`, `postings`, `applications`, `parent`, `contacts`, `last_activity`, `created`. Not sortable, with no reason recorded: `industry`, `website`, `careers`, `notes`, and every `id_*` identifier column. `industry` carries a comment explaining why it has no single value to sort by, which is fair — the rest carry nothing. ### Columns that can be narrowed, and columns that cannot Filterable today: `name`, `location`, `industry`, `parent`, `website`, `notes` — all `filter="text"`. Not filterable: - `last_activity` and `created`. `head.html` already draws a from/to pair for `filter="date"`, and `applications/tables.py` already uses it on two columns, so this is proven machinery the companies table simply does not ask for. - `postings`, `applications`, `contacts`. These are counts, and there is no numeric filter at all — no `filter="number"` branch exists in `head.html`. "Companies I have applied to more than once" is the obvious question and cannot be asked. - `careers` and the `id_*` columns, which have neither a filter nor a sort. ### The filter row does not exist on a phone `head.html` draws it as: <tr class="hidden border-t border-ink-100 md:table-row ..." data-filter-row> Below the `md` breakpoint there is no per-column filtering whatsoever — only the single search box above the table. On a phone the answer to "narrow this table" is currently "you cannot", which is the same complaint as #73 and probably wants settling with it. ### What finishing it means - A sort on every column where a sort has a meaning, and a recorded reason on the ones where it does not. - A date filter on `last_activity` and `created`, using the pair that already works. - A numeric filter for the three counts — a new `filter="number"` branch in `head.html`, min/max, shaped like the date pair. - Per-column narrowing that a phone can reach. Not necessarily this row: a row of inputs inside a table at 390px is not obviously the right answer, and whatever replaces it is shared by every table, not written for this one. - The counts stay uneditable, which the existing comment is right about. This issue does not remove `editable="name"` — inline editing is not wrong, it just was not what was asked for, and taking it out again would waste the work.
Sign in to join this conversation.
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
Postulo/postulo#173
No description provided.