Skip to content

Layout document

图表布局文档

This page is only available in Chinese. It is shown in its original language.

图表布局是可命名、可切换、可跨会话恢复的用户配置快照。契约在 packages/core/src/engine/layout/types.ts,存储与恢复实现在同模块 impl/,出口为 index.ts。

LayoutDocument

界面可控配置的唯一持久化载体。字段:

字段内容
version文档版本号,恢复时据此迁移
currentSymbol?主品种完整 SymbolSpec(数据源、周期、复权、路由参数);省略时保留当前选择
workspacesK 线与分时两个视图的用户指标和 pane 布局
panePriceAxisModes各 pane 价格轴的自动 / 手动模式
settings?图表级设置白名单子集
drawings?已确认的用户绘图;导出始终携带,省略或空数组表示没有绘图
viewport?按 品种+周期+复权+视图 键的可恢复视口位置

不进入文档:应用级 / 设备级偏好(渲染后端、缓存上限、profiler 开关)、自选列表、聚合源、 Agent 设置,以及行情数据与运行时交互态。运行时状态 SSOT 仍是 ChartStateKernel, 本文档只负责持久化边界。

归档与生命周期

LayoutManager 把具名文档写入 IndexedDB,归档形状为 LayoutArchive: documents(Record<id, NamedLayoutDocument>)、activeId、autoSave。

  • 首个文档为 default(默认布局);删除默认布局或当前活动布局会被拒绝。
  • 创建从默认图表设置和单主窗格开始;复制包含当前尚未保存的配置和来源文档的品种。
  • 保存覆盖当前归档,身份与名称不变。
  • 自动保存合并 600ms 内的连续变更,并在切换、页面离开、销毁前补写;恢复产生的通知不回写。
  • 恢复在一次 batch 中写回工作区、设置与价格轴模式,并重建当前视图的系统指标实例; 保存失败保留错误与未保存状态。

列表顺序

列表按 documents 的插入顺序输出:默认布局先建,其余随创建 / 复制依次追加,重命名与覆盖 保存不改变位置;切换活动布局只更新身份,不重排列表。

视口位置

viewport 是每个 品种+周期+复权+视图 各自记住的 K 线视口:anchorTimestamp(可见区左缘 K 线时间)、anchorOffsetPx(相对该锚点的像素偏移)、zoomLevel(缩放档位)。

  • 导出文档前先捕获当前视图,因此活动布局总带着最新滚动与缩放位置;其余键保留会话内访问过的 品种位置。
  • 恢复布局时整表替换,切到对应品种 / 周期后按锚点还原滚动与缩放;文档未携带视口时视为空表, 避免沿用上一份布局的内存位置。
  • 滚动、缩放会标记布局未保存并进入自动保存;分时视图不产生快照。

绘图持久化

  • 绘图复用 Kernel 的 drawing.drawings,与指标、设置和视口一起导出,不建立单独的存储通路。
  • 新增、移动、样式修改、删除以及撤销 / 重做引起的图元变化参与布局自动保存;选择集合、工具、 全局交互锁与撤销历史属于运行时状态,不进入文档。
  • 恢复时整表替换绘图并清空选择集合,Controller 重置撤销历史。缺少绘图字段的文档表示空绘图, 避免沿用上一份布局;新建布局显式携带空数组,复制布局携带来源绘图。
  • 保存的是时间 / 价格锚点、样式、参数、标签、所属 pane 和工作区,屏幕坐标由渲染期重新计算。

UI 入口

TopToolbar 的布局分组经 LayoutMenu → useLayouts → ChartController → LayoutManager → ChartStateKernel 接入。菜单含保存布局、自动保存开关、创建新布局和布局列表;复制、重命名在 列表项右侧,删除前就地确认。创建、复制、重命名共用基于 BaseModal 的 LayoutNameDialog 输入名称。布局管理不注册 Agent Tool。

当前品种

currentSymbol 保存主品种的完整 SymbolSpec。恢复时 Controller 通过现有的 setSymbols 数据协调入口写回,使行情加载、视图切换与实时订阅保持一致,配置与品种选择在一次 batch 中 发布。品种变化参与自动保存;新建布局沿用当前品种,复制布局保留来源品种;旧文档缺少该字段 时保留当前选择,显式 null 表示无品种。

On this page