#3729 把 <ObjectChart> 的作者面切回 spec ChartConfig 形状,objectui#2883 让渲染器兑现了绝大部分。收尾盘点后仍有 5 个属性是声明了但渲染器不读的,按 ADR-0078 单独记账,不留在暗处。
清单
| 属性 |
现状 |
建议 |
ChartAxis.stepSize |
完全无人读 |
实现(Recharts ticks / tickCount)——刻度密度是真实需求 |
ChartInteraction.clickAction |
完全无人读 |
渲染器已有 onChartClick,但没有「按 action id 触发」的接线。要么接上 action 派发,要么裁掉——drillDown 已覆盖大部分点击语义 |
ChartInteraction.zoom |
无 Recharts 原语,#3750 已在 schema description 里标注 declared-not-delivered |
保持标注,或按 #1475 先例裁掉;brush 是已交付的替代 |
ChartConfig.description |
无人读(无障碍描述) |
接到 aria-label / <desc>——成本极低,且是 a11y 缺口 |
ChartConfig.height |
只有 ChartBarRenderer 读;AdvancedChartImpl(真正的图表路径)不读 |
接上,或从 ChartConfig 裁掉并统一由容器控制高度 |
为什么单独开
#3729/#3750 的范围是绑定(轴/系列/结果列)与主要表现属性,已全部兑现并被测试锁定。上面 5 个是同一类问题的长尾:单个成本都很低,但混进那个 PR 会让它变成一次无边界的 ChartConfig 全量审计。按 PD #10「file, don't silently expand」拆出来。
处理时请同时更新 <ObjectChart> 的 dataProps:裁掉的属性要一并从公布契约移除,实现的保持——否则又回到 declared ≠ delivered。
关联
#3729 把
<ObjectChart>的作者面切回 specChartConfig形状,objectui#2883 让渲染器兑现了绝大部分。收尾盘点后仍有 5 个属性是声明了但渲染器不读的,按 ADR-0078 单独记账,不留在暗处。清单
ChartAxis.stepSizeticks/tickCount)——刻度密度是真实需求ChartInteraction.clickActiononChartClick,但没有「按 action id 触发」的接线。要么接上 action 派发,要么裁掉——drillDown已覆盖大部分点击语义ChartInteraction.zoombrush是已交付的替代ChartConfig.descriptionaria-label/<desc>——成本极低,且是 a11y 缺口ChartConfig.heightChartBarRenderer读;AdvancedChartImpl(真正的图表路径)不读为什么单独开
#3729/#3750 的范围是绑定(轴/系列/结果列)与主要表现属性,已全部兑现并被测试锁定。上面 5 个是同一类问题的长尾:单个成本都很低,但混进那个 PR 会让它变成一次无边界的 ChartConfig 全量审计。按 PD #10「file, don't silently expand」拆出来。
处理时请同时更新
<ObjectChart>的dataProps:裁掉的属性要一并从公布契约移除,实现的保持——否则又回到 declared ≠ delivered。关联
<ObjectChart>aggregate result-column naming is undefined, so its axis bindings cannot be validated #3701(结果列命名约定)、feat(spec,lint): pin<ObjectChart>aggregate result-column naming and validate its axes (#3701) #3725、图表绑定方言统一:ObjectChart 运行时兑现 ChartConfig 后,把 react 契约与 lint 切回 spec 形状(#3701 后续) #3729、feat(spec,lint):<ObjectChart>'s author contract is the specChartConfigshape again (#3729) #3750