From 20c08674225e9b7e3edb9f770da2f68ceac1b870 Mon Sep 17 00:00:00 2001 From: tina <lt-bloody@riox.eu> Date: Fri, 14 Sep 2018 16:41:27 +0200 Subject: [PATCH] shows predicted bleeding with red circles, also sets up today formatting --- components/calendar.js | 55 +++++++++++++++++++++++++++++++++--------- styles/index.js | 8 +++++- 2 files changed, 51 insertions(+), 12 deletions(-) diff --git a/components/calendar.js b/components/calendar.js index af213ddf..13c466c0 100644 --- a/components/calendar.js +++ b/components/calendar.js @@ -1,8 +1,10 @@ import React, { Component } from 'react' import { CalendarList } from 'react-native-calendars' +import {LocalDate} from 'js-joda' import { getOrCreateCycleDay, bleedingDaysSortedByDate } from '../db' import cycleModule from '../lib/cycle' -import {shadesOfRed, shadesOfGrey} from '../styles/index' +import {shadesOfRed} from '../styles/index' +import styles from '../styles/index' export default class CalendarView extends Component { constructor(props) { @@ -10,7 +12,8 @@ export default class CalendarView extends Component { const predictedMenses = cycleModule().getPredictedMenses() this.state = { bleedingDaysInCalFormat: toCalFormat(bleedingDaysSortedByDate), - predictedBleedingDaysInCalFormat: predictionToCalFormat(predictedMenses) + predictedBleedingDaysInCalFormat: predictionToCalFormat(predictedMenses), + todayInCalFormat: todayToCalFormat() } this.setStateWithCalFormattedDays = (function (CalendarComponent) { @@ -18,7 +21,8 @@ export default class CalendarView extends Component { const predictedMenses = cycleModule().getPredictedMenses() CalendarComponent.setState({ bleedingDaysInCalFormat: toCalFormat(bleedingDaysSortedByDate), - predictedBleedingDaysInCalFormat: predictionToCalFormat(predictedMenses) + predictedBleedingDaysInCalFormat: predictionToCalFormat(predictedMenses), + todayInCalFormat: todayToCalFormat() }) } })(this) @@ -35,7 +39,6 @@ export default class CalendarView extends Component { const navigate = this.props.navigate navigate('CycleDay', { cycleDay }) } - render() { return ( <CalendarList @@ -43,11 +46,12 @@ export default class CalendarView extends Component { markedDates={ Object.assign( {}, + this.state.todayInCalFormat, this.state.bleedingDaysInCalFormat, this.state.predictedBleedingDaysInCalFormat ) } - markingType={'period'} + markingType={'custom'} /> ) } @@ -56,9 +60,14 @@ export default class CalendarView extends Component { function toCalFormat(bleedingDaysSortedByDate) { return bleedingDaysSortedByDate.reduce((acc, day) => { acc[day.date] = { - startingDay: true, - endingDay: true, - color: shadesOfRed[day.bleeding.value] + customStyles: { + container: { + backgroundColor: shadesOfRed[day.bleeding.value], + } + } + } + if (day.date === LocalDate.now().toString()) { + acc[day.date].customStyles.text = styles.calendarToday } return acc }, {}) @@ -70,12 +79,36 @@ function predictionToCalFormat(predictedDays) { return predictedDays.reduce((acc, setOfDays) => { setOfDays.reduce((accSet, day, i) => { accSet[day] = { - startingDay: true, - endingDay: true, - color: (i === middleIndex) ? shadesOfGrey[1] : shadesOfGrey[0] + customStyles: { + container: { + borderColor: (i === middleIndex) ? shadesOfRed[3] : shadesOfRed[2], + borderWidth: 3, + }, + text: { + marginTop: 1, + } + } + } + if (day === LocalDate.now().toString()) { + accSet[day].customStyles.text = Object.assign( + {}, + styles.calendarToday, + {marginTop: -2} + ) } return accSet }, acc) return acc }, {}) +} + +function todayToCalFormat() { + const todayDateString = LocalDate.now().toString() + const todayFormated = {} + todayFormated[todayDateString] = { + customStyles: { + text: styles.calendarToday + } + } + return todayFormated } \ No newline at end of file diff --git a/styles/index.js b/styles/index.js index c0fec243..629533a3 100644 --- a/styles/index.js +++ b/styles/index.js @@ -2,9 +2,9 @@ import { StyleSheet } from 'react-native' export const primaryColor = '#ff7e5f' export const secondaryColor = '#351c4d' +export const secondaryColorLight = '#91749d' export const fontOnPrimaryColor = 'white' export const shadesOfRed = ['#ffcbbf', '#ffb19f', '#ff977e', '#ff7e5f'] // light to dark -export const shadesOfGrey = ['#e5e5e5', '#cccccc'] // [lighter, darker] const defaultBottomMargin = 5 const defaultIndentation = 10 @@ -243,6 +243,12 @@ export default StyleSheet.create({ }, page: { marginHorizontal: 10 + }, + calendarToday: { + fontWeight: 'bold', + fontSize: 20, + color: secondaryColor, + marginTop: 1 } }) -- GitLab