From 86e2493cb2671f3591efbe669520b3f8f0ce979c Mon Sep 17 00:00:00 2001 From: Jason Calabrese Date: Sat, 14 Mar 2015 10:55:23 -0700 Subject: [PATCH 1/2] do everything we can to find a BG for a treatment; better unit conversion --- static/js/client.js | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/static/js/client.js b/static/js/client.js index 2d5e06c5e..af4dc7fd8 100644 --- a/static/js/client.js +++ b/static/js/client.js @@ -1078,28 +1078,43 @@ var app = {}, browserSettings = {}, browserStorage = $.localStorage; } - function calcBGByTime(time) { + function scaledTreatmentBG(treatment) { + + function calcBGByTime(time) { var closeBGs = data.filter(function(d) { - if (!d.y) { - return false; - } else { - return Math.abs((new Date(d.date)).getTime() - time) <= SIX_MINS_IN_MS; - } + if (!d.y) { + return false; + } else { + return Math.abs((new Date(d.date)).getTime() - time) <= SIX_MINS_IN_MS; + } }); var totalBG = 0; closeBGs.forEach(function(d) { - totalBG += d.y; + totalBG += d.y; }); - return totalBG ? (totalBG / closeBGs.length) : 450; - } + return totalBG > 0 && closeBGs.length > 0 ? (totalBG / closeBGs.length) : 450; + } - function scaledTreatmentBG(treatment) { - //TODO: store units in db per treatment, and use that for conversion, until then assume glucose doesn't need to be scaled - // Care Portal treatment form does ask for the display units to be used - // other option is to convert on entry, but then need to correctly identify/handel old data - return treatment.glucose || scaleBg(calcBGByTime(treatment.created_at.getTime())); + var treatmentGlucose = null; + + if (isNaN(treatment.glucose)) { + if (treatment.glucose && treatment.units) { + if (treatment.units != browserSettings.units && treatment.units != 'mmol') { + //BG is in mg/dl and display in mmol + treatmentGlucose = scaleBg(treatment.glucose); + } else if (treatment.units != browserSettings.units && treatment.units == 'mmol') { + //BG is in mmol and display in mg/dl + treatmentGlucose = Math.round(treatment.glucose * 18) + } + } else { + //no units, assume everything is the same + treatmentGlucose = treatment.glucose; + } + } + + return treatmentGlucose || scaleBg(calcBGByTime(treatment.created_at.getTime())); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// From 686e9af444a0b4aba8c81b0f7b58df0ad769ffcc Mon Sep 17 00:00:00 2001 From: Jason Calabrese Date: Sat, 14 Mar 2015 12:27:04 -0700 Subject: [PATCH 2/2] fix from @sulkaharo, now we should be able to correctly render treatments no mater what BG unit is used --- static/js/client.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/js/client.js b/static/js/client.js index af4dc7fd8..5f2f209ac 100644 --- a/static/js/client.js +++ b/static/js/client.js @@ -1091,7 +1091,7 @@ var app = {}, browserSettings = {}, browserStorage = $.localStorage; var totalBG = 0; closeBGs.forEach(function(d) { - totalBG += d.y; + totalBG += Number(d.y); }); return totalBG > 0 && closeBGs.length > 0 ? (totalBG / closeBGs.length) : 450;