diff --git a/components/chart/chart.js b/components/chart/chart.js
index 201f0f8..ccffbba 100644
--- a/components/chart/chart.js
+++ b/components/chart/chart.js
@@ -10,6 +10,7 @@ import styles from './styles'
import { scaleObservable } from '../../local-storage'
import config from '../../config'
import { AppText } from '../app-text'
+import { shared as labels } from '../labels'
export default class CycleChart extends Component {
constructor(props) {
@@ -111,7 +112,7 @@ export default class CycleChart extends Component {
(cycleDay.cervix.opening + cycleDay.cervix.firmness)
} else if (symptom === 'sex') {
// solo = 1 + partner = 2
- acc.sex = cycleDay.sex && (cycleDay.sex.solo + cycleDay.sex.partner)
+ acc.sex = cycleDay.sex && (cycleDay.sex.solo + 2 * cycleDay.sex.partner)
} else if (symptom === 'pain') {
// is any pain documented?
acc.pain = cycleDay.pain &&
@@ -144,20 +145,33 @@ export default class CycleChart extends Component {
>
{!this.state.chartLoaded &&
- Loading...
+ {labels.loading}
}
{this.state.chartHeight && this.state.chartLoaded &&
-
- {makeYAxisLabels(this.columnHeight)}
+
+
+ {this.symptomRowSymptoms.map(symptomName => {
+ return
+ {symptomName[0]}
+
+ })}
+
+
+ {makeYAxisLabels(this.columnHeight)}
+
+
+
+ {labels.cycleDayWithLinebreak}
+
+
+ {labels.date}
+
+
}
+
{this.state.chartHeight && this.state.chartLoaded &&
makeHorizontalGrid(this.columnHeight, this.symptomRowHeight)
}
diff --git a/components/chart/day-column.js b/components/chart/day-column.js
index f2ed95b..ec3dd95 100644
--- a/components/chart/day-column.js
+++ b/components/chart/day-column.js
@@ -3,7 +3,8 @@ import {
Text, View, TouchableOpacity
} from 'react-native'
import Svg,{ G, Rect, Line } from 'react-native-svg'
-import Icon from 'react-native-vector-icons/Entypo'
+import { LocalDate } from 'js-joda'
+import moment from 'moment'
import styles from './styles'
import config from '../../config'
import { getOrCreateCycleDay } from '../../db'
@@ -88,13 +89,18 @@ export default class DayColumn extends Component {
}
const cycleDayNumber = this.getCycleDayNumber(dateString)
- const shortDate = dateString.split('-').slice(1).join('-')
+ const dayDate = LocalDate.parse(dateString)
+ const shortDate = dayDate.dayOfMonth() === 1 ?
+ moment(dateString, "YYYY-MM-DD").format('MMM')
+ :
+ moment(dateString, "YYYY-MM-DD").format('Do')
+ const boldDateLabel = dayDate.dayOfMonth() === 1 ? {fontWeight: 'bold'} : {}
const cycleDayLabel = (
{cycleDayNumber ? cycleDayNumber : ' '}
)
const dateLabel = (
-
+
{shortDate}
)
@@ -116,10 +122,9 @@ export default class DayColumn extends Component {
symptomHeight={symptomHeight}
key='bleeding'
>
-
),
@@ -130,8 +135,8 @@ export default class DayColumn extends Component {
key='mucus'
>
),
@@ -142,9 +147,9 @@ export default class DayColumn extends Component {
key='cervix'
>
0 ? 'blue' : 'green'}
+ backgroundColor={this.props.cervix > 0 ? styles.iconShades.cervix[2] : styles.iconShades.cervix[0]}
/>
),
@@ -155,8 +160,8 @@ export default class DayColumn extends Component {
key='sex'
>
),
@@ -167,8 +172,8 @@ export default class DayColumn extends Component {
key='desire'
>
),
@@ -179,8 +184,8 @@ export default class DayColumn extends Component {
key='pain'
>
),
@@ -191,8 +196,8 @@ export default class DayColumn extends Component {
key='note'
>
)
diff --git a/components/chart/styles.js b/components/chart/styles.js
index 8441f9b..8cc044f 100644
--- a/components/chart/styles.js
+++ b/components/chart/styles.js
@@ -8,6 +8,7 @@ const lineWidth = 1.5
const colorLtl = '#feb47b'
const gridColor = 'lightgrey'
const gridLineWidth = 0.5
+const numberLabelFontSize = 13
const styles = {
curve: {
@@ -32,10 +33,11 @@ const styles = {
color: 'grey',
fontSize: 9,
fontWeight: '100',
+ textAlign: 'center',
},
number: {
color: primaryColor,
- fontSize: 13,
+ fontSize: numberLabelFontSize,
textAlign: 'center',
}
},
@@ -48,37 +50,62 @@ const styles = {
fill: 'transparent'
}
},
- bleedingIcon: {
- fill: '#fb2e01',
- scale: 0.6,
- x: 6,
- y: 3
- },
- bleedingIconShades: shadesOfRed,
- mucusIcon: {
+ symptomIcon: {
width: 12,
height: 12,
borderRadius: 50,
},
- mucusIconShades: [
- '#fef0e4',
- '#fee1ca',
- '#fed2af',
- '#fec395',
- '#feb47b'
- ],
+ iconShades: {
+ 'bleeding': shadesOfRed,
+ 'mucus': [
+ '#e3e7ed',
+ '#c8cfdc',
+ '#acb8cb',
+ '#91a0ba',
+ '#7689a9'
+ ],
+ 'cervix': [
+ '#f0e19d',
+ '#e9d26d',
+ '#e2c33c',
+ '#dbb40c',
+ ],
+ 'sex': [
+ '#a87ca2',
+ '#8b5083',
+ '#6f2565',
+ ],
+ 'desire': [
+ '#c485a6',
+ '#b15c89',
+ '#9e346c',
+ ],
+ 'pain': ['#bccd67'],
+ 'note': ['#6CA299']
+ },
yAxis: {
width: 27,
- borderRightWidth: 0.5,
+ borderRightWidth: 1,
borderColor: 'lightgrey',
borderStyle: 'solid'
},
- yAxisLabel: {
- position: 'absolute',
- left: 3,
- color: 'grey',
- fontSize: 11,
- textAlign: 'left'
+ yAxisLabels: {
+ tempScale: {
+ position: 'absolute',
+ right: 2,
+ color: 'grey',
+ fontSize: 9,
+ textAlign: 'left'
+ },
+ cycleDayLabel: {
+ textAlign: 'center',
+ justifyContent: 'center',
+ fontSize: Math.ceil(numberLabelFontSize / 2)
+ },
+ dateLabel: {
+ textAlign: 'center',
+ justifyContent: 'center'
+ }
},
horizontalGrid: {
position:'absolute',
diff --git a/components/chart/y-axis.js b/components/chart/y-axis.js
index 12fa08c..e1e0d6f 100644
--- a/components/chart/y-axis.js
+++ b/components/chart/y-axis.js
@@ -8,7 +8,7 @@ import { AppText } from '../app-text'
export function makeYAxisLabels(columnHeight) {
const units = unitObservable.value
const scaleMax = scaleObservable.value.max
- const style = styles.yAxisLabel
+ const style = styles.yAxisLabels.tempScale
return getTickPositions(columnHeight).map((y, i) => {
const tick = scaleMax - i * units
@@ -17,10 +17,10 @@ export function makeYAxisLabels(columnHeight) {
let tickBold
if (units === 0.1) {
showTick = (tick * 10 % 2) ? false : true
- tickBold = tick * 10 % 5 ? {} : {fontWeight: 'bold'}
+ tickBold = tick * 10 % 5 ? {} : {fontWeight: 'bold', fontSize: 11}
} else {
showTick = (tick * 10 % 5) ? false : true
- tickBold = tick * 10 % 10 ? {} : {fontWeight: 'bold'}
+ tickBold = tick * 10 % 10 ? {} : {fontWeight: 'bold', fontSize: 11}
}
// this eyeballing is sadly necessary because RN does not
// support percentage values for transforms, which we'd need
diff --git a/components/labels.js b/components/labels.js
index 7fde2b8..5ebae60 100644
--- a/components/labels.js
+++ b/components/labels.js
@@ -8,7 +8,10 @@ export const shared = {
incorrectPasswordMessage: 'That password is incorrect.',
tryAgain: 'Try again',
ok: 'OK',
- unlock: 'Unlock'
+ unlock: 'Unlock',
+ date: 'Date',
+ cycleDayWithLinebreak: 'Cycle\nday',
+ loading: 'Loading ...'
}
export const settings = {
diff --git a/styles/index.js b/styles/index.js
index ee63b83..28b6ff0 100644
--- a/styles/index.js
+++ b/styles/index.js
@@ -4,7 +4,12 @@ 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 shadesOfRed = [
+ '#e7999e',
+ '#db666d',
+ '#cf323d',
+ '#c3000d'
+] // light to dark
const defaultBottomMargin = 5
const defaultIndentation = 10