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)))
| }
|
|