1
+
1
2
function getDateFromEntry ( entry ) {
2
3
return entry . date || Date . parse ( entry . display_time ) || Date . parse ( entry . dateString ) ;
3
4
}
4
5
5
6
var 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 ;
18
9
var change ;
19
10
var last_deltas = [ ] ;
20
11
var short_deltas = [ ] ;
21
12
var long_deltas = [ ] ;
22
13
var last_cal = 0 ;
23
14
24
15
//console.error(now.glucose);
25
- for ( var i = 1 ; i < data . length ; i ++ ) {
16
+ for ( var i = 0 ; i < data . length ; i ++ ) {
26
17
// 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" ) {
28
32
last_cal = i ;
29
33
break ;
30
34
}
35
+
31
36
// 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 ;
34
39
var then_date = getDateFromEntry ( then ) ;
35
40
var avgdelta = 0 ;
36
41
var minutesago ;
@@ -39,7 +44,10 @@ var getLastGlucose = function (data) {
39
44
// multiply by 5 to get the same units as delta, i.e. mg/dL/5m
40
45
change = now . glucose - then . glucose ;
41
46
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
+ }
43
51
//if (i < 5) {
44
52
//console.error(then.glucose, minutesago, avgdelta);
45
53
//}
@@ -60,6 +68,8 @@ var getLastGlucose = function (data) {
60
68
// long_deltas are calculated from everything ~20-40 minutes ago
61
69
} else if ( 17.5 < minutesago && minutesago < 42.5 ) {
62
70
long_deltas . push ( avgdelta ) ;
71
+ } else if ( minutesago > 42.5 ) {
72
+ break ;
63
73
}
64
74
}
65
75
}
0 commit comments