Draft
作为 图表库开发者, 我想要 将 u-charts 核心库中遗漏的辅助函数搬迁到独立模块, 以便 确保所有代码都被正确模块化,避免在核心类中包含大量辅助函数,提高代码的可维护性和可测试性。
在实施故事 016.006(搬迁核心类)时,发现原始 u-charts.ts 中有大量辅助函数没有被之前的模块化故事覆盖。这些函数包括:
索引查找函数:findCurrentIndex, findBarChartCurrentIndex, findLegendIndex, findPieChartCurrentIndex, findRadarChartCurrentIndex, findFunnelChartCurrentIndex, findWordChartCurrentIndex, findMapChartCurrentIndex, findRoseChartCurrentIndex
区域判断函数:isInExactLegendArea, isInExactChartArea, isInExactPieChartArea
数据计算函数:getSeriesDataItem, filterSeries, splitPoints, getMaxTextListLength, getRadarCoordinateSeries
图例数据处理:calLegendData, getPieTextMaxLength
Tooltip 相关:getCandleToolTipData(已存在于 data-processing 但未导出)
坐标转换函数:pointToCoordinate, isPoiWithinPoly(地图相关)
数据修正函数:fixColumeData, fixBarData, fixColumeMeterData, fixColumeStackData, fixBarStackData
其他辅助函数:getXAxisTextList, getYAxisTextList, calTooltipYAxisData, calMarkLineData, contextRotate, normalInt, collisionNew, getWordCloudPoint
pnpm typecheck)pnpm build)[ ] Task 1: 分析并分类遗漏的辅助函数 (AC: 1)
[ ] Task 2: 创建/扩展 helper-functions 模块 (AC: 1)
src/lib/helper-functions/ 目录index-finders.ts - 索引查找函数area-checkers.ts - 区域判断函数data-helpers.ts - 数据辅助函数legend-helpers.ts - 图例相关函数coordinate-helpers.ts - 坐标转换函数data-fixers.ts - 数据修正函数misc-helpers.ts - 其他辅助函数index.ts - 统一导出[ ] Task 3: 搬迁索引查找函数 (AC: 2, 3, 6)
findCurrentIndex 并添加类型注解findBarChartCurrentIndex 并添加类型注解findLegendIndex 并添加类型注解findPieChartCurrentIndex 并添加类型注解findRadarChartCurrentIndex 并添加类型注解findFunnelChartCurrentIndex 并添加类型注解findWordChartCurrentIndex 并添加类型注解findMapChartCurrentIndex 并添加类型注解findRoseChartCurrentIndex 并添加类型注解[ ] Task 4: 搬迁区域判断函数 (AC: 2, 3, 6)
isInExactLegendArea 并添加类型注解isInExactChartArea 并添加类型注解isInExactPieChartArea 并添加类型注解[ ] Task 5: 搬迁数据辅助函数 (AC: 2, 3, 6)
getSeriesDataItem 并添加类型注解filterSeries 并添加类型注解splitPoints 并添加类型注解getMaxTextListLength 并添加类型注解getRadarCoordinateSeries 并添加类型注解[ ] Task 6: 搬迁图例相关函数 (AC: 2, 3, 6)
calLegendData 并添加类型注解getPieTextMaxLength 并添加类型注解[ ] Task 7: 搬迁坐标转换函数 (AC: 2, 3, 6)
pointToCoordinate 并添加类型注解isPoiWithinPoly 并添加类型注解lonlat2mercator 并添加类型注解mercator2lonlat 并添加类型注解getBoundingBox 并添加类型注解coordinateToPoint 并添加类型注解isRayIntersectsSegment 并添加类型注解[ ] Task 8: 搬迁数据修正函数 (AC: 2, 3, 6)
fixColumeData 并添加类型注解fixBarData 并添加类型注解fixColumeMeterData 并添加类型注解fixColumeStackData 并添加类型注解fixBarStackData 并添加类型注解[ ] Task 9: 搬迁其他辅助函数 (AC: 2, 3, 6)
getXAxisTextList 并添加类型注解getYAxisTextList 并添加类型注解calTooltipYAxisData 并添加类型注解calMarkLineData 并添加类型注解contextRotate 并添加类型注解normalInt 并添加类型注解collisionNew 并添加类型注解getWordCloudPoint 并添加类型注解[ ] Task 10: 更新 src/index.ts 导出配置 (AC: 3, 4)
[ ] Task 11: 验证搬迁结果 (AC: 3, 4, 5)
pnpm typecheck)pnpm build)故事 016.001 完成状态:
mini-charts 包基础结构src/lib/u-charts.ts(7680行代码)故事 016.002 完成状态:
config.ts 和 utils/ 目录及所有子模块文件故事 016.003 完成状态:
data-processing/ 目录故事 016.004 完成状态:
charts-data/ 目录故事 016.005 完成状态:
renderers/ 目录故事 016.006 进行中:
根据分析,以下函数需要搬迁:
findCurrentIndex - 查找当前数据索引findBarChartCurrentIndex - 查找柱状图当前索引findLegendIndex - 查找图例索引findPieChartCurrentIndex - 查找饼图当前索引findRadarChartCurrentIndex - 查找雷达图当前索引findFunnelChartCurrentIndex - 查找漏斗图当前索引findWordChartCurrentIndex - 查找词云图当前索引findMapChartCurrentIndex - 查找地图当前索引findRoseChartCurrentIndex - 查找玫瑰图当前索引isInExactLegendArea - 判断是否在图例区域isInExactChartArea - 判断是否在图表区域isInExactPieChartArea - 判断是否在饼图区域getSeriesDataItem - 获取系列数据项filterSeries - 过滤系列数据splitPoints - 分割点getMaxTextListLength - 获取最大文本列表长度getRadarCoordinateSeries - 获取雷达坐标系列calLegendData - 计算图例数据getPieTextMaxLength - 获取饼图文本最大长度pointToCoordinate - 点转坐标isPoiWithinPoly - 判断点是否在多边形内lonlat2mercator - 经纬度转墨卡托mercator2lonlat - 墨卡托转经纬度getBoundingBox - 获取边界框coordinateToPoint - 坐标转点isRayIntersectsSegment - 判断射线是否与线段相交fixColumeData - 修正柱状图数据fixBarData - 修正条形图数据fixColumeMeterData - 修正仪表柱状图数据fixColumeStackData - 修正堆叠柱状图数据fixBarStackData - 修正堆叠条形图数据getXAxisTextList - 获取X轴文本列表getYAxisTextList - 获取Y轴文本列表calTooltipYAxisData - 计算提示框Y轴数据calMarkLineData - 计算标记线数据contextRotate - 上下文旋转normalInt - 标准化整数collisionNew - 新碰撞检测getWordCloudPoint - 获取词云点src/lib/helper-functions/
├── index-finders.ts # 索引查找函数
├── area-checkers.ts # 区域判断函数
├── data-helpers.ts # 数据辅助函数
├── legend-helpers.ts # 图例相关函数
├── coordinate-helpers.ts # 坐标转换函数
├── data-fixers.ts # 数据修正函数
├── misc-helpers.ts # 其他辅助函数
└── index.ts # 统一导出
来源: tech-stack.md
来源: source-tree.md
mini-ui-packages/
└── mini-charts/ # mini-charts 包
├── src/
│ ├── index.ts # 主入口文件(需要更新)
│ └── lib/
│ ├── u-charts.ts # u-charts 核心库(搬迁后删除)
│ ├── config.ts # [已完成] 配置对象
│ ├── utils/ # [已完成] 工具函数目录
│ ├── data-processing/ # [已完成] 数据处理模块
│ ├── charts-data/ # [已完成] 图表数据点计算模块
│ ├── renderers/ # [已完成] 绘制函数模块
│ ├── charts/ # [进行中] 核心类模块
│ └── helper-functions/ # [本故事创建] 辅助函数模块
│ ├── index-finders.ts
│ ├── area-checkers.ts
│ ├── data-helpers.ts
│ ├── legend-helpers.ts
│ ├── coordinate-helpers.ts
│ ├── data-fixers.ts
│ ├── misc-helpers.ts
│ └── index.ts
├── tests/
├── package.json
├── tsconfig.json
└── jest.config.cjs
any 类型(除非必要)完成本故事后,应该满足:
src/lib/helper-functions/ 目录下所有文件存在src/index.ts 正确导出所有辅助函数pnpm typecheck 无类型错误pnpm build 成功以下工作不在本故事范围内:
测试框架: Jest
测试位置: tests/ 目录
测试要求:
测试命令:
# 运行所有测试
pnpm test
# 运行特定测试
pnpm test --testNamePattern "辅助函数测试"
| Date | Version | Description | Author |
|---|---|---|---|
| 2025-12-24 | 1.0 | 创建故事文档 | James (Dev Agent) |
此部分由开发代理在实施过程中填写
待开发代理填写
待开发代理填写
待开发代理填写
待开发代理填写
此部分由 QA 代理在审查完成后填写