From ac1fed55642a55052daacfa1c37df3764ffaafed Mon Sep 17 00:00:00 2001 From: John Weston Date: Mon, 17 Jul 2017 10:35:06 -0700 Subject: [PATCH 01/64] Fix clock trend arrow alignment in iOS7/8 --- static/clock-color.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/clock-color.html b/static/clock-color.html index 2673e9f4d9f..68057699965 100644 --- a/static/clock-color.html +++ b/static/clock-color.html @@ -54,8 +54,10 @@ display: flex; -ms-flex-align: center; -webkit-align-items: center; + -webkit-transform: translateX(1%); align-items: center; justify-content: center; + -webkit-flex-direction: column; flex-direction: column; } #arrowDiv { From 1643b96fc28af4ee836dcaa1354bfa934ab2b863 Mon Sep 17 00:00:00 2001 From: Tanja Schmidt Date: Tue, 25 Jul 2017 22:33:20 +0200 Subject: [PATCH 02/64] alexa translations --- lib/api/alexa/index.js | 78 ++++++++++++++++---------------- lib/language.js | 62 ++++++++++++++++++++++++- lib/plugins/alexa.js | 2 +- lib/plugins/basalprofile.js | 43 +++++++++++++----- tests/basalprofileplugin.test.js | 1 + tests/iob.test.js | 1 + 6 files changed, 134 insertions(+), 53 deletions(-) diff --git a/lib/api/alexa/index.js b/lib/api/alexa/index.js index ff233a53de0..ad1413b0980 100644 --- a/lib/api/alexa/index.js +++ b/lib/api/alexa/index.js @@ -7,8 +7,8 @@ var _ = require('lodash'); function configure (app, wares, ctx, env) { var entries = ctx.entries; var express = require('express') - , api = express.Router( ) - ; + , api = express.Router( ); + var translate = ctx.language.translate; // invoke common middleware api.use(wares.sendJSONStatus); @@ -43,7 +43,16 @@ function configure (app, wares, ctx, env) { }); api.post('/alexa', ctx.authorization.isPermitted('api:*:read'), function (req, res, next) { - console.log('Incoming request from Alexa'); + console.log('Incoming request from Alexa'); + var locale = req.body.request.locale; + if(locale){ + if(locale.length > 2) { + locale = locale.substr(0, 2); + } + ctx.language.set(locale); + moment.locale(locale); + } + switch (req.body.request.type) { case 'IntentRequest': onIntent(req.body.request.intent, function (title, response) { @@ -67,57 +76,48 @@ function configure (app, wares, ctx, env) { }); ctx.alexa.addToRollup('Status', function bgRollupHandler(slots, sbx, callback) { - entries.list({count: 1}, function(err, records) { - var direction = ''; - if (records[0].direction === 'FortyFiveDown') { - direction = ' and slightly dropping'; - } else if (records[0].direction === 'FortyFiveUp') { - direction = ' and slightly rising'; - } else if (records[0].direction === 'Flat') { - direction = ' and holding'; - } else if (records[0].direction === 'SingleUp') { - direction = ' and rising'; - } else if (records[0].direction === 'SingleDown') { - direction = ' and dropping'; - } else if (records[0].direction === 'DoubleDown') { - direction = ' and rapidly dropping'; - } else if (records[0].direction === 'DoubleUp') { - direction = ' and rapidly rising'; + entries.list({count: 1}, function (err, records) { + var direction; + if (translate(records[0].direction)) { + direction = translate(records[0].direction); } else { direction = records[0].direction; } - var status = sbx.scaleMgdl(records[0].sgv) + direction + ' as of ' + moment(records[0].date).from(moment(sbx.time)) + '.'; + var status = translate('alexaStatus', { + params: [ + sbx.scaleMgdl(records[0].sgv), + direction, + moment(records[0].date).from(moment(sbx.time)) + ] + }); + //var status = sbx.scaleMgdl(records[0].sgv) + direction + ' as of ' + moment(records[0].date).from(moment(sbx.time)) + '.'; callback(null, {results: status, priority: -1}); }); // console.log('BG results called'); // callback(null, 'BG results'); }, 'BG Status'); - ctx.alexa.configureIntentHandler('MetricNow', function (callback, slots, sbx) { + ctx.alexa.configureIntentHandler('MetricNow', function ( callback, slots, sbx, locale) { entries.list({count: 1}, function(err, records) { - var direction = ''; - if (records[0].direction === 'FortyFiveDown') { - direction = ' and slightly dropping'; - } else if (records[0].direction === 'FortyFiveUp') { - direction = ' and slightly rising'; - } else if (records[0].direction === 'Flat') { - direction = ' and holding'; - } else if (records[0].direction === 'SingleUp') { - direction = ' and rising'; - } else if (records[0].direction === 'SingleDown') { - direction = ' and dropping'; - } else if (records[0].direction === 'DoubleDown') { - direction = ' and rapidly dropping'; - } else if (records[0].direction === 'DoubleUp') { - direction = ' and rapidly rising'; + var direction; + if(translate(records[0].direction)){ + direction = translate(records[0].direction); + } else { + direction = records[0].direction; } - var status = sbx.scaleMgdl(records[0].sgv) + direction + ' as of ' + moment(records[0].date).from(moment(sbx.time)); + var status = translate('alexaStatus', { + params: [ + sbx.scaleMgdl(records[0].sgv), + direction, + moment(records[0].date).from(moment(sbx.time))] + }); + //var status = sbx.scaleMgdl(records[0].sgv) + direction + ' as of ' + moment(records[0].date).from(moment(sbx.time)); callback('Current blood glucose', status); }); }, 'metric', ['bg', 'blood glucose', 'number']); - ctx.alexa.configureIntentHandler('NSStatus', function(callback, slots, sbx) { - ctx.alexa.getRollup('Status', sbx, slots, function (status) { + ctx.alexa.configureIntentHandler('NSStatus', function(callback, slots, sbx, locale) { + ctx.alexa.getRollup('Status', sbx, slots, locale, function (status) { callback('Full status', status); }); }); diff --git a/lib/language.js b/lib/language.js index 5512548f48d..dabf17a9c4e 100644 --- a/lib/language.js +++ b/lib/language.js @@ -10130,7 +10130,67 @@ function init() { , 'Filter by hours' : { fi: 'Huomioi raportissa seuraavat tunnit' } - + ,'FortyFiveDown': { + en: 'slightly dropping', + de: 'leicht sinkend' + }, + 'FortyFiveUp': { + en: 'slightly rising', + de: 'leicht fallend' + }, + 'Flat': { + en: 'holding', + de: 'gleichbleibend' + }, + 'SingleUp': { + en: 'rising', + de: 'steigend' + }, + 'SingleDown': { + en: 'dropping', + de: 'sinkend' + }, + 'DoubleDown': { + en: 'rapidly dropping', + de: 'schnell sinkend' + }, + 'DoubleUp': { + en: 'rapidly rising', + de: 'schnell steigend' + }, + 'alexaStatus': { + en: '%1 and %2 as of %3.', + de: '%1 und bis %3 %2.' + }, + 'alexaBasal': { + en: '%1 current basal is %2 units per hour', + de: '%1 aktuelle Basalrate ist %2 Einheiten je Stunde' + }, + 'alexaBasalTemp': { + en: '%1 temp basal of %2 units per hour will end %3', + de: '%1 temporäre Basalrate von %2 Einheiten endet in %3' + }, + 'alexaIob': { + en: 'and you have %1 insulin on board.', + de: 'und du hast %1 Insulin wirkend.' + }, + 'alexaIobUnits': { + en: '%1 units of', + de: 'noch %1 Einheiten' + }, + 'alexaPreamble': { + en: 'Your', + de: 'Deine' + }, + 'alexaPreamble3person': { + en: '%1 has a ', + de: '%1 hat eine' + }, + 'alexaNoInsulin': { + en: 'no', + de: 'kein' + } + }; language.translations = translations; diff --git a/lib/plugins/alexa.js b/lib/plugins/alexa.js index 7be0dfe5258..38ae449c249 100644 --- a/lib/plugins/alexa.js +++ b/lib/plugins/alexa.js @@ -66,7 +66,7 @@ function init(env, ctx) { // status = _.orderBy(status, ['priority'], ['asc']) }; - alexa.getRollup = function(rollupGroup, sbx, slots, callback) { + alexa.getRollup = function(rollupGroup, sbx, slots, locale, callback) { var handlers = _.map(rollup[rollupGroup], 'handler'); console.log('Rollup array for ', rollupGroup); console.log(rollup[rollupGroup]); diff --git a/lib/plugins/basalprofile.js b/lib/plugins/basalprofile.js index d82421a2579..db47e2bf279 100644 --- a/lib/plugins/basalprofile.js +++ b/lib/plugins/basalprofile.js @@ -101,19 +101,38 @@ function init (ctx) { }; function basalMessage(slots, sbx) { - var basalValue = sbx.data.profile.getTempBasal(sbx.time); - var response = 'Unable to determine current basal'; - var preamble = ''; - if (basalValue.treatment) { - preamble = (slots && slots.pwd && slots.pwd.value) ? slots.pwd.value + ' has a ' : 'Your '; - var minutesLeft = moment(basalValue.treatment.endmills).from(moment(sbx.time)); - response = preamble + 'temp basal of ' + basalValue.totalbasal + ' units per hour will end ' + minutesLeft; - } else { - preamble = (slots && slots.pwd && slots.pwd.value) ? slots.pwd.value + ' ' : 'Your '; - response = preamble + 'current basal is ' + basalValue.totalbasal + ' units per hour'; + var basalValue = sbx.data.profile.getTempBasal(sbx.time); + var response = 'Unable to determine current basal'; + var preamble = ''; + if (basalValue.treatment) { + preamble = (slots && slots.pwd && slots.pwd.value) ? translate('alexaPreamble3person', { + params: [ + slots.pwd.value + ] + }) : translate('alexaPreamble'); + var minutesLeft = moment(basalValue.treatment.endmills).from(moment(sbx.time)); + response = translate('alexaBasalTemp', { + params: [ + preamble, + basalValue.totalbasal, + minutesLeft + ] + }); + } else { + preamble = (slots && slots.pwd && slots.pwd.value) ? translate('alexaPreamble3person', { + params: [ + slots.pwd.value + ] + }) : translate('alexaPreamble'); + response = translate('alexaBasal', { + params: [ + preamble, + basalValue.totalbasal + ] + }); + } + return response; } - return response; - } function alexaRollupCurrentBasalHandler (slots, sbx, callback) { callback(null, {results: basalMessage(slots, sbx), priority: 1}); diff --git a/tests/basalprofileplugin.test.js b/tests/basalprofileplugin.test.js index 40ac9563b23..634f150793b 100644 --- a/tests/basalprofileplugin.test.js +++ b/tests/basalprofileplugin.test.js @@ -8,6 +8,7 @@ describe('basalprofile', function ( ) { settings: {} , language: require('../lib/language')() }; + ctx.language.set('en'); ctx.ddata = require('../lib/data/ddata')(); ctx.notifications = require('../lib/notifications')(env, ctx); diff --git a/tests/iob.test.js b/tests/iob.test.js index e9ec18664b0..30872e4fb4d 100644 --- a/tests/iob.test.js +++ b/tests/iob.test.js @@ -6,6 +6,7 @@ var should = require('should'); describe('IOB', function() { var ctx = {}; ctx.language = require('../lib/language')(); + ctx.language.set('en'); var iob = require('../lib/plugins/iob')(ctx); From 94ec9771f8ef9e4154dc4328c97a9f886c8b8aeb Mon Sep 17 00:00:00 2001 From: Tanja Schmidt Date: Tue, 25 Jul 2017 22:55:57 +0200 Subject: [PATCH 03/64] alexa translations: iob --- lib/plugins/iob.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/plugins/iob.js b/lib/plugins/iob.js index 744afb2b39b..548ed66077c 100644 --- a/lib/plugins/iob.js +++ b/lib/plugins/iob.js @@ -244,21 +244,35 @@ function init(ctx) { }; function alexaIOBIntentHandler (callback, slots, sbx) { - var preamble = (slots && slots.pwd && slots.pwd.value) ? slots.pwd.value.replace('\'s', '') + ' has ' : 'You have '; + var preamble = + (slots && slots.pwd && slots.pwd.value) ? + translate('alexaPreamble3person', { + params: [ + slots.pwd.value.replace('\'s', '') + ] + }) : + translate('alexaPreamble'); var message = preamble + getIob(sbx) + ' insulin on board'; callback('Current IOB', message); } function alexaIOBRollupHandler (slots, sbx, callback) { - var message = 'and you have ' + getIob(sbx) + ' insulin on board.'; + var iob = getIob(sbx); + var message = translate('alexaIob', { + params: [iob] + }); callback(null, {results: message, priority: 2}); } function getIob(sbx) { if (sbx.properties.iob && sbx.properties.iob.iob !== 0) { - return utils.toFixed(sbx.properties.iob.iob) + ' units of'; + return translate('alexaIobUnits', { + params: [ + utils.toFixed(sbx.properties.iob.iob) + ] + }); } - return 'no'; + return translate('alexaNoInsulin'); } iob.alexa = { From 2e584ef7e85d4f8952ffa5d4ae4f4b77bb36eb81 Mon Sep 17 00:00:00 2001 From: Tanja Schmidt Date: Tue, 25 Jul 2017 23:24:52 +0200 Subject: [PATCH 04/64] alexa translations: iob --- lib/language.js | 6 +++++- lib/plugins/iob.js | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/language.js b/lib/language.js index dabf17a9c4e..7d449216737 100644 --- a/lib/language.js +++ b/lib/language.js @@ -10174,11 +10174,15 @@ function init() { en: 'and you have %1 insulin on board.', de: 'und du hast %1 Insulin wirkend.' }, + 'alexaIobIntent': { + en: 'You have %1 insulin on board', + de: 'Du hast noch %1 Insulin wirkend' + }, 'alexaIobUnits': { en: '%1 units of', de: 'noch %1 Einheiten' }, - 'alexaPreamble': { + 'alexaPreambleYour': { en: 'Your', de: 'Deine' }, diff --git a/lib/plugins/iob.js b/lib/plugins/iob.js index 548ed66077c..dcc0c4504a9 100644 --- a/lib/plugins/iob.js +++ b/lib/plugins/iob.js @@ -252,7 +252,14 @@ function init(ctx) { ] }) : translate('alexaPreamble'); - var message = preamble + getIob(sbx) + ' insulin on board'; + + var message = translate('alexaIobIntent', { + params: [ + //preamble, + getIob(sbx) + ] + }); + //preamble + + ' insulin on board'; callback('Current IOB', message); } From b0fc71bcd9af5da922c732962b3d14a2f99b6346 Mon Sep 17 00:00:00 2001 From: Tanja Schmidt Date: Tue, 25 Jul 2017 23:30:36 +0200 Subject: [PATCH 05/64] alexa translations: iob --- lib/language.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/language.js b/lib/language.js index 7d449216737..31363f41f0d 100644 --- a/lib/language.js +++ b/lib/language.js @@ -10182,7 +10182,7 @@ function init() { en: '%1 units of', de: 'noch %1 Einheiten' }, - 'alexaPreambleYour': { + 'alexaPreamble': { en: 'Your', de: 'Deine' }, From 2b42cc4cbaf479ac564af059c7b2d4bd26e62164 Mon Sep 17 00:00:00 2001 From: Tanja Schmidt Date: Thu, 27 Jul 2017 22:20:28 +0200 Subject: [PATCH 06/64] alexa translations: default en --- lib/language.js | 412 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 366 insertions(+), 46 deletions(-) diff --git a/lib/language.js b/lib/language.js index 31363f41f0d..715c23359a0 100644 --- a/lib/language.js +++ b/lib/language.js @@ -9294,7 +9294,7 @@ function init() { ,fi: 'Tarkista VS, aika bolustaa?' ,pt: 'Meça a glicemia, hora de bolus de correção?' ,sk: 'Skontrolovať glykémiu, čas na bolus?' - ,it: 'Controllare BG, il tempo del bolo?' + ,it: 'Controllare BG, il tempo del bolo?' ,nl: 'Controleer BG, tijd om te bolussen?' ,zh_cn: '测量血糖,该输注大剂量了?' } @@ -9398,7 +9398,7 @@ function init() { ,ro: 'Insulină în exces: %1U mai mult decât este necesar pentru a atinge ținta inferioară, fără a ține cont de carbohidrați' ,bg: 'Излишният инсулин %1U е повече от необходимия за достигане до долната граница, ВХ не се вземат под внимание' ,ru: 'Избыток инсулина равного %1U, необходимого для достижения нижнего целевого значения, углеводы не будут учтены' - ,sv: 'Överskott av insulin motsvarande %1U mer än nödvändigt för att nå lågt målvärde, kolhydrater ej medräknade' + ,sv: 'Överskott av insulin motsvarande %1U mer än nödvändigt för att nå lågt målvärde, kolhydrater ej medräknade' ,nb: 'Insulin tilsvarende %1U mer enn det trengs for å nå lavt mål, karbohydrater ikke medregnet' ,fi: 'Liikaa insuliinia: %1U enemmän kuin tarvitaan tavoitteeseen pääsyyn (huomioimatta hiilihydraatteja)' ,pt: 'Excesso de insulina equivalente a %1U além do necessário para atingir a meta inferior, sem levar em conta carboidratos' @@ -9934,9 +9934,9 @@ function init() { ,sv: '%1d sedan' ,nb: '%1d siden' ,fi: '%1d sitten' - ,pt: '%1d atrás' + ,pt: '%1d atrás' ,sk: 'pred %1d' - ,it: '%1d fa' + ,it: '%1d fa' ,nl: '%1d geleden' ,zh_cn: '%1天前' } @@ -9948,7 +9948,7 @@ function init() { ,sv: 'RETRO' ,nb: 'GAMMELT' ,fi: 'RETRO' - ,pt: 'RETRO' + ,pt: 'RETRO' ,sk: 'RETRO' ,it: 'RETRO' ,nl: 'RETRO' @@ -9962,7 +9962,7 @@ function init() { ,sv: 'Sensor' ,nb: 'Sensoralder' ,fi: 'SIKÄ' - ,pt: 'IddS' + ,pt: 'IddS' ,sk: 'SENZ' ,it: 'SAGE' ,nl: 'SAGE' @@ -9977,7 +9977,7 @@ function init() { ,sv: 'Sensor byte/omstart överskriden!' ,nb: 'Sensor bytte/omstart overskredet!' ,fi: 'Sensorin vaihto/uudelleenkäynnistys yli määräajan!' - ,pt: 'Substituição/reinício de sensor vencido' + ,pt: 'Substituição/reinício de sensor vencido' ,sk: 'Čas na výmenu/reštart sensoru uplynul!' ,it: 'Cambio/riavvio del sensore in ritardo!' ,nl: 'Sensor vevang/hertstart tijd gepasseerd' @@ -9991,7 +9991,7 @@ function init() { ,sv: 'Dags att byta/starta om sensorn' ,nb: 'På tide å bytte/restarte sensoren' ,fi: 'Aika vaihtaa / käynnistää sensori uudelleen' - ,pt: 'Hora de substituir/reiniciar sensor' + ,pt: 'Hora de substituir/reiniciar sensor' ,sk: 'Čas na výmenu/reštart senzoru' ,it: 'Tempo di cambiare/riavvio sensore' ,nl: 'Sensor vervangen of herstarten' @@ -10005,7 +10005,7 @@ function init() { ,sv: 'Byt/starta om sensorn snart' ,nb: 'Bytt/restarta sensoren snart' ,fi: 'Vaihda/käynnistä sensori uudelleen pian' - ,pt: 'Mudar/reiniciar sensor em breve' + ,pt: 'Mudar/reiniciar sensor em breve' ,sk: 'Čoskoro bude potrebné vymeniť/reštartovať senzor' ,it: 'Modifica/riavvio sensore prossimamente' ,nl: 'Herstart of vervang sensor binnenkort' @@ -10019,7 +10019,7 @@ function init() { ,sv: 'Sensorålder %1 dagar %2 timmar' ,nb: 'Sensoralder %1 dag %2 timer' ,fi: 'Sensorin ikä %1 päivää, %2 tuntia' - ,pt: 'Idade do sensor %1 dias %2 horas' + ,pt: 'Idade do sensor %1 dias %2 horas' ,sk: 'Vek senzoru %1 dní %2 hodín' ,it: 'Durata Sensore %1 giorni %2 ore' ,nl: 'Sensor leeftijd %1 dag(en) en %2 uur' @@ -10033,7 +10033,7 @@ function init() { ,sv: 'Sensor insättning' ,nb: 'Sensor satt inn' ,fi: 'Sensorin Vaihto' - ,pt: 'Inserção de sensor' + ,pt: 'Inserção de sensor' ,sk: 'Výmena senzoru' ,it: 'SAGE - inserimento sensore' ,nl: 'Sensor ingebracht' @@ -10047,7 +10047,7 @@ function init() { ,sv: 'Sensorstart' ,nb: 'Sensorstart' ,fi: 'Sensorin Aloitus' - ,pt: 'Início de sensor' + ,pt: 'Início de sensor' ,sk: 'Štart senzoru' ,it: 'SAGE - partenza sensore' ,nl: 'Sensor start' @@ -10130,69 +10130,389 @@ function init() { , 'Filter by hours' : { fi: 'Huomioi raportissa seuraavat tunnit' } - ,'FortyFiveDown': { - en: 'slightly dropping', - de: 'leicht sinkend' - }, + , 'FortyFiveDown': { + bg: 'slightly dropping' + , cs: 'slightly dropping' + , de: 'leicht sinkend' + , dk: 'slightly dropping' + , el: 'slightly dropping' + , en: 'slightly dropping' + , es: 'slightly dropping' + , fi: 'slightly dropping' + , fr: 'slightly dropping' + , he: 'slightly dropping' + , hr: 'slightly dropping' + , it: 'slightly dropping' + , ko: 'slightly dropping' + , nb: 'slightly dropping' + , pl: 'slightly dropping' + , pt: 'slightly dropping' + , ro: 'slightly dropping' + , ru: 'slightly dropping' + , sk: 'slightly dropping' + , sv: 'slightly dropping' + , zh_cn: 'slightly dropping' + , zh_tw: 'slightly dropping' + }, 'FortyFiveUp': { - en: 'slightly rising', - de: 'leicht fallend' + bg: 'slightly rising' + , cs: 'slightly rising' + , de: 'leicht fallend' + , dk: 'slightly rising' + , el: 'slightly rising' + , en: 'slightly rising' + , es: 'slightly rising' + , fi: 'slightly rising' + , fr: 'slightly rising' + , he: 'slightly rising' + , hr: 'slightly rising' + , it: 'slightly rising' + , ko: 'slightly rising' + , nb: 'slightly rising' + , pl: 'slightly rising' + , pt: 'slightly rising' + , ro: 'slightly rising' + , ru: 'slightly rising' + , sk: 'slightly rising' + , sv: 'slightly rising' + , zh_cn: 'slightly rising' + , zh_tw: 'slightly rising' }, 'Flat': { - en: 'holding', - de: 'gleichbleibend' + bg: 'holding' + , cs: 'holding' + , de: 'gleichbleibend' + , dk: 'holding' + , el: 'holding' + , en: 'holding' + , es: 'holding' + , fi: 'holding' + , fr: 'holding' + , he: 'holding' + , hr: 'holding' + , it: 'holding' + , ko: 'holding' + , nb: 'holding' + , pl: 'holding' + , pt: 'holding' + , ro: 'holding' + , ru: 'holding' + , sk: 'holding' + , sv: 'holding' + , zh_cn: 'holding' + , zh_tw: 'holding' }, 'SingleUp': { - en: 'rising', - de: 'steigend' + bg: 'rising' + , cs: 'rising' + , de: 'steigend' + , dk: 'rising' + , el: 'rising' + , en: 'rising' + , es: 'rising' + , fi: 'rising' + , fr: 'rising' + , he: 'rising' + , hr: 'rising' + , it: 'rising' + , ko: 'rising' + , nb: 'rising' + , pl: 'rising' + , pt: 'rising' + , ro: 'rising' + , ru: 'rising' + , sk: 'rising' + , sv: 'rising' + , zh_cn: 'rising' + , zh_tw: 'rising' }, 'SingleDown': { - en: 'dropping', - de: 'sinkend' + bg: 'dropping' + , cs: 'dropping' + , de: 'sinkend' + , dk: 'dropping' + , el: 'dropping' + , en: 'dropping' + , es: 'dropping' + , fi: 'dropping' + , fr: 'dropping' + , he: 'dropping' + , hr: 'dropping' + , it: 'dropping' + , ko: 'dropping' + , nb: 'dropping' + , pl: 'dropping' + , pt: 'dropping' + , ro: 'dropping' + , ru: 'dropping' + , sk: 'dropping' + , sv: 'dropping' + , zh_cn: 'dropping' + , zh_tw: 'dropping' }, 'DoubleDown': { - en: 'rapidly dropping', - de: 'schnell sinkend' + bg: 'rapidly dropping' + , cs: 'rapidly dropping' + , de: 'schnell sinkend' + , dk: 'rapidly dropping' + , el: 'rapidly dropping' + , en: 'rapidly dropping' + , es: 'rapidly dropping' + , fi: 'rapidly dropping' + , fr: 'rapidly dropping' + , he: 'rapidly dropping' + , hr: 'rapidly dropping' + , it: 'rapidly dropping' + , ko: 'rapidly dropping' + , nb: 'rapidly dropping' + , pl: 'rapidly dropping' + , pt: 'rapidly dropping' + , ro: 'rapidly dropping' + , ru: 'rapidly dropping' + , sk: 'rapidly dropping' + , sv: 'rapidly dropping' + , zh_cn: 'rapidly dropping' + , zh_tw: 'rapidly dropping' }, 'DoubleUp': { - en: 'rapidly rising', - de: 'schnell steigend' + bg: 'rapidly rising' + , cs: 'rapidly rising' + , de: 'schnell steigend' + , dk: 'rapidly rising' + , el: 'rapidly rising' + , en: 'rapidly rising' + , es: 'rapidly rising' + , fi: 'rapidly rising' + , fr: 'rapidly rising' + , he: 'rapidly rising' + , hr: 'rapidly rising' + , it: 'rapidly rising' + , ko: 'rapidly rising' + , nb: 'rapidly rising' + , pl: 'rapidly rising' + , pt: 'rapidly rising' + , ro: 'rapidly rising' + , ru: 'rapidly rising' + , sk: 'rapidly rising' + , sv: 'rapidly rising' + , zh_cn: 'rapidly rising' + , zh_tw: 'rapidly rising' }, 'alexaStatus': { - en: '%1 and %2 as of %3.', - de: '%1 und bis %3 %2.' + bg: '%1 and %2 as of %3.' + , cs: '%1 and %2 as of %3.' + , de: '%1 und bis %3 %2.' + , dk: '%1 and %2 as of %3.' + , el: '%1 and %2 as of %3.' + , en: '%1 and %2 as of %3.' + , es: '%1 and %2 as of %3.' + , fi: '%1 and %2 as of %3.' + , fr: '%1 and %2 as of %3.' + , he: '%1 and %2 as of %3.' + , hr: '%1 and %2 as of %3.' + , it: '%1 and %2 as of %3.' + , ko: '%1 and %2 as of %3.' + , nb: '%1 and %2 as of %3.' + , pl: '%1 and %2 as of %3.' + , pt: '%1 and %2 as of %3.' + , ro: '%1 and %2 as of %3.' + , ru: '%1 and %2 as of %3.' + , sk: '%1 and %2 as of %3.' + , sv: '%1 and %2 as of %3.' + , zh_cn: '%1 and %2 as of %3.' + , zh_tw: '%1 and %2 as of %3.' }, 'alexaBasal': { - en: '%1 current basal is %2 units per hour', - de: '%1 aktuelle Basalrate ist %2 Einheiten je Stunde' + bg: '%1 current basal is %2 units per hour' + , cs: '%1 current basal is %2 units per hour' + , de: '%1 aktuelle Basalrate ist %2 Einheiten je Stunde' + , dk: '%1 current basal is %2 units per hour' + , el: '%1 current basal is %2 units per hour' + , en: '%1 current basal is %2 units per hour' + , es: '%1 current basal is %2 units per hour' + , fi: '%1 current basal is %2 units per hour' + , fr: '%1 current basal is %2 units per hour' + , he: '%1 current basal is %2 units per hour' + , hr: '%1 current basal is %2 units per hour' + , it: '%1 current basal is %2 units per hour' + , ko: '%1 current basal is %2 units per hour' + , nb: '%1 current basal is %2 units per hour' + , pl: '%1 current basal is %2 units per hour' + , pt: '%1 current basal is %2 units per hour' + , ro: '%1 current basal is %2 units per hour' + , ru: '%1 current basal is %2 units per hour' + , sk: '%1 current basal is %2 units per hour' + , sv: '%1 current basal is %2 units per hour' + , zh_cn: '%1 current basal is %2 units per hour' + , zh_tw: '%1 current basal is %2 units per hour' }, 'alexaBasalTemp': { - en: '%1 temp basal of %2 units per hour will end %3', - de: '%1 temporäre Basalrate von %2 Einheiten endet in %3' + bg: '%1 temp basal of %2 units per hour will end %3' + , cs: '%1 temp basal of %2 units per hour will end %3' + , de: '%1 temporäre Basalrate von %2 Einheiten endet in %3' + , dk: '%1 temp basal of %2 units per hour will end %3' + , el: '%1 temp basal of %2 units per hour will end %3' + , en: '%1 temp basal of %2 units per hour will end %3' + , es: '%1 temp basal of %2 units per hour will end %3' + , fi: '%1 temp basal of %2 units per hour will end %3' + , fr: '%1 temp basal of %2 units per hour will end %3' + , he: '%1 temp basal of %2 units per hour will end %3' + , hr: '%1 temp basal of %2 units per hour will end %3' + , it: '%1 temp basal of %2 units per hour will end %3' + , ko: '%1 temp basal of %2 units per hour will end %3' + , nb: '%1 temp basal of %2 units per hour will end %3' + , pl: '%1 temp basal of %2 units per hour will end %3' + , pt: '%1 temp basal of %2 units per hour will end %3' + , ro: '%1 temp basal of %2 units per hour will end %3' + , ru: '%1 temp basal of %2 units per hour will end %3' + , sk: '%1 temp basal of %2 units per hour will end %3' + , sv: '%1 temp basal of %2 units per hour will end %3' + , zh_cn: '%1 temp basal of %2 units per hour will end %3' + , zh_tw: '%1 temp basal of %2 units per hour will end %3' }, 'alexaIob': { - en: 'and you have %1 insulin on board.', - de: 'und du hast %1 Insulin wirkend.' + bg: 'and you have %1 insulin on board.' + , cs: 'and you have %1 insulin on board.' + , de: 'und du hast %1 Insulin wirkend.' + , dk: 'and you have %1 insulin on board.' + , el: 'and you have %1 insulin on board.' + , en: 'and you have %1 insulin on board.' + , es: 'and you have %1 insulin on board.' + , fi: 'and you have %1 insulin on board.' + , fr: 'and you have %1 insulin on board.' + , he: 'and you have %1 insulin on board.' + , hr: 'and you have %1 insulin on board.' + , it: 'and you have %1 insulin on board.' + , ko: 'and you have %1 insulin on board.' + , nb: 'and you have %1 insulin on board.' + , pl: 'and you have %1 insulin on board.' + , pt: 'and you have %1 insulin on board.' + , ro: 'and you have %1 insulin on board.' + , ru: 'and you have %1 insulin on board.' + , sk: 'and you have %1 insulin on board.' + , sv: 'and you have %1 insulin on board.' + , zh_cn: 'and you have %1 insulin on board.' + , zh_tw: 'and you have %1 insulin on board.' }, 'alexaIobIntent': { - en: 'You have %1 insulin on board', - de: 'Du hast noch %1 Insulin wirkend' + bg: 'You have %1 insulin on board' + , cs: 'You have %1 insulin on board' + , de: 'Du hast noch %1 Insulin wirkend' + , dk: 'You have %1 insulin on board' + , el: 'You have %1 insulin on board' + , en: 'You have %1 insulin on board' + , es: 'You have %1 insulin on board' + , fi: 'You have %1 insulin on board' + , fr: 'You have %1 insulin on board' + , he: 'You have %1 insulin on board' + , hr: 'You have %1 insulin on board' + , it: 'You have %1 insulin on board' + , ko: 'You have %1 insulin on board' + , nb: 'You have %1 insulin on board' + , pl: 'You have %1 insulin on board' + , pt: 'You have %1 insulin on board' + , ro: 'You have %1 insulin on board' + , ru: 'You have %1 insulin on board' + , sk: 'You have %1 insulin on board' + , sv: 'You have %1 insulin on board' + , zh_cn: 'You have %1 insulin on board' + , zh_tw: 'You have %1 insulin on board' }, 'alexaIobUnits': { - en: '%1 units of', - de: 'noch %1 Einheiten' + bg: '%1 units of' + , cs: '%1 units of' + , de: 'noch %1 Einheiten' + , dk: '%1 units of' + , el: '%1 units of' + , en: '%1 units of' + , es: '%1 units of' + , fi: '%1 units of' + , fr: '%1 units of' + , he: '%1 units of' + , hr: '%1 units of' + , it: '%1 units of' + , ko: '%1 units of' + , nb: '%1 units of' + , pl: '%1 units of' + , pt: '%1 units of' + , ro: '%1 units of' + , ru: '%1 units of' + , sk: '%1 units of' + , sv: '%1 units of' + , zh_cn: '%1 units of' + , zh_tw: '%1 units of' }, 'alexaPreamble': { - en: 'Your', - de: 'Deine' + bg: 'Your' + , cs: 'Your' + , de: 'Deine' + , dk: 'Your' + , el: 'Your' + , en: 'Your' + , es: 'Your' + , fi: 'Your' + , fr: 'Your' + , he: 'Your' + , hr: 'Your' + , it: 'Your' + , ko: 'Your' + , nb: 'Your' + , pl: 'Your' + , pt: 'Your' + , ro: 'Your' + , ru: 'Your' + , sk: 'Your' + , sv: 'Your' + , zh_cn: 'Your' + , zh_tw: 'Your' }, 'alexaPreamble3person': { - en: '%1 has a ', - de: '%1 hat eine' + bg: '%1 has a ' + , cs: '%1 has a ' + , de: '%1 hat eine' + , dk: '%1 has a ' + , el: '%1 has a ' + , en: '%1 has a ' + , es: '%1 has a ' + , fi: '%1 has a ' + , fr: '%1 has a ' + , he: '%1 has a ' + , hr: '%1 has a ' + , it: '%1 has a ' + , ko: '%1 has a ' + , nb: '%1 has a ' + , pl: '%1 has a ' + , pt: '%1 has a ' + , ro: '%1 has a ' + , ru: '%1 has a ' + , sk: '%1 has a ' + , sv: '%1 has a ' + , zh_cn: '%1 has a ' + , zh_tw: '%1 has a ' }, 'alexaNoInsulin': { - en: 'no', - de: 'kein' + bg: 'no' + , cs: 'no' + , de: 'kein' + , dk: 'no' + , el: 'no' + , en: 'no' + , es: 'no' + , fi: 'no' + , fr: 'no' + , he: 'no' + , hr: 'no' + , it: 'no' + , ko: 'no' + , nb: 'no' + , pl: 'no' + , pt: 'no' + , ro: 'no' + , ru: 'no' + , sk: 'no' + , sv: 'no' + , zh_cn: 'no' + , zh_tw: 'no' } }; From 25305968c382de9c8d0bd9a812f25890fa0e3f63 Mon Sep 17 00:00:00 2001 From: Bog Dan Date: Sat, 26 Aug 2017 09:14:26 +0300 Subject: [PATCH 07/64] RO update August, 27th - 2017 RO update --- lib/language.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/language.js b/lib/language.js index 1a05ca717c2..ea46e0fc7d7 100644 --- a/lib/language.js +++ b/lib/language.js @@ -10125,52 +10125,62 @@ function init() { } ,'Time in fluctuation' : { fi: 'Aika muutoksessa' - ,it: 'Tempo in fluttuazione' + ,it: 'Tempo in fluttuazione' + ,ro: 'Timp în fluctuație' ,ru: 'время флуктуаций' } ,'Time in rapid fluctuation' : { fi: 'Aika nopeassa muutoksessa' ,it: 'Tempo in rapida fluttuazione' + ,ro: 'Timp în fluctuație rapidă' ,ru: 'время быстрых флуктуаций' } ,'This is only a rough estimation that can be very inaccurate and does not replace actual blood testing. The formula used is taken from:' : { fi: 'Tämä on epätarkka arvio joka saattaa heittää huomattavasti mittaustuloksesta, eikä korvaa laboratoriotestiä. Laskentakaava on otettu artikkelista: ' ,it: 'Questa è solo un\'approssimazione che può essere molto inaccurata e che non sostituisce la misurazione capillare. La formula usata è presa da:' + ,ro: 'Aceasta este doar o aproximare brută, care poate fi foarte imprecisă și nu ține loc de testare capilară. Formula matematică folosită este luată din:' ,ru: 'Это приблизительная оценка не заменяющая фактический анализ крови. Используемая формула взята из:' } , 'Filter by hours' : { fi: 'Huomioi raportissa seuraavat tunnit' ,it: 'Filtra per ore' + ,ro: 'Filtrare pe ore' ,ru: 'почасовой фильтр' } , 'Time in fluctuation and Time in rapid fluctuation measure the % of time during the examined period, during which the blood glucose has been changing relatively fast or rapidly. Lower values are better.' : { fi: 'Aika Muutoksessa ja Aika Nopeassa Muutoksessa mittaa osuutta tarkkailtavasta aikaperiodista, jolloin glukoosi on ollut nopeassa tai hyvin nopeassa muutoksessa. Pienempi arvo on parempi.' ,it: 'Tempo in fluttuazione e Tempo in rapida fluttuazione misurano la % di tempo durante il periodo esaminato, durante il quale la glicemia stà variando velocemente o rapidamente. Bassi valori sono migliori.' + ,ro: 'Timpul în fluctuație și timpul în fluctuație rapidă măsoară procentul de timp, din perioada examinată, în care glicemia din sânge a avut o variație relativ rapidă sau rapidă. Valorile mici sunt de preferat.' ,ru: 'время флуктуаций и время быстрых флуктуаций означает % времени в рассматриваемый период в течение которого СК менялся относительно быстро или просто быстро. Более низкие значения предпочтительней' } , 'Mean Total Daily Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of days. Lower is better.' : { fi: 'Keskimääräinen Kokonaismuutos kertoo kerkimääräisen päivätason verensokerimuutoksien yhteenlasketun arvon. Pienempi arvo on parempi.' ,it: 'Media Totale Giornaliera Variazioni è la somma dei valori assoluti di tutte le escursioni glicemiche per il periodo esaminato, diviso per il numero di giorni. Bassi valori sono migliori.' + ,ro: 'Schimbarea medie totală zilnică este suma valorilor absolute ale tuturor excursiilor glicemice din perioada examinată, împărțite la numărul de zile. Valorile mici sunt de preferat.' ,ru: 'усредненное ежедневное изменение это сумма абсолютных величин всех отклонений СК в рассматриваемый период, деленное на количество дней. Меньшая величина предпочтительней' } , 'Mean Hourly Change is a sum of the absolute value of all glucose excursions for the examined period, divided by the number of hours in the period. Lower is better.' : { fi: 'Keskimääräinen tunti kertoo kerkimääräisen tuntitason verensokerimuutoksien yhteenlasketun arvon. Pienempi arvo on parempi.' ,it: 'Media Oraria Variazioni è la somma del valore assoluto di tutte le escursioni glicemiche per il periodo esaminato, diviso per il numero di ore. Bassi valori sono migliori.' + ,ro: 'Variația media orară este suma valorilor absolute ale tuturor excursiilor glicemice din perioada examinată, împărțite la numărul de ore din aceeași perioadă. Valorile mici sunt de preferat.' ,ru: 'усредненное часовое изменение это сумма абсолютных величин всех отклонений СК в рассматриваемый период, деленное на количество часов в этот период. Более низкое предпочтительней' } , 'GVI and PGS are measures developed by Dexcom, detailed here.' : { fi: 'GVI ja PGS ovat Dexcom-yrityksen kehittämiä mittaustapoja, joista voit lukea lisää täällä..' ,it: 'GVI e PGS sono misure sviluppate da Dexcom, dettagliate qui.' + ,ro: 'GVI și PGS sunt caracteristici de măsurare inventate de Dexcom, ale căror detalii le găsiți aici.' ,ru: 'вариабельность гликемии и статус гликемии больного это величины, разработанные декскомом, подробнее here.' } , 'Mean Total Daily Change' : { fi: 'Keskimääräinen Kokonaismuutos' ,it: 'Media Totale Giornaliera Variazioni' + ,ro: 'Variația medie totală zilnică' ,ru: 'усредненное изменение за день' } , 'Mean Hourly Change' : { fi: 'Keskimääräinen tuntimuutos' ,it: 'Media Oraria Variazioni' + ,ro: 'Variația medie orară' ,ru: 'усредненное изменение за час' } From eda7c7743cf3b4efe6a73db1bfad2896a6e7c66a Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sat, 26 Aug 2017 11:54:25 +0300 Subject: [PATCH 08/64] Trigger app on DOM ready event (as recommended by HTML5 spec). Detect if app is completely offline, auto-reload if needed. --- lib/client/index.js | 15 +++++++++++++-- package-lock.json | 5 +++-- static/admin/index.html | 4 ++-- static/bgclock.html | 2 +- static/clock-color.html | 2 +- static/clock.html | 2 +- static/css/main.css | 25 +++++++++++++++++++++++++ static/food/index.html | 4 ++-- static/images/launch.png | Bin 8426 -> 17702 bytes static/index.html | 13 +++++++++---- static/js/client.js | 10 +++++++++- static/nightscout.appcache | 10 +++++----- static/profile/index.html | 4 ++-- static/report/index.html | 8 ++++---- static/translations/index.html | 2 +- 15 files changed, 78 insertions(+), 28 deletions(-) diff --git a/lib/client/index.js b/lib/client/index.js index 1e638ef17a0..979ecd6245d 100644 --- a/lib/client/index.js +++ b/lib/client/index.js @@ -55,11 +55,22 @@ client.init = function init(callback) { , headers: client.headers() }).done(function success (serverSettings) { client.settingsFailed = false; + console.log('Application appears to be online'); + $('#centerMessagePanel').hide(); client.load(serverSettings, callback); - }).fail(function fail( ) { + }).fail(function fail(jqXHR, textStatus, errorThrown) { + + // check if we couldn't reach the server at all, show offline message + if (jqXHR.readyState == 0) { + console.log('Application appears to be OFFLINE'); + $('#loadingMessage').html('

Your device appears to be offline

Connecting to Nightscout server failed, retrying in 2 seconds

'); + window.setTimeout(window.Nightscout.client.init(), 2000); + return; + } + //no server setting available, use defaults, auth, etc if (client.settingsFailed) { - console.info('Already tried to get settings after auth, but failed'); + console.log('Already tried to get settings after auth, but failed'); } else { client.settingsFailed = true; language.set('en'); diff --git a/package-lock.json b/package-lock.json index 461e89ac757..ea7012b7342 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "Nightscout", - "version": "0.10.0-dev-20170716", + "version": "0.10.0-dev-20170823", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -6582,7 +6582,8 @@ "uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=" + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true }, "uglifyjs-webpack-plugin": { "version": "0.4.6", diff --git a/static/admin/index.html b/static/admin/index.html index d89d255c2a5..177e56f24ef 100644 --- a/static/admin/index.html +++ b/static/admin/index.html @@ -45,8 +45,8 @@

Admin Tools

Authentication status: - + - + diff --git a/static/bgclock.html b/static/bgclock.html index 1f7b3544e7e..b206a070bf2 100644 --- a/static/bgclock.html +++ b/static/bgclock.html @@ -41,7 +41,7 @@

- + - + - + + - + diff --git a/static/images/launch.png b/static/images/launch.png index 34d6899bd0ad9d92c86053244ffd3aa3c6997200..b47537c76b987e25f2e72abb01d7994c18d3b12d 100644 GIT binary patch literal 17702 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 - + +
+
+ +
+
- - - + + + diff --git a/static/js/client.js b/static/js/client.js index df43f5229d8..179edcf68df 100644 --- a/static/js/client.js +++ b/static/js/client.js @@ -1,3 +1,11 @@ 'use strict'; -window.Nightscout.client.init(); +$(document).on('online', function() { + console.log('Application got online event, reloading'); + window.location.reload(); +}); + +$(document).ready(function() { + console.log('Application got ready event'); + window.Nightscout.client.init(); +}); \ No newline at end of file diff --git a/static/nightscout.appcache b/static/nightscout.appcache index 2986ee8338f..beb832695b9 100644 --- a/static/nightscout.appcache +++ b/static/nightscout.appcache @@ -24,11 +24,11 @@ CACHE MANIFEST /css/ui-darkness/images/ui-icons_cccccc_256x240.png /css/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png /css/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png -/css/main.css?v=0.10.0-dev-20170821 -/js/bundle.js?v=0.10.0-dev-20170821 -/socket.io/socket.io.js?v=0.10.0-dev-20170821 -/js/client.js?v=0.10.0-dev-20170821 +/css/main.css?v=8.1.4-dev-2017082601 +/js/bundle.js?v=8.1.4-dev-2017082601 +/socket.io/socket.io.js?v=8.1.4-dev-2017082601 +/js/client.js?v=8.1.4-dev-2017082601 /images/logo2.png NETWORK: -* \ No newline at end of file +* diff --git a/static/profile/index.html b/static/profile/index.html index c3e6cc7e46c..d3810999b49 100644 --- a/static/profile/index.html +++ b/static/profile/index.html @@ -173,8 +173,8 @@

Profile Editor

- + - + diff --git a/static/report/index.html b/static/report/index.html index cd36a128d08..ca5be14be96 100644 --- a/static/report/index.html +++ b/static/report/index.html @@ -23,7 +23,7 @@ - + @@ -117,9 +117,9 @@

Nightscout reporting Authentication status: - + - - + + diff --git a/static/translations/index.html b/static/translations/index.html index c27428c5089..12d1ce1e6db 100644 --- a/static/translations/index.html +++ b/static/translations/index.html @@ -33,7 +33,7 @@

Nightscout translations
Authentication status: - + From 2bae58b567e4fe372a518fc89ff9dd8d1ea83184 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sat, 26 Aug 2017 19:16:54 +0300 Subject: [PATCH 09/64] Better looking loader screen, prevent CSS blocking --- lib/client/index.js | 2 +- static/css/main.css | 25 ------------ static/images/launch.png | Bin 17702 -> 3461 bytes static/index.html | 82 +++++++++++++++++++++++++++++++++++++-- 4 files changed, 80 insertions(+), 29 deletions(-) diff --git a/lib/client/index.js b/lib/client/index.js index 979ecd6245d..2b1a12f8259 100644 --- a/lib/client/index.js +++ b/lib/client/index.js @@ -63,7 +63,7 @@ client.init = function init(callback) { // check if we couldn't reach the server at all, show offline message if (jqXHR.readyState == 0) { console.log('Application appears to be OFFLINE'); - $('#loadingMessage').html('

Your device appears to be offline

Connecting to Nightscout server failed, retrying in 2 seconds

'); + $('#loadingMessageText').html('Connecting to Nightscout server failed, retrying every 2 seconds'); window.setTimeout(window.Nightscout.client.init(), 2000); return; } diff --git a/static/css/main.css b/static/css/main.css index c85de2efcfd..a9f45f91e64 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -82,31 +82,6 @@ a, a:visited, a:link { text-decoration: none; } -#centerMessagePanel -{ - position:fixed; - top:0; - left:0; - bottom:0; - right:0; - height: 100%; - width: 100%; - margin: 0; - padding: 0; - background: #000000; - z-index: 1000; -} - -#loadingMessage { - text-align: center; - position: absolute; - width: 100%; - height: 90%; - top: 30%; - left: 0%; - font-size: 60px; -}​ - #container.announcing .customTitle { color: orange; } diff --git a/static/images/launch.png b/static/images/launch.png index b47537c76b987e25f2e72abb01d7994c18d3b12d..f21088bd05803c147110da034c2033ddd3ed647d 100644 GIT binary patch delta 3081 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 J)WO~2{sWV`jP3vc literal 17702 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 - - + + + +
- +

+

Connecting to server...

+
+
+
+
+
From 4d0a3728ccc898a7e135d4291a632cb7fd747593 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 27 Aug 2017 14:34:46 +0300 Subject: [PATCH 10/64] Use ejs to render the app cache and cache buster tokens --- app.js | 19 ++++++++++ package-lock.json | 51 +++++++++++++++++++++++++-- package.json | 9 +++-- tests/fixtures/headless.js | 2 +- {static => views}/index.html | 6 ++-- {static => views}/nightscout.appcache | 8 ++--- 6 files changed, 83 insertions(+), 12 deletions(-) rename {static => views}/index.html (99%) rename {static => views}/nightscout.appcache (82%) diff --git a/app.js b/app.js index 139ec8667b1..eee5ef0c96a 100644 --- a/app.js +++ b/app.js @@ -6,12 +6,22 @@ var compression = require('compression'); var bodyParser = require('body-parser'); var prettyjson = require('prettyjson'); +var path = require('path'); +var fs = require('fs'); function create(env, ctx) { var app = express(); var appInfo = env.name + ' ' + env.version; app.set('title', appInfo); app.enable('trust proxy'); // Allows req.secure test on heroku https connections. + + app.set('view engine', 'ejs'); + // this allows you to render .html files as templates in addition to .ejs + app.engine('html', require('ejs').renderFile); + app.engine('appcache', require('ejs').renderFile); + app.set("views", path.join(__dirname, "views/")); + + app.locals.cachebuster = fs.readFileSync(process.cwd() + '/tmp/cacheBusterToken').toString().trim(); if (ctx.bootErrors && ctx.bootErrors.length > 0) { app.get('*', require('./lib/booterror')(ctx)); @@ -50,6 +60,15 @@ function create(env, ctx) { })); // app.use(bodyParser({limit: 1048576 * 50, extended: true })); + + app.get("/", (req, res) => { + res.render("index.html", {locals: app.locals}); + }); + + app.get("/nightscout.appcache", (req, res) => { + res.render("nightscout.appcache", {locals: app.locals}); + }); + //if (env.api_secret) { // console.log("API_SECRET", env.api_secret); //} diff --git a/package-lock.json b/package-lock.json index ea7012b7342..9355eb82ca6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -635,11 +635,35 @@ } } }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "2.0.0" + } + }, "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", @@ -735,6 +759,16 @@ "chalk": "1.1.3" } }, + "clear-require": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clear-require/-/clear-require-2.0.0.tgz", + "integrity": "sha1-qgH1w1WJMmvVXphp6r2kj4ZEfes=", + "dev": true, + "requires": { + "caller-path": "2.0.0", + "resolve-from": "2.0.0" + } + }, "cliff": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/cliff/-/cliff-0.1.10.tgz", @@ -1330,8 +1364,7 @@ "ejs": { "version": "2.5.7", "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", - "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=", - "dev": true + "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=" }, "electron-to-chromium": { "version": "1.3.18", @@ -4523,6 +4556,15 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=" }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "requires": { + "process": "0.11.10", + "util": "0.10.3" + } + }, "path-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", @@ -5263,6 +5305,11 @@ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, + "random-token": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/random-token/-/random-token-0.0.8.tgz", + "integrity": "sha1-HPhFrz+zHlf3yqS5oXNHjEZIO2E=" + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", diff --git a/package.json b/package.json index 009ade3a0db..a044de13e62 100644 --- a/package.json +++ b/package.json @@ -27,9 +27,10 @@ "start": "node server.js", "test": "make test", "env": "env", - "postinstall": "webpack --config webpack.config.js", + "postinstall": "webpack --config webpack.config.js && npm run-script update-buster", "bundle": "webpack --config webpack.config.js", - "bower": "node node_modules/bower/bin/bower --allow-root install && " + "bower": "node node_modules/bower/bin/bower --allow-root install && ", + "update-buster": "node scripts/generateCacheBuster.js >tmp/cacheBusterToken" }, "config": { "blanket": { @@ -56,6 +57,7 @@ "css-loader": "^0.28.4", "cssmin": "^0.4.3", "d3": "^3.5.17", + "ejs": "^2.5.7", "errorhandler": "^1.5.0", "event-stream": "^3.3.4", "expand-braces": "^0.1.2", @@ -84,8 +86,10 @@ "mqtt": "^0.3.13", "node-cache": "^4.1.1", "parse-duration": "^0.1.1", + "path": "^0.12.7", "prettyjson": "^1.2.1", "pushover-notifications": "^0.2.4", + "random-token": "0.0.8", "request": "^2.81.0", "sgvdata": "git://github.com/ktind/sgvdata.git#wip/protobuf", "share2nightscout-bridge": "git://github.com/bewest/share2nightscout-bridge.git#wip/generalize", @@ -101,6 +105,7 @@ }, "devDependencies": { "benv": "3.3.0", + "clear-require": "^2.0.0", "istanbul": "~0.4.5", "mocha": "~3.1.2", "should": "~11.1.1", diff --git a/tests/fixtures/headless.js b/tests/fixtures/headless.js index b5d7d2977d5..92fdd1ae005 100644 --- a/tests/fixtures/headless.js +++ b/tests/fixtures/headless.js @@ -10,7 +10,7 @@ function headless (benv, binding) { function init (opts, callback) { var localStorage = opts.localStorage || './localstorage'; - var htmlFile = opts.htmlFile || __dirname + '/../../static/index.html'; + var htmlFile = opts.htmlFile || __dirname + '/../../views/index.html'; var serverSettings = opts.serverSettings || require('./default-server-settings'); var someData = opts.mockAjax || { }; benv.setup(function() { diff --git a/static/index.html b/views/index.html similarity index 99% rename from static/index.html rename to views/index.html index 5984b8dbecd..ed474fc9376 100644 --- a/static/index.html +++ b/views/index.html @@ -670,8 +670,8 @@
- - - + + + diff --git a/static/nightscout.appcache b/views/nightscout.appcache similarity index 82% rename from static/nightscout.appcache rename to views/nightscout.appcache index beb832695b9..70716f34487 100644 --- a/static/nightscout.appcache +++ b/views/nightscout.appcache @@ -24,10 +24,10 @@ CACHE MANIFEST /css/ui-darkness/images/ui-icons_cccccc_256x240.png /css/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png /css/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png -/css/main.css?v=8.1.4-dev-2017082601 -/js/bundle.js?v=8.1.4-dev-2017082601 -/socket.io/socket.io.js?v=8.1.4-dev-2017082601 -/js/client.js?v=8.1.4-dev-2017082601 +/css/main.css?v=<%= locals.cachebuster %> +/js/bundle.js?v=<%= locals.cachebuster %> +/socket.io/socket.io.js?v=<%= locals.cachebuster %> +/js/client.js?v=<%= locals.cachebuster %> /images/logo2.png NETWORK: From cea9bff5d2cbf3c4addb3b5b718fce9691ba1018 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 27 Aug 2017 14:37:38 +0300 Subject: [PATCH 11/64] Forgot cache buster generator script --- scripts/generateCacheBuster.js | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 scripts/generateCacheBuster.js diff --git a/scripts/generateCacheBuster.js b/scripts/generateCacheBuster.js new file mode 100644 index 00000000000..02058daf844 --- /dev/null +++ b/scripts/generateCacheBuster.js @@ -0,0 +1,4 @@ + +var randomToken = require('random-token'); +var token = randomToken(16); +console.log(token); From 51c2b7b8064cbb24c75cae36176a397318fed5bb Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 27 Aug 2017 15:38:42 +0300 Subject: [PATCH 12/64] Image had ugly artifacts --- static/images/launch.png | Bin 3461 -> 3111 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/static/images/launch.png b/static/images/launch.png index f21088bd05803c147110da034c2033ddd3ed647d..50087db9a96198aa7f0ddb57117af4ab00db75ca 100644 GIT binary patch delta 2286 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 IM6N<$f}6-o*Z=?k delta 2630 zcmV-M3c2;C7=;^L_#(+G($l_lO_T*lO6&g zlkEa8AVfkoG&Dm&I5;vnI59CrH#s*&H$p)+GBGhXFhn**H8_kY`~wn6~~0y>kNdt&}%x~uiGHfjUn{>qE| zgY}!R7&FQkX1D)ZW{hITfB!5j#*|?jkZ^5(DP`=RgJn0)SmyuQuJDyL<{30His>si zXOZjVq%pq?iy2me6k%h-EF&Wd#qKb9WTU{ke_?$^gUb#5Sh1gnW%swo07XRc_e|Lz zhPCTduG?BmLFr7Xkox3JD$1XPwckC_X(jmdiLYsvDmK!c(Eb=K#ga$qdHLYiO0|uF zG4?~Swikw=)cmPl3pD^(uOP{Q0JlH&^tr#diWp|zhh-yFO`!IRDEPAuizJO6)Zc!) ze>?fKUo-rrVXwm4Q2BSZ^wV`Mas(IYLbb7KMeL5uo6C|yP)-orQm7plZ5Oaiqot5Rel;8HKa3a`pYX8&j;v45;%S_=5}3M>;)O&O?K zOrs+5xsP9@nO6orW>O7dpk7d1);xw)f8dp9i32yaoKakFz`7m*bY)dd!RfIcAo|rJ zM$#n0$OeNSYQSZHO-g?^^9a@zG(`T2x@J_V`Ko3yk~*`_+bF~ZH8U(QdS$I*Bn|rR z>@hxp&?Ms|?~W-0i#M+wAUv3V7frwh)-e~a;k zUF6m|03mQ^^_Ekt`$cA(6kd zs8G5+c|31ji@V5;hfl>q}eR)1+cPUeGA5j{hhQ!<{vy zQ=X3CQtXCx`qEg2NBAfC_oH>zQCz$%CAvet3nImeMTt}!n&3o8D2HmB;7T_ z%zzCNXckTA_y@U%x?6r~utM;(0?pDVjR;!frMS_paFtBxOyVK>Va4GC4|kMVqP<#= zrA`+xU$EFSSi)=B>SN@=jrfEZXaJD+MB%0L!yxWjUQ)Vt3lRCZ>ze<`!lcdpekVNeC;W zlYq`VTzsy;2Dm1$e;yMd=>%722&+aXy_-XSG&IL4^b@vK$sd2W~ZVX4=B$HL$IN**;%D4!ulQ8st)~sjHUr560Te{pFD8RxWp|V?= zSMPcKI4l(g>E8bcef9)q0q`0|5(=i93(onleh7G-H zSl2~5h;>w1cacAB3I|6oY7>9ekr9GaQ0+|^-!KPZ({&Lt>~12-B8}LqJa#uX(lDNZ zr+$;J4;)yz;z?!GuoP(-vB8_Flg5YnkDrPa{f%j3R@00P=m5lawagle0+>$NyY#j7 z?_l{Hf5Hd6G*#k-OE^ktl@^(v&vP1h-ws}rmZ`F^)^dkUSg(Z7l+H6ccKVUtqh7VR zhl5gK>VSe4$LQe?){`u$)CFgi$M;ABnJM?<=~w2DQStZ$2QxuARbOjIff1I#Tt?9chmU zJ7FRFYc%Gu)-2j_ojc@vwtENl5*5vYwyOKK|Bb-{JIdgbU9ssT#uTd;mf!IWe`jEo zE2%qoLsr-g3+z@@g^mmMMP(rB9ayM(!Hx@bwyJZ#>jPLesMm~iTwrfN4Elx({v7d(pH^VLoXQF{|58wU5p&n(g>LS+=)O|#RLnpHsWQO1J>Z| zK;@pGdUCc~j%)EDVbh@xKLZQ6i7zgI>WR8Pg$0)(GZV^QL-q84zGyJdVA*Hu^J}nz ze%V)1Jw9d8AbH|*RF7dXljVsopn85LrH#)+dFmP7g5|!8%=qbYKLyK$^Czuh?yrG$ op5&<*dkNIP(_#M?u>KQZ07-twst5qfKmY&$07*qoM6N<$f(i!s=l}o! From 1b24449afee0e04b26913a1d6f7cd84aa1f26739 Mon Sep 17 00:00:00 2001 From: Sulka Haro Date: Sun, 27 Aug 2017 16:15:19 +0300 Subject: [PATCH 13/64] Upgrade Travis to build with Node 8.4, update package.json to 8.4 --- .travis.yml | 2 +- package.json | 2 +- views/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 521fe778f1c..286eb2bc7fc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: node_js sudo: required node_js: - - 6 + - 8.4.0 matrix: fast_finish: true services: diff --git a/package.json b/package.json index a044de13e62..78584d8c7ec 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ } }, "engines": { - "node": "8.1.4" + "node": "8.4.0" }, "dependencies": { "async": "^0.9.2", diff --git a/views/index.html b/views/index.html index ed474fc9376..35cc7905668 100644 --- a/views/index.html +++ b/views/index.html @@ -27,7 +27,7 @@ - +