diff --git a/src/components/csvDownloader/csv-export.tsx b/src/components/csvDownloader/csv-export.tsx index d7ece4b7..47eb07b5 100644 --- a/src/components/csvDownloader/csv-export.tsx +++ b/src/components/csvDownloader/csv-export.tsx @@ -5,12 +5,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { useCallback } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { CsvExportProps } from './csv-export.type'; import { useCsvExport } from './use-csv-export'; import { ExportCsvButton } from './export-csv-button'; export function CsvExport({ + studyUuid, + nodeUuid, + rootNetworkUuid, columns, tableNamePrefix = '', tableName, @@ -20,9 +23,34 @@ export function CsvExport({ exportDataAsCsv, }: CsvExportProps): JSX.Element { const { downloadCSVData } = useCsvExport(); + const [isCsvExportLoading, setIsCsvExportLoading] = useState(false); + const [isCsvExportSuccessful, setIsCsvExportSuccessful] = useState(false); + + useEffect(() => { + setIsCsvExportSuccessful(false); + }, [studyUuid, nodeUuid, rootNetworkUuid]); + + useEffect(() => { + if (disabled) { + // reinit the success state when the button is disabled, + // for example when the calcul status change or results change + setIsCsvExportSuccessful(false); + } + }, [disabled]); + const download = useCallback(() => { + setIsCsvExportLoading(true); downloadCSVData({ columns, tableName, tableNamePrefix, skipColumnHeaders, language, exportDataAsCsv }); + setIsCsvExportLoading(false); + setIsCsvExportSuccessful(true); }, [downloadCSVData, columns, tableName, tableNamePrefix, skipColumnHeaders, language, exportDataAsCsv]); - return ; + return ( + + ); } diff --git a/src/components/csvDownloader/csv-export.type.ts b/src/components/csvDownloader/csv-export.type.ts index 0b10e743..af9862be 100644 --- a/src/components/csvDownloader/csv-export.type.ts +++ b/src/components/csvDownloader/csv-export.type.ts @@ -6,6 +6,7 @@ */ import { ColDef, CsvExportParams } from 'ag-grid-community'; +import type { UUID } from 'crypto'; import { GsLang } from '../../utils'; export type CsvDownloadProps = { @@ -18,5 +19,8 @@ export type CsvDownloadProps = { }; export type CsvExportProps = CsvDownloadProps & { + studyUuid: UUID; + nodeUuid: UUID; + rootNetworkUuid: UUID; disabled: boolean; };