You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: show table row count in the data grid footer (#1554)
* feat: show table row count in the data grid footer
Display the total row count of the current result set as a muted,
thousands-separated label (e.g. "4,725 rows") on the right side of the
data grid pagination footer. The label uses the same filtered count that
already drives pagination, so it respects active filters and row search,
stays exact for counts beyond Number.MAX_SAFE_INTEGER, and hides when
the adapter cannot count rows (Infinity).
Closes#1359
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix: hide row count for unsafe-integer number inputs
A `number` totalRowCount above Number.MAX_SAFE_INTEGER has already lost
precision before BigInt() can see it, so the footer would display a
rounded total. Hide the label for non-safe-integer numbers instead;
exact large counts arrive as bigint or string, which stay supported.
Addresses CodeRabbit review feedback on #1554.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Show the total row count of the current result set in the data grid footer. The count uses the same filtered total that drives pagination, so it respects active filters and row search, formats with thousands separators, and hides when the adapter cannot count rows.
Copy file name to clipboardExpand all lines: Architecture/table-query-controls.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -160,6 +160,7 @@ Column-header pin/sort control rendering and interaction rules are defined in:
160
160
- Infinite scroll MUST query from `pageIndex = 0` and grow the effective `pageSize` window in fixed `25`-row batches as the grid scroll nears the bottom, independent of the paginated rows-per-page preference.
161
161
- Infinite-scroll window growth MUST reset to the first chunk whenever the visible row set changes, including table scope, applied filter, row-search term, sort order, or shared page size.
162
162
- Filtered row-count metadata MUST be cached independently of `pageIndex`, `pageSize`, and sort order, so pagination controls stay mounted while a different page of the same filtered result set is loading.
163
+
- The footer MUST display the filtered row count that drives pagination as a read-only, thousands-separated label (singular `row` for exactly one). The label MUST format via `BigInt` so counts beyond `Number.MAX_SAFE_INTEGER` stay exact, and MUST be hidden when the adapter cannot count rows (`filteredRowCount === Infinity`).
163
164
- When staged rows or staged updates exist, pagination controls MUST refuse page changes until the staged edits are resolved.
Copy file name to clipboardExpand all lines: FEATURES.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -179,6 +179,11 @@ The footer keeps page navigation, a page jump field, a fixed rows-per-page dropd
179
179
Rows-per-page and infinite-scroll preferences persist across tables through local storage, while the known filtered-row count keeps the footer stable during page transitions for the same filtered result set. Infinite scroll preloads before the hard bottom edge, always appends in fixed 25-row chunks regardless of the paginated page-size setting, keeps filling tall viewports until the grid is actually scrollable, and appends new rows in place without snapping the grid back to the top.
180
180
Rapid sort and filter changes keep the latest request authoritative, and superseded table reads are aborted so a slower older result cannot overwrite the visible grid.
181
181
182
+
## Table Row Count Display
183
+
184
+
The grid footer shows the total number of rows in the current result set as a muted, thousands-separated label (for example `4,725 rows`), so users can gauge table size at a glance without paging to the end.
185
+
The label uses the same filtered count that drives pagination, so it reflects active filters and row search, and it stays exact for counts beyond JavaScript's safe integer range. When the adapter cannot count rows, the label is hidden instead of showing a misleading number.
186
+
182
187
## PostgreSQL Stored Temporal Values
183
188
184
189
When Studio reads PostgreSQL data through the `postgres.js` executor, `date` and `timestamp without time zone` values are normalized back to their stored wall-clock values before they reach the grid.
0 commit comments