UNPKG

nightscout

Version:

Nightscout acts as a web-based CGM (Continuous Glucose Monitor) to allow multiple caregivers to remotely view a patients glucose data in realtime.

74 lines (61 loc) 1.75 kB
'use strict'; var moment = require('moment'); function get_time_spec (spec) { return moment(spec).toDate(); } function ddata_at (at, ctx, callback) { var ddata = ctx.ddata.clone( ); if (Math.abs(at - ddata.lastUpdated) < 1000 * 60 * 5) { return callback(null, ctx.ddata); } ctx.dataloader.update(ddata, {lastUpdated: at, frame: true}, function (err) { // console.log('results', err, result); // console.log('ddata', ddata); callback(err, ddata); }); } function get_ddata (req, res, next) { ddata_at(req.at.getTime( ), req.ctx, function (err, data) { res.data = data; // console.log('fetched results', err, data); console.error(err); next(err); }); } function ensure_at (req, res, next) { if (!req.at) { req.at = new Date( ); } next( ); } function format_result (req, res, next) { res.json(res.data); next( ); } /** * @method configure * Configure the ddata endpoints module, given an existing express app, common * middlewares, and the global app's `ctx`. * @param Express app The express app we'll mount onto. * @param Object ctx The global ctx with all modules, storage, and event buses * configured. */ function configure (app, ctx) { // default storage biased towards entries. // var entries = ctx.entries; var express = require('express'), api = express.Router( ) ; api.param('at', function (req, res, next, at) { req.at = get_time_spec(at); next( ); }); api.use(function (req, res, next) { req.ctx = ctx; next( ); }); api.get('/at/:at?', ensure_at, get_ddata, format_result); return api; } // expose module module.exports = configure;