1+
12function getDateFromEntry ( entry ) {
23 return entry . date || Date . parse ( entry . display_time ) || Date . parse ( entry . dateString ) ;
34}
45
56var getLastGlucose = function ( data ) {
6- data = data . filter ( function ( obj ) {
7- return obj . glucose || obj . sgv ;
8- } ) . map ( function prepGlucose ( obj ) {
9- //Support the NS sgv field to avoid having to convert in a custom way
10- obj . glucose = obj . glucose || obj . sgv ;
11- if ( obj . glucose !== null ) {
12- return obj ;
13- }
14- } ) ;
15-
16- var now = data [ 0 ] ;
17- var now_date = getDateFromEntry ( now ) ;
7+ var now = undefined ;
8+ var now_date = undefined ;
189 var change ;
1910 var last_deltas = [ ] ;
2011 var short_deltas = [ ] ;
2112 var long_deltas = [ ] ;
2213 var last_cal = 0 ;
2314
2415 //console.error(now.glucose);
25- for ( var i = 1 ; i < data . length ; i ++ ) {
16+ for ( var i = 0 ; i < data . length ; i ++ ) {
2617 // if we come across a cal record, don't process any older SGVs
27- if ( typeof data [ i ] !== 'undefined' && data [ i ] . type === "cal" ) {
18+ var item = data [ i ] ;
19+ item . glucose = item . glucose || item . sgv ;
20+ if ( ! item . glucose ) {
21+ continue ;
22+ }
23+ if ( typeof now === 'undefined' ) {
24+ now = item ;
25+ now_date = getDateFromEntry ( item ) ;
26+ continue ;
27+ }
28+ if ( typeof now === 'undefined' ) {
29+ continue ;
30+ }
31+ if ( item . type === "cal" ) {
2832 last_cal = i ;
2933 break ;
3034 }
35+
3136 // only use data from the same device as the most recent BG data point
32- if ( typeof data [ i ] !== 'undefined' && data [ i ] . glucose > 38 && data [ i ] . device === now . device ) {
33- var then = data [ i ] ;
37+ if ( item . glucose > 38 && item . device === now . device ) {
38+ var then = item ;
3439 var then_date = getDateFromEntry ( then ) ;
3540 var avgdelta = 0 ;
3641 var minutesago ;
@@ -39,7 +44,10 @@ var getLastGlucose = function (data) {
3944 // multiply by 5 to get the same units as delta, i.e. mg/dL/5m
4045 change = now . glucose - then . glucose ;
4146 avgdelta = change / minutesago * 5 ;
42- } else { console . error ( "Error: date field not found: cannot calculate avgdelta" ) ; }
47+ } else {
48+ console . error ( "Error: date field not found: cannot calculate avgdelta" ) ;
49+ continue ;
50+ }
4351 //if (i < 5) {
4452 //console.error(then.glucose, minutesago, avgdelta);
4553 //}
@@ -60,6 +68,8 @@ var getLastGlucose = function (data) {
6068 // long_deltas are calculated from everything ~20-40 minutes ago
6169 } else if ( 17.5 < minutesago && minutesago < 42.5 ) {
6270 long_deltas . push ( avgdelta ) ;
71+ } else if ( minutesago > 42.5 ) {
72+ break ;
6373 }
6474 }
6575 }
0 commit comments