From db8d820c425cbc8e84932514b02f9390741ca947 Mon Sep 17 00:00:00 2001 From: Dzhavat Ushev Date: Wed, 16 Aug 2023 09:32:50 +0200 Subject: [PATCH] feat(dh): extend `exportToCSV` function to take file name (#1955) * feat(dh): allow file name to be passed to export CSV util function * refactor(dh): rename export CSV util function * feat(dh): turn function args to an object for utility function --- .../dh-admin-permission-overview.component.ts | 4 ++-- .../src/lib/tabs/roles-tab/dh-roles-tab.component.ts | 4 ++-- .../src/lib/dh-market-roles-overview.component.ts | 4 ++-- libs/dh/shared/ui-util/src/index.ts | 2 +- .../src/lib/{export-csv.ts => export-to-csv.ts} | 11 +++++++++-- 5 files changed, 16 insertions(+), 9 deletions(-) rename libs/dh/shared/ui-util/src/lib/{export-csv.ts => export-to-csv.ts} (79%) diff --git a/libs/dh/admin/feature-permissions/src/lib/overview/dh-admin-permission-overview.component.ts b/libs/dh/admin/feature-permissions/src/lib/overview/dh-admin-permission-overview.component.ts index 0b69b8a010..ec610d27a9 100644 --- a/libs/dh/admin/feature-permissions/src/lib/overview/dh-admin-permission-overview.component.ts +++ b/libs/dh/admin/feature-permissions/src/lib/overview/dh-admin-permission-overview.component.ts @@ -24,7 +24,7 @@ import { DhPermissionsTableComponent } from '@energinet-datahub/dh/admin/ui-perm import { WattEmptyStateComponent } from '@energinet-datahub/watt/empty-state'; import { WattSpinnerComponent } from '@energinet-datahub/watt/spinner'; import { PermissionDto } from '@energinet-datahub/dh/shared/domain'; -import { DhEmDashFallbackPipe, exportCsv } from '@energinet-datahub/dh/shared/ui-util'; +import { DhEmDashFallbackPipe, exportToCSV } from '@energinet-datahub/dh/shared/ui-util'; import { WattButtonComponent } from '@energinet-datahub/watt/button'; import { WattTableColumnDef, WattTableDataSource, WATT_TABLE } from '@energinet-datahub/watt/table'; import { WATT_CARD } from '@energinet-datahub/watt/card'; @@ -124,7 +124,7 @@ export class DhAdminPermissionOverviewComponent implements OnInit, OnDestroy { const lines = marketRoles.map((x) => [`"${x.name}"`, `"${x.description}"`]); - exportCsv(headers, lines); + exportToCSV({ headers, lines }); } } } diff --git a/libs/dh/admin/feature-user-management/src/lib/tabs/roles-tab/dh-roles-tab.component.ts b/libs/dh/admin/feature-user-management/src/lib/tabs/roles-tab/dh-roles-tab.component.ts index e759506934..f357865a88 100644 --- a/libs/dh/admin/feature-user-management/src/lib/tabs/roles-tab/dh-roles-tab.component.ts +++ b/libs/dh/admin/feature-user-management/src/lib/tabs/roles-tab/dh-roles-tab.component.ts @@ -35,7 +35,7 @@ import { import { DhPermissionRequiredDirective } from '@energinet-datahub/dh/shared/feature-authorization'; import { DhCreateUserRoleModalComponent } from '@energinet-datahub/dh/admin/feature-create-user-role'; import { WATT_MODAL } from '@energinet-datahub/watt/modal'; -import { exportCsv } from '@energinet-datahub/dh/shared/ui-util'; +import { exportToCSV } from '@energinet-datahub/dh/shared/ui-util'; import { DhRolesTabTableComponent } from './dh-roles-tab-table.component'; import { DhRolesTabListFilterComponent } from './dh-roles-tab-list-filter.component'; @@ -120,7 +120,7 @@ export class DhUserRolesTabComponent { `"${x.status}"`, ]); - exportCsv(headers, lines); + exportToCSV({ headers, lines }); }); } } diff --git a/libs/dh/market-participant/actors/feature-market-roles/src/lib/dh-market-roles-overview.component.ts b/libs/dh/market-participant/actors/feature-market-roles/src/lib/dh-market-roles-overview.component.ts index f053a66ff1..a7742bca77 100644 --- a/libs/dh/market-participant/actors/feature-market-roles/src/lib/dh-market-roles-overview.component.ts +++ b/libs/dh/market-participant/actors/feature-market-roles/src/lib/dh-market-roles-overview.component.ts @@ -22,7 +22,7 @@ import { WattTableColumnDef, WattTableDataSource, WATT_TABLE } from '@energinet- import { WATT_CARD } from '@energinet-datahub/watt/card'; import { WattButtonComponent } from '@energinet-datahub/watt/button'; import { EicFunction } from '@energinet-datahub/dh/shared/domain/graphql'; -import { exportCsv } from '@energinet-datahub/dh/shared/ui-util'; +import { exportToCSV } from '@energinet-datahub/dh/shared/ui-util'; @Component({ selector: 'dh-market-roles-overview', @@ -75,7 +75,7 @@ export class DhMarketRolesOverviewComponent implements AfterViewInit { `"${translations['marketRoleDescriptions'][x]}"`, ]); - exportCsv(headers, lines); + exportToCSV({ headers, lines }); } }); } diff --git a/libs/dh/shared/ui-util/src/index.ts b/libs/dh/shared/ui-util/src/index.ts index 8f763d2577..ed13406238 100644 --- a/libs/dh/shared/ui-util/src/index.ts +++ b/libs/dh/shared/ui-util/src/index.ts @@ -16,4 +16,4 @@ */ export * from './lib/dh-em-dash-fallback.pipe'; export * from './lib/em-dash'; -export * from './lib/export-csv'; +export * from './lib/export-to-csv'; diff --git a/libs/dh/shared/ui-util/src/lib/export-csv.ts b/libs/dh/shared/ui-util/src/lib/export-to-csv.ts similarity index 79% rename from libs/dh/shared/ui-util/src/lib/export-csv.ts rename to libs/dh/shared/ui-util/src/lib/export-to-csv.ts index 9b92fc4c41..a3ed6957c8 100644 --- a/libs/dh/shared/ui-util/src/lib/export-csv.ts +++ b/libs/dh/shared/ui-util/src/lib/export-to-csv.ts @@ -14,14 +14,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +type ExportToCSVArgs = { + headers: string[]; + lines: string[][]; + fileName?: string; +}; -export const exportCsv = (headers: string[], lines: string[][]) => { +export const exportToCSV = ({ headers, lines, fileName = 'result' }: ExportToCSVArgs) => { const a = document.createElement('a'); + a.href = URL.createObjectURL( new Blob([`\ufeff${headers.join(';')}\n${lines.map((x) => x.join(';')).join('\n')}`], { type: 'text/csv;charset=utf-8;', }) ); - a.download = 'result.csv'; + + a.download = `${fileName}.csv`; a.click(); };