diff --git a/components/settings.js b/components/settings.js
index 0705d0d..35e9ccd 100644
--- a/components/settings.js
+++ b/components/settings.js
@@ -3,12 +3,12 @@ import {
View,
Button,
Text,
- ScrollView,
- Picker
+ ScrollView
} from 'react-native'
import Share from 'react-native-share'
import { Base64 } from 'js-base64'
import styles from '../styles/index'
+import objectPath from 'object-path'
export default class Settings extends Component {
constructor(props) {
@@ -26,41 +26,68 @@ export default class Settings extends Component {
- {this.state.pickerVisible &&
- {
- const data = makeDataURI(format)
- console.log(data)
- try {
- await Share.open({
- title: 'My Drip data export',
- url: data,
- subject: 'My Drip data export',
- type: 'text/csv',
- showAppsToView: true
- })
- } catch (err) {
- console.log(err)
- }
- }}>
-
-
-
- }
)
}
}
-function makeDataURI(format) {
- const data = {hello: "world"}
- const encoded = Base64.encodeURI(JSON.stringify(data))
+function makeDataURI() {
+ //TODO handle empty DB
+ const data = [{
+ date: '2018-06-23',
+ temperature: {
+ value: 36.8,
+ exclude: false
+ }
+ }]
+ const csv = transformToCsv(data)
+ const encoded = Base64.encodeURI(csv)
return `data:text/csv;base64,${encoded}`
+}
+
+function transformToCsv(json) {
+ const day = json[0]
+ const columnNames = getPrefixedKeys(day)
+ const rows = json
+ .map(day => {
+ return columnNames.map(column => {
+ return objectPath.get(day, column, '')
+ })
+ })
+ .map(row => row.join(','))
+
+ rows.unshift(columnNames.join(','))
+ return rows.join('\n')
+}
+
+function getPrefixedKeys(obj, prefix) {
+ return Object.keys(obj).reduce((acc, key) => {
+ const prefixedKey = prefix ? [prefix, key].join('.') : key
+ if (typeof obj[key] != 'object') {
+ acc.push(prefixedKey)
+ return acc
+ }
+ acc.push(...getPrefixedKeys(obj[key], prefixedKey))
+ return acc
+ }, [])
}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 5b8a774..a9e59b5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5744,6 +5744,11 @@
"integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
"dev": true
},
+ "object-path": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz",
+ "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk="
+ },
"object-visit": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
diff --git a/package.json b/package.json
index 49b226d..217d5ff 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,7 @@
"js-base64": "^2.4.8",
"js-joda": "^1.8.2",
"moment": "^2.22.1",
+ "object-path": "^0.11.4",
"react": "16.4.1",
"react-native": "^0.56.0",
"react-native-calendars": "^1.19.3",