import React from 'react' import PropTypes from 'prop-types' import { StyleSheet, View } from 'react-native' import { Colors, Containers } from '../../styles' import { CHART_COLUMN_WIDTH, CHART_DOT_RADIUS, CHART_GRID_LINE_HORIZONTAL_WIDTH, } from '../../config' const SymptomCell = ({ height, index, symptom, symptomValue, isSymptomDataComplete, }) => { const shouldDrawDot = symptomValue !== false const styleCell = index !== 0 ? [styles.cell, { height, width: CHART_COLUMN_WIDTH }] : [styles.cell, { height, width: CHART_COLUMN_WIDTH }, styles.topBorder] let styleDot if (shouldDrawDot) { const styleSymptom = Colors.iconColors[symptom] const symptomColor = styleSymptom.shades[symptomValue] const isMucusOrCervix = symptom === 'mucus' || symptom === 'cervix' const backgroundColor = isMucusOrCervix && !isSymptomDataComplete ? 'white' : symptomColor const borderWidth = isMucusOrCervix && !isSymptomDataComplete ? 2 : 0 const borderColor = symptomColor styleDot = [styles.dot, { backgroundColor, borderColor, borderWidth }] } return ( {shouldDrawDot && } ) } SymptomCell.propTypes = { height: PropTypes.number, index: PropTypes.number.isRequired, symptom: PropTypes.string, symptomValue: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]), isSymptomDataComplete: PropTypes.bool, } const styles = StyleSheet.create({ cell: { backgroundColor: 'white', borderBottomColor: Colors.grey, borderBottomWidth: CHART_GRID_LINE_HORIZONTAL_WIDTH, borderLeftColor: Colors.grey, borderLeftWidth: CHART_GRID_LINE_HORIZONTAL_WIDTH, ...Containers.centerItems, }, topBorder: { borderTopColor: Colors.grey, borderTopWidth: CHART_GRID_LINE_HORIZONTAL_WIDTH, }, dot: { width: CHART_DOT_RADIUS * 2, height: CHART_DOT_RADIUS * 2, borderRadius: 50, }, }) export default SymptomCell