yeg
2026-09-09 1ab091c3746bce05b968b93b5f612305f06d4cec
src/utils/compareReportChart.ts
@@ -1,13 +1,20 @@
import { compareSelectionKey, type CompareItem } from '@/api/compareReports'
import { measurementChartOption, type ReportMetricKey } from './reportMeasurementChart'
/** 完整所选范围参与图例身份,避免同名电池的不同循环或工步混淆。 */
/** 完整所选范围作为内部曲线身份,简短图例同名时仍可分别显隐。 */
export function compareSeriesName(item: CompareItem) {
  const source = item.source
  return `${source.name} (#${source.selection.testId}) · ${source.batteryGroup} · ${source.batteryNo} · 循环${source.selection.cycleNo} · ${source.process}`
}
/** 页面和打印图例只展示测试名称与电池号。 */
export function compareSeriesLabel(item: CompareItem) {
  return `${item.source.name}-${item.source.batteryNo}`
}
/** 对比页面与打印共享冻结测量的绘图口径。 */
export function compareChartOption(metric: { key: ReportMetricKey; unit: string }, items: CompareItem[], colors: string[], hiddenSeriesKeys: string[] = []) {
  return measurementChartOption(metric, items.map(item => ({ ...item, name: compareSeriesName(item), hidden: hiddenSeriesKeys.includes(compareSelectionKey(item.source.selection)) })), colors)
  const option = measurementChartOption(metric, items.map(item => ({ ...item, name: compareSeriesName(item), hidden: hiddenSeriesKeys.includes(compareSelectionKey(item.source.selection)) })), colors)
  const labels = new Map(items.map(item => [compareSeriesName(item), compareSeriesLabel(item)]))
  return { ...option, legend: { ...option.legend, formatter: (name: string) => labels.get(name) ?? name } }
}