CritasWang opened a new pull request, #33:
URL: https://github.com/apache/tsfile-viewer/pull/33

   ## What this changes
   
   A UI pass over the viewer, plus the backend fix behind the broken 
data-preview pagination.
   
   ### Fixes
   
   **Data preview was stuck on the first page.** `DataService.previewData()` 
reads only `offset + limit` rows to bound memory, then reported the number of 
rows it had read as `total`. Reading exactly `offset + limit` rows is 
indistinguishable from "the dataset ends here", so `hasMore` was always false 
and the page count the UI derived from `total` was always 1 — no row past the 
first page was reachable. A 102-row file reported `total=100, hasMore=false` at 
`offset=0`.
   
   The reader now takes one extra row, probed to decide `hasMore` and never 
returned. The DTO field documents what it actually is: rows materialized, equal 
to the filtered total only once the reader ran dry, a lower bound while 
`hasMore` is true. On the client `DataTable` drops the `total` prop and derives 
paging from `offset`/`limit`/`hasMore`, with prev/next in place of the 
page-number control. The row range reads `Rows 1-100` while more pages exist 
and `Rows 101-102 of 102` on the last page — the first point where the true 
total is known.
   
   **Fixed table columns went transparent during horizontal scroll.** Element 
Plus pins them with `position: sticky` and gives them `background: inherit`, so 
they inherited the transparency `index.css` applies to `.el-table tr/th/td` 
(which exists to avoid a double-layer colour cast against `.tc-table-card`). 
Cells from the scrolling area showed through, reading as overlapping text. 
Fixed columns are painted back to the card colour with a matching hover state. 
The background can't live in `tableStyle.ts` — `headerCellStyle`/`rowStyle` 
render as inline styles that outrank any selector — so the two properties that 
merely duplicated CSS transparency are dropped.
   
   ### Features / polish
   
   - **Resizable sidebar.** Drag handle on the right edge, clamped to 
180–480px, persisted to `localStorage`; double-click resets, arrow keys/Home 
work when focused. Hidden below `lg`, where the sidebar is a drawer.
   - Column pager bar right-aligned so it sits with the scrolling area it 
drives.
   - Time-range picker capped at 372px — the narrowest width that still shows 
both 19-character endpoints in full (Element Plus defaults `datetimerange` to 
400px).
   
   The first two commits are the Element Plus + Tailwind rewrite this work 
builds on: the previous stack (antdv-next + UnoCSS) sourced corner radii, 
control heights, table density and interaction feedback from library defaults 
that CSS variable overrides alone could not reconcile with the design spec.
   
   ## Testing
   
   - `pnpm build` (includes `vue-tsc`) and `mvn compile` pass.
   - Pagination verified end to end against a 102-row file: `offset=0` now 
returns `hasMore=true`; clicking through lands on `Rows 101-102 of 102` with 
next disabled, and back on page 1 with prev disabled.
   - Fixed columns verified opaque after scrolling 900px, in both light and 
dark themes.
   - Sidebar drag verified for clamping at both ends, double-click reset and 
persistence.
   - Confirmed every table using `tableStyleProps` (including the nested table 
in `ScanReport`'s expand row) sits inside `.tc-table-card`, so dropping the 
inline styles does not change their appearance.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to