UNPKG

@dynamic-data/oura-mockups

Version:
408 lines (361 loc) 14.9 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var utils = require('@dynamic-data/utils'); var MOCK = require('@dynamic-data/oura-data'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var MOCK__default = /*#__PURE__*/_interopDefaultLegacy(MOCK); var randGen = new utils.MersenneTwister(); var ActivitySummaryModel = { summary_date: function summary_date(d, i) { return utils.getNewDate(d, i, "DATE"); }, day_end: function day_end(d, i) { return utils.getNewDate(d, i, "DATE"); //return '2016-09-04T03:59:59+03:00'; }, daily_movement: function daily_movement() { return utils.convertToInt(randGen.random(), 1000, 15000); }, steps: function steps(m) { var steps = utils.convertToInt(randGen.random(), 20, 60); return Math.ceil(m * steps / 100); }, cal_total: function cal_total() { return utils.convertToInt(randGen.random(), 2000, 3500); }, cal_active: function cal_active(m) { var cals = utils.convertToInt(randGen.random(), 20, 60); return Math.ceil(m * cals / 100); } }; var ReadinessSummaryModel = { summary_date: function summary_date(d, i) { return utils.getNewDate(d, i, "DATE"); }, period_id: function period_id() { return utils.convertToInt(randGen.random(), 0, 100); }, score: function score(score_previous_night, score_sleep_balance, score_previous_day, score_activity_balance, score_resting_hr, score_hrv_balance, score_recovery_index, score_temperature) { return Math.round((score_previous_night + score_sleep_balance + score_previous_day + score_activity_balance + score_resting_hr + score_hrv_balance + score_recovery_index + score_temperature) / 8); }, score_previous_night: function score_previous_night() { return utils.convertToInt(randGen.random(), 0, 100); }, score_sleep_balance: function score_sleep_balance() { return utils.convertToInt(randGen.random(), 0, 100); }, score_previous_day: function score_previous_day() { return utils.convertToInt(randGen.random(), 0, 100); }, score_activity_balance: function score_activity_balance() { return utils.convertToInt(randGen.random(), 0, 100); }, score_resting_hr: function score_resting_hr() { return utils.convertToInt(randGen.random(), 0, 100); }, score_hrv_balance: function score_hrv_balance() { return utils.convertToInt(randGen.random(), 0, 100); }, score_recovery_index: function score_recovery_index() { return utils.convertToInt(randGen.random(), 0, 100); }, score_temperature: function score_temperature() { return utils.convertToInt(randGen.random(), 0, 100); }, rest_mode_state: function rest_mode_state() { return utils.pickRandomValue([0, 1, 2, 3, 4], randGen); } }; var SleepSummaryModel = { summary_date: function summary_date(d, i) { return utils.getNewDate(d, i, "DATE"); }, bedtime_start: function bedtime_start(d, start, range) { return utils.getSleepDate(d, start, range); }, bedtime_end: function bedtime_end(d, sleepTimeRangeInMins) { var sleepTime = utils.convertToInt(randGen.random(), sleepTimeRangeInMins[0], sleepTimeRangeInMins[1]); var startTime = new Date(d).getTime(); var endTime = startTime + sleepTime * 60 * 1000; return utils.toIsoString(new Date(endTime)); }, score: function score(score_alignment, score_deep, score_rem, score_latency, score_efficiency, score_disturbances, score_total) { return Math.round(0.1 * score_alignment + 0.1 * score_deep + 0.1 * score_rem + 0.1 * score_latency + 0.1 * score_efficiency + 0.15 * score_disturbances + 0.35 * score_total); }, score_alignment: function score_alignment() { return utils.convertToInt(randGen.random(), 60, 90); }, score_deep: function score_deep() { return utils.convertToInt(randGen.random(), 60, 90); }, score_rem: function score_rem() { return utils.convertToInt(randGen.random(), 60, 90); }, score_latency: function score_latency() { return utils.convertToInt(randGen.random(), 60, 90); }, score_efficiency: function score_efficiency() { return utils.convertToInt(randGen.random(), 60, 90); }, score_disturbances: function score_disturbances() { return utils.convertToInt(randGen.random(), 60, 90); }, score_total: function score_total() { return utils.convertToInt(randGen.random(), 60, 90); }, restless: function restless() { return utils.convertToInt(randGen.random(), 60, 90); }, efficiency: function efficiency(duration, total) { return Math.round(total / duration * 100); }, duration: function duration(startTime, endTime) { var startTimeTS = new Date(startTime).getTime(); var endTimeTS = new Date(endTime).getTime(); return Math.ceil((endTimeTS - startTimeTS) / 1000); // secs }, total: function total(duration) { return duration - utils.convertToInt(randGen.random(), 500, 2000); }, deep: function deep(total, light, rem) { return total - light - rem; }, awake: function awake(duration, total) { return duration - total; }, light: function light(totalSleep) { var p = utils.convertToInt(randGen.random(), 40, 70) / 100; return Math.ceil(totalSleep * p); }, rem: function rem(sleepSecs) { var p = utils.convertToInt(randGen.random(), 40, 70) / 100; return Math.ceil(sleepSecs * p); }, hr_lowest: function hr_lowest(hr_5min) { //console.log("HR 5min ARG ", hr_5min) //let hr = hr_5min.filter(hr => hr !== 0); var hrs = hr_5min.slice(); //Avoids Sorting original array var hr = hrs.sort(function (a, b) { return a - b; }); //Sorts lowest to highest number instead of digits (e.g. without the function, the array would show [100,20] instead of [20,100]) return hr[0]; //console.log("LOWEST HR", hr); }, hr_average: function hr_average(hr_5min) { return utils.getAverage(hr_5min); }, temperature_delta: function temperature_delta() { return utils.convertToInt(randGen.random(), 0, 5000) / 1000 - 2.5; }, hypnogram_5min: function hypnogram_5min(bedtime_start, bedtime_end) { var bedtimeStart = new Date(bedtime_start); var bedtimeEnd = new Date(bedtime_end); var timeIntervals = bedtimeEnd - bedtimeStart; timeIntervals = Math.floor(timeIntervals / 300000); var hypnogramString = ""; for (var i = 0; i < timeIntervals; i++) { hypnogramString += utils.convertToInt(randGen.random(), 0, 4).toString(); } return hypnogramString; }, hr_5min: function hr_5min(bedtime_start, bedtime_end) { var bedtimeStart = new Date(bedtime_start); var bedtimeEnd = new Date(bedtime_end); var timeIntervals = bedtimeEnd - bedtimeStart; timeIntervals = Math.floor(timeIntervals / 300000); var hrArr = []; // otherwise the heart rate list values are always same and hr_lowest/average is always same too var startValue = utils.convertToInt(randGen.random(), 40, 60); for (var i = 0; i < timeIntervals; i++) { hrArr.push(utils.convertToInt(randGen.random(), startValue, 90)); } //console.log("HR_5min ", timeIntervals, hrArr); return hrArr; }, rmssd_5min: function rmssd_5min(bedtime_start, bedtime_end) { var bedtimeStart = new Date(bedtime_start); var bedtimeEnd = new Date(bedtime_end); var timeIntervals = bedtimeEnd - bedtimeStart; timeIntervals = Math.floor(timeIntervals / 300000); var rmssdArr = []; for (var i = 0; i < timeIntervals; i++) { rmssdArr.push(utils.convertToInt(randGen.random(), 0, 100)); } return rmssdArr; } }; var dataModels = { ActivitySummary: { data: MOCK__default["default"].ActivitySummary, mockup: ActivitySummaryModel }, ActivitySummaryAsync: { data: MOCK__default["default"].ActivitySummaryAsync, mockup: ActivitySummaryModel }, // CSV header is same as JSON attributes ReadinessSummary: { data: MOCK__default["default"].ReadinessSummary, mockup: ReadinessSummaryModel }, ReadinessSummaryAsync: { data: MOCK__default["default"].ReadinessSummaryAsync, mockup: ReadinessSummaryModel }, SleepSummary: { data: MOCK__default["default"].SleepSummary, mockup: SleepSummaryModel }, SleepSummaryAsync: { data: MOCK__default["default"].SleepSummaryAsync, mockup: SleepSummaryModel }, SleepData: { data: MOCK__default["default"].SleepData, mockup: SleepSummaryModel }, SleepDataAsync: { data: MOCK__default["default"].SleepDataAsync, mockup: SleepSummaryModel } }; function getModelCSVHeader(dataModel) { return dataModels[dataModel].data[0].split("\t"); } function getActivityMockupData(dataModel, dataDate, seed) { var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; mockupData = dataModels[dataModel].data; if (seed === null) { randGen = new utils.MersenneTwister(); } else { randGen = new utils.MersenneTwister(seed); } ["summary_date", "daily_movement", "cal_total", "day_start", "day_end", "steps", "cal_active"].forEach(function (key, i) { switch (key) { case "summary_date": var date = new Date(dataDate); mockupData[key] = "".concat(date.getFullYear(), "-").concat(('0' + (date.getMonth() + 1)).slice(-2), "-").concat(('0' + date.getDate()).slice(-2)); break; case "daily_movement": mockupData[key] = mockupModel[key](); break; case "cal_total": mockupData[key] = mockupModel[key](); break; case "day_start": var dayStartTime = mockupData[key].split("T")[1]; mockupData[key] = mockupData["summary_date"] + "T" + dayStartTime; break; case "day_end": var dayEndTime = mockupData[key].split("T")[1]; var dayEndDate = mockupModel[key](mockupData["summary_date"], 1); mockupData[key] = dayEndDate + "T" + dayEndTime; break; case "steps": mockupData[key] = mockupModel[key](mockupData["daily_movement"]); break; case "cal_active": mockupData[key] = mockupModel[key](mockupData["cal_total"]); break; } }); return mockupData; } function getReadinessMockupData(dataModel, dataDate) { var seed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; mockupData = dataModels[dataModel].data; if (seed === null) { randGen = new utils.MersenneTwister(); } else { randGen = new utils.MersenneTwister(seed); } ["summary_date", "period_id", "score_previous_night", "score_sleep_balance", "score_previous_day", "score_activity_balance", "score_resting_hr", "score_hrv_balance", "score_recovery_index", "score_temperature", "score", "rest_mode_state"].forEach(function (key, i) { switch (key) { case "summary_date": var date = new Date(dataDate); mockupData[key] = "".concat(date.getFullYear(), "-").concat(('0' + (date.getMonth() + 1)).slice(-2), "-").concat(('0' + date.getDate()).slice(-2)); break; case "score": mockupData[key] = mockupModel[key](mockupData["score_previous_night"], mockupData["score_sleep_balance"], mockupData["score_previous_day"], mockupData["score_activity_balance"], mockupData["score_resting_hr"], mockupData["score_hrv_balance"], mockupData["score_recovery_index"], mockupData["score_temperature"]); break; default: mockupData[key] = mockupModel[key](); break; } }); return mockupData; } function getSleepMockupData(dataModel, dataDate) { var seed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var mockupData = {}; var mockupModel = dataModels[dataModel].mockup; mockupData = dataModels[dataModel].data; if (seed === null) { randGen = new utils.MersenneTwister(); } else { randGen = new utils.MersenneTwister(seed); } ["summary_date", "bedtime_start", "timestamp", "timezone", "bedtime_end", "duration", "total", "awake", "light", "rem", "deep", "score_alignment", "score_deep", "score_rem", "score_latency", "score_efficiency", "score_disturbances", "score_total", "restless", "efficiency", "score", "temperature_delta", "hypnogram_5min", "hr_5min", "rmssd_5min", "hr_lowest", "hr_average"].forEach(function (key, i) { switch (key) { case "summary_date": var date = new Date(dataDate); mockupData[key] = "".concat(date.getFullYear(), "-").concat(('0' + (date.getMonth() + 1)).slice(-2), "-").concat(('0' + date.getDate()).slice(-2)); break; case "timezone": mockupData[key] = 0; // all dates are utc break; case "score": mockupData[key] = mockupModel[key](mockupData["score_alignment"], mockupData["score_deep"], mockupData["score_rem"], mockupData["score_latency"], mockupData["score_efficiency"], mockupData["score_disturbances"], mockupData["score_total"]); break; case "bedtime_start": mockupData[key] = mockupModel[key](mockupData["summary_date"], 22, 3); break; // sleepData model has this attribute... case "timestamp": mockupData[key] = mockupData["bedtime_start"]; break; case "bedtime_end": // sleep time 5-9h mockupData[key] = mockupModel[key](mockupData["bedtime_start"], [5 * 60, 9 * 60]); break; case "duration": mockupData[key] = mockupModel[key](mockupData["bedtime_start"], mockupData["bedtime_end"]); break; case "awake": case "efficiency": mockupData[key] = mockupModel[key](mockupData["duration"], mockupData["total"]); break; case "total": mockupData[key] = mockupModel[key](mockupData["duration"]); break; case "light": mockupData[key] = mockupModel[key](mockupData["total"]); break; case "rem": mockupData[key] = mockupModel[key](mockupData["total"] - mockupData["light"]); break; case "deep": mockupData[key] = mockupModel[key](mockupData["total"], mockupData["light"], mockupData["rem"]); break; case "hr_lowest": case "hr_average": mockupData[key] = mockupModel[key](mockupData["hr_5min"]); break; case "hypnogram_5min": case "hr_5min": case "rmssd_5min": mockupData[key] = mockupModel[key](mockupData["bedtime_start"], mockupData["bedtime_end"]); break; case "rmssd_5min": mockupData[key] = mockupModel[key](mockupData["duration"], mockupData["total"]); break; default: mockupData[key] = mockupModel[key](); break; } }); return mockupData; } exports.getActivityMockupData = getActivityMockupData; exports.getModelCSVHeader = getModelCSVHeader; exports.getReadinessMockupData = getReadinessMockupData; exports.getSleepMockupData = getSleepMockupData;