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]
