From 4b1019f528aae43e0db0e53e519c55ab1ea2f095 Mon Sep 17 00:00:00 2001
From: Pierre Ecarlat <pecarlat@grandlyon.com>
Date: Wed, 12 Feb 2025 14:46:33 +0000
Subject: [PATCH] feat: Add exportAll button

---
 src/components/Consents/Consents.tsx         | 43 +++++++++++++++-----
 src/components/Consents/consents.module.scss |  6 +++
 2 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/src/components/Consents/Consents.tsx b/src/components/Consents/Consents.tsx
index e2cd8fbf..41887dc4 100644
--- a/src/components/Consents/Consents.tsx
+++ b/src/components/Consents/Consents.tsx
@@ -166,6 +166,26 @@ export const Consents: React.FC<{ type: 'sge' | 'grdf' }> = ({ type }) => {
     resetSelection()
   }, [gridApi, resetSelection])
 
+  const exportAllData = useCallback(() => {
+    const fetchAllData = async () => {
+      setIsLoading(true)
+      if (user) {
+        const allConsents = await consentService.searchConsents(
+          '',
+          totalRows,
+          0,
+          getAxiosXSRFHeader(user.xsrftoken)
+        )
+        if (allConsents) {
+          setConsents(allConsents.rows)
+          toggleOpenModal()
+        }
+      }
+      setIsLoading(false)
+    }
+    fetchAllData()
+  }, [user, totalRows, consentService, toggleOpenModal])
+
   const onGridReady = ({ api }: GridReadyEvent) => {
     //Grid init method
     setGridApi(api)
@@ -196,16 +216,19 @@ export const Consents: React.FC<{ type: 'sge' | 'grdf' }> = ({ type }) => {
         <h1>Consentements {isGRDF ? 'GRDF' : 'Enedis'}</h1>
       </div>
       <div className={styles.content}>
-        <TextField
-          placeholder={`N°${isGRDF ? 'PCE' : 'PDL'} (14 chiffres)`}
-          label="Recherche"
-          value={search}
-          onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
-            handleSearchChange(e.target.value)
-          }
-          disabled={isShowingSelection}
-          autoComplete="off"
-        />
+        <div className={styles.inlineButtons}>
+          <TextField
+            placeholder={`N°${isGRDF ? 'PCE' : 'PDL'} (14 chiffres)`}
+            label="Recherche"
+            value={search}
+            onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
+              handleSearchChange(e.target.value)
+            }
+            disabled={isShowingSelection}
+            autoComplete="off"
+          />
+          <Button onClick={exportAllData}>Tout télécharger</Button>
+        </div>
         <div
           className="ag-theme-alpine-dark"
           style={{ width: '100%', height: '75vh' }}
diff --git a/src/components/Consents/consents.module.scss b/src/components/Consents/consents.module.scss
index 188960e5..a7f51206 100644
--- a/src/components/Consents/consents.module.scss
+++ b/src/components/Consents/consents.module.scss
@@ -6,6 +6,12 @@
   padding: 1rem;
 }
 
+.inlineButtons {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
 .footerButtons {
   padding: 1rem 0;
   display: flex;
-- 
GitLab