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