yeg
2026-09-08 f1b8fedbe35bf8fa5e697c31cf49bff5c8d2d7de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import type { FormationItem } from '@/api/formationReports'
import { measurementChartOption, type ReportMetricKey } from './reportMeasurementChart'
 
export const formationCurveMetrics: Array<{ key: ReportMetricKey; title: string; unit: string }> = [
  { key: 'voltage', title: '电压', unit: 'V' }, { key: 'current', title: '电流', unit: 'mA' },
  { key: 'positiveVoltage', title: '正电位', unit: 'V' }, { key: 'negativeVoltage', title: '负电位', unit: 'V' },
  { key: 'temperature', title: '温度', unit: '℃' },
]
const palette = ['#3978f6', '#109854', '#e33d54', '#a56b12', '#7d42d8', '#159ba5']
export function formationSeriesKey(item: FormationItem) { return `${item.source.selection.testId}|${item.source.selection.testBatteryId}` }
export function formationSeriesName(item: FormationItem) { return `${item.source.name} · ${item.source.batteryNo}` }
export function formationSeriesColor(item: FormationItem, index: number, colors: Record<string, string>) {
  const color = colors[formationSeriesKey(item)]
  return color && /^#[0-9a-f]{6}$/i.test(color) ? color : palette[index % palette.length]!
}
/** 按冻结循环取全量测量,空循环和旧版缺少曲线都不回填其他来源。 */
export function formationChartOption(metric: typeof formationCurveMetrics[number], items: FormationItem[], cycle: number, colors: Record<string, string>) {
  return measurementChartOption(metric, items.map(item => ({ name: formationSeriesName(item),
    zeroTime: item.curves?.[cycle]?.zeroTime ?? null, records: item.curves?.[cycle]?.records ?? [],
  })), items.map((item, index) => formationSeriesColor(item, index, colors)))
}