Bladeren bron

Add download csv option

Tatiana Inama 6 jaren geleden
bovenliggende
commit
3a6796fe10
3 gewijzigde bestanden met toevoegingen van 17 en 0 verwijderingen
  1. 5 0
      package-lock.json
  2. 1 0
      package.json
  3. 11 0
      src/Admin.tsx

+ 5 - 0
package-lock.json

@@ -8128,6 +8128,11 @@
         }
       }
     },
+    "js-file-download": {
+      "version": "0.4.12",
+      "resolved": "https://registry.npmjs.org/js-file-download/-/js-file-download-0.4.12.tgz",
+      "integrity": "sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg=="
+    },
     "js-tokens": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",

+ 1 - 0
package.json

@@ -18,6 +18,7 @@
     "@types/reactstrap": "^8.4.2",
     "axios": "^0.19.2",
     "bootstrap": "^4.4.1",
+    "js-file-download": "^0.4.12",
     "paper": "^0.12.4",
     "ramda": "^0.27.0",
     "react": "^16.13.1",

+ 11 - 0
src/Admin.tsx

@@ -4,6 +4,7 @@ import Paper, { Path, PaperScope, Point, Group, Color } from 'paper';
 import { without, append, isNil, identity, includes, is } from 'ramda';
 import Axios from 'axios';
 import VALUES, { AgeVal, GenderVal, NonNativeVal, Filters, FilterVal, FilterStatus, EducationVal } from './services';
+import FileDownload from 'js-file-download';
 import './Admin.css';
 
 const BACKEND = process.env.REACT_APP_BACKEND || '/backend/';
@@ -211,6 +212,15 @@ class Admin extends React.Component<{}, AdminState> {
     })
   }
 
+  downloadData = () => {
+    Axios.get(`${BACKEND}/csv`, {
+      headers: {
+        'X-Token': 'secret-potato',
+      }
+    }).then(response => {
+      FileDownload(response.data, 'voices-of-merseyside.csv')
+    })
+  }
   render() {
     return (
       <div className="App Admin">
@@ -219,6 +229,7 @@ class Admin extends React.Component<{}, AdminState> {
           <div className="vom-results-data">
             <p>total responses: <Badge color="info">{this.state.original.length}</Badge></p>
             <p>showing: <Badge color="info">{this.state.data.length}</Badge></p>
+            <p><Badge color="success" href="#" onClick={() => this.downloadData() }>download</Badge></p>
           </div>
           <div id="vom-results">
             <canvas id="vom-admin-canvas"></canvas>