diff --git a/apps/terminalclock/README.md b/apps/terminalclock/README.md index 93967e8a7..6660ac2c2 100644 --- a/apps/terminalclock/README.md +++ b/apps/terminalclock/README.md @@ -1,7 +1,8 @@ # Terminal clock -A clock displayed as a terminal cli. -It can display : +A clock displayed as a terminal cli. +It can display: + - time - date - altitude @@ -9,7 +10,6 @@ It can display : - motion - steps - -"Power saving" setting control the HR and pressure (altitude) sensors. -If "Off" they will always be on. -If "On" the sensors will be turned on every "Power on interval" minutes for 45 secondes +"Power saving" setting control the HR and pressure (altitude) sensors. +If "Off" they will always be on. +If "On" the sensors will be turned on every "Power on interval" minutes for 45 seconds diff --git a/apps/terminalclock/app.js b/apps/terminalclock/app.js index b6cea9d42..2e0d08a24 100644 --- a/apps/terminalclock/app.js +++ b/apps/terminalclock/app.js @@ -11,7 +11,7 @@ let font6x8At2Size = 18; let font6x8FirstTextSize = 4; let font6x8DefaultTextSize = 2; - if (process.env.HWVERSION == 1){ + if (process.env.HWVERSION == 1) { paddingY = 3; font6x8At4Size = 48; font6x8At2Size = 27; @@ -36,24 +36,24 @@ if (this.powerSave===undefined) this.powerSave = true; ["L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"].forEach(k => { - if (this[k]===undefined){ - if(k == "L2") this[k] = "Date"; - else if(k == "L3") { + if (this[k]===undefined) { + if (k == "L2") this[k] = "Date"; + else if (k == "L3") { this[k] = "HR"; this.showHRM = true; - }else if(k == "L4") this[k] = "Motion"; - else if(k == "L5") this[k] = "Steps"; - else if(k == "L6") this[k] = ">"; - else this[k] = "Empty"; - } + } else if (k == "L4") this[k] = "Motion"; + else if (k == "L5") this[k] = "Steps"; + else if (k == "L6") this[k] = ">"; + else this[k] = "Empty"; + } else if (this[k]==="HR") this.showHRM = true; else if (this[k]==="Alt") this.showAltitude = true && process.env.HWVERSION == 2; }); // set the services (HRM, pressure sensor, etc....) - if(!this.powerSave){ + if (!this.powerSave) { turnOnServices(); - } else{ + } else { this.turnOnInterval = setInterval(turnOnServices, this.PowerOnInterval*60000); // every PowerOnInterval min } // start the clock unlocked @@ -68,7 +68,7 @@ curPos++; ["L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"].forEach(line => { - if (this[line]==='Date') drawDate(date, curPos); + if (this[line]==='Date') drawDate(date, this.isoDate, curPos); else if (this[line]==='HR') drawHRM(curPos); else if (this[line]==='Motion') drawMotion(curPos); else if (this[line]==='Alt') drawAltitude(curPos); @@ -79,11 +79,11 @@ }, remove: function() { - if (this.turnOnInterval){ + if (this.turnOnInterval) { clearInterval(this.turnOnInterval); delete this.turnOnInterval; } - if (this.turnOffServiceTimeout){ + if (this.turnOffServiceTimeout) { clearTimeout(this.turnOffServiceTimeout) delete this.turnOffServiceTimeout } @@ -96,15 +96,16 @@ }); - /* ---------------------------- + /* ---------------------------- Draw related of specific lines -------------------------------- */ - let drawLine = function(line, pos){ - if(pos == 1) + let drawLine = function(line, pos) { + if (pos == 1) { g.setFont("6x8", font6x8FirstTextSize); - else + } else { g.setFont("6x8", font6x8DefaultTextSize); + } let yPos = Bangle.appRect.y + paddingY * (pos - 1) + @@ -113,47 +114,57 @@ g.drawString(line, 5, yPos, true); }; - let drawTime = function(now, pos){ + let drawTime = function(now, pos) { let h = now.getHours(); let m = now.getMinutes(); let time = ">" + (""+h).substr(-2) + ":" + ("0"+m).substr(-2); drawLine(time, pos); }; - let drawDate = function(now, pos){ - let dow = locale.dow(now, 1); - let date = locale.date(now, 1).substr(0,6) + locale.date(now, 1).substr(-2); - let locale_date = ">" + dow + " " + date; - drawLine(locale_date, pos); + let drawDate = function(now, isoDate, pos) { + let date; + if (clock.isoDate) { + let year = now.getFullYear(); + let month = now.getMonth() + 1; // Months are 0-11 + let day = now.getDate(); + date = ">" + year + "-" + month + "-" + day; + } else { + let dow = locale.dow(now, 1); + date = locale.date(now, 1).substr(0,6) + locale.date(now, 1).substr(-2); + date = ">" + dow + " " + date; + } + drawLine(date, pos); }; - let drawInput = function(pos){ + let drawInput = function(pos) { drawLine(">", pos); }; - let drawStepCount = function(pos){ + let drawStepCount = function(pos) { let health = Bangle.getHealthStatus("day"); let steps_formated = ">Steps: " + health.steps; drawLine(steps_formated, pos); }; - let drawHRM = function(pos){ - if(heartRate != 0) + let drawHRM = function(pos) { + if (heartRate != 0) { drawLine(">HR: " + parseInt(heartRate), pos); - else + } else { drawLine( - ">HR: " + parseInt(Math.round(Bangle.getHealthStatus().bpm||Bangle.getHealthStatus("last").bpm)), + ">HR: " + parseInt(Math.round(Bangle.getHealthStatus().bpm||Bangle.getHealthStatus("last").bpm)), pos); + } }; - let drawAltitude = function(pos){ - if(altitude > 0) + let drawAltitude = function(pos) { + if (altitude > 0) { drawLine(">Alt: " + altitude.toFixed(1) + "m", pos); - else + } else { drawLine(">Alt: unknown", pos); + } }; - - let drawMotion = function(pos){ + + let drawMotion = function(pos) { let health = Bangle.getHealthStatus('last'); let steps_formated = ">Motion: " + parseInt(health.movement); drawLine(steps_formated, pos); @@ -163,26 +174,26 @@ Services functions (HRM, pressure, etc...) -------------------------------------------------- */ - let turnOnServices = function(){ - if(clock.showHRM){ + let turnOnServices = function() { + if (clock.showHRM) { Bangle.setHRMPower(true, "terminalclock"); } - if(clock.showAltitude){ + if (clock.showAltitude) { Bangle.setBarometerPower(true, "terminalclock"); } - if(clock.powerSave){ - if(clock.turnOffServiceTimeout) clearTimeout(clock.turnOffServiceTimeout); + if (clock.powerSave) { + if (clock.turnOffServiceTimeout) clearTimeout(clock.turnOffServiceTimeout); clock.turnOffServiceTimeout = setTimeout(function () { turnOffServices(); }, 45000); } }; - let turnOffServices = function(){ - if(clock.showHRM){ + let turnOffServices = function() { + if (clock.showHRM) { Bangle.setHRMPower(false, "terminalclock"); } - if(clock.showAltitude){ + if (clock.showAltitude) { Bangle.setBarometerPower(false, "terminalclock"); } }; @@ -195,7 +206,7 @@ Bangle.on("lock", clock.onLock); clock.onHRM = hrmInfo => { - if(hrmInfo.confidence >= clock.HRMinConfidence) + if (hrmInfo.confidence >= clock.HRMinConfidence) heartRate = hrmInfo.bpm; }; Bangle.on('HRM', clock.onHRM); @@ -211,7 +222,7 @@ altitude = E.sum(median.slice(mid-4,mid+5)) / 9; } else - altitude = pressureInfo.altitude; + altitude = pressureInfo.altitude; }; Bangle.on('pressure', clock.onPressure); @@ -220,19 +231,19 @@ Clock related functions but not in the ClockFace module ---------------------------------------------------- */ - let unlock = function(){ - if(clock.powerSave){ + let unlock = function() { + if (clock.powerSave) { turnOnServices(); } clock.precision = clock.unlock_precision; clock.tick(); }; - let lock = function(){ + let lock = function() { clock.precision = clock.lock_precision; clock.tick(); }; // starting the clock clock.start(); -} \ No newline at end of file +} diff --git a/apps/terminalclock/metadata.json b/apps/terminalclock/metadata.json index 12ca5ef03..280c1b190 100644 --- a/apps/terminalclock/metadata.json +++ b/apps/terminalclock/metadata.json @@ -3,7 +3,7 @@ "name": "Terminal Clock", "shortName":"Terminal Clock", "description": "A terminal cli like clock displaying multiple sensor data", - "version":"0.10", + "version":"0.11", "icon": "app.png", "type": "clock", "tags": "clock", diff --git a/apps/terminalclock/settings.js b/apps/terminalclock/settings.js index 80f6248ed..a0598ad80 100644 --- a/apps/terminalclock/settings.js +++ b/apps/terminalclock/settings.js @@ -3,6 +3,7 @@ // Load settings var settings = Object.assign({ // TerminalClock specific + isoDate: false, HRMinConfidence: 50, PowerOnInterval: 15, L2: 'Date', @@ -72,6 +73,13 @@ writeSettings(); } }, + "ISO date": { + value: !!settings.isoDate, + onchange: v => { + settings.isoDate = v; + writeSettings(); + } + }, }; const save = (key, v) => { settings[key] = v; @@ -98,4 +106,4 @@ } E.showMenu(getMainMenu()); -}) \ No newline at end of file +})