Skip to content

定义与实例模型

ViewDefinition

属性契约
idtitle共用定义身份与标题
sourceId传给 host.resolveSource 的本地标识
record.rowKey相对记录的自有属性路径,指向唯一字符串或有限数字
fields只读字段定义:fieldlabel,以及可选 type/group/options/operators/editor
record.allowedLayouts必填、非空且不重复的布局数组:tablecard 或两者。仅一种时隐藏切换入口。
record.defaultPresentation?可选的 table / card 默认配置;首次切换到尚未配置的布局时初始化。
timeZone?筛选与日期时间单元格共用时区,省略时使用本地运行环境
allowedOperators?filterEditors?定义级操作符限制和编辑器默认值
record.recordActions?全局、工具栏、行操作的命名引用

ViewFieldDefinition 还支持 sortablecellRenderernumberFormatsummaryFunctionsRendererReferenceFilterEditorReference 都是 { name: string, options?: JSON object },函数属于运行时注册。

ViewInstance 与 RecordViewConfig

ViewInstance 是按 kind 区分的 RecordViewInstance | AnalysisViewInstance。两者都要求 id、definitionId、title、非空 revision、scope 和 config。下表是记录配置,分析配置包括 根 filters、可选 Elements scope、dimensions、metrics、sort、limit 与表格/图表展示。

配置属性保存内容
filtersFilterConfiguration:模式与组件树
sortWow FieldSort[]
pagination{ mode: 'paged' | 'cursor', size: number }
presentationRecordPresentation

scope 为 { type: 'personal' }{ type: 'public', source: 'system' | 'shared' };另存为只接受个人或共享范围。ViewInstanceList 必须返回完整可见 instancesdefaultInstanceId: string | null;非 null 默认项必须指向列表内实例。ViewEngineState.defaultInstanceId 独立发布默认项,可以与 selectedInstanceId 不同。

字段列包含 idkind: 'field'field,以及可选 titlewidthvisiblepinnedrenderersummary。操作列使用 kind: 'actions',没有 field。显式宽度为 64–960 px,导出常量提供最小、最大与默认值(180 px)。getRecordColumnPinning 计算主键/操作列的强制固定位置;orderRecordColumns 返回展示顺序,不改写保存偏好。

RecordPresentation 为以 layout 区分的联合类型:

  • { layout: 'table', table: RecordTableConfig, card?: RecordCardConfig }
  • { layout: 'card', card: RecordCardConfig, table?: RecordTableConfig }

活动布局必须在定义的 record.allowedLayouts 中。表格配置包含 columns;卡片配置包含 titlefields,以及可选 coveractions。切换保留另一种布局的配置,视图保存和恢复包含双方配置;不包含运行时 renderCard 回调。

RecordQuerySource

数据源提供 Wow QueryApi<RecordData>paged 和/或 cursor,以及可选 aggregate。方法参数为 (query, attributes?, abortController?),应继续向传输层传递取消信号。查询使用 Wow 请求类型中的 FilterExpression 分支,不是旧 condition DSL。

普通分页返回 { list, total };游标分页返回 { list, nextCursor },末页 nextCursor: null。聚合返回生成查询所描述的结果行,应使用汇总辅助函数处理别名。只声明实际支持的模式,元数据与数据源能力必须一致。

readRecordValue 读取自有属性与标准点分数组下标,字面点号键优先。getRecordKeyvalidateRecordRows 检查稳定身份。信任边界可调用 validateViewDefinitionvalidateViewInstance;运行时快照使用 DeepReadonly

ViewDeleteResult 包含必填 defaultInstance: ViewInstance | null,表示删除事务中的权威默认视图,而不是本地顺序推算的 ID。

混合能力

定义声明 record?: RecordCapability 和/或 analysis?: AnalysisCapability,至少提供一种。RecordViewDefinition 要求记录能力。分析使用 AnalysisViewConfig 与仅聚合的 ViewSource,不需要虚构记录主键。参见纯分析与结果校验

维度通过 label: { field: "productName", alias: "productName", title: "商品名称" } 声明自己的显示字段。编译器自动添加授权的 ANY 输出,并在结果列记录 labelFor。用户在同一维度中配置分组与展示,名称不再列为统计指标;变更显示字段后需要运行查询。分组 ID 不变,同名追加 ID,缺失或冲突名称回退为 ID。有效分析默认展示结果并收起配置及执行详情,两个维度自动映射为分类轴与系列。ANALYSIS_VISUALIZATIONS 定义内置图表能力。

基于 Apache License 2.0 发布。