import React, { Component } from 'react' import { View, Button, Text, ScrollView } from 'react-native' import Share from 'react-native-share' import { Base64 } from 'js-base64' import objectPath from 'object-path' import { getColumnNamesForCsv, cycleDaysSortedByDate } from '../db' import styles from '../styles/index' export default class Settings extends Component { constructor(props) { super(props) this.state = { pickerVisible: false } } render() { return ( {this.state.welcomeText} ) } } function makeDataURI(cycleDays) { const csv = transformToCsv(cycleDays) const encoded = Base64.encodeURI(csv) return `data:text/csv;base64,${encoded}` } function transformToCsv(cycleDays) { const columnNames = getColumnNamesForCsv() const rows = cycleDays .map(day => { return columnNames.map(column => { const val = objectPath.get(day, column, '') return typeof val === 'string' ? csvify(val) : val }) }) .map(row => row.join(',')) rows.unshift(columnNames.join(',')) return rows.join('\n') } function csvify (val) { // escape double quotes val = val.replace(/"/g, '""') val = val.toLowerCase() const hasSpecialChars = ( val.includes('\n') || val.includes('\t') || val.includes(',') || val.includes(';') || val.includes('.') || val.includes('\'') ) return hasSpecialChars ? `"${val}"` : val }