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