Skip to content

Implement virtual scrolling and enhancements for data tables#83

Merged
qianmoQ merged 17 commits into
devlive-community:devfrom
qianmoQ:dev-26.1.0
Jun 7, 2026
Merged

Implement virtual scrolling and enhancements for data tables#83
qianmoQ merged 17 commits into
devlive-community:devfrom
qianmoQ:dev-26.1.0

Conversation

@qianmoQ

@qianmoQ qianmoQ commented Jun 7, 2026

Copy link
Copy Markdown
Member

No description provided.

qianmoQ added 17 commits June 7, 2026 22:10
- 新增可复用 VirtualTable(仅渲染可视区行 + 上下占位, 表头 sticky)
- DataTableView 改用 VirtualTable, 去掉 500 行显示上限
- CSV/TSV 大文件流畅滚动, 图表仍使用全量数据
- VirtualTable 增加 maxHeight 选项, 限高内虚拟滚动(适配多结果集堆叠)
- SqlResultTable 每个结果集改用 VirtualTable, 大结果集与执行历史详情同样受益
- 移除内联表格与重复的 fmt(统一到 VirtualTable)
- 抽出 utils/delimited.ts(detectDelimiter/parseDelimited/parseTable 纯函数)
- 新增 delimited.worker.ts 后台解析, DataTableView 异步接收结果(带请求 id 丢弃过期)
- 解析中显示提示, parsed 用 shallowRef 降低大数组响应开销
- Worker 创建失败时主线程兜底解析
- VirtualTable 改为固定布局 + 内容启发式初始列宽, 列头右缘可拖拽调宽
- 点击列头排序: 升→降→取消, 数值/字符串智能比较, 空值置底
- 列变化时重置排序与列宽; SQL 结果表/CSV 数据表/执行历史均受益
- delimited.ts 解析支持 onProgress(0~1) 回调
- Worker 改为 progress/done 消息, 仅在整数百分比变化时上报
- DataTableView 头部显示「解析中 N%…」
- 表格 width:100% + min-width:总列宽, 末尾加自适应填充列吸收剩余宽度
- 真实列保持各自宽度, 不足时填充列补齐、超出时横向滚动
- 占位行补 colspan 单元格确保高度生效
- 改回 table-layout:auto + width:100%, 列按内容自适应、不足铺满
- 拖拽仅对被拖动的列施加显式宽度(从当前渲染宽度起拖), 其余保持自动
- 去掉固定布局与填充列
- 新增 SchemaBrowser: 列出当前数据源的表与字段(类型), 可展开/刷新
- 复用 run_sql 发内省 SQL(SQLite: pragma_table_info; MySQL: information_schema), 零后端改动
- 点表名/列名在光标处插入, 预览图标运行 SELECT * LIMIT 100
- 接入 SQL 编辑器头部, 随数据源切换自动刷新
- 弹层用 Teleport 挂到 body + fixed 定位, 不再被编辑器头部 overflow 裁剪, 限高可滚动
- 点表预览改为先把 SELECT * 写入编辑器再运行, 编辑器与执行保持一致
- MySQL 未指定库时先列出数据库, 展开库再按需加载其表与字段
- 已指定库/SQLite 仍直接列表; 预览对库做限定(库.表)
- 按钮与标题由「表」改为「结构」(Database 图标)
- ChartPanel 根与 SQL/CSV 图表外层加 overflow-hidden 约束高度
- 配置侧栏改为 h-full + overflow-y-auto, 字段多时内部滚动不被撑出
- 结构浏览器弹层最高约 380px
- 字段单击即加入(数值→指标/文本→维度), 解决列多时滚动后难以拖拽
- 保留拖拽; 提示文案与 title 更新
- 图表区加 overflow-hidden, 避免内容溢出显示不全
- 单击字段在其右侧弹出菜单(Teleport 防裁剪): 加为维度 / 加为指标
- 散点图布局则提供 X/Y/分组 选项
- 与拖拽并存; 解决列多滚动后难拖拽的问题
- 主内容区补 min-h-0, flex 列内正确约束高度, 不再撑高挤压底部
- 状态栏与终端加 flex-shrink-0, 稳定占位
- 控制台/图表底部完整显示
- 字段双击仍按类型快速添加(数值→指标/文本→维度, 散点 X/Y/分组)
- 单击延迟弹菜单, 双击时取消单击, 避免冲突
- 三种添加方式齐全: 拖拽 / 单击选择 / 双击快速
- ResizablePanels 主/副面板补 min-h-0/min-w-0, 内容随面板收缩而非溢出
- 输出视图(含 SQL 表格/图表/CSV)补 min-h-0, 图表按面板高度自适应
- 副面板外层加 overflow-hidden 兜底
- 根因: flex 链缺 min-h-0 导致内容按自然高度撑开、底部被裁
- 顶部新增搜索框: 表模式按表名/字段名过滤, 库模式按库名过滤
- 展开的库内表同样按关键字过滤
- 每次加载重置过滤词
@qianmoQ qianmoQ merged commit 23a96a0 into devlive-community:dev Jun 7, 2026
7 checks passed
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