Skip to content

Filter any column from its header, and show the filter as chips - #20

Merged
ww-mw merged 16 commits into
mainfrom
column-filter-chips
Sep 17, 2026
Merged

ww-mw merged 16 commits into
mainfrom
column-filter-chips

Conversation

@ww-mw

@ww-mw ww-mw commented Sep 17, 2026

Copy link
Copy Markdown
Member

What

  • Any column is filterable by the label on its header: Name:gain, "Data Type"=double, Value>10.
  • Operators on every column: : (contains), =, !=/~=, >, <, >=, <=.
  • Right-click a column header for a filter popup that shows the text it writes.
  • The search box is a chip field; each condition has an ×.
  • Filtering runs on Enter rather than on every keystroke.

Why

Per-column filtering already existed for five of eighteen columns and nothing in
the UI said so. The popup makes it discoverable, the chips make the active filter
reviewable, and Enter makes the filter pass happen once per question instead of
once per keystroke — which matters on a 128k-row dictionary.

One parse in src/webview/rowFilter.ts feeds all four consumers (row filtering,
<mark> highlighting, the chips, and the popup's prefill), so the surfaces cannot
disagree about what a condition means.

Behaviour change

value:"5" used to be an exact, case-sensitive match — the one exception in a
grammar that is otherwise substring and case-insensitive. Quoting now only groups,
and Value=5 is how to ask for exactly 5. Noted in the README.

Also fixed

In a .prj table, type: resolved to the dictionary's DataType column
unconditionally and matched nothing while naming a column on screen. A prefix now
resolves against the table's own columns first.

@ww-mw
ww-mw merged commit 5f301c8 into main Sep 17, 2026
1 check passed
@ww-mw
ww-mw deleted the column-filter-chips branch September 17, 2026 17:54
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.

1 participant