* chore: updated label for epics
* chore: improved export logic
* refactor: move csvConfig to export.ts and clean up export logic
* refactor: remove unused CSV export logic from WorkItemsInsightTable component
* refactor: streamline data handling in InsightTable component for improved rendering
* feat: add translation for "No. of {entity}" and update priority chart y-axis label to use new translation
* refactor: cleaned up some component and added utilitites
* feat: add "at_risk" translation to multiple languages in translations.json files
* refactor: update TrendPiece component to use new status variants for analytics
* fix: adjust TrendPiece component logic for on-track and off-track status
* refactor: use nullish coalescing operator for yAxis.dx in line and scatter charts
* feat: add "at_risk" translation to various languages in translations.json files
* feat: add "no_of" translation to various languages in translations.json files
* feat: update "at_risk" translation in Ukrainian, Vietnamese, and Chinese locales in translations.json files
27 lines
882 B
TypeScript
27 lines
882 B
TypeScript
import { ColumnDef, Row } from "@tanstack/react-table";
|
|
import { download, generateCsv, mkConfig } from "export-to-csv";
|
|
|
|
export const csvConfig = (workspaceSlug: string) =>
|
|
mkConfig({
|
|
fieldSeparator: ",",
|
|
filename: `${workspaceSlug}-analytics`,
|
|
decimalSeparator: ".",
|
|
useKeysAsHeaders: true,
|
|
});
|
|
|
|
export const exportCSV = <T>(rows: Row<T>[], columns: ColumnDef<T>[], workspaceSlug: string) => {
|
|
const rowData = rows.map((row) => {
|
|
const exportColumns = columns.map((col) => col.meta?.export);
|
|
const cells = exportColumns.reduce((acc: Record<string, string | number>, col) => {
|
|
if (col) {
|
|
const cell = col?.value(row) ?? "-";
|
|
acc[col.label ?? col.key] = cell;
|
|
}
|
|
return acc;
|
|
}, {});
|
|
return cells;
|
|
});
|
|
const csv = generateCsv(csvConfig(workspaceSlug))(rowData);
|
|
download(csvConfig(workspaceSlug))(csv);
|
|
};
|