Add button to add dummy data

This commit is contained in:
Julia Friesel
2018-07-23 12:22:27 +02:00
parent b63a9560df
commit f52401d05d
3 changed files with 106 additions and 8 deletions
+73
View File
@@ -0,0 +1,73 @@
function convertToSymptoFormat(val) {
const sympto = { date: val.date }
if (val.temperature) sympto.temperature = { value: val.temperature, exclude: false }
if (val.mucus) sympto.mucus = {
value: val.mucus,
exclude: false,
feeling: val.mucus,
texture: val.mucus
}
if (val.bleeding) sympto.bleeding = { value: val.bleeding, exclude: false }
return sympto
}
export const cycleWithFhm = [
{ date: '2018-07-01', bleeding: 2 },
{ date: '2018-07-02', bleeding: 1 },
{ date: '2018-07-06', temperature: 36.2},
{ date: '2018-07-07', temperature: 36.35 },
{ date: '2018-07-09', temperature: 36.6 },
{ date: '2018-07-10', temperature: 36.45 },
{ date: '2018-07-12', temperature: 36.7, mucus: 0 },
{ date: '2018-07-13', temperature: 36.8, mucus: 4 },
{ date: '2018-07-15', temperature: 36.9, mucus: 2 },
{ date: '2018-07-16', temperature: 36.95, mucus: 2 },
{ date: '2018-07-17', temperature: 36.9, mucus: 2 },
{ date: '2018-07-18', temperature: 36.9, mucus: 2 }
].map(convertToSymptoFormat).reverse()
export const longAndComplicatedCycle = [
{ date: '2018-06-01', temperature: 36.6, bleeding: 2 },
{ date: '2018-06-02', temperature: 36.65 },
{ date: '2018-06-04', temperature: 36.6 },
{ date: '2018-06-05', temperature: 36.55 },
{ date: '2018-06-06', temperature: 36.7, mucus: 0 },
{ date: '2018-06-09', temperature: 36.5, mucus: 4 },
{ date: '2018-06-10', temperature: 36.4, mucus: 2 },
{ date: '2018-06-13', temperature: 36.45, mucus: 3 },
{ date: '2018-06-14', temperature: 36.5, mucus: 4 },
{ date: '2018-06-15', temperature: 36.55, mucus: 4 },
{ date: '2018-06-16', temperature: 36.7, mucus: 3 },
{ date: '2018-06-17', temperature: 36.65, mucus: 3 },
{ date: '2018-06-18', temperature: 36.75, mucus: 4 },
{ date: '2018-06-19', temperature: 36.8, mucus: 1 },
{ date: '2018-06-20', temperature: 36.85, mucus: 2 },
{ date: '2018-06-21', temperature: 36.8, mucus: 2 },
{ date: '2018-06-22', temperature: 36.9, mucus: 2 },
{ date: '2018-06-25', temperature: 36.9, mucus: 1 },
{ date: '2018-06-26', temperature: 36.8, mucus: 1 },
{ date: '2018-06-27', temperature: 36.9, mucus: 1 }
].map(convertToSymptoFormat).reverse()
export const cycleWithTempAndNoMucusShift = [
{ date: '2018-05-01', temperature: 36.6, bleeding: 2 },
{ date: '2018-05-02', temperature: 36.65 },
{ date: '2018-05-05', temperature: 36.55 },
{ date: '2018-05-06', temperature: 36.7, mucus: 0 },
{ date: '2018-05-08', temperature: 36.45, mucus: 1 },
{ date: '2018-05-09', temperature: 36.5, mucus: 4 },
{ date: '2018-05-10', temperature: 36.4, mucus: 2 },
{ date: '2018-05-11', temperature: 36.5, mucus: 3 },
{ date: '2018-05-13', temperature: 36.45, mucus: 3 },
{ date: '2018-05-14', temperature: 36.5, mucus: 4 },
{ date: '2018-05-15', temperature: 36.55, mucus: 4 },
{ date: '2018-05-16', temperature: 36.7, mucus: 3 },
{ date: '2018-05-17', temperature: 36.65, mucus: 3 },
{ date: '2018-05-18', temperature: 36.75, mucus: 4 },
{ date: '2018-05-19', temperature: 36.8, mucus: 4 },
{ date: '2018-05-20', temperature: 36.85, mucus: 4 },
{ date: '2018-05-23', temperature: 36.9, mucus: 3 },
{ date: '2018-05-24', temperature: 36.85, mucus: 4 },
{ date: '2018-05-26', temperature: 36.8, mucus: 4 },
{ date: '2018-05-27', temperature: 36.9, mucus: 4 }
].map(convertToSymptoFormat).reverse()
+139
View File
@@ -0,0 +1,139 @@
import Realm from 'realm'
import { LocalDate } from 'js-joda'
import {
cycleWithTempAndNoMucusShift,
cycleWithFhm,
longAndComplicatedCycle
} from './fixtures'
const TemperatureSchema = {
name: 'Temperature',
properties: {
value: 'double',
exclude: 'bool'
}
}
const BleedingSchema = {
name: 'Bleeding',
properties: {
value: 'int',
exclude: 'bool'
}
}
const MucusSchema = {
name: 'Mucus',
properties: {
feeling: 'int',
texture: 'int',
value: 'int',
exclude: 'bool'
}
}
const CycleDaySchema = {
name: 'CycleDay',
primaryKey: 'date',
properties: {
date: 'string',
temperature: {
type: 'Temperature',
optional: true
},
bleeding: {
type: 'Bleeding',
optional: true
},
mucus: {
type: 'Mucus',
optional: true
}
}
}
const realmConfig = {
schema: [
CycleDaySchema,
TemperatureSchema,
BleedingSchema,
MucusSchema
],
// we only want this in dev mode
deleteRealmIfMigrationNeeded: true
}
const db = new Realm(realmConfig)
const bleedingDaysSortedByDate = db.objects('CycleDay').filtered('bleeding != null').sorted('date', true)
const temperatureDaysSortedByDate = db.objects('CycleDay').filtered('temperature != null').sorted('date', true)
function saveSymptom(symptom, cycleDay, val) {
db.write(() => {
cycleDay[symptom] = val
})
}
const cycleDaysSortedByDate = db.objects('CycleDay').sorted('date', true)
function getOrCreateCycleDay(localDate) {
let result = db.objectForPrimaryKey('CycleDay', localDate)
if (!result) {
db.write(() => {
result = db.create('CycleDay', {
date: localDate
})
})
}
return result
}
function getCycleDay(localDate) {
return db.objectForPrimaryKey('CycleDay', localDate)
}
function fillWithDummyData() {
const dummyCycles = [
cycleWithFhm,
longAndComplicatedCycle,
cycleWithTempAndNoMucusShift
]
db.write(() => {
db.deleteAll()
dummyCycles.forEach(cycle => {
cycle.forEach(day => {
const existing = getCycleDay(day.date)
if (existing) {
Object.keys(day).forEach(key => {
if (key === 'date') return
existing[key] = day[key]
})
} else {
db.create('CycleDay', day)
}
})
})
})
}
function getPreviousTemperature(cycleDay) {
cycleDay.wrappedDate = LocalDate.parse(cycleDay.date)
const winner = temperatureDaysSortedByDate.find(day => {
const wrappedDate = LocalDate.parse(day.date)
return wrappedDate.isBefore(cycleDay.wrappedDate)
})
if (!winner) return null
return winner.temperature.value
}
export {
saveSymptom,
getOrCreateCycleDay,
bleedingDaysSortedByDate,
temperatureDaysSortedByDate,
cycleDaysSortedByDate,
fillWithDummyData,
getPreviousTemperature,
getCycleDay
}