diff --git a/apps.json b/apps.json index b92e08f30..87f57712d 100644 --- a/apps.json +++ b/apps.json @@ -1701,9 +1701,9 @@ { "id": "rclock", "name": "Round clock with seconds, minutes and date", - "shortName":"Round Clock", + "shortName": "Round Clock", "icon": "app.png", - "version":"0.04", + "version": "0.05", "description": "Designed round clock with ticks for minutes and seconds and heart rate indication", "tags": "clock", "type": "clock", @@ -1712,6 +1712,20 @@ {"name":"rclock.img","url":"app-icon.js","evaluate":true} ] }, + { + "id": "fclock", + "name": "fclock", + "shortName": "F Clock", + "icon": "app.png", + "version": "0.01", + "description": "Simple design of a digital clock", + "tags": "clock", + "type": "clock", + "storage": [ + {"name":"fclock.app.js","url":"fclock.app.js"}, + {"name":"fclock.img","url":"app-icon.js","evaluate":true} + ] + }, { "id": "hamloc", "name": "QTH Locator / Maidenhead Locator System", "shortName": "QTH Locator", diff --git a/apps/fclock/ChangeLog b/apps/fclock/ChangeLog new file mode 100644 index 000000000..a8f708a0a --- /dev/null +++ b/apps/fclock/ChangeLog @@ -0,0 +1 @@ +0.01: First published version of app diff --git a/apps/fclock/app-icon.js b/apps/fclock/app-icon.js new file mode 100644 index 000000000..ba506d3ac --- /dev/null +++ b/apps/fclock/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("7OwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/8AAAAAAAB//AAAAAAAAAAAAAAAAAAAAAAAAAAD//AAAAAAAB//8AAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAB///wAAAAAAAAAAAAAAAAAAAAAAAAB//8AAAAAAB////AAAAAAAAAAAAAAAAAAAAAAAAB///AAAAAAB////8AAAAAAAAAAAAAAAAAAAAAAAA///wAAAAAB/////wAAAAAAAAAAAAAAAAAAAAAAA///8AAAAAB//////AAAAAAAAAAAAAAAAAAAAAAAf///AAAAAA//////4AAAAAAAAAAAAAAAAAAAAAAf///wAAAAAP/////+AAAAAAAAAAAAAAAAAAAAAAP///8AAAAAH//////wAAAAAAAAAAAAAAAAAAAAAP////AAAAAB//////8AAAAAAAAAAAAAAAAAAAAAH////wAAAAA///////gAAAAAAAAAAAAAAAAAAAAH////8AAAAAP//////4AAAAAAAAAAAAAAAAAAAAB//9//AAAAAH//AAH//AAAAAAAAAAAAAAAAAAAAAf/+f/wAAAAB//gAA//wAAAAAAAAAAAAAAAAAAAAH/+H/8AAAAA//wAAH/+AAAAAAAAAAAAAAAAAAAAB//B//AAAAAP/4AAA//gAAAAAAAAAAAAAAAAAAAAf/Af/wAAAAH/8AAAH/8AAAAAAAAAAAAAAAAAAAAH/gH/8AAAAB/+AAAA//AAAAAAAAAAAAAAAAAAAAB/gB//AAAAAf/gAAAAAAAAAAAAAAAAAAAAAAAAAAfwAf/wAAAAH/4AAAAAAAAAAAAAAAAAAAAAAAAAAHwAH/8AAAAB/+AAAAAAAAAAAAAAAAAAAAAAAAAAB4AB//AAAAAf/gAAAAAAAAP4AAAAD8AAAAAAAAAAYAAf/wAAAAH/4AAAAAAAAH+AAAAB/AAAAAAAAAAEAAH/8AAAAB/+AAAAAAAAH/gAAAAfwAAAAAAAAAAAAB//AAAAAf/gf/wAAAAD/4AAAAP8AAAAAAAAAAAAAf/wAAAAH/4f//AAAAD/+AAAAH/AAAAAAAAAAAAAH/8AAAAB/+f//8AAAB//gAAAD/wAAAAAAAAAAAAB//AAAAAf/v///wAAA/34AAAA/8AAAAAAAAAAAAAf/wAAAAH/7////AAAP5+AAAAf/AAAAAAAAAAAAAH/8AAAAB/+////8AAD8fgAAAP/wAAAAAAAAAAAAB//AAAAAf/v////wAA8H4AAAD/8AAAAAAAAAAAAAf/wAAAAH/7////+AAOB+AAAB+/AAAAAAAAAAAAAH/8AAAAB/+/////gACAfgAAA/vwAAAAAAAAAAAAB//AAAAAf/v////8AAAH4AAAfz8AAPAB/AAAAAAAf/wAAAAH/7/////AAAB+AAAH4/AAPwA/8AAAAAAH/8AAAAB/+/////4AAAfgAAD8PwAH8AP/AAAAAAB//AAAAAf/v////+AAAH4AAB/D8AB3AHB4AAAAAAf/wAAAAH/7wAB//wAAB+AAAfg/AARwAAOAAAAAAH/8AAAAB/+4AAP/8AAAfgAAPwPwAAcAADgAAAAAB//AAAAAf/sAAB//gAAH4AAH4D8AAHAAB4AAAAAAf/wAAAAH/6AAAP/4AAB+AAD+A/AABwAH8AAAAAAH/8AAAAB/+AAAB//AAAfgAA/APwAAcAB/AAAAAAB//AAAAAf/gAAAP/wAAH4AAfgD8AAHAAfwAAAAAAf/wAAAAH/4AAAD/8AAB+AAH///4ABwAA8AAAAAAH/8AAAAB/+AAAA//AAAfgAB///+AAcAAHgAAAAAB//AAAAAf/gAAAP/wAAH4AAf///gAHAAA4AAAAAAf/wAAAAH/4AAAD/8AAB+AAH///4ABwAAOAAAAAAH/8AAAAB/+AAAA//AAAfgAB///+AAcAcHAAAAAAB//AAAAAf/gAAAP/wAAH4AAf///gB/+D/wAAAAAAf/wAAAAH/4AAAD/8AAB+AAAAA/AAf/g/4AAAAAAH/8AAAAB/+AAAA//AAAfgAAAAPwAH/4D8AAAAAAB//AAAAAf/gAAAP/wAAH4AAAAD8AAAAAAAAAAAAAf/wAAAAH/4AAAD/8AP///wAAA/AAAAAAAAAAAAAH/8AAAAB/+AAAA//AD///8AAAPwAAAAAAAAAAAAB//AAAAAf/gAAAP/wA////AAAD8AAAAAAAAAAAAAf/wAAAAH/4AAAD/8AP///wAAA/AAAAAAAAAAAAAH/8AAAAB//AAAB//AD///8AAAPwAAAAAAAAAAAAB//AAAAAP/4AAA//gA////AAAD8AAAAAAAAAAAAAf/wAAAAD//AAAf/4AP///wAAA/AAAAAAAAAAAAAH/8AAAAAf/4AAP/8AAAAAAAAAAAAAAAAAAAAAAAB//AAAAAH//AAH//AAAAAAAAAAAAAAAAAAAAAAAAf/wAAAAA//4AD//gAAAAAAAAAAAAAAAAAAAAH///////8AAP//////4AAAAAAAAAAAAAAAAAAAAB////////AAB//////8AAAAAAAAAAAAAAAAAAAAAf///////wAAf//////AAAAAAAAAAAAAAAAAAAAAH///////8AAD//////gAAAAAAAAAAAAAAAAAAAAB////////AAA//////4AAAAAAAAAAAAAAAAAAAAAf///////wAAH/////8AAAAAAAAAAAAAAAAAAAAAH///////8AAA/////+AAAAAAAAAAAAAAAAAAAAAB////////AAAD////+AAAAAAAAAAAAAAAAAAAAAAf///////wAAAP///+AAAAAAAAAAAAAAAAAAAAAAH///////8AAAA///+AAAAAAAAAAAAAAAAAAAAAAB////////AAAAD//+AAAAAAAAAAAAAAAAAAAAAAAf///////wAAAAP/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8P4DDwDAMPB4PAwAAAAAAAAAAAAAAAAAAAAAAAAfj+Ax+BwDH4/H48AAAAAAAAAAAAAAAAAAAAAAAAGMgAYYwcBhjMZjLAAAAAAAAAAAAAAAAAAAAAAAABDIAGEMPAYAyGAwwAAAAAAAAAAAAAAAAAAAAAAAAQx8DBDGwMAYhgYMAAAAAAAAAAAAAAAAAAAAAAAAEM/AwQzMDAOIYODAAAAAAAAAAAAAAAAAAAAAAAABDAYYEM/hgHCGHAwAAAAAAAAAAAAAAAAAAAAAAAAQwGGBDP4YDAhjAMAAAAAAAAAAAAAAAAAAAAAAAAEMhjAQwMMBgIZgDAAAAAAAAAAAAAAAAAAAAAAAAB+PwwH4DDAfz8fz+AAAAAAAAAAAAAAAAAAAAAAAAPB4YA8AxgH8eH8/gAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")) \ No newline at end of file diff --git a/apps/fclock/app.png b/apps/fclock/app.png new file mode 100644 index 000000000..6255b756c Binary files /dev/null and b/apps/fclock/app.png differ diff --git a/apps/fclock/fclock.app.js b/apps/fclock/fclock.app.js new file mode 100644 index 000000000..044cde71f --- /dev/null +++ b/apps/fclock/fclock.app.js @@ -0,0 +1,206 @@ +{ + var minutes; + var seconds; + var hours; + var date; + var first = true; + var locale = require('locale'); + var _12hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"] || false; + + //HR variables + var id = 0; + var grow = true; + var size=10; + + //Screen dimensions + const screen = { + width: g.getWidth(), + height: g.getWidth(), + middle: g.getWidth() / 2, + center: g.getHeight() / 2, + }; + + // Ssettings + const settings = { + time: { + color: '#dddddd', + font: 'Vector', + size: 100, + middle: screen.middle, + center: screen.center, + }, + date: { + color: '#dddddd', + font: 'Vector', + size: 15, + middle: screen.height-17, // at bottom of screen + center: screen.center, + }, + circle: { + colormin: '#ffffff', + colorsec: '#ffffff', + width: 10, + middle: screen.middle, + center: screen.center, + height: screen.height + }, + hr: { + color: '#333333', + size: 20, + x: screen.center, + y: screen.middle + 65 + } + }; + + const dateStr = function (date) { + return locale.date(new Date(), 1); + }; + + const getFormated = function(val) { + if (val<10) { + val='0'+val; + } + + return val; + }; + + const drawMin = function (sections, color) { + + g.setFontAlign(0, 0, 0); + g.setColor('#000000'); + g.setFont(settings.time.font, settings.time.size/2); + g.drawString(getFormated(sections-1), settings.time.center+50, settings.time.middle); + g.setColor(settings.time.color); + g.setFont(settings.time.font, settings.time.size/2); + g.drawString(getFormated(sections), settings.time.center+50, settings.time.middle); + }; + + const drawSec = function (sections, color) { + g.setFontAlign(0, 0, 0); + g.setColor('#000000'); + g.setFont(settings.time.font, settings.time.size/4); + g.drawString(getFormated(sections-1), settings.time.center+100, settings.time.middle); + g.setColor(settings.time.color); + g.setFont(settings.time.font, settings.time.size/4); + g.drawString(getFormated(sections), settings.time.center+100, settings.time.middle); + }; + + const drawClock = function () { + + currentTime = new Date(); + + //Get date as a string + date = dateStr(currentTime); + + if(seconds==59) { + g.clear(); + } + + // Update minutes when needed + if (minutes != currentTime.getMinutes()) { + minutes = currentTime.getMinutes(); + drawMin(minutes, settings.circle.colormin); + } + + //Update seconds when needed + if (seconds != currentTime.getSeconds()) { + seconds = currentTime.getSeconds(); + drawSec(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.setFontAlign(0, 0, 0); + g.setColor(settings.time.color); + g.setFont(settings.time.font, settings.time.size); + g.drawString(timestr, settings.time.center-40, settings.time.middle); + + //Write the date as configured in the settings + g.setColor(settings.date.color); + g.setFont(settings.date.font, settings.date.size); + g.drawString(date, settings.date.center, settings.date.middle); + }; + + //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 () { + if (grow && size < settings.hr.size) { + size++; + } + + if (!grow && size > 3) { + size--; + } + + if (size == settings.hr.size || size == 3) { + grow = !grow; + } + + if (grow) { + color = settings.hr.color; + g.setColor(color); + g.fillCircle(settings.hr.x, settings.hr.y, size); + } else { + color = "#000000"; + g.setColor(color); + g.drawCircle(settings.hr.x, settings.hr.y, size); + } + }; + + // clean app screen + g.clear(); + Bangle.loadWidgets(); + Bangle.drawWidgets(); + + //manage when things should be enabled and not + Bangle.on('lcdPower', function (on) { + if (on) { + Bangle.setHRMPower(1); + } else { + Bangle.setHRMPower(0); + } + }); + + // refesh every second + setInterval(drawClock, 1E3); + + //start HR monitor and update frequency of update + 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 diff --git a/apps/rclock/ChangeLog b/apps/rclock/ChangeLog index 3ac5530cd..61bf493c1 100644 --- a/apps/rclock/ChangeLog +++ b/apps/rclock/ChangeLog @@ -1,4 +1,5 @@ 0.01: First published version of app 0.02: Added support for locale and 12H clock 0.03: Added HR indication to clock -0.04: Update font size and alignment \ No newline at end of file +0.04: Update font size and alignment +0.05: Changes which circle show minutes and seconds \ No newline at end of file diff --git a/apps/rclock/rclock.app.js b/apps/rclock/rclock.app.js index f8b27c4fb..ceaffe910 100644 --- a/apps/rclock/rclock.app.js +++ b/apps/rclock/rclock.app.js @@ -23,29 +23,29 @@ // Ssettings const settings = { time: { - color: 0xD6ED17, + color: '#D6ED17', font: 'Vector', size: 60, middle: screen.middle, center: screen.center, }, date: { - color: 0xD6ED17, + color: '#D6ED17', font: 'Vector', size: 15, middle: screen.height-17, // at bottom of screen center: screen.center, }, circle: { - colormin: 0x606060, - colorsec: 0x656565, + colormin: '#ffffff', + colorsec: '#ffffff', width: 10, middle: screen.middle, center: screen.center, height: screen.height }, hr: { - color: 0x333333, + color: '#333333', size: 10, x: screen.center, y: screen.middle + 45 @@ -66,18 +66,6 @@ }; const drawMinArc = function (sections, color) { - g.setColor(color); - rad = (settings.circle.height / 2) - 20; - r1 = getArcXY(settings.circle.middle, settings.circle.center, rad, sections * (360 / 60) - 90); - //g.setPixel(r[0],r[1]); - r2 = getArcXY(settings.circle.middle, settings.circle.center, rad - settings.circle.width, sections * (360 / 60) - 90); - //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) - }; - - const drawSecArc = function (sections, color) { g.setColor(color); rad = (settings.circle.height / 2) - 40; r1 = getArcXY(settings.circle.middle, settings.circle.center, rad, sections * (360 / 60) - 90); @@ -86,7 +74,19 @@ //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) { + g.setColor(color); + rad = (settings.circle.height / 2) - 20; + r1 = getArcXY(settings.circle.middle, settings.circle.center, rad, sections * (360 / 60) - 90); + //g.setPixel(r[0],r[1]); + r2 = getArcXY(settings.circle.middle, settings.circle.center, rad - settings.circle.width, sections * (360 / 60) - 90); + //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); }; const drawClock = function () { @@ -107,15 +107,13 @@ first = false; } - // Reset seconds + // Reset if (seconds == 59) { g.setColor('#000000'); - g.fillCircle(settings.circle.middle, settings.circle.center, (settings.circle.height / 2) - 40); - } - // Reset minutes - if (minutes == 59 && seconds == 59) { - g.setColor('#000000'); - g.fillCircle(settings.circle.middle, settings.circle.center, (settings.circle.height / 2) - 20); + g.fillCircle(settings.circle.middle, settings.circle.center, (settings.circle.height / 2)); + for (count = 0; count <= minutes; count++) { + drawMinArc(count, settings.circle.colormin); + } } //Get date as a string