diff --git a/.nvmrc b/.nvmrc
index e5c15102d9b..486db33615e 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-8.9.0
+8.9.1
diff --git a/.travis.yml b/.travis.yml
index 2545a71d11f..fb6fd879e6d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,7 +2,7 @@ language: node_js
sudo: required
dist: trusty
node_js:
- - "8.9.0"
+ - "8.9.1"
matrix:
fast_finish: true
services:
diff --git a/Dockerfile.example b/Dockerfile.example
index bcd0737675e..d4c13c0ecd9 100644
--- a/Dockerfile.example
+++ b/Dockerfile.example
@@ -1,4 +1,4 @@
-FROM node:8.9.0
+FROM node:8.9.1
MAINTAINER Nightscout Contributors
diff --git a/bower.json b/bower.json
index 3207a1153d9..9c69a0346c5 100644
--- a/bower.json
+++ b/bower.json
@@ -1,6 +1,6 @@
{
"name": "nightscout",
- "version": "0.10.2-release-20171103",
+ "version": "0.10.3-dev-20171205"",
"dependencies": {
"colorbrewer": "~1.0.0",
"jQuery-Storage-API": "~1.7.2",
diff --git a/lib/client/renderer.js b/lib/client/renderer.js
index 239c9afdf05..e9478e4a378 100644
--- a/lib/client/renderer.js
+++ b/lib/client/renderer.js
@@ -444,13 +444,18 @@ function init (client, d3) {
}
if ( treatment.insulin > 0) {
- var dosage_units = Math.round(treatment.insulin * 100)/100;
+ var dosage_units = '' + Math.round(treatment.insulin * 100)/100;
+
var unit_of_measurement = ' U'; // One international unit of insulin (1 IU) is shown as '1 U'
- if ( treatment.insulin < 1 && !treatment.carbs ) { // don't show the unit of measurement for insulin boluses < 1 without carbs (e.g. oref0 SMB's). Otherwise lot's of small insulin only dosages are often unreadable
+ var enteredBy = '' + treatment.enteredBy;
+
+ if ( treatment.insulin < 1 && !treatment.carbs && enteredBy.indexOf('openaps') > -1) { // don't show the unit of measurement for insulin boluses < 1 without carbs (e.g. oref0 SMB's). Otherwise lot's of small insulin only dosages are often unreadable
unit_of_measurement = '';
+ // remove leading zeros to avoid overlap with adjacent boluses
+ dosage_units = (dosage_units+"").replace(/^0/,"");
}
- // remove leading zeros to avoid overlap with adjacent boluses
- arc_data[3].element = (dosage_units+"").replace(/^0/,"")+unit_of_measurement;
+
+ arc_data[3].element = dosage_units + unit_of_measurement;
}
if (treatment.status) {
@@ -855,10 +860,12 @@ function init (client, d3) {
.attr('class', 'path')
.attr('id', 'label')
.style('fill', 'white');
+
+ // reduce the treatment label font size to make it readable with SMB
+ var fontBaseSize = (opts.treatments >= 30) ? 40 : 50 - Math.floor((25-opts.treatments)/30 * 10);
label.append('text')
- // reduce the treatment label font size to make it readable with SMB
- .style('font-size', 30 / opts.scale)
+ .style('font-size', fontBaseSize / opts.scale)
.style('text-shadow', '0px 0px 10px rgba(0, 0, 0, 1)')
.attr('text-anchor', 'middle')
.attr('dy', '.35em')
@@ -874,11 +881,19 @@ function init (client, d3) {
}
renderer.drawTreatments = function drawTreatments(client) {
+
+ var treatmentCount = 0;
+
+ _.forEach(client.ddata.treatments, function eachTreatment (d) {
+ if (Number(d.insulin) > 0 || Number(d.carbs) > 0) { treatmentCount += 1; };
+ });
+
// add treatment bubbles
_.forEach(client.ddata.treatments, function eachTreatment (d) {
renderer.drawTreatment(d, {
scale: renderer.bubbleScale()
, showLabels: true
+ , treatments: treatmentCount
}, client.sbx.data.profile.getCarbRatio(new Date()));
});
};
diff --git a/lib/language.js b/lib/language.js
index 9c49d961f1f..bd0ee2384d8 100644
--- a/lib/language.js
+++ b/lib/language.js
@@ -40,6 +40,7 @@ function init() {
'Listening on port' : {
cs: 'Poslouchám na portu'
,es: 'Escuchando en el puerto'
+ ,dk: 'Lytter på port'
,fr: 'Ecoute sur port'
,pt: 'Escutando porta'
,sv: 'Lyssnar på port'
@@ -464,7 +465,7 @@ function init() {
,hr: 'Danas'
,sv: 'Idag'
,it: 'Oggi'
- ,dk: 'Idag'
+ ,dk: 'I dag'
,fi: 'Tänään'
,nb: 'Idag'
,he: 'היום'
@@ -1015,7 +1016,7 @@ function init() {
,bg: 'Зареждане на въведените лечения от'
,hr: 'Učitavanje podataka o tretmanu'
,it: 'Carico dati dei trattamenti'
- ,dk: 'Indlæser data for'
+ ,dk: 'Indlæser behandlingsdata for'
,fi: 'Lataan toimenpidetietoja: '
,nb: 'Leser behandlingsdata for'
,he: 'טוען נתוני טיפולים של'
@@ -1131,7 +1132,7 @@ function init() {
,bg: 'няма'
,hr: 'Prazno'
,it: 'Nessuno'
- ,dk: 'ingen'
+ ,dk: 'Ingen'
,fi: 'tyhjä'
,nb: 'ingen'
,he: 'ללא'
@@ -1300,7 +1301,7 @@ function init() {
,pl: 'Statystyki godzinowe'
,ru: 'Почасовая статистика'
,sk: 'Hodinové štatistiky'
- ,nl: 'Statistieken elk uur'
+ ,nl: 'Statistieken per uur'
,ko: '시간 통계'
,zh_cn: '每小时状态'
}
@@ -1407,7 +1408,7 @@ function init() {
,bg: 'Период'
,hr: 'Period'
,it: 'Periodo'
- ,dk: 'Period'
+ ,dk: 'Periode'
,fi: 'Aikaväli'
,nb: 'Periode'
,he: 'תקופה'
@@ -1887,7 +1888,7 @@ function init() {
,hr: 'Standardna devijacija'
,sv: 'Standardavvikelse'
,it: 'Deviazione Standard'
- ,dk: 'Standardafgivelse'
+ ,dk: 'Standardafvigelse'
,fi: 'Keskijakauma'
,nb: 'Standardavvik'
,he: 'סטיית תקן'
@@ -2048,7 +2049,7 @@ function init() {
,hr: 'Nema pohranjenog API tajnog hasha. Unesite tajni API'
,sv: 'Hemlig api-nyckel saknas. Du måste ange API hemlighet'
,it: 'API hash segreto non è ancora memorizzato. È necessario inserire API segreto.'
- ,dk: 'Mangler API-nøgle. Du skal indtaste API hemmelighed'
+ ,dk: 'Mangler API-nøgle. Du skal indtaste API nøglen'
,fi: 'Salainen API-tarkiste puuttuu. Syötä API tarkiste.'
,nb: 'Mangler API nøkkel. Du må skrive inn API hemmelighet.'
,pl: 'Nie ma żadnego poufnego hasha API zapisanego. Należy wprowadzić poufny hash API.'
@@ -2230,7 +2231,7 @@ function init() {
,hr: 'Uredi zapis'
,sv: 'Editera post'
,it: 'Modifica registro'
- ,dk: 'Editere post'
+ ,dk: 'Rediger post'
,fi: 'Muokkaa tallennetta'
,nb: 'Editere registrering'
,he: 'ערוך רשומה'
@@ -2374,7 +2375,7 @@ function init() {
,pl: 'Błędny klucz API'
,ru: 'Плохой пароль API'
,sk: 'Nesprávne API heslo'
- ,nl: 'Onjuiste API wachtwoord'
+ ,nl: 'Onjuist API wachtwoord'
,ko: '잘못된 API secret'
,zh_cn: 'API密钥错误'
,zh_tw: 'API密鑰錯誤'
@@ -2397,7 +2398,7 @@ function init() {
,pl: 'Poufne klucz API zapisane'
,ru: 'Пароль API сохранен'
,sk: 'Hash API hesla uložený'
- ,nl: 'Geheime API wachtwoord opgeslagen'
+ ,nl: 'API wachtwoord opgeslagen'
,ko: 'API secret hash가 저장 되었습니다.'
,zh_cn: 'API密钥已存储'
,zh_tw: 'API密鑰已存儲'
@@ -2512,7 +2513,6 @@ function init() {
,pl: 'Filtr'
,ru: 'Фильтр'
,sk: 'Filter'
- ,nl: 'Filter'
,ko: '필터'
,zh_cn: '过滤器'
}
@@ -2943,7 +2943,7 @@ function init() {
,hr: 'Koristi korekciju GUK-a u izračunu'
,sv: 'Använd BS-korrektion för beräkning'
,it: 'Utilizzare la correzione nei calcoli delle Glicemie'
- ,dk: 'Anvend BS-korrektion før beregning'
+ ,dk: 'Anvend BS-korrektion i beregning'
,fi: 'Käytä korjausannosta laskentaan'
,nb: 'Bruk blodsukkerkorrigering i beregning'
,pl: 'Użyj BG w obliczeniach korekty'
@@ -3031,7 +3031,7 @@ function init() {
,hr: 'Brzi izbor'
,sv: 'Snabbval'
,it: 'Scelta rapida'
- ,dk: 'Hurtig snack'
+ ,dk: 'Hurtig valg'
,fi: 'Pikavalinta'
,nb: 'Hurtigvalg'
,pl: 'Szybki wybór'
@@ -3209,7 +3209,7 @@ function init() {
,hr: 'Unesi korekciju inzulinom u tretman'
,sv: 'Ange insulinkorrektion för händelse'
,it: 'Inserisci correzione insulina nella somministrazione'
- ,dk: 'Indtast insulionkorrektion'
+ ,dk: 'Indtast insulinkorrektion'
,fi: 'Syötä insuliinikorjaus'
,nb: 'Task inn insulinkorrigering'
,pl: 'Wprowadź wartość korekty w leczeniu'
@@ -3886,7 +3886,7 @@ function init() {
,hr: 'Status autentikacije'
,sv: 'Autentiseringsstatus'
,it: 'Stato di autenticazione'
- ,dk: 'Autentifikationsstatus'
+ ,dk: 'Godkendelsesstatus'
,fi: 'Autentikoinnin tila'
,nb: 'Autentiseringsstatus'
,pl: 'Status uwierzytelnienia'
@@ -4109,6 +4109,7 @@ function init() {
,'Logarithmic (Dynamic)' : {
cs: 'Logaritmické (Dynamické)'
,de: 'Logaritmisch (dynamisch)'
+ ,dk: 'Logaritmisk (Dynamisk)'
,it: 'Logaritmica (Dinamica)'
,el: 'Λογαριθμική (Δυναμική)'
,ro: 'Logaritmic (Dinamic)'
@@ -4128,6 +4129,7 @@ function init() {
,'Insulin-on-Board' : {
cs: 'IOB'
,de: 'Aktives Bolus-Insulin'
+ ,dk: 'Aktivt insulin (IOB)'
,it: 'IOB-Insulina a Bordo'
,nb: 'AI'
,el: 'Ενεργή Ινσουλίνη (IOB)'
@@ -4147,6 +4149,7 @@ function init() {
,'Carbs-on-Board' : {
cs: 'COB'
,de: 'Aktiv wirksame Kohlenhydrate'
+ ,dk: 'Aktive kulhydrater (COB)'
,it: 'COB-Carboidrati a Bordo'
,nb: 'AK'
,el: 'Ενεργοί Υδατάνθρακες (COB)'
@@ -4166,6 +4169,7 @@ function init() {
,'Bolus Wizard Preview' : {
cs: 'BWP-Náhled bolusového kalk.'
,de: 'Bolus-Kalkulator Vorschau'
+ ,dk: 'Bolus Wizard (BWP)'
,it: 'BWP-Calcolatore di bolo'
,nb: 'Boluskalkulator'
,el: 'Εργαλείο Εκτίμησης Επάρκειας Ινσουλίνης (BWP)'
@@ -4185,6 +4189,7 @@ function init() {
,'Value Loaded' : {
cs: 'Hodnoty načteny'
,de: 'Geladener Wert'
+ ,dk: 'Værdi indlæst'
,it: 'Valori Caricati'
,nb: 'Verdi lastet'
,el: 'Τιμή ανακτήθηκε'
@@ -4204,6 +4209,7 @@ function init() {
,'Cannula Age' : {
cs: 'CAGE-Stáří kanyly'
,de: 'Kanülenalter'
+ ,dk: 'Insuflon alder (CAGE)'
,it: 'CAGE-Cambio Ago'
,el: 'Ημέρες Χρήσης Κάνουλας (CAGE)'
,nb: 'Nålalder'
@@ -4223,6 +4229,7 @@ function init() {
,'Basal Profile' : {
cs: 'Bazál'
,de: 'Basalraten-Profil'
+ ,dk: 'Basal profil'
,it: 'BASAL-Profilo Basale'
,el: 'Προφίλ Βασικής Ινσουλίνης (BASAL)'
,nb: 'Basalprofil'
@@ -4343,7 +4350,7 @@ function init() {
,bg: '3часа'
,hr: '3h'
,it: '3ORE'
- ,dk: '3tim'
+ ,dk: '3t'
,fi: '3h'
,nb: '3t'
,pl: '3h'
@@ -4366,7 +4373,7 @@ function init() {
,bg: '6часа'
,hr: '6h'
,it: '6ORE'
- ,dk: '6tim'
+ ,dk: '6t'
,fi: '6h'
,nb: '6t'
,pl: '6h'
@@ -4384,7 +4391,7 @@ function init() {
,fr: '12hr'
,el: '12 ώρες'
,pt: '12h'
- ,sv: '12tim'
+ ,sv: '12t'
,ro: '12h'
,bg: '12часа'
,hr: '12h'
@@ -4412,7 +4419,7 @@ function init() {
,bg: '24часа'
,hr: '24h'
,it: '24ORE'
- ,dk: '24tim'
+ ,dk: '24t'
,fi: '24h'
,nb: '24t'
,pl: '24h'
@@ -4435,7 +4442,7 @@ function init() {
,bg: 'Настройки'
,hr: 'Postavke'
,it: 'Impostazioni'
- ,dk: 'Opsætning'
+ ,dk: 'Indstillinger'
,fi: 'Asetukset'
,nb: 'Innstillinger'
,pl: 'Ustawienia'
@@ -4481,7 +4488,7 @@ function init() {
,bg: 'Формат на датата'
,hr: 'Format datuma'
,it: 'Formato data'
- ,dk: 'dato format'
+ ,dk: 'Dato format'
,fi: 'Aikamuoto'
,nb: 'Datoformat'
,pl: 'Format daty'
@@ -4918,7 +4925,7 @@ function init() {
,bg: 'Кръвна захар'
,hr: 'Vrijednost GUK-a'
,it: 'Lettura glicemie'
- ,dk: 'Glukose aflæsning'
+ ,dk: 'Blodsukker aflæsning'
,fi: 'Verensokeri'
,nb: 'Blodsukkermåling'
,he: 'מדידת סוכר'
@@ -5127,7 +5134,7 @@ function init() {
,bg: 'Много висока КЗ'
,hr: 'Hitni alarm za hiper'
,it: 'Urgente:Glicemia Alta'
- ,dk: 'Høj grænse overskredet'
+ ,dk: 'Kritisk grænse overskredet'
,fi: 'Kriittinen korkea'
,nb: 'Kritisk høy alarm'
,he: 'התראת גבוה דחופה'
@@ -5246,7 +5253,7 @@ function init() {
,bg: 'Много стари данни'
,hr: 'Hitno: Stari podaci'
,it: 'Notifica:Urgente'
- ,dk: 'Advarsel: Gamle data'
+ ,dk: 'Kritisk: Gamle data'
,fi: 'Vanhat tiedot: hälytys'
,nb: 'Advarsel: Veldig gamle data'
,pl: 'Uwaga: brak odczytów'
@@ -5476,7 +5483,7 @@ function init() {
,bg: 'Име на страницата'
,hr: 'Vlastiti naziv'
,it: 'Titolo personalizzato'
- ,dk: 'Egen titel'
+ ,dk: 'Valgfri titel'
,fi: 'Omavalintainen otsikko'
,nb: 'Egen tittel'
,pl: 'Własny tytuł strony'
@@ -5559,6 +5566,7 @@ function init() {
,'Colorblind-friendly colors' : {
cs: 'Pro barvoslepé'
,de: 'Farbenblind-freundliche Darstellung'
+ ,dk: 'Farveblindvenlige farver'
,nb: 'Fargeblindvennlige farger'
,el: 'Χρώματα συμβατά για αχρωματοψία'
,pt: 'Cores para daltônicos'
@@ -5676,7 +5684,7 @@ function init() {
,bg: 'в бъдещето'
,hr: 'U budućnosti'
,it: 'nel futuro'
- ,dk: 'fremtiden'
+ ,dk: 'i fremtiden'
,fi: 'tulevaisuudessa'
,nb: 'fremtiden'
,pl: 'w przyszłości'
@@ -5722,7 +5730,7 @@ function init() {
,bg: 'час по-рано'
,hr: 'sat unazad'
,it: 'ora fa'
- ,dk: 'Time siden'
+ ,dk: 'time siden'
,fi: 'tunti sitten'
,nb: 'Time siden'
,pl: 'godzina temu'
@@ -5745,7 +5753,7 @@ function init() {
,bg: 'часа по-рано'
,hr: 'sati unazad'
,it: 'ore fa'
- ,dk: 'Timer siden'
+ ,dk: 'timer siden'
,fi: 'tuntia sitten'
,nb: 'Timer siden'
,pl: 'godzin temu'
@@ -5768,13 +5776,13 @@ function init() {
,bg: 'мин. по-рано'
,hr: 'minuta unazad'
,it: 'minuto fa'
- ,dk: 'minutter siden'
+ ,dk: 'minut siden'
,fi: 'm sitten'
,nb: 'minutter siden'
,pl: 'minuta temu'
,ru: 'мин. назад'
,sk: 'min. pred'
- ,nl: 'minuut geleden'
+ ,nl: 'm geleden'
,ko: '분 전'
,zh_cn: '分钟前'
,zh_tw: '分鐘前'
@@ -5797,7 +5805,7 @@ function init() {
,pl: 'minut temu'
,ru: 'минут назад'
,sk: 'min. pred'
- ,nl: 'minuten geleden'
+ ,nl: 'm geleden'
,ko: '분 전'
,zh_cn: '分钟前'
,zh_tw: '分鐘前'
@@ -5952,7 +5960,7 @@ function init() {
,bg: 'Висок'
,hr: 'Teško'
,it: 'Pesante'
- ,dk: 'Voldsom'
+ ,dk: 'Meget'
,fi: 'Raskas'
,nb: 'Mye'
,pl: 'Wysoki'
@@ -6167,6 +6175,7 @@ function init() {
,'Language' : {
cs: 'Jazyk'
,de: 'Sprache'
+ ,dk: 'Sprog'
,sv: 'Språk'
,nb: 'Språk'
,el: 'Γλώσσα'
@@ -6186,6 +6195,7 @@ function init() {
,'Add new' : {
cs: 'Přidat nový'
,de: 'Neu hinzufügen'
+ ,dk: 'Tilføj ny'
,sv: 'Lägg till ny'
,ro: 'Adaugă nou'
,el: 'Προσθήκη'
@@ -6204,6 +6214,7 @@ function init() {
,'g' : { // grams shortcut
cs: 'g'
,de: 'g'
+ ,dk: 'g'
,sv: 'g'
,ro: 'g'
,bg: 'гр'
@@ -6222,6 +6233,7 @@ function init() {
,'ml' : { // milliliters shortcut
cs: 'ml'
,de: 'ml'
+ ,dk: 'ml'
,sv: 'ml'
,ro: 'ml'
,bg: 'мл'
@@ -6240,6 +6252,7 @@ function init() {
,'pcs' : { // pieces shortcut
cs: 'ks'
,de: 'Stk.'
+ ,dk: 'stk'
,sv: 'st'
,ro: 'buc'
,bg: 'бр'
@@ -6258,6 +6271,7 @@ function init() {
,'Drag&drop food here' : {
cs: 'Sem táhni & pusť jídlo'
,de: 'Mahlzeit hierher verschieben'
+ ,dk: 'Hiv og slip mad her'
,sv: 'Dra&Släpp mat här'
,ro: 'Drag&drop aliment aici'
,el: 'Σύρετε εδώ φαγητό'
@@ -6278,6 +6292,7 @@ function init() {
,sv: 'Care Portal'
,it: 'Somministrazioni'
,de: 'Behandlungs-Portal'
+ ,dk: 'Omsorgsportal'
,ro: 'Care Portal'
,bg: 'Въвеждане на данни'
,nb: 'Omsorgsportal'
@@ -6295,6 +6310,7 @@ function init() {
cs: 'Střední/Neznámá'
,sv: 'Medium/Okänt'
,de: 'Mittel/Unbekannt'
+ ,dk: 'Medium/Ukendt'
,ro: 'Mediu/Necunoscut'
,el: 'Μέσος/Άγνωστος'
,bg: 'Среден/неизвестен'
@@ -6314,6 +6330,7 @@ function init() {
,sv: 'Framtida'
,ro: 'ÎN VIITOR'
,de: 'IN DER ZUKUNFT'
+ ,dk: 'I fremtiden'
,el: 'ΣΤΟ ΜΕΛΛΟΝ'
,bg: 'В БЪДЕШЕТО'
,nb: 'I fremtiden'
@@ -6330,6 +6347,7 @@ function init() {
,'Update' : { // Update button
cs: 'Aktualizovat'
,de: 'Aktualisieren'
+ ,dk: 'Opdater'
,sv: 'Uppdatera'
,nb: 'Oppdater'
,pt: 'Atualizar'
@@ -6349,6 +6367,7 @@ function init() {
,'Order' : {
cs: 'Pořadí'
,de: 'Reihenfolge'
+ ,dk: 'Sorter'
,sv: 'Sortering'
,nb: 'Sortering'
,el: 'Σειρά κατάταξης'
@@ -6367,6 +6386,7 @@ function init() {
,'oldest on top' : {
cs: 'nejstarší nahoře'
,de: 'älteste oben'
+ ,dk: 'ældste øverst'
,sv: 'Äldst först'
,nb: 'Eldste først'
,el: 'τα παλαιότερα πρώτα'
@@ -6386,6 +6406,7 @@ function init() {
cs: 'nejnovější nahoře'
,sv: 'Nyast först'
,de: 'neueste oben'
+ ,dk: 'nyeste øverst'
,nb: 'Nyeste først'
,el: 'τα νεότερα πρώτα'
,ro: 'mai noi primele'
@@ -6405,6 +6426,7 @@ function init() {
,sv: 'Alla sensorhändelser'
,nb: 'Alle sensorhendelser'
,de: 'Alle Sensor-Ereignisse'
+ ,dl: 'Alle sensor begivenheder'
,el: 'Όλα τα συμβάντα του αισθητήρα'
,ro: 'Evenimente legate de senzor'
,bg: 'Всички събития от сензора'
@@ -6423,6 +6445,7 @@ function init() {
,nb: 'Fjern fremtidige elementer fra mongo database'
,el: 'Αφαίρεση μελλοντικών εγγραφών από τη βάση δεδομένων'
,de: 'Entferne zukünftige Objekte aus Mongo-Datenbank'
+ ,dk: 'Fjern fremtidige værdier fra mongo databasen'
,ro: 'Șterge date din viitor din baza de date mongo'
,sv: 'Ta bort framtida händelser från mongodatabasen'
,bg: 'Премахни бъдещите точки от Монго базата с данни'
@@ -6442,6 +6465,7 @@ function init() {
,nb: 'Finn og fjern fremtidige behandlinger'
,el: 'Εύρεση και αφαίρεση μελλοντικών ενεργειών από τη βάση δεδομένων'
,de: 'Finde und entferne zukünftige Behandlungen'
+ ,dk: 'Find og fjern fremtidige behandlinger'
,ro: 'Caută și elimină tratamente din viitor'
,sv: 'Hitta och ta bort framtida behandlingar'
,bg: 'Намери и премахни събития в бъдещето'
@@ -6460,6 +6484,7 @@ function init() {
cs: 'Tento úkol najde a odstraní ošetření v budoucnosti.'
,nb: 'Finn og fjern fremtidige behandlinger'
,de: 'Finde und entferne Behandlungen in der Zukunft.'
+ ,dk: 'Denne handling finder og fjerner fremtidige behandlinger.'
,el: 'Αυτή η ενέργεια αφαιρεί μελλοντικές ενέργειες από τη βάση δεδομένων'
,ro: 'Acest instrument curăță tratamentele din viitor.'
,sv: 'Denna uppgift hittar och rensar framtida händelser'
@@ -6479,6 +6504,7 @@ function init() {
cs: 'Odstraň ošetření v budoucnosti'
,nb: 'Fjern fremtidige behandlinger'
,de: 'Entferne Behandlungen in der Zukunft'
+ ,dk: 'Fjern behandlinger i fremtiden'
,el: 'Αφαίρεση μελλοντικών ενεργειών'
,ro: 'Șterge tratamentele din viitor'
,sv: 'Ta bort framtida händelser'
@@ -6497,6 +6523,7 @@ function init() {
,'Find and remove entries in the future' : {
cs: 'Najít a odstranit CGM data v budoucnosti'
,de: 'Finde und entferne Einträge in der Zukunft'
+ ,dk: 'Find og fjern indgange i fremtiden'
,nb: 'Finn og fjern fremtidige hendelser'
,el: 'Εύρεση και αφαίρεση μελλοντικών εγγραφών από τη βάση δεδομένων'
,bg: 'Намери и премахни данни от сензора в бъдещето'
@@ -6518,6 +6545,7 @@ function init() {
,nb: 'Finn og fjern fremtidige cgm data lastet opp med feil dato/tid'
,el: 'Αυτή η ενέργεια αφαιρεί δεδομένα αιθητήρα τα οποία εισήχθησαν με λάθος ημερομηνία και ώρα, από τη βάση δεδομένων'
,de: 'Finde und entferne CGM Daten in der Zukunft, die vom Uploader mit falschem Datum/Uhrzeit erstellt wurden.'
+ ,dk: 'Denne handling finder og fjerner CGM data i fremtiden forårsaget af indlæsning med forkert dato/tid.'
,bg: 'Тази опция ще намери и премахне данни от сензора в бъдещето, създадени поради грешна дата/време.'
,ro: 'Instrument de căutare și eliminare a datelor din viitor, create de uploader cu ora setată greșit'
,sv: 'Denna uppgift hittar och tar bort framtida CGM-data skapad vid felaktig tidsinställning'
@@ -6536,6 +6564,7 @@ function init() {
cs: 'Odstraň CGM data v budoucnosti'
,nb: 'Fjern fremtidige hendelser'
,de: 'Entferne Einträge in der Zukunft'
+ ,dk: 'Fjern indgange i fremtiden'
,el: 'Αφαίρεση μελλοντικών ενεργειών'
,bg: 'Премахни данните от сензора в бъдещето'
,ro: 'Elimină înregistrările din viitor'
@@ -6555,6 +6584,7 @@ function init() {
cs: 'Nahrávám databázi ...'
,nb: 'Leser database ...'
,de: 'Lade Datenbank'
+ ,dk: 'Indlæser database ...'
,el: 'Φόρτωση Βάσης Δεδομένων'
,bg: 'Зареждане на базата с данни ...'
,ro: 'Încarc baza de date'
@@ -6577,6 +6607,7 @@ function init() {
,ro: 'Baza de date conține %1 înregistrări din viitor'
,sv: 'Databas innehåller %1 framtida händelser'
,de: 'Datenbank enthält %1 zukünftige Einträge'
+ ,dk: 'Databasen indeholder %1 fremtidige indgange'
,bg: 'Базата с дани съдържа %1 бъдещи записи'
,it: 'Contiene Database %1 record futuri'
,fi: 'Tietokanta sisältää %1 merkintää tulevaisuudessa'
@@ -6594,6 +6625,7 @@ function init() {
,nb: 'Fjern %1 valgte elementer?'
,el: 'Αφαίρεση των επιλεγμένων εγγραφών?'
,de: 'Lösche ausgewählten %1 Eintrag?'
+ ,dk: 'Fjern %1 valgte indgange?'
,ro: 'Șterg %1 înregistrări selectate?'
,sv: 'Ta bort %1 valda händelser'
,bg: 'Премахване на %1 от избраните записи?'
@@ -6612,6 +6644,7 @@ function init() {
cs: 'Chyba při nahrávání databáze'
,nb: 'Feil udner lasting av database'
,de: 'Fehler beim Laden der Datenbank'
+ ,dk: 'Fejl ved indlæsning af database'
,el: 'Σφάλμα στη φόρτωση της βάσης δεδομένων'
,ro: 'Eroare la încărcarea bazei de date'
,sv: 'Fel vid laddning av databas'
@@ -6631,6 +6664,7 @@ function init() {
cs: 'Záznam %1 odstraněn ...'
,nb: 'Element %1 fjernet'
,de: 'Eintrag %1 entfernt'
+ ,dk: 'Indgang %1 fjernet ...'
,el: 'Οι εγγραφές αφαιρέθηκαν'
,ro: 'Înregistrarea %1 a fost ștearsă...'
,sv: 'Händelse %1 borttagen ...'
@@ -6650,6 +6684,7 @@ function init() {
cs: 'Chyba při odstaňování záznamu %1'
,nb: 'Feil under fjerning av element %1'
,de: 'Fehler beim Entfernen des Eintrags %1'
+ ,dk: 'Fejl ved fjernelse af indgang %1'
,el: 'Σφάλμα αφαίρεσης εγγραφών'
,ro: 'Eroare la ștergerea înregistrării %1'
,sv: 'Fel vid borttagning av %1'
@@ -6671,6 +6706,7 @@ function init() {
,ro: 'Se șterg înregistrările...'
,el: 'Αφαίρεση Εγγραφών'
,de: 'Entferne Einträge ...'
+ ,dk: 'Sletter indgange ...'
,sv: 'Tar bort händelser ...'
,bg: 'Изтриване на записите...'
,it: 'Elimino dei record ...'
@@ -6690,6 +6726,7 @@ function init() {
,ro: 'Curăță tabela despre status din Mongo'
,el: 'Καθαρισμός βάσης δεδομένων Mongo'
,de: 'Bereinige Mongo Status-Datenbank'
+ ,dk: 'Slet Mongo status database'
,sv: 'Rensa Mongo status databas'
,bg: 'Изчисти статуса на Монго базата с данни'
,it: 'Pulisci database di Mongo'
@@ -6706,6 +6743,7 @@ function init() {
cs: 'Odstranění všech záznamů z kolekce devicestatus'
,nb: 'Fjern alle dokumenter fra device status tabell'
,de: 'Lösche alle Dokumente der Gerätestatus-Sammlung'
+ ,dk: 'Fjerne alle dokumenter fra device status tabellen'
,el: 'Διαγραφή όλων των δεδομένων σχετικών με κατάσταση της συσκευής ανάγνωσης του αισθητήρα'
,ro: 'Șterge toate documentele din colecția de status dispozitiv'
,sv: 'Ta bort alla dokument i devicestatus collektionen'
@@ -6718,13 +6756,14 @@ function init() {
,sk: 'Odstránenie všetkých záznamov z kolekcie "devicestatus"'
,ko: 'devicestatus 수집에서 모든 문서들을 지우세요'
,zh_cn: '从设备状态采集删除所有文档'
- ,nl: 'Verwijder alle documenten uit "devicestatus" databank'
+ ,nl: 'Verwijder alle documenten uit "devicestatus" database'
}
,'This task removes all documents from devicestatus collection. Useful when uploader battery status is not properly updated.' : {
cs: 'Tento úkol odstraní všechny dokumenty z kolekce devicestatus. Je to vhodné udělat, pokud se ukazatel stavu baterie neobnovuje správně.'
,nb: 'Denne funksjonen fjerner alle dokumenter fra device status tabellen. Nyttig når status for opplaster batteri ikke blir opppdatert'
,el: 'Αυτή η ενέργεια διαγράφει όλα τα δεδομένα της κατάστασης της συσκευής ανάγνωσης. Χρήσιμη όταν η κατάσταση της συσκευής ανάγνωσης δεν ανανεώνεται σωστά.'
,de: 'Diese Aufgabe entfernt alle Dokumente aus der Gerätestatus-Sammlung. Nützlich wenn der Uploader-Batteriestatus sich nicht aktualisiert.'
+ ,dk: 'Denne handling fjerner alle dokumenter fra device status tabellen. Brugbart når uploader betteri status ikke er korrekt opdateret.'
,ro: 'Acest instrument șterge toate documentele din colecția devicestatus. Se folosește când încărcarea bateriei nu se afișează corect.'
,sv: 'Denna uppgift tar bort alla dokument från devicestatuskollektionen. Användbart när batteristatus ej uppdateras'
,bg: 'Тази опция премахва всички документи от папката статус-устройство. Полезно е, когато статусът на батерията не се обновява.'
@@ -6736,7 +6775,7 @@ function init() {
,sk: 'Táto úloha vymaže všetky záznamy z kolekcie "devicestatus". Je to vhodné keď sa stav batérie nezobrazuje správne.'
,ko: '이 작업은 모든 문서를 devicestatus 수집에서 지웁니다. 업로더 배터리 상태가 적절하게 업데이트 되지 않을 때 유용합니다.'
,zh_cn: '此功能从设备状态采集中删除所有文档。适用于上传设备电量信息不能正常同步时使用。'
- ,nl: 'Dit commando verwijdert alle documenten uit "devicestatus" databank. Handig wanneer de batterij status niet correct wordt geupload.'
+ ,nl: 'Dit commando verwijdert alle documenten uit "devicestatus" database. Handig wanneer de batterij status niet correct wordt geupload.'
}
,'Delete all documents' : {
cs: 'Odstranit všechny dokumenty'
@@ -6744,6 +6783,7 @@ function init() {
,ro: 'Șterge toate documentele'
,el: 'Διαγραφή όλων των δεδομένων'
,de: 'Lösche alle Dokumente'
+ ,dk: 'Slet alle dokumenter'
,sv: 'Ta bort alla dokument'
,bg: 'Изтрий всички документи'
,it: 'Eliminare tutti i documenti'
@@ -6761,6 +6801,7 @@ function init() {
,nb: 'Fjern alle dokumenter fra device status tabellen?'
,el: 'Διαγραφή όλων των δεδομένων της κατάστασης της συσκευής ανάγνωσης?'
,de: 'Löschen aller Dokumente der Gerätestatus-Sammlung?'
+ ,dk: 'Fjern alle dokumenter fra device status tabellen'
,ro: 'Șterg toate documentele din colecția devicestatus?'
,sv: 'Ta bort alla dokument från devicestatuscollektionen'
,bg: 'Изтриване на всички документи от папката статус-устройство?'
@@ -6778,6 +6819,7 @@ function init() {
cs: 'Databáze obsahuje %1 záznamů'
,nb: 'Databasen inneholder %1 elementer'
,de: 'Datenbank enthält %1 Einträge'
+ ,dk: 'Databasen indeholder %1 indgange'
,el: 'Η βάση δεδομένων περιέχει 1% εγγραφές'
,ro: 'Baza de date conține %1 înregistrări'
,sv: 'Databasen innehåller %1 händelser'
@@ -6796,6 +6838,7 @@ function init() {
cs: 'Všechny záznamy odstraněny ...'
,nb: 'Alle elementer fjernet ...'
,de: 'Alle Einträge entfernt...'
+ ,dk: 'Alle indgange fjernet ...'
,el: 'Έγινε διαγραφή όλων των δεδομένων'
,ro: 'Toate înregistrările au fost șterse.'
,sv: 'Alla händelser raderade ...'
@@ -6815,6 +6858,7 @@ function init() {
,nb: 'Administrasjonsoppgaver'
,ro: 'Instrumente de administrare'
,de: 'Administrator Werkzeuge'
+ ,dl: 'Administrator opgaver'
,el: 'Εργαλεία Διαχειριστή'
,sv: 'Adminverktyg'
,bg: 'Настройки на администратора'
@@ -6835,6 +6879,7 @@ function init() {
,ro: 'Rapoarte Nightscout'
,el: 'Αναφορές'
,de: 'Nightscout-Berichte'
+ ,dk: 'Nightscout - rapporter'
,sv: 'Nightscout - Statistik'
,bg: 'Найтскаут статистика'
,it: 'Nightscout - Statistiche'
@@ -6850,6 +6895,7 @@ function init() {
,'Cancel' : {
cs: 'Zrušit'
,de: 'Abbruch'
+ ,dk: 'Annuller'
,nb: 'Avbryt'
,el: 'Ακύρωση'
,ro: 'Renunță'
@@ -6870,6 +6916,7 @@ function init() {
,nb: 'Editer behandling'
,ro: 'Modifică înregistrarea'
,de: 'Bearbeite Behandlung'
+ ,dk: 'Rediger indgang'
,el: 'Επεξεργασία Εγγραφής'
,sv: 'Redigera behandling'
,bg: 'Редакция на събитие'
@@ -6887,6 +6934,7 @@ function init() {
cs: 'Doba trvání'
,ro: 'Durata'
,de: 'Dauer'
+ ,dk: 'Varighed'
,el: 'Διάρκεια'
,sv: 'Varaktighet'
,bg: 'Времетраене'
@@ -6904,6 +6952,7 @@ function init() {
,'Duration in minutes' : {
cs: 'Doba trvání v minutách'
,de: 'Dauer in Minuten'
+ ,dk: 'Varighed i minutter'
,ro: 'Durata în minute'
,el: 'Διάρκεια σε λεπτά'
,sv: 'Varaktighet i minuter'
@@ -6922,6 +6971,7 @@ function init() {
,'Temp Basal' : {
cs: 'Dočasný bazál'
,de: 'Temporäre Basalrate'
+ ,dk: 'Midlertidig basal'
,ro: 'Bazală temporară'
,sv: 'Temporär basal'
,bg: 'Временен базал'
@@ -6941,6 +6991,7 @@ function init() {
,ro: 'Start bazală temporară'
,sv: 'Temporär basalstart'
,de: 'Start Temporäre Basalrate'
+ ,dk: 'Midlertidig basal start'
,bg: 'Начало на временен базал'
,it: 'Inizio Basale Temp'
,nb: 'Midlertidig basal start'
@@ -6960,6 +7011,7 @@ function init() {
,bg: 'Край на временен базал'
,it: 'Fine Basale Temp'
,de: 'Ende Temporäre Basalrate'
+ ,dk: 'Midlertidig basal slut'
,nb: 'Midlertidig basal stopp'
,fi: 'Tilapäinen basaali loppu'
,pl: 'Koniec tymczasowej dawki podstawowej'
@@ -6974,6 +7026,7 @@ function init() {
cs: 'Procenta'
,ro: 'Procent'
,de: 'Prozent'
+ ,dk: 'Procent'
,el: 'Επι τοις εκατό'
,sv: 'Procent'
,bg: 'Процент'
@@ -6994,6 +7047,7 @@ function init() {
,sv: 'Basaländring i %'
,bg: 'Промяна на базала с %'
,de: 'Basalratenänderung in %'
+ ,dk: 'Basal ændring i %'
,it: 'Variazione basale in %'
,nb: 'Basal endring i %'
,fi: 'Basaalimuutos prosenteissa'
@@ -7010,6 +7064,7 @@ function init() {
,ro: 'Valoare bazală'
,sv: 'Basalvärde'
,de: 'Basalrate'
+ ,dk: 'Basalværdi'
,bg: 'Временен базал'
,it: 'Valore Basale'
,nb: 'Basalverdi'
@@ -7027,6 +7082,7 @@ function init() {
,bg: 'Базална стойност'
,it: 'Valore Basale Assoluto'
,de: 'Absoluter Basalratenwert'
+ ,dk: 'Absolut basalværdi'
,nb: 'Absolutt basalverdi'
,ro: 'Valoare absolută bazală'
,sv: 'Absolut basalvärde'
@@ -7043,6 +7099,7 @@ function init() {
cs: 'Oznámení'
,bg: 'Известяване'
,de: 'Ankündigung'
+ ,dk: 'Meddelelse'
,ro: 'Anunț'
,el: 'Ανακοίνωση'
,sv: 'Avisering'
@@ -7064,6 +7121,7 @@ function init() {
,ro: 'Se încarcă date bazală temporară'
,sv: 'Laddar temporär basaldata'
,de: 'Lade temporäre Basaldaten'
+ ,dk: 'Indlæser midlertidig basal data'
,nb: 'Laster verdier for midlertidig basal'
,fi: 'Lataan tilapäisten basaalien tietoja'
,bg: 'Зареждане на данни за временния базал'
@@ -7082,6 +7140,7 @@ function init() {
,nb: 'Lagre før bytte til ny?'
,el: 'Αποθήκευση τρεχουσας εγγραφής πριν δημιουργήσουμε νέα?'
,de: 'Aktuelle Einträge speichern?'
+ ,dk: 'Gem aktuelle indgang før der skiftes til ny?'
,fi: 'Tallenna nykyinen merkintä ennen vaihtoa uuteen?'
,bg: 'Запази текущият запис преди да промениш новия '
,pl: 'Zapisać bieżący rekord przed zamianą na nowy?'
@@ -7099,6 +7158,7 @@ function init() {
,sv: 'Ny profil'
,el: 'Εναλλαγή προφίλ'
,de: 'Profil wechseln'
+ ,dk: 'Byt profil'
,nb: 'Bytt profil'
,fi: 'Vaihda profiilia'
,bg: 'Смяна на профил'
@@ -7114,6 +7174,7 @@ function init() {
,'Profile' : {
cs: 'Profil'
,de: 'Profil'
+ ,dk: 'Profil'
,el: 'Προφίλ'
,it: 'Profilo'
,ro: 'Profil'
@@ -7132,6 +7193,7 @@ function init() {
,'General profile settings' : {
cs: 'Obecná nastavení profilu'
,de: 'Allgemeine Profileinstellungen'
+ ,dk: 'Generelle profil indstillinger'
,el: 'Γενικές Ρυθμίσεις Προφίλ'
,ro: 'Setări generale profil'
,sv: 'Allmän profilinställning'
@@ -7153,6 +7215,7 @@ function init() {
,sv: 'Titel'
,el: 'Τίτλος'
,de: 'Überschrift'
+ ,dk: 'Overskrift'
,nb: 'Tittel'
,fi: 'Otsikko'
,bg: 'Заглавие'
@@ -7172,6 +7235,7 @@ function init() {
,el: 'Εγραφές Βάσης Δεδομένων'
,nb: 'Databaseverdier'
,de: 'Datenbankeinträge'
+ ,dk: 'Database indgange'
,fi: 'Tietokantamerkintöjä'
,bg: 'Записи в базата с данни'
,pl: 'Rekordy bazy danych'
@@ -7190,6 +7254,7 @@ function init() {
,el: 'Προσθήκη νέας εγγραφής'
,nb: 'Legg til ny rad'
,de: 'Neuen Eintrag hinzufügen'
+ ,dk: 'Tilføj ny indgang'
,fi: 'Lisää uusi merkintä'
,bg: 'Добави нов запис'
,pl: 'Dodaj nowy rekord'
@@ -7208,6 +7273,7 @@ function init() {
,el: 'Αφαίρεση εγγραφής'
,nb: 'Fjern denne raden'
,de: 'Diesen Eintrag löschen'
+ ,fk: 'Fjern denne indgang'
,fi: 'Poista tämä merkintä'
,bg: 'Премахни този запис'
,pl: 'Usuń ten rekord'
@@ -7226,6 +7292,7 @@ function init() {
,sv: 'Kopiera denna händelse till ny'
,nb: 'Kopier til ny rad'
,de: 'Diesen Eintrag duplizieren'
+ ,dk: 'Dupliker denne indgang'
,fi: 'Kopioi tämä merkintä uudeksi'
,bg: 'Копирай този запис като нов'
,pl: 'Powiel ten rekord na nowy'
@@ -7243,6 +7310,7 @@ function init() {
,sv: 'Händelse giltig från'
,el: 'Ισχύει από'
,de: 'Eintrag gültig ab'
+ ,dk: 'Indgang gyldig fra'
,nb: 'Rad gyldig fra'
,fi: 'Merkintä voimassa alkaen'
,bg: 'Записът е валиден от '
@@ -7261,6 +7329,7 @@ function init() {
,sv: 'Lagrad profil'
,el: 'Αποθηκευμένα προφίλ'
,de: 'Gesicherte Profile'
+ ,dk: 'Gemte profiler'
,nb: 'Lagrede profiler'
,fi: 'Tallennetut profiilit'
,bg: 'Запаметени профили'
@@ -7276,6 +7345,7 @@ function init() {
,'Timezone' : {
cs: 'Časová zóna'
,de: 'Zeitzone'
+ ,dk: 'Tidszone'
,ro: 'Fus orar'
,el: 'Ζώνη Ώρας'
,sv: 'Tidszon'
@@ -7298,6 +7368,7 @@ function init() {
,sv: 'verkningstid för insulin (DIA)'
,nb: 'Insulin varighet'
,de: 'Dauer der Insulinaktivität (DIA)'
+ ,dk: 'Varighed af insulin aktivitet (DIA)'
,fi: 'Insuliinin vaikutusaika (DIA)'
,bg: 'Продължителност на инсулиновата активност DIA'
,pl: 'Czas trwania aktywnej insuliny (DIA)'
@@ -7314,6 +7385,7 @@ function init() {
,ro: 'Reprezintă durata tipică pentru care insulina are efect. Este diferită la fiecare pacient și pentru fiecare tip de insulină'
,el: 'Αντιπροσωπευει την τυπική διάρκεια δράσης της χορηγηθείσας ινσουλίνης.'
,de: 'Entspricht der typischen Dauer in der das Insulin wirkt. Variiert je Patient und Insulintyp. Häufig 3-4 Stunden für die meisten Pumpeninsuline und die meisten Patienten. Manchmal auch Insulin-Wirkungsdauer genannt.'
+ ,dk: 'Representerer den typiske tid hvor insulinen virker. Varierer per patient og per insulin type. Typisk 3-4 timer for de fleste pumpe insulin og for de fleste patienter. Nogle gange kaldes dette også insulin-livs-tid.'
,sv: 'Beskriver under hur lång tid insulinet verkar. Varierar mellan patienter. Typisk varaktighet 3-4 timmar.'
,nb: 'Representerer typisk insulinvarighet. Varierer per pasient og per insulin type. Vanligvis 3-4 timer for de fleste typer insulin og de fleste pasientene. Noen ganger også kalt insulinlevetid.'
,fi: 'Kertoo insuliinin tyypillisen vaikutusajan. Vaihtelee potilaan ja insuliinin tyypin mukaan. Tyypillisesti 3-4 tuntia pumpuissa käytettävällä insuliinilla.'
@@ -7334,6 +7406,7 @@ function init() {
,el: 'Αναλογία Ινσουλίνης/Υδατάνθρακα (I:C)'
,nb: 'IKH forhold'
,de: 'Insulin/Kohlenhydrate-Verhältnis (I:KH)'
+ ,dk: 'Insulin til kulhydrat forhold (I:C)'
,fi: 'Insuliiniannoksen hiilihydraattisuhde (I:HH)'
,bg: 'Съотношение инсулин/въглехидратите ICR I:C И:ВХ'
,pl: 'Współczynnik insulina/węglowodany (I:C)'
@@ -7350,6 +7423,7 @@ function init() {
,ro: 'ore'
,el: 'ώρες'
,de: 'Stunden'
+ ,dk: 'timer'
,sv: 'timmar'
,nb: 'timer'
,fi: 'tuntia'
@@ -7369,6 +7443,7 @@ function init() {
,sv: 'g/timme'
,nb: 'g/t'
,de: 'g/Std'
+ ,dk: 'g/time'
,fi: 'g/tunti'
,bg: 'гр/час'
,pl: 'g/godzine'
@@ -8148,7 +8223,7 @@ function init() {
,pt: 'Carregando dados de OpenAPS de'
,ko: 'OpenAPS 데이터 로딩'
,it: 'Caricamento in corso dati OpenAPS'
- ,nl: 'Open Aps gegevens opladen van'
+ ,nl: 'OpenAPS gegevens opladen van'
,zh_cn: '载入OpenAPS数据从'
}
,'Loading profile switch data' : {
@@ -8166,7 +8241,7 @@ function init() {
,pt: 'Carregando dados de troca de perfil'
,ko: '프로파일 변환 데이터 로딩'
,it: 'Caricamento in corso dati cambio profilo'
- ,nl: 'Ophalen van profiel wissel data'
+ ,nl: 'Ophalen van data om profiel te wisselen'
,zh_cn: '载入配置文件交换数据'
}
,'Profile is going to be saved in newer format used in Nightscout 0.9.0 and above and will not be usable in older versions anymore.\nAre you sure?' : {
@@ -8250,12 +8325,11 @@ function init() {
,bg: 'Възраст на инсулина (ВИ)'
,ro: 'Vechimea insulinei'
,ru: 'инсулин проработал'
- ,nl: 'Insuline leeftijd (IAGE)'
,ko: '인슐린 사용 기간'
,fi: 'Insuliinin ikä'
,pt: 'Idade da insulina'
,it: 'IAGE - Durata Insulina'
- ,nl: 'Insuline ouderdom'
+ ,nl: 'Insuline ouderdom (IAGE)'
,zh_cn: '胰岛素使用时间(IAGE)'
,zh_tw: '胰島素使用時間(IAGE)'
}
@@ -8266,7 +8340,6 @@ function init() {
,el: 'Προσωρινός στόχος'
,sv: 'Tillfälligt mål'
,nb: 'Mildertidig mål'
- ,de: 'Temporäres Ziel'
,bg: 'Временна граница'
,ro: 'Țintă temporară'
,ru: 'Временная цель'
@@ -8415,7 +8488,7 @@ function init() {
,'Positive temp basal insulin:' : {
cs: 'Pozitivní dočasný bazální inzulín:'
,bg: 'Положителен временен базален инсулин'
- ,ro: 'Bazala temporară crescută:'
+ ,ro: 'Bazala temporară marită:'
,el: 'Θετική βασική ινσουλίνη'
,ru: 'Положит знач временн базал инс '
,sv: 'Positiv tempbasal insulin:'
@@ -8426,13 +8499,13 @@ function init() {
,pt: 'Insulina basal temporária positiva:'
,sk: 'Pozitívny dočasný bazálny inzulín:'
,it: 'Insulina basale temp positiva:'
- ,nl: 'Verhoging tijd. basaal insuline'
+ ,nl: 'Extra tijdelijke basaal insuline'
,zh_cn: '实际临时基础率胰岛素'
}
,'Negative temp basal insulin:' : {
cs:'Negativní dočasný bazální inzulín:'
,bg: 'Отрицателен временен базален инсулин'
- ,ro: 'Bazala temporară scăzută:'
+ ,ro: 'Bazala temporară micșorată:'
,el: 'Αρνητική βασική ινσουλίνη'
,ru: 'Отриц знач временн базал инс'
,sv: 'Negativ tempbasal för insulin:'
@@ -8443,7 +8516,7 @@ function init() {
,pt: 'Insulina basal temporária negativa:'
,sk: 'Negatívny dočasný bazálny inzulín:'
,it: 'Insulina basale Temp negativa:'
- ,nl: 'Verlaging tijd. basaal insuline'
+ ,nl: 'Negatieve tijdelijke basaal insuline'
,zh_cn: '其余临时基础率胰岛素'
}
,'Total basal insulin:' : {
@@ -8814,7 +8887,7 @@ function init() {
,sk: 'rola1, rola2'
,ko: '역할1, 역할2'
,it: 'ruolo1, ruolo2'
- ,nl: 'rol1, rol 2'
+ ,nl: 'rol1, rol2'
,zh_cn: '角色1、角色2'
}
,'Edit this subject' : {
@@ -8884,7 +8957,7 @@ function init() {
,'hour ago' : {
cs:'hodina zpět'
,bg: 'Преди час'
- ,ro: 'oră trecut'
+ ,ro: 'oră în trecut'
,ru: 'час назад'
,sv: 'timme sedan'
,nb: 'time siden'
@@ -8900,7 +8973,7 @@ function init() {
,'hours ago' : {
cs:'hodin zpět'
,bg: 'Преди часове'
- ,ro: 'ore trecute'
+ ,ro: 'ore în trecut'
,ru: 'часов назад'
,sv: 'timmar sedan'
,nb: 'timer siden'
@@ -8997,7 +9070,7 @@ function init() {
,'Current Carb Ratio' : {
cs:'Sacharidový poměr (I:C)'
,de: 'Aktuelles KH-Verhältnis'
- ,ro: 'Report Insulină:Carbohidrați (ICR)'
+ ,ro: 'Raport Insulină:Carbohidrați (ICR)'
,ru: 'Актуальное соотношение инсулин:углеводы'
,sk: 'Aktuálny sacharidový pomer (I"C)'
,sv: 'Gällande kolhydratkvot'
@@ -9584,7 +9657,7 @@ function init() {
,'aiming at' : {
cs:'s cílem'
,de: 'angestrebt werden'
- ,ro: 'se țintește la'
+ ,ro: 'ținta este'
,ru: 'цель на'
,bg: 'цел към'
,sv: 'önskad utgång'
@@ -9703,7 +9776,7 @@ function init() {
,'Time to change cannula' : {
cs:'Čas na výměnu setu'
,de: 'Es ist Zeit, die Kanüle zu wechseln'
- ,ro: 'Este momentul să schimbați canula'
+ ,ro: 'Este vremea să schimbați canula'
,bg: 'Време за смяна на сет'
,ru: 'Пора заменить канюлю'
,sv: 'Dags att byta infusionsset'
@@ -9733,7 +9806,7 @@ function init() {
,'Cannula age %1 hours' : {
cs:'Stáří setu %1 hodin'
,de: 'Kanülen Alter %1 Stunden'
- ,ro: 'Vechimea canulei %1 ore'
+ ,ro: 'Vechimea canulei în ore: %1'
,bg: 'Сетът е на %1 часове'
,ru: 'Возраст канюли %1 час'
,sv: 'Infusionsset tid %1 timmar'
@@ -9823,7 +9896,7 @@ function init() {
,'Insulin reservoir change overdue!' : {
cs:'Čas na výměnu zásobníku vypršel!'
,de: 'Ampullenwechsel überfällig!'
- ,ro: 'Depășire termen de schimbare a rezervorului de insulină'
+ ,ro: 'Termenul de schimbare a rezervorului de insulină a fost depășit'
,bg: 'Смянатата на резервоара просрочена'
,ru: 'Срок замены тубы инсулина истек'
,sv: 'Insulinbytestid överskriden'
@@ -10190,7 +10263,7 @@ function init() {
,ru: 'чтобы увидеть отчет, нажмите show/показать'
,fi: 'Nähdäksesi tämän raportin, paina NÄYTÄ tässä näkymässä'
,it: 'Per guardare questo report, premere SHOW all\'interno della finestra'
- ,nl: 'Omd dit rapport te zien, druk op "Laat zien"'
+ ,nl: 'Om dit rapport te zien, druk op "Laat zien"'
}
,'AR2 Forecast' : {
cs: 'AR2 predikci'
@@ -10234,7 +10307,7 @@ function init() {
,ru: 'OpenAPS вне сети'
,fi: 'OpenAPS poissa verkosta'
,it: 'OpenAPS disconnesso'
- ,nl: 'OpenAps Offline'
+ ,nl: 'OpenAPS Offline'
}
,'Profiles' : {
cs: 'Profily'
@@ -10250,14 +10323,14 @@ function init() {
,it: 'Tempo in fluttuazione'
,ro: 'Timp în fluctuație'
,ru: 'время флуктуаций'
- ,nl: 'Tijd met bokkensprongen'
+ ,nl: 'Tijd met fluctuaties'
}
,'Time in rapid fluctuation' : {
fi: 'Aika nopeassa muutoksessa'
,it: 'Tempo in rapida fluttuazione'
,ro: 'Timp în fluctuație rapidă'
,ru: 'время быстрых флуктуаций'
- ,nl: 'tijd met grote bokkensprongen'
+ ,nl: 'Tijd met grote fluctuaties'
}
,'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: '
@@ -10278,7 +10351,7 @@ function init() {
,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: 'время флуктуаций и время быстрых флуктуаций означает % времени в рассматриваемый период в течение которого СК менялся относительно быстро или просто быстро. Более низкие значения предпочтительней'
- ,nl: 'Tijd met bokkensprongen of grote bokkensprongen in % van de geevalueerde periode, waarbij de bloed glucose relatief snel wijzigde.Lagere waarden zijn beter.'
+ ,nl: 'Tijd met fluctuaties of grote fluctuaties in % van de geevalueerde periode, waarbij de bloed glucose relatief snel wijzigde.Lagere waarden zijn beter.'
}
, '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.'
@@ -10323,7 +10396,7 @@ function init() {
, el: 'slightly dropping'
, en: 'slightly dropping'
, es: 'slightly dropping'
- , fi: 'slightly dropping'
+ , fi: 'laskee hitaasti'
, fr: 'slightly dropping'
, he: 'slightly dropping'
, hr: 'slightly dropping'
@@ -10332,7 +10405,7 @@ function init() {
, nb: 'slightly dropping'
, pl: 'slightly dropping'
, pt: 'slightly dropping'
- , ro: 'slightly dropping'
+ , ro: 'scădere ușoară'
, ru: 'незначительное падение'
, sk: 'slightly dropping'
, sv: 'slightly dropping'
@@ -10348,7 +10421,7 @@ function init() {
, el: 'slightly rising'
, en: 'slightly rising'
, es: 'slightly rising'
- , fi: 'slightly rising'
+ , fi: 'nousee hitaasti'
, fr: 'slightly rising'
, he: 'slightly rising'
, hr: 'slightly rising'
@@ -10357,7 +10430,7 @@ function init() {
, nb: 'slightly rising'
, pl: 'slightly rising'
, pt: 'slightly rising'
- , ro: 'slightly rising'
+ , ro: 'creștere ușoară'
, ru: 'незначительный подъем'
, sk: 'slightly rising'
, sv: 'slightly rising'
@@ -10373,7 +10446,7 @@ function init() {
, el: 'holding'
, en: 'holding'
, es: 'holding'
- , fi: 'holding'
+ , fi: 'tasainen'
, fr: 'holding'
, he: 'holding'
, hr: 'holding'
@@ -10382,7 +10455,7 @@ function init() {
, nb: 'holding'
, pl: 'holding'
, pt: 'holding'
- , ro: 'holding'
+ , ro: 'stabil'
, ru: 'ровный'
, sk: 'holding'
, sv: 'holding'
@@ -10398,7 +10471,7 @@ function init() {
, el: 'rising'
, en: 'rising'
, es: 'rising'
- , fi: 'rising'
+ , fi: 'nousussa'
, fr: 'rising'
, he: 'rising'
, hr: 'rising'
@@ -10407,7 +10480,7 @@ function init() {
, nb: 'rising'
, pl: 'rising'
, pt: 'rising'
- , ro: 'rising'
+ , ro: 'creștere'
, ru: 'растет'
, sk: 'rising'
, sv: 'rising'
@@ -10423,7 +10496,7 @@ function init() {
, el: 'dropping'
, en: 'dropping'
, es: 'dropping'
- , fi: 'dropping'
+ , fi: 'laskussa'
, fr: 'dropping'
, he: 'dropping'
, hr: 'dropping'
@@ -10432,7 +10505,7 @@ function init() {
, nb: 'dropping'
, pl: 'dropping'
, pt: 'dropping'
- , ro: 'dropping'
+ , ro: 'scădere'
, ru: 'падает'
, sk: 'dropping'
, sv: 'dropping'
@@ -10448,7 +10521,7 @@ function init() {
, el: 'rapidly dropping'
, en: 'rapidly dropping'
, es: 'rapidly dropping'
- , fi: 'rapidly dropping'
+ , fi: 'laskee nopeasti'
, fr: 'rapidly dropping'
, he: 'rapidly dropping'
, hr: 'rapidly dropping'
@@ -10457,7 +10530,7 @@ function init() {
, nb: 'rapidly dropping'
, pl: 'rapidly dropping'
, pt: 'rapidly dropping'
- , ro: 'rapidly dropping'
+ , ro: 'scădere bruscă'
, ru: 'быстро падает'
, sk: 'rapidly dropping'
, sv: 'rapidly dropping'
@@ -10473,7 +10546,7 @@ function init() {
, el: 'rapidly rising'
, en: 'rapidly rising'
, es: 'rapidly rising'
- , fi: 'rapidly rising'
+ , fi: 'nousee nopeasti'
, fr: 'rapidly rising'
, he: 'rapidly rising'
, hr: 'rapidly rising'
@@ -10482,7 +10555,7 @@ function init() {
, nb: 'rapidly rising'
, pl: 'rapidly rising'
, pt: 'rapidly rising'
- , ro: 'rapidly rising'
+ , ro: 'creștere rapidă'
, ru: 'быстро растет'
, sk: 'rapidly rising'
, sv: 'rapidly rising'
@@ -10498,7 +10571,7 @@ function init() {
, 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.'
+ , fi: '%1 ja %2 alkaen %3.'
, fr: '%1 and %2 as of %3.'
, he: '%1 and %2 as of %3.'
, hr: '%1 and %2 as of %3.'
@@ -10507,7 +10580,7 @@ function init() {
, 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.'
+ , ro: '%1 și %2 din %3.'
, nl: '%1 and %2 as of %3.'
, ru: '%1 и %2 начиная с %3.'
, sk: '%1 and %2 as of %3.'
@@ -10523,7 +10596,7 @@ function init() {
, 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'
+ , fi: '%1 nykyinen basaali on %2 yksikköä tunnissa'
, 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'
@@ -10532,7 +10605,7 @@ function init() {
, 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'
+ , ro: '%1 bazala curentă este %2 unități pe oră'
, ru: '%1 текущий базал %2 ед в час'
, sk: '%1 current basal is %2 units per hour'
, sv: '%1 current basal is %2 units per hour'
@@ -10548,7 +10621,7 @@ function init() {
, 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'
+ , fi: '%1 tilapäinen basaali on %2 tunnissa, päättyy %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'
@@ -10557,7 +10630,7 @@ function init() {
, 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'
+ , ro: '%1 bazala temporară de %2 unități pe oră se va termina la %3'
, ru: '%1 временный базал %2 ед в час закончится в %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'
@@ -10573,7 +10646,7 @@ function init() {
, 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.'
+ , fi: 'ja sinulla on %1 aktivista insuliinia.'
, fr: 'and you have %1 insulin on board.'
, he: 'and you have %1 insulin on board.'
, hr: 'and you have %1 insulin on board.'
@@ -10582,7 +10655,7 @@ function init() {
, 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.'
+ , ro: 'și mai aveți %1 insulină activă.'
, ru: 'и вы имеете %1 инсулина в организме.'
, sk: 'and you have %1 insulin on board.'
, sv: 'and you have %1 insulin on board.'
@@ -10598,7 +10671,7 @@ function init() {
, 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'
+ , fi: 'Sinulla on %1 aktiivista insuliinia'
, fr: 'You have %1 insulin on board'
, he: 'You have %1 insulin on board'
, hr: 'You have %1 insulin on board'
@@ -10607,7 +10680,7 @@ function init() {
, 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'
+ , ro: 'Aveți %1 insulină activă'
, ru: 'вы имеете %1 инсулина в организме'
, sk: 'You have %1 insulin on board'
, sv: 'You have %1 insulin on board'
@@ -10623,7 +10696,7 @@ function init() {
, el: '%1 units of'
, en: '%1 units of'
, es: '%1 units of'
- , fi: '%1 units of'
+ , fi: '%1 yksikköä'
, fr: '%1 units of'
, he: '%1 units of'
, hr: '%1 units of'
@@ -10632,7 +10705,7 @@ function init() {
, nb: '%1 units of'
, pl: '%1 units of'
, pt: '%1 units of'
- , ro: '%1 units of'
+ , ro: '%1 unități'
, ru: '%1 единиц'
, sk: '%1 units of'
, sv: '%1 units of'
@@ -10647,7 +10720,7 @@ function init() {
, el: 'Your'
, en: 'Your'
, es: 'Your'
- , fi: 'Your'
+ , fi: 'Sinun'
, fr: 'Your'
, he: 'Your'
, hr: 'Your'
@@ -10656,7 +10729,7 @@ function init() {
, nb: 'Your'
, pl: 'Your'
, pt: 'Your'
- , ro: 'Your'
+ , ro: ''
, ru: 'ваш'
, sk: 'Your'
, sv: 'Your'
@@ -10671,7 +10744,7 @@ function init() {
, el: '%1 has a '
, en: '%1 has a '
, es: '%1 has a '
- , fi: '%1 has a '
+ , fi: '%1 on '
, fr: '%1 has a '
, he: '%1 has a '
, hr: '%1 has a '
@@ -10680,8 +10753,8 @@ function init() {
, nb: '%1 has a '
, pl: '%1 has a '
, pt: '%1 has a '
- , ro: '%1 имеет '
- , ru: '%1 has a '
+ , ro: '%1 are '
+ , ru: '%1 имеет '
, sk: '%1 has a '
, sv: '%1 has a '
, zh_cn: '%1 has a '
@@ -10695,7 +10768,7 @@ function init() {
, el: 'no'
, en: 'no'
, es: 'no'
- , fi: 'no'
+ , fi: 'ei'
, fr: 'no'
, he: 'no'
, hr: 'no'
@@ -10704,7 +10777,7 @@ function init() {
, nb: 'no'
, pl: 'no'
, pt: 'no'
- , ro: 'no'
+ , ro: 'fără'
, ru: 'нет'
, sk: 'no'
, sv: 'no'
@@ -10714,14 +10787,26 @@ function init() {
'Fat [g]': {
cs: 'Tuk [g]'
,de: 'Fett [g]'
+ ,fi: 'Rasva [g]'
+ ,ro: 'Grăsimi [g]'
},
'Protein [g]': {
cs: 'Proteiny [g]'
,de: 'Proteine [g]'
+ ,fi: 'Proteiini [g]'
+ ,ro: 'Proteine [g]'
+
},
'Energy [kJ]': {
cs: 'Energie [kJ]'
,de: 'Energie [kJ]'
+ , fi: 'Energia [kJ]'
+ ,ro: 'Energie [g]'
+ }
+ ,
+ 'Clock View': {
+ fi: 'Kellonäkymä'
+ ,ro: 'Vedere tip ceas'
}
};
diff --git a/lib/plugins/bgnow.js b/lib/plugins/bgnow.js
index 2f9b39b5e82..512a23805c2 100644
--- a/lib/plugins/bgnow.js
+++ b/lib/plugins/bgnow.js
@@ -209,7 +209,7 @@ function init (ctx) {
_.forEach(delta.previous.sgvs, function deviceAndValue(entry) {
var device = utils.deviceName(entry.device);
var deviceInfo = deviceInfos[device];
- if (deviceInfo) {
+ if (deviceInfo && deviceInfo.recent) {
var deviceDelta = bgnow.calcDelta(
{ mills: deviceInfo.recent.mills , mean: deviceInfo.recent.mgdl}
, { mills: entry.mills, mean: entry.mgdl}
diff --git a/lib/plugins/loop.js b/lib/plugins/loop.js
index ea7ebdb806f..bf2482cfe3c 100644
--- a/lib/plugins/loop.js
+++ b/lib/plugins/loop.js
@@ -186,6 +186,8 @@ function init(ctx) {
valueParts = concatIOB(valueParts);
valueParts = concatCOB(valueParts);
+ valueParts = concatEventualBG (valueParts);
+ valueParts = concatRecommendedBolus(valueParts);
events.push({
time: moment(recommendedTempBasal.timestamp)
@@ -257,6 +259,8 @@ function init(ctx) {
valueParts = concatIOB(valueParts);
valueParts = concatCOB(valueParts);
+ valueParts = concatEventualBG (valueParts);
+ valueParts = concatRecommendedBolus(valueParts);
events.push({
time: prop.lastEnacted.moment
@@ -292,6 +296,44 @@ function init(ctx) {
return valueParts;
}
+ function concatEventualBG (valueParts) {
+ if (prop.lastLoop && prop.lastLoop.predicted) {
+ var predictedBGvalues = prop.lastLoop.predicted.values;
+ var eventualBG = predictedBGvalues[predictedBGvalues.length-1];
+ var maxBG = Math.max.apply(null,predictedBGvalues);
+ var minBG = Math.min.apply(null,predictedBGvalues);
+ var eventualBGscaled = sbx.settings.units === 'mmol' ?
+ sbx.roundBGToDisplayFormat(sbx.scaleMgdl(eventualBG)) : eventualBG;
+ var maxBGscaled = sbx.settings.units === 'mmol' ?
+ sbx.roundBGToDisplayFormat(sbx.scaleMgdl(maxBG)) : maxBG;
+ var minBGscaled = sbx.settings.units === 'mmol' ?
+ sbx.roundBGToDisplayFormat(sbx.scaleMgdl(minBG)) : minBG;
+ valueParts = valueParts.concat([
+ ', Predicted Min-Max BG: '
+ , minBGscaled
+ , '-'
+ , maxBGscaled
+ ,', Eventual BG: '
+ , eventualBGscaled
+ ]);
+ }
+
+ return valueParts;
+ }
+
+ function concatRecommendedBolus (valueParts) {
+ if (prop.lastLoop && prop.lastLoop.recommendedBolus) {
+ var recommendedBolus = prop.lastLoop.recommendedBolus;
+ valueParts = valueParts.concat([
+ ', Recommended Bolus: '
+ , recommendedBolus + 'U'
+ ]);
+ }
+
+ return valueParts;
+ }
+
+
function getForecastPoints ( ) {
var points = [ ];
@@ -337,7 +379,7 @@ function init(ctx) {
addRecommendedTempBasal();
}
- addRSSI();
+ addRSSI();
var sorted = _.sortBy(events, function toMill(event) {
return event.time.valueOf();
diff --git a/lib/profilefunctions.js b/lib/profilefunctions.js
index b7f85537ac0..94120d72f67 100644
--- a/lib/profilefunctions.js
+++ b/lib/profilefunctions.js
@@ -350,14 +350,27 @@ function init (profileData) {
for (var key in profile.data[0].store) {
if (profile.data[0].store.hasOwnProperty(key) && key !== current) {
+ if (key.indexOf('@@@@@') < 0)
profiles.push(key);
}
}
}
return profiles;
};
-
-
+
+ // get original store without added profiles fro profileSwitches
+ profile.getProfileStore = function getProfileStore () {
+ var newprofiledata = _.clone(profile.data[0]);
+ for (var key in profile.data[0].store) {
+ if (profile.data[0].store.hasOwnProperty(key)) {
+ if (key.indexOf('@@@@@') < 0)
+ store[key] = profile.data[0].store[key];
+ }
+ }
+ return store;
+ };
+
+
if (profileData) { profile.loadData(profileData); }
// init treatments array
profile.updateTreatments([], []);
diff --git a/lib/report_plugins/daytoday.js b/lib/report_plugins/daytoday.js
index 3f66a29de44..e7bcbe79a80 100644
--- a/lib/report_plugins/daytoday.js
+++ b/lib/report_plugins/daytoday.js
@@ -631,8 +631,80 @@ daytoday.report = function report_daytoday(datastorage,sorteddaystoshow,options)
'translate(' + (xScale2(treatment.mills) + padding.left + 10) + ',' + (padding.top+yInsulinScale(treatment.insulin)) + ')')
.text(Number(treatment.insulin).toFixed(2)+'U');
}
+
+ // process the rest
+ if (treatment.insulin || treatment.carbs || treatment.eventType == 'Temp Basal' || treatment.eventType == 'Combo Bolus') {
+ // ignore
+ } else if (treatment.eventType === 'Profile Switch') {
+ // profile switch
+ appendProfileSwitch(context, treatment);
+ if (treatment.duration && !treatment.cuttedby) {
+ appendProfileSwitch(context, {
+ cutting: treatment.profile
+ , profile: client.profilefunctions.activeProfileToTime(times.mins(treatment.duration).msecs + treatment.mills + 1)
+ , mills: times.mins(treatment.duration).msecs + treatment.mills
+ , end: true
+ });
+ }
+ } else if (treatment.eventType === 'Exercise' && treatment.duration) {
+ context.append('rect')
+ .attr('x', xScale2(treatment.mills) + padding.left)
+ .attr('y', yScale2(client.utils.scaleMgdl(396)) + padding.top)
+ .attr('width', xScale2(treatment.mills + times.mins(treatment.duration).msecs) - xScale2(treatment.mills))
+ .attr('height', yScale2(client.utils.scaleMgdl(360)) - yScale2(client.utils.scaleMgdl(396)))
+ .attr('stroke-width', 1)
+ .attr('opacity', .2)
+ .attr('stroke', 'white')
+ .attr('fill', 'Violet');
+ context.append('text')
+ .style('font-size', '12px')
+ .style('font-weight', 'bold')
+ .attr('fill', 'Violet')
+ .attr('text-anchor', 'middle')
+ .attr('dy', '.35em')
+ .attr('y', yScale2(client.utils.scaleMgdl(378)) + padding.top)
+ .attr('x', xScale2(treatment.mills + times.mins(treatment.duration).msecs/2) + padding.left)
+ .text(treatment.notes);
+ } else if (treatment.eventType === 'Note' && treatment.duration) {
+ context.append('rect')
+ .attr('x', xScale2(treatment.mills) + padding.left)
+ .attr('y', yScale2(client.utils.scaleMgdl(360)) + padding.top)
+ .attr('width', xScale2(treatment.mills + times.mins(treatment.duration).msecs) - xScale2(treatment.mills))
+ .attr('height', yScale2(client.utils.scaleMgdl(324)) - yScale2(client.utils.scaleMgdl(360)))
+ .attr('stroke-width', 1)
+ .attr('opacity', .2)
+ .attr('stroke', 'white')
+ .attr('fill', 'Salmon');
+ context.append('text')
+ .style('font-size', '12px')
+ .style('font-weight', 'bold')
+ .attr('fill', 'Salmon')
+ .attr('text-anchor', 'middle')
+ .attr('dy', '.35em')
+ .attr('y', yScale2(client.utils.scaleMgdl(342)) + padding.top)
+ .attr('x', xScale2(treatment.mills + times.mins(treatment.duration).msecs/2) + padding.left)
+ .text(treatment.notes);
+ } else if (treatment.eventType === 'OpenAPS Offline' && treatment.duration) {
+ context.append('rect')
+ .attr('x', xScale2(treatment.mills) + padding.left)
+ .attr('y', yScale2(client.utils.scaleMgdl(324)) + padding.top)
+ .attr('width', xScale2(treatment.mills + times.mins(treatment.duration).msecs) - xScale2(treatment.mills))
+ .attr('height', yScale2(client.utils.scaleMgdl(288)) - yScale2(client.utils.scaleMgdl(324)))
+ .attr('stroke-width', 1)
+ .attr('opacity', .2)
+ .attr('stroke', 'white')
+ .attr('fill', 'Brown');
+ context.append('text')
+ .style('font-size', '12px')
+ .style('font-weight', 'bold')
+ .attr('fill', 'Brown')
+ .attr('text-anchor', 'middle')
+ .attr('dy', '.35em')
+ .attr('y', yScale2(client.utils.scaleMgdl(306)) + padding.top)
+ .attr('x', xScale2(treatment.mills + times.mins(treatment.duration).msecs/2) + padding.left)
+ .text(treatment.notes);
+ } else if (!treatment.duration) {
// other treatments without duration
- if (!treatment.insulin && !treatment.carbs && !treatment.duration && treatment.eventType !== 'Temp Basal' && treatment.eventType !== 'Profile Switch') {
context.append('circle')
.attr('cx', xScale2(treatment.mills) + padding.left)
.attr('cy', yScale2(scaledTreatmentBG(treatment,data.sgv)) + padding.top)
@@ -648,42 +720,28 @@ daytoday.report = function report_daytoday(datastorage,sorteddaystoshow,options)
.attr('y', yScale2(scaledTreatmentBG(treatment,data.sgv)) + padding.top -10)
.attr('x', xScale2(treatment.mills) + padding.left + 10)
.text(translate(client.careportal.resolveEventName(treatment.eventType)));
- }
+ } else if (treatment.duration) {
// other treatments with duration
- if (!treatment.insulin && !treatment.carbs && treatment.duration && treatment.eventType !== 'Temp Basal' && treatment.eventType !== 'Profile Switch' && treatment.eventType !== 'Combo Bolus') {
context.append('rect')
.attr('x', xScale2(treatment.mills) + padding.left)
- .attr('y', 0 + padding.top)
+ .attr('y', yScale2(client.utils.scaleMgdl(432)) + padding.top)
.attr('width', xScale2(treatment.mills + times.mins(treatment.duration).msecs) - xScale2(treatment.mills))
- .attr('height', chartHeight)
- //.attr('rx', 5)
- //.attr('ry', 5)
+ .attr('height', yScale2(client.utils.scaleMgdl(396)) - yScale2(client.utils.scaleMgdl(432)))
.attr('stroke-width', 1)
.attr('opacity', .2)
.attr('stroke', 'white')
- .attr('fill', treatment.eventType === 'Exercise' ? 'Violet' : (treatment.eventType === 'Note' ? 'Salmon' : 'black'));
+ .attr('fill', 'black');
context.append('text')
.style('font-size', '12px')
.style('font-weight', 'bold')
- .attr('fill', treatment.eventType === 'Exercise' ? 'Violet' : (treatment.eventType === 'Note' ? 'Salmon' : 'black'))
+ .attr('fill', 'black')
.attr('text-anchor', 'middle')
.attr('dy', '.35em')
- .attr('y', foodtexts * 15 + 10 + padding.top)
+ .attr('y', yScale2(client.utils.scaleMgdl(414)) + padding.top)
.attr('x', xScale2(treatment.mills + times.mins(treatment.duration).msecs/2) + padding.left)
.text(treatment.notes);
- foodtexts = (foodtexts + 1) % 6;
- }
- // profile switch
- if (treatment.eventType === 'Profile Switch') {
- appendProfileSwitch(context, treatment);
- if (treatment.duration && !treatment.cuttedby) {
- appendProfileSwitch(context, {
- cutting: treatment.profile
- , profile: client.profilefunctions.activeProfileToTime(times.mins(treatment.duration).msecs + treatment.mills + 1)
- , mills: times.mins(treatment.duration).msecs + treatment.mills
- , end: true
- });
- }
+ } else {
+ console.log("missed treatment", treatment);
}
});
diff --git a/lib/report_plugins/glucosedistribution.js b/lib/report_plugins/glucosedistribution.js
index 7b0175a73ca..38521fa4eb9 100644
--- a/lib/report_plugins/glucosedistribution.js
+++ b/lib/report_plugins/glucosedistribution.js
@@ -35,7 +35,8 @@ glucosedistribution.html = function html(client) {
translate('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.') + '
' +
translate('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.')+ '
' +
translate('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.')+ '
' +
- translate('GVI and PGS are measures developed by Dexcom, detailed here.')+
+ translate('Out of Range RMS is calculated by squaring the distance out of range for all glucose readings for the examined period, summing them, dividing by the count and taking the square root. This metric is similar to in-range percentage but weights readings far out of range higher. Lower values are better.')+ '
' +
+ translate('GVI and PGS are measures developed by Dexcom, detailed here.')+
'
' +
translate('Filter by hours') + ':' +
'
' +
@@ -126,7 +127,8 @@ glucosedistribution.report = function report_glucosedistribution(datastorage, so
$('#glucosedistribution-' + i).unbind('click').click(onClick);
enabledHours[i] = $('#glucosedistribution-' + i).is(':checked');
}
- console.log(enabledHours);
+
+ //console.log(enabledHours);
var result = {};
@@ -134,6 +136,17 @@ glucosedistribution.report = function report_glucosedistribution(datastorage, so
var glucose_data = [data[0]];
+ // data cleaning pass 0 - remove duplicates and sort
+
+ var seen = {};
+ data = data.filter(function(item) {
+ return seen.hasOwnProperty(item.displayTime) ? false : (seen[item.displayTime] = true);
+ });
+
+ data.sort(function(a,b){
+ return a.displayTime.getTime()-b.displayTime.getTime();
+ });
+
// data cleaning pass 1 - add interpolated missing points
for (var i = 0; i < data.length - 2; i++) {
@@ -327,6 +340,8 @@ glucosedistribution.report = function report_glucosedistribution(datastorage, so
var GVITotal = 0;
var GVIIdeal = 0;
+ var RMSTotal = 0;
+
var usedRecords = 0;
var glucoseTotal = 0;
var deltaTotal = 0;
@@ -362,7 +377,14 @@ glucosedistribution.report = function report_glucosedistribution(datastorage, so
GVITotal += Math.sqrt(25 + Math.pow(delta, 2));
glucoseTotal += entry.bgValue;
-
+
+ if (entry.bgValue < options.targetLow) {
+ RMSTotal += Math.pow(options.targetLow - entry.bgValue, 2);
+ }
+ if (entry.bgValue > options.targetHigh) {
+ RMSTotal += Math.pow(entry.bgValue - options.targetHigh, 2);
+ }
+
}
var GVIDelta = Math.floor(glucose_data[0].bgValue,glucose_data[glucose_data.length-1].bgValue);
@@ -385,7 +407,9 @@ glucosedistribution.report = function report_glucosedistribution(datastorage, so
var TDC = deltaTotal / days;
var TDCHourly = TDC / 24.0;
-
+
+ var RMS = Math.sqrt(RMSTotal / events);
+
// console.log('TADC',TDC,'days',days);
var timeInT1 = Math.round(100 * t1count / events).toFixed(1);
@@ -399,12 +423,14 @@ glucosedistribution.report = function report_glucosedistribution(datastorage, so
TDC = TDC / 18.0;
TDCHourly = TDCHourly / 18.0;
unitString = ' mmol/L';
+
+ RMS = Math.sqrt(RMSTotal / events) / 18;
+
}
TDC = Math.round(TDC * 100) / 100;
TDCHourly = Math.round(TDCHourly * 100) / 100;
-
var stabilitytable = $('
' + translate('Mean Hourly Change') + ' | GVI | PGS |
---|---|---|
' + TDCHourly + unitString + ' | ' + GVI + ' | ' + PGS + ' |
Out of Range RMS | ||
' + Math.round(RMS * 100) / 100 + unitString + ' |