From 421302eac51d83f2c7c39394848f2e7c869b4da5 Mon Sep 17 00:00:00 2001 From: Charles Date: Wed, 1 Nov 2023 01:59:56 -0400 Subject: [PATCH 1/9] added approxclock --- apps/approxclock/app-icon.js | 1 + apps/approxclock/app.js | 125 ++++++++++++++++++++++++++++++++ apps/approxclock/app.png | Bin 0 -> 2033 bytes apps/approxclock/metadata.json | 16 ++++ apps/approxclock/screenshot.png | Bin 0 -> 1968 bytes 5 files changed, 142 insertions(+) create mode 100644 apps/approxclock/app-icon.js create mode 100644 apps/approxclock/app.js create mode 100644 apps/approxclock/app.png create mode 100644 apps/approxclock/metadata.json create mode 100644 apps/approxclock/screenshot.png diff --git a/apps/approxclock/app-icon.js b/apps/approxclock/app-icon.js new file mode 100644 index 000000000..d63ad4b1f --- /dev/null +++ b/apps/approxclock/app-icon.js @@ -0,0 +1 @@ +atob("MDAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArgVYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABW19cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrNcrAACBVoGsVgAAgVaBrFYAAKzXK4GsKwAAgayBAAAAgVYAVoEAAAAAAAAAAADXVqyBAACs14Gs1ysArNeBrNcrAIHX14HXgQCB14HXrAAAVtdW11YAAAAAAAAAAFbXK4GsAACs1wAr11YArNcAK9dWAADXrABWVgDXgQCB1wAAAKzXgQAAAAAAAAAAAKzXrNfXKwCs1wAA14EArKwAK9dWAADXVgAAAADXgQBW1ysAAIHXVgAAAAAAAAAAANfXgYHXVgCs11aB11YArNcrgddWACvXgSsAAACsrCus1wAAK9es1ysAAAAAAAAAK9dWAACsrACsrKzXrAAArKzX16wAVtfX16wAAAAr19fXKwAArKwArKwAAAAAAAAAAAAAAAAAAACsrAArAAAArIEAKwAAAAAAAAAAAAAAACsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrAAAAAAArIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWVgAAAAAAVlYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArVoErAAAAAAAAAAAAAAAAAAAAAAArVgAAAAAAAAAAAAAAAAAAAAAAAAArrNfXgQCBrNdWAAAAAAAAAAAAAAAAAAAAAABW1wAAAAAAAAAAAAAAAAAAAAAAACvXrCtWgQAAANdWAAAAAAArKwAAAAAAACsAAABW1wAAAAAAAAAAAAAAAAAAAAAAAFbXKwAAAAAAANdWAAAAAIHX16wAAACB19fXVgBW1wAA14EAAAAAAAAAAAAAAAAAAIGsAAAAAAAAANdWAAAAK9eBVteBACvXgSuBVgBW1wBW1ysAAAAAAAAAAAAAAAAAAIHXAAAAAAAAANdWAAAAVtcrAKyBAFbXKwAAAABW16zX1wAAAAAAAAAAAAAAAAAAAFbXVgAAAAAAANeBAAAAVtcrANeBAFbXKwAAAABW14HXrAAAAAAAAAAAAAAAAAAAAACs14GBrAAAAKzXrIEAK9esrNdWACvX14GBVgBW1wAr11YAAAAAAAAAAAAAAAAAAAAAVoGBgQAAACusrIEAACusrFYAAAArgaysVgBWgQAAgYEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") \ No newline at end of file diff --git a/apps/approxclock/app.js b/apps/approxclock/app.js new file mode 100644 index 000000000..c172891bf --- /dev/null +++ b/apps/approxclock/app.js @@ -0,0 +1,125 @@ +//load fonts +require("FontSinclair").add(Graphics); +require("FontTeletext5x9Ascii").add(Graphics); + +//const + +const numbers = { + "0": "Twelve", + "1": "One", + "2": "Two", + "3": "Three", + "4": "Four", + "5": "Five", + "6": "Six", + "7": "Seven", + "8": "Eight", + "9": "Nine", + "10": "Ten", + "11": "Eleven", + "12": "Twelve", + "13": "One", + "14": "Two", + "15": "Three", + "16": "Four", + "17": "Five", + "18": "Six", + "19": "Seven", + "20": "Eight", + "21": "Nine", + "22": "Ten", + "23": "Eleven", + "24": "Twelve", +}; + +const width = g.getWidth(); +const height = g.getHeight(); +let idTimeout = null; + +const getMinuteString = (minutes) => { + if (minutes >= 10 && minutes < 20){ + return "Fifteen"; + } + else if (minutes >= 20 && minutes < 40) { + return "Thirty"; + } + else if (minutes >= 40 && minutes < 50){ + return "Fourty-Five"; + } + else { + return "O'Clock"; + } +}; + +const getNearestHour = (hours, minutes) => { + if (minutes > 49){ + return hours + 1; + } + return hours; +}; + +const getApproximatePrefix = () => { + var date = Date(); + var minutes = date.getMinutes(); + + if(minutes === 0 || minutes === 15 || minutes === 30 || minutes === 45){ + return " exactly"; + } + else{ + return " about"; + } +}; + +const drawTime = () => { + //Grab time vars + var date = Date(); + var hour = date.getHours(); + var minutes = date.getMinutes(); + + //reset graphics + g.clear(); + g.reset(); + + g.setColor(0,0,0); + g.fillRect(0, 0, width, height); + g.setFont("Vector", 24); + g.setColor(1,1,1); + g.drawString("It's about", (width - g.stringWidth("It's" + getApproximatePrefix()))/2, height * 0.2, false); + g.setFont("Vector", 24); + g.drawString(numbers[getNearestHour(hour, minutes)], (width - g.stringWidth(numbers[getNearestHour(hour, minutes)]))/2, height * 0.4, false); + g.setFont("Vector", 24); + g.drawString(getMinuteString(minutes), (width - g.stringWidth(getMinuteString(minutes)))/2, height * 0.6, false); + let d = Date(); + let t = d.getSeconds()*1000 + d.getMilliseconds(); + idTimeout = setTimeout(drawTime, 60000 - t); +}; + +g.clear(); +drawTime(); + +Bangle.on('lcdPower', function(on){ + if (on) { + drawTime(); + } else { + if(idTimeout) { + clearTimeout(idTimeout); + } + } +}); + +//var secondInterval = setInterval(draw, 1000); +// Stop updates when LCD is off, restart when on +//Bangle.on('lcdPower',on=>{ +// if (secondInterval) clearInterval(secondInterval); +// secondInterval = undefined; +// if (on) { +// secondInterval = setInterval(draw, 1000); +// g.clear(); +// draw(); // draw immediately +// } +//}); + +// Show launcher when button pressed +Bangle.setUI("clock"); +Bangle.loadWidgets(); +Bangle.drawWidgets(); \ No newline at end of file diff --git a/apps/approxclock/app.png b/apps/approxclock/app.png new file mode 100644 index 0000000000000000000000000000000000000000..a5fd8db831ba915b2b86e27c9a89f9dee144a12a GIT binary patch literal 2033 zcmVEzLt>Nxhg23=knh3@O#hiaPGNa4ds-)-ZKyRLP-k;1D@5`n#b{u z6AN}GnTRX8x)fQA(lve_rB>p>Z}#e5*D;*Ql&*lKS9n%YwUV$*Lujj{n!G1GsAS_w z;S*t>CIbrJntGzaZzg9N{AIEh4KIMz?CHt0aiWcttdZ#!i6cW+ygpIO(lsSHEqY3x92Il# z|M#h-Ga8ph`+IQF4dHH_a=!>FBs?FFt2Eq_t=H1{ofwWWEF!My{QH!Ur3 z09U&(^sL6UcwMr|v8L1TaRL1?7`TVN^~SE6_nbdLbX$JW9ULCPnAE#B{s1=tXd@SA z#3ld$010qNS#tmY4`BcR4`BhQKc{H`00t>ZL_t(&1?^W`NLE`A9?i0gMyBK~BfH^4 zq7PCp32ODwMeL%zln+KAh6UOM!5$8Q4+$Am4`o4wbfN4D+0DulQM){p4~3cdP?8m< z-OS47%r~61&;IxS|DKM&D8j#B?>(0_v)0V4*=r_%h*+L6I|9e-&i~oC-+9p${}J-hfj*1-BjB?OeN^C&fR7IJS=?g;=FXimC;tzse@M~&nC^k0M;vYSFl%70!LRD2&6crVv z^oWQEx^(Fhi8B@7wQCn$xNw1>&pBK?ESu&ZKYs9*EnB#)t&J-xDlGnu8#gpE7cX99 zSy166OO_~K3|3r@9=Ei#D4dj(#8anEWzaBsdwcoBi4*+u=TA%T`Sa)b`}gmB^5jYW z^yw4V*VkL?$) z6E7N$_ua1rmh2On?pFNc$B+7jPQbr^|E5Qe z9?|mU%jxms$GWagaJ($5V4)dDjvQe*bBb=;woT`l2&`SZmiO)3r@W0DH!9B@q1CHb z^PxkBl$V*A$?zs<7_xC*uwa3;p6r94J$uGtIImc-f}cKp%Hkl640tIiDSDi*UAv}{ zN={C8k;NR?ViC=;*tBVrMT64o*RLxM10;F*&6_v6AxTc2IB}x#V8H$R_xZzz56VO6 z$B!S+Yu2n$+`OQ}z9x>FL{r(w0T>JZv}x10y}h09-o2{^VXfBIR?R89yukk&5EK-| zNaAth##xKVF<=R);#j<{u8t>9p3KM*oKYhW11?{_tn#yG&$iAhbRvwr%2 ztUewEgeZR@dinCD3){ID`7;t8=Wt76=L9>B|FC$#PO{+Br%#hyd=@@ZK!7ZSkc`>k z@g^Qi*7yw=?Pz(i>}zFJ4UP>FHEn zUaq(BpGv#@S4GGLU%GUuULd$>(_b#m6VjY$T)TUDK2G<>T~|< z2a_K(2V!Dk=<3z0TC1QG-mqZ~z&9rFI zBHF%vy9%PRloDK37zwS#CJZE zjS5N>Ncss9kCUOn7z}h;l0$Uo&K zLHAto*w;1M@Q?|(+e#qMpsvt$NX{1cs*mN03~U)t&{$g zrJv=SH*dPk2VaUiMm2iw+&Se*a_jj;H+S#eJw59=IXTLc9|KDR!(s@d6NAq6>(?vK zo&%c;^X5r!iY2;H1g=sq)#TP{b|OG8H6ZG8E>uU1pLLE z(<38|51Payy_un`=Qm&|UK>sse*}ipn?up%kHAp8Hk>m42n?q;hob9m2i#}3?cdnh P00000NkvXXu0mjfZ+GlH literal 0 HcmV?d00001 diff --git a/apps/approxclock/metadata.json b/apps/approxclock/metadata.json new file mode 100644 index 000000000..e639a2215 --- /dev/null +++ b/apps/approxclock/metadata.json @@ -0,0 +1,16 @@ +{ "id": "approxclock", + "name": "Approximate Clock", + "shortName" : "Approx Clock", + "icon": "app.png", + "description": "A really basic spelled out time display for people looking for the vague time at a glance.", + "type": "clock", + "tags": "clock", + "supports": ["BANGLEJS2"], + "storage": [ + {"name":"approxclock.app.js","url":"app.js"}, + {"name":"approxclock.img","url":"app-icon.js","evaluate":true} + ], + "screenshots": [ + {"url": "screenshot.png"} + ] +} \ No newline at end of file diff --git a/apps/approxclock/screenshot.png b/apps/approxclock/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..fe13bbe3303c491f9edaaebc9df1c28103da8e3f GIT binary patch literal 1968 zcmd6o`#02i7{@=~`5H5kOSOqK!>%q{k!dwa%@8re){=^Blk2vsQBjj=810OXA}zzI zr8;6agqTsAL1BDLn@OTchLrJD2~BfxnHiU2?VqrFPUq|o&-4E2{XXY8=Xsyk`JMiB zGn1tz001*TU+-OWdh4IT8_(^^ns;Gy014D+&%a?u|X2{3FViBe!GnVn)p>Pa3t8hfvk;-2q0p3!qNgE z*{cB9-kiz-=b*zl5VG0*AxxV8h}yH_+LE zix|zP#mb~}ygj+`EE*F+v%Lu{VR(=WASVA6_`qNpld-U6Xd*O~?0n*!KTdyxOKQV( zPy1+mzdxF>Fhv%gAtUcoGVamjS0F=*v?SCk%5=TSEnJ!lDvWQHTRkw953!NDw$i~4 zJbB%vg=jzk?Y`Kais@ft&6Pta;>6KeJ(xPNIBO>Mkj3(Vd>DaDM4)>Nd#K3P!{!n3 zD4^J&f!k^<1$y4VJkPB&m5cBi_dB?X^7ou-TA-lKnm0|XHBeZtO&w(6PbE@u{VIa+ zcs2{oSry(djele~HdirW)Am~D;{5;st?)UAg@+w%6E~b^aZdTkeVtja$)~Oy>!GVsr9=}-Ce37~&pe20fPq5z`kL=q4lR(S@MkyBc z+5gy|Z%#982_QV)@0KgHIK?jNGn@&zZP4 zjiR}#B3mlxt|{X*_ErigFw)8x1Yv_lDoNyHAD00Ng!XKFGc>>j6ipZu0rKe`W_vNH zAK*$jzfD$4(r%yC_RRxH-yya|vQv{75|}2`0yOxPIw6@ncz+g0!{y`S%w8xQNXovo zEb~^kIPrGIDx=_-*lV5oynb2@F{gU5M+sbcnR)#x*c8~kHpc{6d*f>9O5p#MKD`*D zO)pz{a~^-u*@mbxP#<;kJQIU@M^=Wc0sqyK198UBwe^5jt)uI>@1MYw z(T|s1Q3bia%V5;$@?NduZlDiJF-JUumIf+s1tWzqAzgxViwQi#RA2-3?Fy)x$gXnl z%NUjL`a8PiyB|$omfC*H#aw8G&@{%9Or6?Cczgk0STi(!a^j8?jNT!rYbDs96CM|i z2>FFERV}r)zt?qX(p)J%$4q7L-VM@xGP8}_)!Url@71Cb7*y`Enx<60dxy_#Kom%W zeS-c`c3wq%16S8hc3{;rmRAb0dn%WjB8y9$wDtWQ=w@hp&u;EqUwm7%$A~}+1HHsU zXnf$Lz(e_dT=DRr07h+ro*k{p&a3GV89NhdWyEN#3R^C2)?q$Uu~&k+UWSrSoE|p+ zbQ&kAS(wSYe*fBOll65l7tAbsJJLEjzPiBKBF^GhDvO!yUIyn*1t*7?qfU6|2*q)$ zB>J_Pq4|b2e5&#zc|6a}qxe;DK-flNzT-1EcQ3C Date: Wed, 1 Nov 2023 02:06:46 -0400 Subject: [PATCH 2/9] edit to metadata --- apps/approxclock/metadata.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/approxclock/metadata.json b/apps/approxclock/metadata.json index e639a2215..3d08a41b0 100644 --- a/apps/approxclock/metadata.json +++ b/apps/approxclock/metadata.json @@ -1,6 +1,7 @@ { "id": "approxclock", "name": "Approximate Clock", "shortName" : "Approx Clock", + "version": "0.1", "icon": "app.png", "description": "A really basic spelled out time display for people looking for the vague time at a glance.", "type": "clock", From 39a9b2e3b47f448d3678165a82d753dc254ac013 Mon Sep 17 00:00:00 2001 From: charlestietjen Date: Thu, 2 Nov 2023 08:32:38 -0400 Subject: [PATCH 3/9] refactor and added before and after strings --- apps/approxclock/app.js | 67 +++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 30 deletions(-) diff --git a/apps/approxclock/app.js b/apps/approxclock/app.js index c172891bf..26da19b7c 100644 --- a/apps/approxclock/app.js +++ b/apps/approxclock/app.js @@ -32,25 +32,17 @@ const numbers = { "24": "Twelve", }; +const minutesByQuarterString = { + 0: "O'Clock", + 15: "Fifteen", + 30: "Thirty", + 45: "Fourty-Five" +}; + const width = g.getWidth(); const height = g.getHeight(); let idTimeout = null; -const getMinuteString = (minutes) => { - if (minutes >= 10 && minutes < 20){ - return "Fifteen"; - } - else if (minutes >= 20 && minutes < 40) { - return "Thirty"; - } - else if (minutes >= 40 && minutes < 50){ - return "Fourty-Five"; - } - else { - return "O'Clock"; - } -}; - const getNearestHour = (hours, minutes) => { if (minutes > 49){ return hours + 1; @@ -58,15 +50,29 @@ const getNearestHour = (hours, minutes) => { return hours; }; -const getApproximatePrefix = () => { - var date = Date(); - var minutes = date.getMinutes(); - - if(minutes === 0 || minutes === 15 || minutes === 30 || minutes === 45){ +const getApproximatePrefix = (minutes, minutesByQuarter) => { + if (minutes === minutesByQuarter){ return " exactly"; + } else if (minutesByQuarter - minutes < -5){ + return " after"; + } else if (minutesByQuarter - minutes < 0){ + return " just after"; + } else if (minutesByQuarter - minutes > 5){ + return " before"; + } else { + return " nearly"; } - else{ - return " about"; +}; + +const getMinutesByQuarter = minutes => { + if (minutes < 10){ + return 0; + } else if (minutes < 20) { + return 15; + } else if (minutes < 40){ + return 30; + } else { + return 45; } }; @@ -75,20 +81,21 @@ const drawTime = () => { var date = Date(); var hour = date.getHours(); var minutes = date.getMinutes(); + var minutesByQuarter = getMinutesByQuarter(minutes); //reset graphics g.clear(); g.reset(); - g.setColor(0,0,0); - g.fillRect(0, 0, width, height); - g.setFont("Vector", 24); + g.setBgColor(0,0,0); + g.clearRect(0, 0, width, height); + g.setFont("Vector", 22); g.setColor(1,1,1); - g.drawString("It's about", (width - g.stringWidth("It's" + getApproximatePrefix()))/2, height * 0.2, false); - g.setFont("Vector", 24); - g.drawString(numbers[getNearestHour(hour, minutes)], (width - g.stringWidth(numbers[getNearestHour(hour, minutes)]))/2, height * 0.4, false); - g.setFont("Vector", 24); - g.drawString(getMinuteString(minutes), (width - g.stringWidth(getMinuteString(minutes)))/2, height * 0.6, false); + g.drawString("It's" + getApproximatePrefix(minutes, minutesByQuarter), (width - g.stringWidth("It's" + getApproximatePrefix(minutes, minutesByQuarter)))/2, height * 0.25, false); + g.setFont("Vector", 30); + g.drawString(numbers[getNearestHour(hour, minutes)], (width - g.stringWidth(numbers[getNearestHour(hour, minutes)]))/2, height * 0.45, false); + g.setFont("Vector", 22); + g.drawString(minutesByQuarterString[minutesByQuarter], (width - g.stringWidth(minutesByQuarterString[minutesByQuarter]))/2, height * 0.7, false); let d = Date(); let t = d.getSeconds()*1000 + d.getMilliseconds(); idTimeout = setTimeout(drawTime, 60000 - t); From 117a7aa55219548fe339a6ee82a2a1c92351b8bd Mon Sep 17 00:00:00 2001 From: charlestietjen Date: Thu, 2 Nov 2023 08:40:33 -0400 Subject: [PATCH 4/9] remove some comments --- apps/approxclock/ChangeLog | 2 ++ apps/approxclock/app.js | 13 +------------ apps/approxclock/metadata.json | 2 +- 3 files changed, 4 insertions(+), 13 deletions(-) create mode 100644 apps/approxclock/ChangeLog diff --git a/apps/approxclock/ChangeLog b/apps/approxclock/ChangeLog new file mode 100644 index 000000000..2d2969315 --- /dev/null +++ b/apps/approxclock/ChangeLog @@ -0,0 +1,2 @@ +0.1: Initial release +0.2: Added more descriptive approximations \ No newline at end of file diff --git a/apps/approxclock/app.js b/apps/approxclock/app.js index 26da19b7c..4fdabc316 100644 --- a/apps/approxclock/app.js +++ b/apps/approxclock/app.js @@ -87,6 +87,7 @@ const drawTime = () => { g.clear(); g.reset(); + //Build watch face g.setBgColor(0,0,0); g.clearRect(0, 0, width, height); g.setFont("Vector", 22); @@ -114,18 +115,6 @@ Bangle.on('lcdPower', function(on){ } }); -//var secondInterval = setInterval(draw, 1000); -// Stop updates when LCD is off, restart when on -//Bangle.on('lcdPower',on=>{ -// if (secondInterval) clearInterval(secondInterval); -// secondInterval = undefined; -// if (on) { -// secondInterval = setInterval(draw, 1000); -// g.clear(); -// draw(); // draw immediately -// } -//}); - // Show launcher when button pressed Bangle.setUI("clock"); Bangle.loadWidgets(); diff --git a/apps/approxclock/metadata.json b/apps/approxclock/metadata.json index 3d08a41b0..12b468747 100644 --- a/apps/approxclock/metadata.json +++ b/apps/approxclock/metadata.json @@ -1,7 +1,7 @@ { "id": "approxclock", "name": "Approximate Clock", "shortName" : "Approx Clock", - "version": "0.1", + "version": "0.2", "icon": "app.png", "description": "A really basic spelled out time display for people looking for the vague time at a glance.", "type": "clock", From d2692aa36c55214d51e9f921c3b8e9d68375b1ad Mon Sep 17 00:00:00 2001 From: charlestietjen Date: Thu, 2 Nov 2023 09:04:37 -0400 Subject: [PATCH 5/9] fixed incorrect hour drawn --- apps/approxclock/app.js | 56 +++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/apps/approxclock/app.js b/apps/approxclock/app.js index 4fdabc316..fd7730936 100644 --- a/apps/approxclock/app.js +++ b/apps/approxclock/app.js @@ -41,23 +41,25 @@ const minutesByQuarterString = { const width = g.getWidth(); const height = g.getHeight(); -let idTimeout = null; +let drawTimeout; const getNearestHour = (hours, minutes) => { - if (minutes > 49){ + if (minutes > 54) { return hours + 1; } return hours; }; const getApproximatePrefix = (minutes, minutesByQuarter) => { - if (minutes === minutesByQuarter){ + if (minutes === minutesByQuarter) { return " exactly"; - } else if (minutesByQuarter - minutes < -5){ + } else if (minutesByQuarter - minutes < -54) { + return " nearly"; + } else if (minutesByQuarter - minutes < -5) { return " after"; - } else if (minutesByQuarter - minutes < 0){ - return " just after"; - } else if (minutesByQuarter - minutes > 5){ + } else if (minutesByQuarter - minutes < 0) { + return " just after"; + } else if (minutesByQuarter - minutes > 5) { return " before"; } else { return " nearly"; @@ -65,51 +67,61 @@ const getApproximatePrefix = (minutes, minutesByQuarter) => { }; const getMinutesByQuarter = minutes => { - if (minutes < 10){ + if (minutes < 10) { return 0; } else if (minutes < 20) { return 15; - } else if (minutes < 40){ + } else if (minutes < 40) { return 30; - } else { + } else if (minutes < 55) { return 45; + } else { + return 0; } }; +// schedule a draw for the next minute +function queueDraw() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function () { + drawTimeout = undefined; + drawTime(); + }, 60000 - (Date.now() % 60000)); +} + const drawTime = () => { //Grab time vars var date = Date(); var hour = date.getHours(); var minutes = date.getMinutes(); var minutesByQuarter = getMinutesByQuarter(minutes); - + //reset graphics g.clear(); g.reset(); - + //Build watch face - g.setBgColor(0,0,0); + g.setBgColor(0, 0, 0); g.clearRect(0, 0, width, height); g.setFont("Vector", 22); - g.setColor(1,1,1); - g.drawString("It's" + getApproximatePrefix(minutes, minutesByQuarter), (width - g.stringWidth("It's" + getApproximatePrefix(minutes, minutesByQuarter)))/2, height * 0.25, false); + g.setColor(1, 1, 1); + g.drawString("It's" + getApproximatePrefix(minutes, minutesByQuarter), (width - g.stringWidth("It's" + getApproximatePrefix(minutes, minutesByQuarter))) / 2, height * 0.25, false); g.setFont("Vector", 30); - g.drawString(numbers[getNearestHour(hour, minutes)], (width - g.stringWidth(numbers[getNearestHour(hour, minutes)]))/2, height * 0.45, false); + g.drawString(numbers[getNearestHour(hour, minutes)], (width - g.stringWidth(numbers[getNearestHour(hour, minutes)])) / 2, height * 0.45, false); g.setFont("Vector", 22); - g.drawString(minutesByQuarterString[minutesByQuarter], (width - g.stringWidth(minutesByQuarterString[minutesByQuarter]))/2, height * 0.7, false); - let d = Date(); - let t = d.getSeconds()*1000 + d.getMilliseconds(); - idTimeout = setTimeout(drawTime, 60000 - t); + g.drawString(minutesByQuarterString[minutesByQuarter], (width - g.stringWidth(minutesByQuarterString[minutesByQuarter])) / 2, height * 0.7, false); + + queueDraw(); }; g.clear(); drawTime(); -Bangle.on('lcdPower', function(on){ +Bangle.on('lcdPower', function (on) { if (on) { drawTime(); } else { - if(idTimeout) { + if (idTimeout) { clearTimeout(idTimeout); } } From a80a7f21621159c440b520cdff46ca489e8a4457 Mon Sep 17 00:00:00 2001 From: charlestietjen Date: Thu, 2 Nov 2023 09:06:00 -0400 Subject: [PATCH 6/9] version increment, changelog notes --- apps/approxclock/ChangeLog | 3 ++- apps/approxclock/metadata.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/approxclock/ChangeLog b/apps/approxclock/ChangeLog index 2d2969315..e44f187a5 100644 --- a/apps/approxclock/ChangeLog +++ b/apps/approxclock/ChangeLog @@ -1,2 +1,3 @@ 0.1: Initial release -0.2: Added more descriptive approximations \ No newline at end of file +0.2: Added more descriptive approximations +0.2f: Bug fixes: Incorrect hour drawn after 50 mins, incorrect quarter minute drawn after 50 mins \ No newline at end of file diff --git a/apps/approxclock/metadata.json b/apps/approxclock/metadata.json index 12b468747..63cd51ae1 100644 --- a/apps/approxclock/metadata.json +++ b/apps/approxclock/metadata.json @@ -1,7 +1,7 @@ { "id": "approxclock", "name": "Approximate Clock", "shortName" : "Approx Clock", - "version": "0.2", + "version": "0.2f", "icon": "app.png", "description": "A really basic spelled out time display for people looking for the vague time at a glance.", "type": "clock", From 822dbf78119f8415abf738ec3337639a95aa0c66 Mon Sep 17 00:00:00 2001 From: charlestietjen Date: Thu, 2 Nov 2023 16:39:53 -0400 Subject: [PATCH 7/9] touch interaction added --- apps/approxclock/ChangeLog | 3 ++- apps/approxclock/app.js | 23 +++++++++++++++++++++++ apps/approxclock/metadata.json | 2 +- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/apps/approxclock/ChangeLog b/apps/approxclock/ChangeLog index e44f187a5..9ba3e983a 100644 --- a/apps/approxclock/ChangeLog +++ b/apps/approxclock/ChangeLog @@ -1,3 +1,4 @@ 0.1: Initial release 0.2: Added more descriptive approximations -0.2f: Bug fixes: Incorrect hour drawn after 50 mins, incorrect quarter minute drawn after 50 mins \ No newline at end of file +0.2f: Bug fixes: Incorrect hour drawn after 50 mins, incorrect quarter minute drawn after 50 mins +0.3: Added touch interaction to display exact time and date. \ No newline at end of file diff --git a/apps/approxclock/app.js b/apps/approxclock/app.js index fd7730936..4f0bb570a 100644 --- a/apps/approxclock/app.js +++ b/apps/approxclock/app.js @@ -89,6 +89,24 @@ function queueDraw() { }, 60000 - (Date.now() % 60000)); } +const drawTimeExact = () => { + var dateTime = Date(); + var hours = dateTime.getHours(); + var minutes = dateTime.getMinutes().toString().padStart(2,0); + var day = dateTime.getDay(); + var date = dateTime.getDate(); + var month = dateTime.getMonth(); + var year = dateTime.getFullYear(); + g.clear(); + g.setBgColor(0,0,0); + g.clearRect(0,0,width, height); + g.setColor(1,1,1); + g.setFont("Vector", 30); + g.drawString(hours + ":" + minutes, (width - g.stringWidth(hours + ":" + minutes))/2, height * 0.3, false); + g.setFont("Vector", 26); + g.drawString(month + 1 + "/" + date + "/" + year, (width - g.stringWidth(month + 1 + "/" + date + "/" + year))/2, height * 0.6, false); +}; + const drawTime = () => { //Grab time vars var date = Date(); @@ -127,6 +145,11 @@ Bangle.on('lcdPower', function (on) { } }); +Bangle.on('touch', function(button, xy){ + drawTimeExact(); + setTimeout(drawTime, 7000); +}); + // Show launcher when button pressed Bangle.setUI("clock"); Bangle.loadWidgets(); diff --git a/apps/approxclock/metadata.json b/apps/approxclock/metadata.json index 63cd51ae1..00c4d0099 100644 --- a/apps/approxclock/metadata.json +++ b/apps/approxclock/metadata.json @@ -1,7 +1,7 @@ { "id": "approxclock", "name": "Approximate Clock", "shortName" : "Approx Clock", - "version": "0.2f", + "version": "0.3", "icon": "app.png", "description": "A really basic spelled out time display for people looking for the vague time at a glance.", "type": "clock", From 4f504f5c1cef400990d00ad26185733de2e2e6b6 Mon Sep 17 00:00:00 2001 From: charlestietjen Date: Thu, 2 Nov 2023 17:21:05 -0400 Subject: [PATCH 8/9] added readme --- apps/approxclock/readme.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 apps/approxclock/readme.md diff --git a/apps/approxclock/readme.md b/apps/approxclock/readme.md new file mode 100644 index 000000000..aa1b74267 --- /dev/null +++ b/apps/approxclock/readme.md @@ -0,0 +1,7 @@ +## Approximate Clock + +### Description + +Get a rough idea of the time at a quick glance, mostly made for myself based on a similar watchface on pebble. I find this keeps me from checking my watch too often and also saves me from moments of severe brainfart staring at these mysterious symbols we call numbers. + +Exact time and date can be viewed temporarily by touching the screen. \ No newline at end of file From e4b0ed2ecf92e930d905f19c633e7582757f3e33 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Fri, 3 Nov 2023 08:32:29 +0000 Subject: [PATCH 9/9] link in readme --- apps/approxclock/metadata.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/approxclock/metadata.json b/apps/approxclock/metadata.json index 00c4d0099..80e476e5b 100644 --- a/apps/approxclock/metadata.json +++ b/apps/approxclock/metadata.json @@ -4,6 +4,7 @@ "version": "0.3", "icon": "app.png", "description": "A really basic spelled out time display for people looking for the vague time at a glance.", + "readme": "readme.md", "type": "clock", "tags": "clock", "supports": ["BANGLEJS2"], @@ -14,4 +15,4 @@ "screenshots": [ {"url": "screenshot.png"} ] -} \ No newline at end of file +}