diff --git a/src/components/desktop/TrendsChart.vue b/src/components/desktop/TrendsChart.vue index 3e324b41..56c3aaad 100644 --- a/src/components/desktop/TrendsChart.vue +++ b/src/components/desktop/TrendsChart.vue @@ -25,6 +25,9 @@ import { isArray, isNumber } from '@/lib/common.ts'; +import { + formatAmount +} from '@/lib/numeral.ts'; import { getYearMonthFirstUnixTime, getYearMonthLastUnixTime, @@ -420,9 +423,38 @@ function clickItem(e: ECElementEvent): void { }); } +function exportData(): { headers: string[], data: string[][] } { + const headers: string[] = []; + const data: string[][] = []; + + headers.push(tt('Date')); + + for (let i = 0; i < allSeries.value.length; i++) { + const id = allSeries.value[i].id; + const name = itemsMap.value[id] && props.nameField && itemsMap.value[id][props.nameField] ? getItemName(itemsMap.value[id][props.nameField] as string) : id; + headers.push(name); + } + + for (let i = 0; i < allDisplayDateRanges.value.length; i++) { + const row: string[] = []; + row.push(allDisplayDateRanges.value[i]); + row.push(...allSeries.value.map(item => formatAmount(item.data[i], {}))); + data.push(row); + } + + return { + headers: headers, + data: data + }; +} + function onLegendSelectChanged(e: { selected: Record }): void { selectedLegends.value = e.selected; } + +defineExpose({ + exportData +})