Philipinho
89ee3714ac
feat(base): add /bases/rows/count with estimate and capped-exact modes
...
Row-count display on a filtered view shouldn't force a full COUNT(*) on
every list fetch. New endpoint returns either an EXPLAIN-plan estimate
(default, ~1ms, no execution) or a LIMIT-capped exact count that short-
circuits to `{ capped: true }` once the match set passes EXACT_COUNT_CAP.
Clients call it in parallel with the rows query so the grid still paints
at its own pace.
- DTO + repo.countEstimate/countExact reusing the list predicate shape
- service picks the mode; controller mirrors the list Read ability check
- client hook keyed by filter/search/exact so a "show exact" toggle
doesn't clobber the estimate cache
2026-04-24 12:11:29 +01:00
Philipinho
b9d8bf948c
fix(base): strip empty filter groups at the query boundary
...
The view-draft layer stores `{op: 'and', children: []}` as an explicit
"override baseline with no predicates" marker. That payload was leaking
into /bases/rows requests once local filter/sort drafts were enabled —
harmless server-side (buildWhere maps an empty group to TRUE) but it
destabilised the React Query key and cluttered request payloads. Normalise
empty groups to undefined at the hook level.
2026-04-24 12:11:02 +01:00
Philipinho
dcff8d3c53
fix(base): mirror filter-clear fix for sorts so deleting the last sort sticks
2026-04-24 03:04:51 +01:00
Philipinho
2db43788d5
feat(base): auto-suffix fallback property names to avoid collisions
2026-04-24 02:54:03 +01:00
Philipinho
3bfdae7990
feat(base): insert palette items at cursor and refocus editor
2026-04-24 02:47:12 +01:00
Philipinho
464bd701ba
feat(base): enforce unique property names per base
2026-04-24 02:34:38 +01:00
Philipinho
3962ccdc29
feat(base): tighten formula editor spacing and pill styling
2026-04-24 02:25:33 +01:00
Philipinho
7a254a9412
feat(base): redesign formula editor popover with polished header, pills, and accordion
2026-04-24 02:15:08 +01:00
Philipinho
f99450f04a
fix formula
2026-04-24 01:33:14 +01:00
Philipinho
3eb7c9b1d4
feat(base): render formula cells with error badge support
2026-04-24 00:35:57 +01:00
Philipinho
28fed815ba
feat(base): add formula editor popover with live parse and palette
2026-04-24 00:35:26 +01:00
Philipinho
48d77a2b53
feat(base): add Formula entry to the property type picker
2026-04-24 00:33:38 +01:00
Philipinho
46f9292c05
feat(base): subscribe to formula WS events on client
2026-04-24 00:29:23 +01:00
Philipinho
493613e634
feat(base): add client formula type literals
2026-04-24 00:07:17 +01:00
Philipinho
bf75cc9c74
label
2026-04-23 01:41:04 +01:00
Philipinho
5c8ce178e5
fix(base): stabilize choices reference so Add option row does not flicker
2026-04-21 12:04:36 +01:00
Philipinho
cfb02766e2
refactor(base): simplify draft banner to inline Reset/Save controls
2026-04-20 23:12:51 +01:00
Philipinho
ae595c51ed
feat(base): mount draft banner and wire save-for-everyone flow
2026-04-20 23:00:32 +01:00
Philipinho
6c44354403
feat(base): add view draft banner component
2026-04-20 22:56:54 +01:00
Philipinho
184fa25d3e
feat(base): route toolbar sort/filter changes through local draft
2026-04-20 22:54:25 +01:00
Philipinho
6740912adf
feat(base): render table from effective (draft-or-baseline) view config
2026-04-20 22:50:28 +01:00
Philipinho
f524243da1
refactor(base): accept baselineConfig option in useBaseTable
2026-04-20 22:47:00 +01:00
Philipinho
d5093da863
feat(base): add useViewDraft hook for local filter/sort drafts
2026-04-20 22:44:05 +01:00
Philipinho
196afc21d4
feat(base): add BaseViewDraft type and view-draft atom family
2026-04-20 22:40:37 +01:00
Philipinho
9b5e3783dd
feat(base): add Base subject to client-side space CASL enum
2026-04-20 22:38:15 +01:00
Philipinho
9ecf88511b
page property
2026-04-20 21:27:29 +01:00
Philipinho
eb0f37bfe5
update packages
2026-04-19 02:05:48 +01:00
Philipinho
cac4774641
fix(base): stop runaway pagination loop caused by browser scroll anchoring
...
Browser overflow-anchor silently bumped scrollTop by one page's worth
of pixels every time a new page of rows committed — anchoring on the
AddRowButton that sits below paddingBottom. This kept the near-bottom
threshold satisfied and re-fired onFetchNextPage indefinitely, even
after the user released the scrollbar. Disabling scroll anchoring on
the grid scroll container stops the browser from adjusting scrollTop
in response to content growth.
2026-04-19 02:05:30 +01:00
Philipinho
c4d8b6c300
fix(base): stop infinite fetch loop when sorted list scrolled to bottom
2026-04-19 00:27:52 +01:00
Philipinho
95d0457a7e
refactor(base): drop /list suffix from base endpoints to match codebase convention
2026-04-18 23:36:52 +01:00
Philipinho
83d28a8505
perf(base): defer rows query until base info loads to avoid bland first request
2026-04-18 23:34:02 +01:00
Philipinho
f9bbbc7ebf
fix(base): ignore nested listbox and portal clicks so select doesnt close toolbar popover
2026-04-18 23:31:53 +01:00
Philipinho
44ec2dbe88
fix(base): stop jsonb char-key corruption in seed and guard view config spread
2026-04-18 23:26:03 +01:00
Philipinho
a6e9e66bbd
fix(base): don't override server sort with client-side position sort
2026-04-18 22:55:15 +01:00
Philipinho
2f6bad141c
feat(base): draft flow with save and cancel for new view filters
2026-04-18 22:39:30 +01:00
Philipinho
fd1257f61c
feat(base): draft flow with save and cancel for new view sorts
2026-04-18 22:38:28 +01:00
Philipinho
321184394d
feat(base): show table skeleton instead of centered loader on load
2026-04-18 22:22:49 +01:00
Philipinho
b01f6e9af9
feat(base): add layout-matching skeleton loading component
2026-04-18 22:22:11 +01:00
Philipinho
93b1fc534b
fix(base): adopt server view state when no local edit is pending
2026-04-18 22:03:25 +01:00
Philipinho
1aa92b1bb5
fix(base): stop synthesized switch input click from re-firing hide toggle
2026-04-18 21:57:28 +01:00
Philipinho
d385099eb1
fix(base): fire hide toggle once per click instead of twice
2026-04-18 21:51:43 +01:00
Philipinho
d4fe0e0a69
fix(base): re-render grid header and rows when column visibility changes
2026-04-18 21:41:32 +01:00
Philipinho
ab9b00f91c
fix(base): include new properties in local column state so the grid can scroll to them
2026-04-18 21:11:09 +01:00
Philipinho
64dafe5ac0
fix(base): prompt unsaved changes when discarding dirty rename
2026-04-18 20:58:59 +01:00
Philipinho
097b1c76d4
feat(base): add save and cancel buttons to property rename panel
2026-04-18 20:52:26 +01:00
Philipinho
2c1f66b603
fix(base): refresh hide-fields popover when a property is renamed
2026-04-18 20:52:24 +01:00
Philipinho
f812162a26
fix(base): refresh grid headers when a property is renamed
2026-04-18 20:51:14 +01:00
Philipinho
b88c060df8
fix(base): escape on dirty property options triggers discard prompt
2026-04-18 20:39:02 +01:00
Philipinho
97cd88405d
fix(base): close property menu on escape from main and options panels
2026-04-18 20:35:30 +01:00
Philipinho
5de9a69130
fix(base): close toolbar popovers on escape via document keydown
2026-04-18 20:31:54 +01:00