!!!###!!!title=2.4 不同图元类型渲染流程——VisActor/VTable 社区贡献者文档!!!###!!!!!!###!!!description=---title: 2.4不同图元类型渲染流程 key words: VisActor,VChart,VTable,VStrory,VMind,VGrammar,VRender,Visualization,Chart,Data,Table,Graph,Gis,LLM--- !!!###!!!

单元格概述

Cell,即单元格,是表格中的基本显示单位、是数据展示的最小可视化单元,在SceneGraph中作为独立的渲染单元存在。在VTable场景树模块中,每个Cell展示数据,或展示文本、链接,或展示可交互的元素例如Radio,button,依赖于不同的CellType,cellType的存在描述了Cell的展示形态和交互逻辑,它不仅仅是数据的简单呈现方式,更是一种灵活的数据表达策略。VTable 通过定义丰富的单元格类型,为用户提供了多维度、高度定制化的数据展示方案。

VTable 支持七种核心单元格类型:文本(text)、链接(link)、图片(image)、视频(video)、进度条(progressbar)、迷你图(sparkline、)图表(chart);

关于如何配置CellType,可以查阅:

相关源码位置

  • package/vtable/src/scenegraph/group-creater/cell-type文件夹下的内容:本文包括radio-cell和CheckBox-cell
  • package/vtable/src/scenegraph/group-creater/cell-helper.ts:VTable 渲染引擎中单元格处理的核心文件,提供了 用于根据不同列类型创建单元格(createCell )、负责单元格的动态更新(updateCell updateCellContent )等功能;
  • package/vtable/src/scenegraph/group-creater/column-helper.ts:基于createCell单元格创建实现了复合列表ComplexColumn的合并、渲染处理;

特殊图元渲染详解

Checkbox

复选框类型单元格适用于在表格中用于提供多选选项,并允许用户选择或取消选择一个或多个项目。


  • 系统首先从数据源提取原始值(支持布尔值、字符串或包含checked/disable/text属性的对象),通过getCellValuestateManager.syncCheckedState方法同步选中状态,支持indeterminate半选状态。同时合并列定义的复选框参数(如sizespaceBetweenTextAndIcon)与全局主题配置cellTheme,并调用getHierarchyOffset计算层级缩进,适配树形表头等复杂结构。

  • 基于VRender引擎创建单元格容器,通过dealWithIconLayout处理左侧/右侧图标布局。实例化CheckBox组件时,根据数据判定选中状态(优先读取checked属性)、禁用状态(disable属性或列配置函数)以及自定义图标(如checkIconImage替换默认勾选样式)。文本内容通过autoWrapTextlineClamp实现自动换行与行数限制。

  • 利用VRender的边界计算能力,测量复选框图标(默认尺寸按size/1.4比例)和文本区域。根据textAligntextBaseline属性,在扣除paddinghierarchyOffset的内嵌区域中实现9种对齐方式。例如,textAlign: 'right'时,复选框整体右对齐,文本紧贴图标右侧。

Radio

单选框类型单元格适用于用户在表格中的多个项目中选中一个。


当表格需要渲染单选单元格时,需要从数据解析与样式的组合两方面来解读:

  • 首先是从数据源获取原始值、并列定义中的样式参数(如按钮尺寸、颜色)和全局主题配置等相关配置,然后根据列设置的radioDirectionInCell确定水平或垂直排列方向,并计算层级缩进控制布局的展示。

  • 接着进入到渲染组件的流程,大致逻辑是,基于VRender的边界计算能力,先测量单个选项的文本宽度和图标区域,再根据排列方向累加间距(spaceBetweenRadio),最终确定单选组件的总占位尺寸。

  • 接着结合单元格的textAligntextBaseline属性,将单选组整体在扣除padding的内嵌区域中对齐,支持居中、右对齐等对齐方式,优化了单选图元里表格的布局选择。

总结

本文档由以下人员修正整理

玄魂