From a7305dc947ecebd275874941c35d3510667290c8 Mon Sep 17 00:00:00 2001 From: Fredrik Lautrup Date: Thu, 23 Apr 2020 21:31:12 +0200 Subject: [PATCH 1/7] First atempt to HR indication --- apps/rclock/rclock.app.js | 96 +++++++++++++++++++++++++++++++-------- 1 file changed, 78 insertions(+), 18 deletions(-) diff --git a/apps/rclock/rclock.app.js b/apps/rclock/rclock.app.js index bd8395116..bbb74205d 100644 --- a/apps/rclock/rclock.app.js +++ b/apps/rclock/rclock.app.js @@ -4,6 +4,14 @@ var hours; var date; var first = true; + var locale = require('locale'); + var _12hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"] || false; + + //HR variables + var color="#FF0000"; + var id=0; + var size=10; + var grow=true; const screen = { width: g.getWidth(), @@ -41,17 +49,7 @@ }; const dateStr = function (date) { - day = date.getDate(); - month = date.getMonth(); - year = date.getFullYear(); - if (day < 10) { - day = "0" + day; - } - if (month < 10) { - month = "0" + month; - } - - return year + "-" + month + "-" + day; + return locale.date(new Date(), 1); }; const getArcXY = function (centerX, centerY, radius, angle) { @@ -72,7 +70,7 @@ //g.setPixel(r[0],r[1]); g.drawLine(r1[0], r1[1], r2[0], r2[1]); g.setColor('#333333'); - g.drawCircle(settings.circle.middle, settings.circle.center, rad - settings.circle.width-4) + g.drawCircle(settings.circle.middle, settings.circle.center, rad - settings.circle.width - 4) }; const drawSecArc = function (sections, color) { @@ -84,7 +82,7 @@ //g.setPixel(r[0],r[1]); g.drawLine(r1[0], r1[1], r2[0], r2[1]); g.setColor('#333333'); - g.drawCircle(settings.circle.middle, settings.circle.center, rad - settings.circle.width-4) + g.drawCircle(settings.circle.middle, settings.circle.center, rad - settings.circle.width - 4) }; const drawClock = function () { @@ -104,7 +102,7 @@ } first = false; } - + // Reset seconds if (seconds == 59) { g.setColor('#000000'); @@ -128,14 +126,34 @@ //Update seconds when needed if (seconds != currentTime.getSeconds()) { seconds = currentTime.getSeconds(); - drawSecArc(seconds, settings.circle.colorsec); + drawSecArc(seconds, settings.circle.colorsec); } //Write the time as configured in the settings hours = currentTime.getHours(); + if (_12hour && hours > 13) { + hours = hours - 12; + } + + var meridian; + + if (typeof locale.meridian === "function") { + meridian = locale.meridian(new Date()); + } else { + meridian = ""; + } + + var timestr; + + if (meridian.length > 0 && _12hour) { + timestr = hours + " " + meridian; + } else { + timestr = hours; + } + g.setColor(settings.time.color); g.setFont(settings.time.font, settings.time.size); - g.drawString(hours, settings.time.center, settings.time.middle); + g.drawString(timestr, settings.time.center, settings.time.middle); //Write the date as configured in the settings g.setColor(settings.date.color); @@ -147,19 +165,61 @@ if (on) drawClock(); }); + +//setInterval for HR visualisation + const newBeats = function (hr) { + if (id != 0) { + changeInterval(id, 6e3 / hr.bpm); + } else { + id = setInterval(drawHR, 6e3 / hr.bpm); + } + }; + +//visualize HR with circles pulsating + const drawHR = function (hr) { + if (grow && size < 12) { + size++; + } + + if (!grow && size > 3) { + size--; + } + + if (size == 12 || size == 3) { + grow = !grow; + } + + if (grow) { + color = "#f0af00"; + g.setColor(color); + g.fillCircle(settings.circle.center, settings.circle.middle, size); + } else { + color = "#000000"; + g.setColor(color); + g.drawCircle(settings.circle.center, settings.circle.middle, size); + } + print(size); + }; + // clean app screen g.clear(); - g.setFontAlign( 0, 0, 0); + g.setFontAlign(0, 0, 0); Bangle.loadWidgets(); Bangle.drawWidgets(); // refesh every 30 sec setInterval(drawClock, 1E3); + //start HR monitor and draw heart rate + Bangle.setHRMPower(1); + Bangle.on('HRM', function (d) { + newBeats(d); + }); + // draw now drawClock(); // Show launcher when middle button pressed setWatch(Bangle.showLauncher, BTN2, { repeat: false, edge: "falling" }); -} \ No newline at end of file +} \ No newline at end of file From e9509ca74fbda81e9df819fe2a2b4e417f81ca92 Mon Sep 17 00:00:00 2001 From: Fredrik Lautrup Date: Fri, 24 Apr 2020 07:33:16 +0200 Subject: [PATCH 2/7] Updated change log --- apps/rclock/ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/rclock/ChangeLog b/apps/rclock/ChangeLog index a8f708a0a..d3c24cd8e 100644 --- a/apps/rclock/ChangeLog +++ b/apps/rclock/ChangeLog @@ -1 +1,3 @@ 0.01: First published version of app +0.02: Added support for locale and 12H clock +0.03: Added HR indication to clock \ No newline at end of file From ce2220def5fcaecc9894573d60c67d4134c8f7f6 Mon Sep 17 00:00:00 2001 From: Fredrik Lautrup Date: Mon, 4 May 2020 19:28:53 +0200 Subject: [PATCH 3/7] Fixed color and styling on HR monitor --- apps/rclock/rclock.app.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/apps/rclock/rclock.app.js b/apps/rclock/rclock.app.js index bbb74205d..cab5b148a 100644 --- a/apps/rclock/rclock.app.js +++ b/apps/rclock/rclock.app.js @@ -45,6 +45,12 @@ middle: screen.middle, center: screen.center, height: screen.height + }, + hr: { + color: '#333333', + size: 10, + x: screen.center, + y: screen.middle-45 } }; @@ -177,7 +183,7 @@ //visualize HR with circles pulsating const drawHR = function (hr) { - if (grow && size < 12) { + if (grow && size < settings.hr.size) { size++; } @@ -185,18 +191,18 @@ size--; } - if (size == 12 || size == 3) { + if (size == settings.hr.size || size == 3) { grow = !grow; } if (grow) { - color = "#f0af00"; + color = settings.hr.color; g.setColor(color); - g.fillCircle(settings.circle.center, settings.circle.middle, size); + g.fillCircle(settings.hr.x, settings.hr.y, size); } else { color = "#000000"; g.setColor(color); - g.drawCircle(settings.circle.center, settings.circle.middle, size); + g.drawCircle(settings.hr.x, settings.hr.y, size); } print(size); }; From 19f68b6ec61fbe5d0734f516500e4ed348535ecd Mon Sep 17 00:00:00 2001 From: Fredrik Lautrup Date: Mon, 4 May 2020 21:11:03 +0200 Subject: [PATCH 4/7] Fixed possitioning --- apps/rclock/rclock.app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/rclock/rclock.app.js b/apps/rclock/rclock.app.js index cab5b148a..b6026ac37 100644 --- a/apps/rclock/rclock.app.js +++ b/apps/rclock/rclock.app.js @@ -50,7 +50,7 @@ color: '#333333', size: 10, x: screen.center, - y: screen.middle-45 + y: screen.middle+45 } }; From 91655769aef384222c80491109903d3c4968d21e Mon Sep 17 00:00:00 2001 From: Fredrik Lautrup Date: Mon, 4 May 2020 21:31:19 +0200 Subject: [PATCH 5/7] Fix to use less resources when not needed. --- apps/rclock/rclock.app.js | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/apps/rclock/rclock.app.js b/apps/rclock/rclock.app.js index b6026ac37..20c2e8681 100644 --- a/apps/rclock/rclock.app.js +++ b/apps/rclock/rclock.app.js @@ -8,10 +8,10 @@ var _12hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"] || false; //HR variables - var color="#FF0000"; - var id=0; - var size=10; - var grow=true; + var color = "#FF0000"; + var id = 0; + var size = 10; + var grow = true; const screen = { width: g.getWidth(), @@ -50,7 +50,7 @@ color: '#333333', size: 10, x: screen.center, - y: screen.middle+45 + y: screen.middle + 45 } }; @@ -167,12 +167,7 @@ g.drawString(date, settings.date.center, settings.date.middle); }; - Bangle.on('lcdPower', function (on) { - if (on) drawClock(); - }); - - -//setInterval for HR visualisation + //setInterval for HR visualisation const newBeats = function (hr) { if (id != 0) { changeInterval(id, 6e3 / hr.bpm); @@ -181,7 +176,7 @@ } }; -//visualize HR with circles pulsating + //visualize HR with circles pulsating const drawHR = function (hr) { if (grow && size < settings.hr.size) { size++; @@ -204,7 +199,6 @@ g.setColor(color); g.drawCircle(settings.hr.x, settings.hr.y, size); } - print(size); }; // clean app screen @@ -213,10 +207,24 @@ Bangle.loadWidgets(); Bangle.drawWidgets(); - // refesh every 30 sec +//manage when things should be enabled and not + Bangle.on('lcdPower', function (on) { + if (on) { + setInterval(drawClock, 1E3); + Bangle.setHRMPower(1); + Bangle.on('HRM', function (d) { + newBeats(d); + }); + } else { + clearInterval(); + Bangle.setHRMPower(0); + } + }); + + // refesh every second setInterval(drawClock, 1E3); - //start HR monitor and draw heart rate + //start HR monitor and update frequency of update Bangle.setHRMPower(1); Bangle.on('HRM', function (d) { newBeats(d); From 092848f527887153cb43fd74237da7eca30d2c7b Mon Sep 17 00:00:00 2001 From: Fredrik Lautrup Date: Wed, 6 May 2020 20:56:40 +0200 Subject: [PATCH 6/7] Updated with turning of HR monitor with display --- apps/rclock/rclock.app.js | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/apps/rclock/rclock.app.js b/apps/rclock/rclock.app.js index 20c2e8681..72ace2943 100644 --- a/apps/rclock/rclock.app.js +++ b/apps/rclock/rclock.app.js @@ -8,11 +8,11 @@ var _12hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"] || false; //HR variables - var color = "#FF0000"; var id = 0; - var size = 10; var grow = true; + var size=10; + //Screen dimensions const screen = { width: g.getWidth(), height: g.getWidth(), @@ -177,7 +177,7 @@ }; //visualize HR with circles pulsating - const drawHR = function (hr) { + const drawHR = function () { if (grow && size < settings.hr.size) { size++; } @@ -210,13 +210,8 @@ //manage when things should be enabled and not Bangle.on('lcdPower', function (on) { if (on) { - setInterval(drawClock, 1E3); Bangle.setHRMPower(1); - Bangle.on('HRM', function (d) { - newBeats(d); - }); } else { - clearInterval(); Bangle.setHRMPower(0); } }); From 4549793d25b974151034440c6880e6ca3d668f6d Mon Sep 17 00:00:00 2001 From: Fredrik Lautrup Date: Wed, 6 May 2020 21:25:18 +0200 Subject: [PATCH 7/7] Fix alignment of fonts error --- apps/rclock/rclock.app.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/rclock/rclock.app.js b/apps/rclock/rclock.app.js index 72ace2943..a22f6e2b7 100644 --- a/apps/rclock/rclock.app.js +++ b/apps/rclock/rclock.app.js @@ -156,7 +156,7 @@ } else { timestr = hours; } - + g.setFontAlign(0, 0, 0); g.setColor(settings.time.color); g.setFont(settings.time.font, settings.time.size); g.drawString(timestr, settings.time.center, settings.time.middle); @@ -203,7 +203,6 @@ // clean app screen g.clear(); - g.setFontAlign(0, 0, 0); Bangle.loadWidgets(); Bangle.drawWidgets();