forked from nightscout/cgm-remote-monitor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.js
86 lines (69 loc) · 2.2 KB
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
'use strict';
var _ = require('lodash');
var units = require('./units')();
function init(ctx) {
var moment = ctx.moment;
var settings = ctx.settings;
var translate = ctx.language.translate;
var timeago = require('./plugins/timeago')(ctx);
var utils = { };
utils.scaleMgdl = function scaleMgdl (mgdl) {
if (settings.units === 'mmol' && mgdl) {
return Number(units.mgdlToMMOL(mgdl));
} else {
return Number(mgdl);
}
};
utils.roundBGForDisplay = function roundBGForDisplay (bg) {
return settings.units === 'mmol' ? Math.round(bg * 10) / 10 : Math.round(bg);
};
utils.toFixed = function toFixed(value) {
if (!value) {
return '0';
} else {
var fixed = value.toFixed(2);
return fixed === '-0.00' ? '0.00' : fixed;
}
};
/**
* Round the number to maxDigits places, return a string
* that truncates trailing zeros
*/
utils.toRoundedStr = function toRoundedStr (value, maxDigits) {
if (!value) {
return '0';
}
const mult = Math.pow(10, maxDigits);
const fixed = Math.sign(value) * Math.round(Math.abs(value)*mult) / mult;
if (isNaN(fixed)) return '0';
return String(fixed);
};
// some helpers for input "date"
utils.mergeInputTime = function mergeInputTime(timestring, datestring) {
return moment(datestring + ' ' + timestring, 'YYYY-MM-D HH:mm');
};
utils.deviceName = function deviceName (device) {
var last = device ? _.last(device.split('://')) : 'unknown';
return _.first(last.split('/'));
};
utils.timeFormat = function timeFormat (m, sbx) {
var when;
if (m && sbx.data.inRetroMode) {
when = m.format('LT');
} else if (m) {
when = utils.formatAgo(m, sbx.time);
} else {
when = 'unknown';
}
return when;
};
utils.formatAgo = function formatAgo (m, nowMills) {
var ago = timeago.calcDisplay({mills: m.valueOf()}, nowMills);
return translate('%1' + ago.shortLabel + (ago.shortLabel.length === 1 ? ' ago' : ''), { params: [(ago.value ? ago.value : '')]});
};
utils.timeAt = function timeAt (prefix, sbx) {
return sbx.data.inRetroMode ? (prefix ? ' ' : '') + '@ ' : (prefix ? ', ' : '');
};
return utils;
}
module.exports = init;