From 441980f45a61c49343ab47a7cb406150617cfad5 Mon Sep 17 00:00:00 2001 From: David Volovskiy Date: Sun, 20 Apr 2025 14:50:49 -0400 Subject: [PATCH 01/10] Cleaned up images and icons --- apps/jsonclock/README.md | 13 ++++++++----- apps/jsonclock/app-icon.js | 2 +- apps/jsonclock/app.png | Bin 2514 -> 2340 bytes apps/jsonclock/dark-emulator.png | Bin 3773 -> 0 bytes apps/jsonclock/dark-noloc.png | Bin 0 -> 3439 bytes apps/jsonclock/dark-nolocnostep.png | Bin 0 -> 3400 bytes apps/jsonclock/dark-nostep.png | Bin 0 -> 4135 bytes apps/jsonclock/dark.png | Bin 3681 -> 4402 bytes apps/jsonclock/light-noloc.png | Bin 0 -> 3430 bytes apps/jsonclock/light-nolocnostep.png | Bin 0 -> 3154 bytes apps/jsonclock/light-nostep.png | Bin 0 -> 3696 bytes apps/jsonclock/light.png | Bin 3317 -> 3960 bytes apps/jsonclock/metadata.json | 2 +- apps/jsonclock/no_location.png | Bin 3336 -> 0 bytes apps/jsonclock/no_steps.png | Bin 3132 -> 0 bytes apps/jsonclock/tran.png | Bin 0 -> 2632 bytes 16 files changed, 10 insertions(+), 7 deletions(-) delete mode 100644 apps/jsonclock/dark-emulator.png create mode 100644 apps/jsonclock/dark-noloc.png create mode 100644 apps/jsonclock/dark-nolocnostep.png create mode 100644 apps/jsonclock/dark-nostep.png create mode 100644 apps/jsonclock/light-noloc.png create mode 100644 apps/jsonclock/light-nolocnostep.png create mode 100644 apps/jsonclock/light-nostep.png delete mode 100644 apps/jsonclock/no_location.png delete mode 100644 apps/jsonclock/no_steps.png create mode 100644 apps/jsonclock/tran.png diff --git a/apps/jsonclock/README.md b/apps/jsonclock/README.md index 740024e68..e37bfc537 100644 --- a/apps/jsonclock/README.md +++ b/apps/jsonclock/README.md @@ -13,8 +13,11 @@ inspired by [This FitBit face](https://github.com/Sharkgrammer/clockface.json) * If the location isn't set, then the JSON array will ignore the sun info and instead display the time as a struct. ## Screenshots -![](dark.png) -![](white.png) -![](no_steps.png) -![](no_location.png) -![](dark-emulator.png) \ No newline at end of file +![dark](dark.png) +![dark-no location](dark-noloc.png) +![dark-no step](dark-nostep.png) +![dark-no location and step](dark-nolocnostep.png) +![light](light.png) +![light-no location](light-noloc.png) +![light-no step](light-nostep.png) +![light-no location and step](light-nolocnostep.png) \ No newline at end of file diff --git a/apps/jsonclock/app-icon.js b/apps/jsonclock/app-icon.js index dcac31aa3..745ebdc17 100644 --- a/apps/jsonclock/app-icon.js +++ b/apps/jsonclock/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwwcCBhEcuPHAQsDwE48AQDnEDx048YCEDQ/AEZAxEnADCEZAKBg5HQCIxiJuARPAEZHBgEBwQGBwE04VNmBHHXYXDhlAg0YsIbBEY8AZQmDhBHcFwcg4AOE4YpCI4swI4NgAQUAAQRHDg0IkAdDkGSAoRBNiBZWjgDCI4UBLAqPHKQMgCJQWFQIIROI6BzD4DXBw0YI5EAhEhwwIBoEwdQwAEWYIDBEYJIYa4REBSQKBBI5kJkmCgECpkwQIprEgcMmOAEZCPVJQYANhwRQaiIjRABqPCgLPEkilBNYxoCmHDa4L+BDAqzFgUIkGCjEgHhwxGAA4uEGYxHImPAahBHDgxEByEAAIIAqI4T+DABXgEaICEADoA=")) +require("heatshrink").decompress(atob("mEwwcDtu27YCOvv2/d933fBAP7DSICIsOG4dh2HYBAPDEbVsmwdPCKICmso7C23jxvHjlx48bI4gUBy1JkoaC5Mkt1GLIopGyJWrGoeSrYICxu47lt28jC42SAoXcyO3jgUBI9eW7ILD03TLJwRIC4zpituyGoRZLrLpCtJHNlpZDdN225IXPy1LINICNrdyo3bx028YOH5cly3bt028lum8jIljpCxoIC4xHDUInblgOC3McuPIWZACE28cEwYCmwz7UAWEMgxHShoRNgJHiA==")) diff --git a/apps/jsonclock/app.png b/apps/jsonclock/app.png index ab6c821f4cbfd67229bed3d7c1090240fc5a7a03..753fab354934f6474f3ba04649ea798094e2a15c 100644 GIT binary patch delta 2208 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

?Rd9JIfk_>uqzgp z7{HOWGzR{%(n$(pQGxLr$@9d(#L8>2EZ*T=RCMqiH0{-Rs}f4JzSOa_T2$PNkEIaf z3kj`;5aYrIe7{y`v7ZP}ZRS6f(2n2!6P({NT5eNd$xGLe38G#_M z8LDT)c``HwlUTf~D-YcCAx3UBTGj#->>_!N*JsPwtjT>w$CYeoe?QjVvTDu^)YX2rNM0 zZ9-huK-eExtNZogbhQoz&IGPeH-9&Q`-c#@^}AXfaXzASS=2litiAYpV0wRGzXE&a8U(hkTibRjf!hwhuJwq8=UBTS zaKSow6uV%U=qex(1P*#EjX)51>E#ROgTTRor4a}MFTH%>y!s%6f~fz)41dCltm-xA zH;$>vXN`Lp+Fu?9wHa`mxy|gp1;zPa>6KH-jy4XQQnEvBcbEL3{J{M*e_EbqE(M+| z_vx=Ts{>^IxH~DpzeJq$JNNgEbf*n#Uu;{lMIGCI!vyF2P5pcB|F|xJ3zV>k$OYqa zN+l_w#aGy0QqBiK1;vL~1b^;Iah*iMmBr$JNgFeP*U5SE3Q6yE#_xXV*&9t#I&Fcl zGGo>AsHkQu`NCZdwBxW}Po?EBbP;%p*w?}ape$F+nF7q)9%@{j@&0A+TTH5b7~HCS zWLS+9EV+sm&Jr`@SelEeKig}4!g5WaN5;BE1YSpd4<_KY=c#|@RaIb%k!TYLj6xs?JPP?3w+aG5;D0JGhLKSS1c65(ALCX* zAP8Iq#xODp0oT3|Q>D|KwF)+XiIiHwI9l}?tpAm27N~YxdrLJKRU1LoRLoxY%dMYU z(4I&;-vf>Ox?Bzn`jL75I9kOQ^uzPy4flijV6D!9J5J@4rM6NI+9notTA2yF4L22u z3zU(Eu8#tfIe$~8w!l*pk?eYEBcMXhT=)Az1=h}B{}Z{Sf?SoFqJPgS&YXLyl8vr8hP%HCNtphKf9M-LG4LsT;O63fuGR zd_C{L+32aa(g@5cu(dW`-4}4sD`d(u5AP~L-r^UMII9X5p@uo%$ z%vEc7>VJP>76IprubVUw6JtE3dGx3z%Uj=1FZD^>RH-x9Z1d}UEms;%*(|Pd>T8XA zj~i`%B$#FJ)(u13Gi#PgV9P>8n?PU`0zu$W$j7)<5C{TSfiaAXLLdk{3i%kf3Iajk zDlmqTQ3y;=;B~Vgqn7l$#&zX^N92IxYe3&cNPq8a&5x2tE1@Mf>z#bGUmpQ8fse%Y zku@Ks#3ROCe~I5cgQW;O>g0Jh1=gOOnZToC(b40tz0B|R-gOg~U>J2N9~r{DmjY|g z%#}tPNuW^RwTafsdvgepZsJC&@2Ig`fgg6u5pahPqev8KwDQG%qXjjD7#TJ|z=ObV zq<>%eoKymr4^d_zV&5|S-rjo|0*?w^-cEqk=QllpR|h!!Z;L<>xGlb6y)gno;Kl%l z`L+mjC-5v;jkd6c^*tX>n3ao&Nz?~T0#Ik95aQqaijzJoxc zXR#A_Q&f(a+!j+cl(``(J6|Vt6*jO8ZVFWIXq1T2zysw2ocLLXPJnRGl`&In>;3QO_ l5eO`aKoEGzWecYh0{=9e|HrAY9)JJ<002ovPDHLkV1k(8YN-GK delta 3668 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 b|2yAc_g%u4+2eyyfKxNnGt;foc7F07a|Gd? diff --git a/apps/jsonclock/light-noloc.png b/apps/jsonclock/light-noloc.png new file mode 100644 index 0000000000000000000000000000000000000000..78abe83ce081536fa8ecc7f237126d10a57965d3 GIT binary patch literal 3430 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 literal 0 HcmV?d00001 diff --git a/apps/jsonclock/light-nolocnostep.png b/apps/jsonclock/light-nolocnostep.png new file mode 100644 index 0000000000000000000000000000000000000000..60b6a29a63ea43d34886e17e988d837d642b12a0 GIT binary patch literal 3154 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 sL(WqG0MFAJGdU;#fE`4|kn%U8-lZ!Lf|L-H zD|;8rlwzixxauH_{L&1-S$KRP*CHa#ycryf(%l@ny) z_jx@PPf9_vMdOaPS5G76LEMGSgM))Wqy7hBV`Ko2*B&vN!|C@*JzXBSu2iKCNBA?} z=d9x(cqw|YXL$Xeg>1RSXdCfrm)5dW<1Tbs!Ep3&lwbctItOC&90}cZb{a=n>obe? z{W9_Ti-p~+1tbe@zb>lS0Q<%N@&KH&8+PzEO>m`dbwVzEHgm!!RQ`3lSr*!EP|6Ml zwQ<{$&NV|MOF(Qd5}PE{R8u|Egjq7~$J!>S?4>_td${C(=eO7H z2>cl&yuSrAIsy-1(Ef({H9DlLfuu#rRwN&UEWePVC55m(`py_pdf%`ikq?i83HTEKt??|{VEWT)(OSAP>Df_gsANz4H#)_tsabj& z#R6wn2BAmYC)Wf;p_^g&lM|~TJ6QAf(QVG?KHNbPLa%}Shp1h%6C02*tfr~`e!H;U*1q-PwRtcKNg+AOoS$@A@l_9VcynVvK(3>ei!Ea=n%9Y;uC z3y+nfccj|D*|S^X9UmvA0$AcX;T6{KzHyx9P;u~l;v=jyN(9Z|?Yum?U zkfmn}?vw!35IA4^$6u!QFE5hsv?wK<1Y`k);s_w0+s_t+1vi-Ym{ z806Zvu3aZT!=q`BSHy^`qxtO{Xv3LO4eP%Q5H%qt3L|H_X>N0)Je;;LgR3n?o@s!V z+{-)kIPrXHHA^YfRW?3Khh80oO-#YLHWd3RqLCltwsC$%n51;6ZH#F7sE!zl8SkJi8i+>qy`k$uT`znoq=ze^ zZF=DYimZvCTw(94&fY)qp)>)y=!x%cC_6sKqd~?}%&);LHE^w~|6K^vmI~8eQyq{&T}P#LW95%Ab`U<$0XPl(S>=d-~aaFy0T zDp0E~#F@t?yLIRl_Vx0xXJ*|7bn{yyU#9e1nqQ&^*5!g~ELVTa)?q3wkI1*D`gsI8 zDQ8Kf*mQEqm#v$~G%D zlNJi1S8~_p)eeo3_L+|J^{WL(W?ly;2ciYi1=8c!2tkt z@huC>=i2%7wx*gt1|qbBJO)N4TLC5pmyJ@lT*wzs~lNb~psCU!r6V}83r0R}2q{MbfD_T}FOTne7r%362c z00wgV9Qs3C)qiaT%|@hPy7LKPxh$2he+;F4E-_#3IJd&`W(K!&2(#F@!Kr<`+y_0s zcXQjVl>J9g1sGm!6Z;Y#>fiZYRZ4;!rh#AS&!_SH2!f_bfDWX_#mLOo4Z<|1S zs27ZBn#S)1#_`ghIyG9epJDJDE)-fo+##k*G@_rl$gG4zcUQ+#uRKjXz5~O)DWhk@v0%Z^Z$>G0_;t-qP1&cL4q=NQ?x~fv9W_~f#mZRkAoaTH< z{;t^Cgb2AynJ9g_hmbqZ{^J3Owdy6D-SrzKmcv z`teB3v$W7Jk};$9rY)Z{sl8$_c8I}Wrm-9*gm(vzf7J|ZyBb)c3sPr8-hED8%ERBy z+e;d1yGK6fY!bUW0^}wTQ1f!>;@^Fqi?C>U7u-)BO^#-uwpJ&q2e**SR6ecopbEia zIf~wZUcO*ZNzD7zJrJ7a~w zary9TY*~$?r8uA@_E~JEtTV_ITq@=z(%>q3>avmXiC7(pB9ri8$*=;)ZwKwWfVK zYB4-6hLD@wMve#RPdyjr&|{c;Qr(GUjrE+C>2IBk2{=Ihfj3dLG_t#L0^X$3E@3OK zq?!c@wK4QD1IOfZykzC9zXh}7~j6&)r2-qeLO14}|sv$8s*i=krN?fBMce!$@K8BQq8q zbB3@IUNBu+js~R3TnQbIxNQzN&z2n96yl=@Gp6kw~yr2>~GEqZPOIR;x9@-@qe^eYYxI_5hiLkv^T4kbHMGxaa384 z?VHkI<&w=MSw&SIbC?~t+q)Z%(kRg2+^k|fZwJ$mznekmDdmOW`CvH~tF%N%=Sagt zzS({wj7L7lCcG`G{LXsY1eiGZfb-NJZFEedSDRV0FBOBbP8*2$w}Dgh)MkTRKJ+@r zTLs?3r@PyJ6`TFuz`k$hwDG>Tb^Q`st{*FBz(yl4WZyR+^i|Y(`ct;6!Ru&XbVDBu}sxb`P5mVUYRtG9l#aPUWl9@V(m5p8J^}`cZ#UhC* zyEe=KXBz0MV6n*k8r1%P8;1)}Gj{oz#=;V>>x{PV*9)_t?>u}yT~nInB94>n7r`y| z3Mkf2Drf{4<^THi;eS8L5#aB((5=;{ArXL_ZwPbGa{-Yq-|VA0{%WiNr&V!`nAj8= zko`$YIHYn}r+hckx^a+=B`U}jbOnV?)y4opS1@j=*KAJF2FtDcf1K=1`qTLAHxX`b zh0ThGa!*D-=qUSi6}I|nI04ya``EJv;*O#PY|hc`dxeT$_355kg~*8OCJLuY`=9wS ZmBwn=s( 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 literal 0 HcmV?d00001 From dff1259813d1541e5b6d9c5ba75a89b0753e8ba9 Mon Sep 17 00:00:00 2001 From: David Volovskiy Date: Sun, 20 Apr 2025 15:02:19 -0400 Subject: [PATCH 02/10] Modified the json format and colon color --- apps/jsonclock/app.js | 49 +++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/apps/jsonclock/app.js b/apps/jsonclock/app.js index f42a9313e..43ac36bd9 100644 --- a/apps/jsonclock/app.js +++ b/apps/jsonclock/app.js @@ -115,34 +115,29 @@ let loadJson = function() { const vals = getVal(now, location); //vals.steps = null; // For testing; uncomment to see the steps not appear //location.location = null; // For testing, if null, the time becomes an struct to take up sun's struct - let raw; - - if (location.location !== null) { - raw = { - time: vals.time, - dt: vals.date, - sun: { - rise: vals.rise, - set: vals.set, + const hasLoc = location.location !== null; + let raw = { + time: hasLoc + ? vals.time + : { + hr: getHr(now.getHours())[0], + min: now.getMinutes(), }, - "batt_%": vals.batt_pct, - }; - } else { - raw = { - time: { - hr: getHr(now.getHours())[0], - min: now.getMinutes(), - }, - dt: vals.date, - "batt_%": vals.batt_pct, + dt: vals.date, + "batt_%": vals.batt_pct, + }; + if (vals.steps != null) { + raw.steps = vals.steps; + } + if (hasLoc) { + raw.sun = { + rise: vals.rise, + set: vals.set, }; } - - if (vals.steps != null) raw.steps = vals.steps; - jsonText = JSON.stringify(raw, null, 2); lines = jsonText.split("\n"); -}; + }; let draw = function() { g.clear(); @@ -190,10 +185,10 @@ let redraw = function() { // Key g.setColor(clrs.keys); - g.drawString(indent + `"${key}"`, numWidth, y); - const keyWidth = g.stringWidth(indent + `"${key}"`); + const keyText = indent + `"${key}": ` + g.drawString(keyText, numWidth, y); + const keyWidth = g.stringWidth(keyText); const valueX = numWidth + keyWidth; - const valueText = ": " + value; // Value color if (value.startsWith('"')) { @@ -203,7 +198,7 @@ let redraw = function() { } else { g.setColor(clrs.ints); } - g.drawString(valueText, valueX, y); + g.drawString(value, valueX, y); valuePositions.push({ key, From 352cbdc5d329b252e167cc7ff4079e84d0e8582e Mon Sep 17 00:00:00 2001 From: David Volovskiy Date: Sun, 20 Apr 2025 15:33:34 -0400 Subject: [PATCH 03/10] colon and comma same color as brackets --- apps/jsonclock/app.js | 16 +++++++++++++--- apps/jsonclock/dark-noloc.png | Bin 3439 -> 2637 bytes apps/jsonclock/dark.png | Bin 4402 -> 3657 bytes 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/jsonclock/app.js b/apps/jsonclock/app.js index 43ac36bd9..12f647784 100644 --- a/apps/jsonclock/app.js +++ b/apps/jsonclock/app.js @@ -185,12 +185,19 @@ let redraw = function() { // Key g.setColor(clrs.keys); - const keyText = indent + `"${key}": ` + const keyText = indent + `"${key}"`; g.drawString(keyText, numWidth, y); const keyWidth = g.stringWidth(keyText); - const valueX = numWidth + keyWidth; + let valueX = numWidth + keyWidth; + + g.setColor(clrs.brackets); + const colonText = ": "; + g.drawString(colonText, valueX, y); + valueX += g.stringWidth(colonText); // Value color + const endComma = value.endsWith(','); + if (endComma) value = value.slice(0, -1); if (value.startsWith('"')) { g.setColor(clrs.strings); } else if (value.startsWith('{') || value.startsWith('}')) { @@ -199,7 +206,10 @@ let redraw = function() { g.setColor(clrs.ints); } g.drawString(value, valueX, y); - + if (endComma){ + g.setColor(clrs.brackets); + g.drawString(',', valueX + g.stringWidth(value), y); + } valuePositions.push({ key, x: valueX, diff --git a/apps/jsonclock/dark-noloc.png b/apps/jsonclock/dark-noloc.png index 3e74e8201a8f7a618bd4f4df285a9f062404dbd9..b606e54fa45562c08233d6745b946a9fff8cb5a6 100644 GIT binary patch delta 2628 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 gevSQa|4B!2;OQb$4nuFf3k000dsNklfc& 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 O0000AeNSLMJq(gP^EHA<_kr-U&s4AQ(tc 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 literal 4402 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

CYQor<2LjBMy~ zz78iTD6ElywGFqEYG1U&7+3qi)jYs{GuHin5rOT>OYbi%y-r!8vvgmrhQeA0!6_!C z;9Sg%ZD_vLN5gM%-56M$tG1u;{q5jSMGRlqJPgS&YXLyl8vr8hP%HCNtphKf9M z-LG4LsT;O63fuGRd_C{L+32aa(g@5cu(dW`-4}4sD`d(u5AP~L- zr^UMII9X5p@uo%$%vEc7>VIJt0q2Xan=}v;V?3pK^r$AwTi;JF^-0`RsWaDX^Xq&q zR~k*(EUt3uYmIx48*P3hm}T(R4MW>AYnDo2%R)q(KwuOCLEury$GBAx2m)7uF^r5t zAP77P`53nf0zu#^Fouy)2ux4lb+aI&mh`*Eb>)FaP~f$R*2;Tx2$62$Myl_qv0H&3cFPfPhY+Jk6lt{b#eSm& zHG~)$HbB6Gz;C2q`J7Y&mk&{9A!6S${NCPs83K;%^C^x^T%v634qZLD4sk8$3C!0(N{1Ua!{ z)>6>O>%N0Pqi3-bcvDo4nA{dqHI%qS$wvbh6$6hTaOp`f2ZZ6pNCbuxI7mEl z`PUzN7=btFYQ@v*FGI{A7lB~}j%-Bkl0`p=KsJF(Z@?l85k#zkz$1-zWB0kQCe8!b zh+BieHI^@Im``(J6|Vt6*jO8ZVFWIXq1T2zysw2ocLLXPJnRGl s`&In>;8dUy2rP*}5O~RD3#StT|1_Nc$EmO$fB*mh07*qoM6N<$f{Qd^*#H0l From bb719c57030ab9b51f2ad1e2542e468a5aa61850 Mon Sep 17 00:00:00 2001 From: David Volovskiy Date: Sun, 20 Apr 2025 15:47:02 -0400 Subject: [PATCH 04/10] Modified pics to show the updated coloring --- apps/jsonclock/dark-noloc.png | Bin 2637 -> 2598 bytes apps/jsonclock/dark-nolocnostep.png | Bin 3400 -> 2578 bytes apps/jsonclock/dark-nostep.png | Bin 4135 -> 3261 bytes apps/jsonclock/dark.png | Bin 3657 -> 3559 bytes apps/jsonclock/light-noloc.png | Bin 3430 -> 2434 bytes apps/jsonclock/light-nolocnostep.png | Bin 3154 -> 2172 bytes apps/jsonclock/light-nostep.png | Bin 3696 -> 2527 bytes apps/jsonclock/light.png | Bin 3960 -> 2772 bytes apps/jsonclock/tran.png | Bin 2632 -> 2672 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/jsonclock/dark-noloc.png b/apps/jsonclock/dark-noloc.png index b606e54fa45562c08233d6745b946a9fff8cb5a6..f0470de64a90854d882ecc09e2a9b3f2e0a1bb30 100644 GIT binary patch delta 2574 zcmV+p3i0*L6s8oAGk*!)Nkl>$a;Z3`TK}^Zu{Q`LT+{lyFhOq@8n&y7s`BF4z}<}C^guIW3 ztu2z=SbNmof?|E!_MpJIqU36l{;nNw<&(H3tkJrbk#l z#rn1_3Jk7UqQEiEk4x}?1;zTdZB>DDqdVKPzM~8PjsLU*cPb`^3$v)Y5EvdXI( zj2FKbW;3l5hw;J+rjJ74hQLgw8!$=?Gnr<jJGFb`rOz%|oj zA()ASnJ@|gt|1x?T!Rk`uEBu8H5l*&h<{#(8crF)=UDL64q1$Ek9-U1zjRRSXXnfG zYmInU6+;Lo*Moy~s0y4uh_vQGo;HQ;&nEZnp)IBJw{WlViux}Uo!>K-O3z{-#`=81gLx}OXFALqzzvtR8-e+hU@Z(d#+xGHFg)(Qp^4n+Kvh&6M zZp86e-qtq05uX;{cP&)|E_LLdpjdT5fe+_v`+o=Jji1VX5tMi>U84|B6H9JDQGq-5 z_fZDT=RSvp`}B)Uj|aXDIqrMdPvf_#UA_CEYrJ>l%S`<9TKvq!?Y?Z<~1+t6+L zc7N=|1COG`4;SKzFO}DWq1*Cn42?oqnqD@g!1=7+iK^i|-3DyRc&q$Hn{6*8l`kTE zr-#sEX+zhI0WYU3oYIu*&_c!!A7;jm$5Y%e_@&y3bBR>mE$#s}2j$J8)2hXp|Hb)j z{QAHeLs4sY*ZtZWzCGVYbrhoHI+!-z5Pzzp5?7x#276Q$*rfsAtiWBrIZar#*^Xiyni+|Lv;>VIq^ zQ`Zg74L1agc#!VJ{mfBaPdH{GQ z2aeVFU_IZwHWt%R-C>%~#JOYlRg+?t_W!P}zG`Lr9t_2YXudC8V)%&+^M);b;>vze zfwg>RkseO#JPdq@=1X3*m%W&!5`T>*_lpXw&ZA)FFi^L+{oKLrL1uEBu8H5f3s#=HT$TiObi zqK*SwdruteDnNKlov`ghtZ@VKWW(3zEto$)qwU8Y<1!!7TW}C`M&jm;ioV^k)f$9 z>I)$_dZfsbFAjF#i41TJQ_0{O3>aL40fTF*ojBRkpW1QiUGKN}9yodK`SpC`A)j0} zFa&iSiHW3oSJ$UqXYF|H{(sGξFeIEd|i@zrVy>o-U)ujd=ZHkJAMu(mvH1q-{` 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 diff --git a/apps/jsonclock/dark-nolocnostep.png b/apps/jsonclock/dark-nolocnostep.png index 22565650da248cf42603b3182baa5208fd199a38..40474ed469b1e721ff8914003bbcf5dda6bf9f4b 100644 GIT binary patch delta 2569 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 literal 4135 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 Ql>h($07*qoM6N<$g1XfEw*UYD delta 3641 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 HI!65;&WR># diff --git a/apps/jsonclock/light-noloc.png b/apps/jsonclock/light-noloc.png index 78abe83ce081536fa8ecc7f237126d10a57965d3..2db238a69e42e82a2f3205239a45cf4d5a92d686 100644 GIT binary patch delta 2423 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 diff --git a/apps/jsonclock/light-nolocnostep.png b/apps/jsonclock/light-nolocnostep.png index 60b6a29a63ea43d34886e17e988d837d642b12a0..c9763abad6c2d14b8f977ad9ee6cf34a6ecafac6 100644 GIT binary patch delta 2159 zcmV-#2$1*E82k{BB!2{RLP=Bz2nYy#2xN!=00=WlL_t(|ob8=kd$cMHMxoF5|NpZ4 zqNSUm90GDkbgdiPQBj$9VhAz%>$)xn%kkd3>$+IZULxQp>t^HEV zB;CK~^R)eVo7wG`j@8-*=JLk^rz$V4m+mM1;(FU1X*;)l?{(fmgT;Ey;w8#`t(F7g^vZu_MZn z9;0?=zyhz~kuz~S#M0wWr|Vf_fz5#hUc)0TuvRo!tfwupz?;AVuVIS?-jSDJ0Sy-G zY0Ihwmc}@1%xD9k#J|#tnHCe_!YZmR1i}OD6a_p(ynpz;u$pCqIK&G(SRRGI4S|&` z7ciC>RDFI!Gji+7=ODXwe%$+6THyK= z-hYZZJ^k9c@nhQRqo>dm@acy#!y&J$?f0hJ#Q*0kdAhFL?j^o<{NKHZq7YB~QdSvE zO#|IGAdW(uCKpP(!|cl8$eK{C7QYq_r7k)Ko&*P1d4?F|^(?4|0cGTnp_tKvJ{kvVwO}LW_{JZXQhRU@|Ep-=UBBkdaI6vmcG`ENPoajoy^##kIT8M5ERad)H`3?9zN+R?gxYP zb|GCZMqJ!an~+;6lIeD}{NP%R;rg+JZq@a(?N7E^b6OhXD@K%!W|>y4;M#ukPU3Uf zG6uL0a>OtDwnoYFwu%HwxBK2!D73@}_AdXv5s&ZCP4^QSWL5Q%?W>Yb8}0@CMSuLV zZ*5^TD+HhR!!0O9CFt62NaneL^np+B{a^PW+2!|6hlsmCz#I6D;#A_nVLRx9d|)sQ zxe#C)1PrD@z+f5#45m>pU>@y<8bedbCjuAD078yt9Qd?oC}{;X)VmM>HAD&RTKrHA z=K#9svcMVyq~RPu4`#}%p7zB-Cx7B}%F|$ZAxATemJ0c#u(kcD;5^m06gj7B5SOCy zoM1212L{uqpU5a#S*$NOXXuFxO};qjLA`(xD%4;q8BBwK!88aMOd~4p7g*_!N^9`u zN=2pH-l`p3+j&M&;t{65)LD4EKu-s6?xX6PI=_#9J`X|#v53;bYfqweoqx*uLF_^> zk&zI8fh!p)t$By^x>_PVEaI->ek%psTjoFhEWN|ts^>d;jXB>Y{J-+Hy83qB>%MF@ zawhVDRoto5x~q3is(0TWYhP=-_q!@qz&V%e|8py^%W>NcY7J&2`}f>(Yqy=A zw!^y7AA(}nQT-BFJlbPHJHKyHVIieKvL1K+j!y^MI3(@q`Rlh z+9p()Y-Pmm`Ya@cCkJAv#!|n)_kp zFXwz>dG#lUZATnNTRo*L%?B>I1Zi8PT;bB^Bj+bgix3C#Kk|g~?^q6>^J4ICx-77U z4ok&)B2{C>F=LDSYkw@#{^9>v z){kYfKDNl-`PYw2#4f~}J1J#Gge2vUn{h=0xl$t4dAo9)#}DF4H;<8JUZ+}H(fwla~M^bQS0tVA;7qEs$_2D@js}KD4 zDNvZh_WHoYFJUHK^?{w!GcyO^T!(;H6sF+E0Cy3;D|r=&818T^jD{Z!GY}8rX8XWc zUYNnr`oLIWxPOcK`oI7+OwX%H}&1_6U< zj^zUb%wT&yFu+X62L{vN1A}S06WReZaXg_N;11O&L>hHK$e@jC6e1^BLTR80@`1rL zpwwVDf@NEB-=_U>F8* lU>XDrra{198Uzfc`48%xvBS^Rs1E=D002ovPDHLkV1gOzF600J delta 3149 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 diff --git a/apps/jsonclock/light-nostep.png b/apps/jsonclock/light-nostep.png index 8f5dd5f499b58aa40f9238615f0b00bc1eadbda9..2fd0a8431f08075f5fca4bba599a64ffd3ffe23f 100644 GIT binary patch delta 2517 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 fz+f5z7)%U8-lZ!Lf|L-H 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 Uq6CW_IsgCw07*qoM6N<$f+w3PdjJ3c delta 2622 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 Date: Tue, 22 Apr 2025 22:08:51 -0400 Subject: [PATCH 05/10] Less redrawing of keys and fixed memory leak on valuePositions array --- apps/jsonclock/app.js | 66 +++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 37 deletions(-) diff --git a/apps/jsonclock/app.js b/apps/jsonclock/app.js index 12f647784..1acc148df 100644 --- a/apps/jsonclock/app.js +++ b/apps/jsonclock/app.js @@ -36,7 +36,7 @@ const buttonHeight = 12; const buttonX = 78; const buttonY = 3; -let valuePositions = []; +let keysDrawn = false; const headerHeight = 16; const usableHeight = h - headerHeight; const maxLines = Math.floor(usableHeight / lineHeight); @@ -143,7 +143,6 @@ let draw = function() { g.clear(); g.setFontAlign(-1, -1); g.setFont("Vector", 10); - valuePositions = []; g.setColor(clrs.tab); @@ -179,22 +178,33 @@ let redraw = function() { if (kvMatch) { const key = kvMatch[1]; let value = kvMatch[2]; + + let valPrev = (prevVals[key] && prevVals[key].text) || null; + if (valPrev === value) continue; + + if (!keysDrawn) { + prevVals[key] = {}; + // Key + g.setColor(clrs.keys); + const keyText = indent + `"${key}"`; + g.drawString(keyText, numWidth, y); + const keyWidth = g.stringWidth(keyText); + let valueX = numWidth + keyWidth; - if (prevVals.key == value) continue; - prevVals.key = value; - - // Key - g.setColor(clrs.keys); - const keyText = indent + `"${key}"`; - g.drawString(keyText, numWidth, y); - const keyWidth = g.stringWidth(keyText); - let valueX = numWidth + keyWidth; - - g.setColor(clrs.brackets); - const colonText = ": "; - g.drawString(colonText, valueX, y); - valueX += g.stringWidth(colonText); + g.setColor(clrs.brackets); + const colonText = ": "; + g.drawString(colonText, valueX, y); + valueX += g.stringWidth(colonText); + prevVals[key].x = valueX; + prevVals[key].y = y; + } + prevVals[key].text = value; + let pos = prevVals[key]; + // Clear prev values + g.setColor(clrs.bg); + g.fillRect(pos.x, pos.y, w, pos.y + lineHeight); + // Value color const endComma = value.endsWith(','); if (endComma) value = value.slice(0, -1); @@ -205,36 +215,18 @@ let redraw = function() { } else { g.setColor(clrs.ints); } - g.drawString(value, valueX, y); + g.drawString(value, pos.x, pos.y); if (endComma){ g.setColor(clrs.brackets); - g.drawString(',', valueX + g.stringWidth(value), y); + g.drawString(',', pos.x + g.stringWidth(value), pos.y); } - valuePositions.push({ - key, - x: valueX, - y, - text: value - }); - } else { - g.setColor(clrs.brackets); - g.drawString(line, numWidth, y); } } -}; - -let clearVals = function() { - g.setFont("Vector", fontSize); - g.setFontAlign(-1, -1); - valuePositions.forEach(pos => { - g.setColor(clrs.bg); - g.fillRect(pos.x, pos.y, w, pos.y + lineHeight); - }); + keysDrawn = true; }; let redrawValues = function() { loadJson(); - clearVals(); redraw(); if (drawTimeout) clearTimeout(drawTimeout); drawTimeout = setTimeout(function() { From 7410dc8dbc9c25c12750eeaaa6b649bc8ab1c28b Mon Sep 17 00:00:00 2001 From: David Volovskiy Date: Tue, 22 Apr 2025 22:11:32 -0400 Subject: [PATCH 06/10] Upped version number --- apps/jsonclock/ChangeLog | 1 + apps/jsonclock/metadata.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/jsonclock/ChangeLog b/apps/jsonclock/ChangeLog index 9db0e26c5..f8cb62040 100644 --- a/apps/jsonclock/ChangeLog +++ b/apps/jsonclock/ChangeLog @@ -1 +1,2 @@ 0.01: first release +0.02: memory leak fix; color changes to better align with VSCode color scheme; logo is transparent diff --git a/apps/jsonclock/metadata.json b/apps/jsonclock/metadata.json index c7d2f8932..d097d5b08 100644 --- a/apps/jsonclock/metadata.json +++ b/apps/jsonclock/metadata.json @@ -1,6 +1,6 @@ { "id": "jsonclock", "name": "JsonClock", - "version": "0.01", + "version": "0.02", "description": "JSON view of the time, date, steps, battery, and sunrise and sunset times", "icon": "app.png", "screenshots": [{"url":"dark.png"}], From d6de4da428c4e5e855e40aea466fd24d4b454ed3 Mon Sep 17 00:00:00 2001 From: David Volovskiy Date: Tue, 22 Apr 2025 22:23:22 -0400 Subject: [PATCH 07/10] Readded drawing colons --- apps/jsonclock/app.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/jsonclock/app.js b/apps/jsonclock/app.js index 1acc148df..8aa831985 100644 --- a/apps/jsonclock/app.js +++ b/apps/jsonclock/app.js @@ -221,7 +221,11 @@ let redraw = function() { g.drawString(',', pos.x + g.stringWidth(value), pos.y); } } + else if (!keysDrawn) { + g.setColor(clrs.brackets); + g.drawString(line, numWidth, y); } +} keysDrawn = true; }; From fd8785fe5bdef508608463438e297c73935c70ce Mon Sep 17 00:00:00 2001 From: David Volovskiy Date: Tue, 22 Apr 2025 22:30:45 -0400 Subject: [PATCH 08/10] Always set the wanted font size whenever we redraw --- apps/jsonclock/app.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/jsonclock/app.js b/apps/jsonclock/app.js index 8aa831985..75097c194 100644 --- a/apps/jsonclock/app.js +++ b/apps/jsonclock/app.js @@ -165,6 +165,7 @@ let draw = function() { }; let redraw = function() { + g.setFont("Vector", fontSize); for (let i = 0; i < maxLines; i++) { const lineIndex = i; const line = lines[lineIndex]; From 3022a9acf6159038e1f4b101454f9469f599bdc3 Mon Sep 17 00:00:00 2001 From: David Volovskiy Date: Wed, 23 Apr 2025 20:29:03 -0400 Subject: [PATCH 09/10] Refactored --- apps/jsonclock/app.js | 156 +++++++++++++++++++++++------------------- 1 file changed, 85 insertions(+), 71 deletions(-) diff --git a/apps/jsonclock/app.js b/apps/jsonclock/app.js index 75097c194..fb31c7f47 100644 --- a/apps/jsonclock/app.js +++ b/apps/jsonclock/app.js @@ -4,14 +4,23 @@ const storage = require('Storage'); const widget_utils = require('widget_utils'); const global_settings = storage.readJSON("setting.json", true) || {}; const LOCATION_FILE = "mylocation.json"; -const h = g.getHeight(); -const w = g.getWidth(); let location; let cachedSunTimes = null; let lastSunCalcDate = null; -var prevVals = {}; +var valsArrs = {}; let drawTimeout; +const h = g.getHeight(); +const w = g.getWidth(); +const fontSize = 13; +const lineHeight = 16; +const buttonHeight = 12; +const buttonX = 78; +const buttonY = 3; +const headerHeight = 16; +const usableHeight = h - headerHeight; +const maxLines = Math.floor(usableHeight / lineHeight); + var settings = { hr_12: global_settings["12hour"] !== undefined ? global_settings["12hour"] : false, dark_mode: g.theme.dark @@ -26,22 +35,6 @@ let clrs = { brackets: g.theme.fg, }; - -let jsonText; -let lines = []; -let fontSize = 13; -const lineHeight = 16; - -const buttonHeight = 12; -const buttonX = 78; -const buttonY = 3; - -let keysDrawn = false; -const headerHeight = 16; -const usableHeight = h - headerHeight; -const maxLines = Math.floor(usableHeight / lineHeight); -var numWidth = 0; - // requires the myLocation app let loadLocation = function() { location = require("Storage").readJSON(LOCATION_FILE, 1) || {}; @@ -110,7 +103,17 @@ let getVal = function(now, loc) { return vals; }; -let loadJson = function() { + +let getKeyValRegex = function(line) { + return line.trim().match(/^"([^"]+)":\s*(.+)$/); +}; + +let getIndentRegex = function(line) { + const indentMatch = line.match(/^(\s*)/); + return indentMatch ? indentMatch[1] : ""; +}; + +let getJsonLine = function() { const now = new Date(); const vals = getVal(now, location); //vals.steps = null; // For testing; uncomment to see the steps not appear @@ -135,9 +138,9 @@ let loadJson = function() { set: vals.set, }; } - jsonText = JSON.stringify(raw, null, 2); - lines = jsonText.split("\n"); - }; + let jsonText = JSON.stringify(raw, null, 2); + return jsonText.split("\n"); +}; let draw = function() { g.clear(); @@ -153,91 +156,101 @@ let draw = function() { g.setFont("Vector", buttonHeight); g.drawString("X", buttonX, buttonY); g.setFont("Vector", fontSize); - + + var lines = getJsonLine(); + var numWidth = 0; + + // Draw numbers first to find out their max width for (let i = 0; i < maxLines; i++) { const y = headerHeight + i * lineHeight; const lineNumberStr = (i + 1).toString().padStart(2, " ") + " "; g.drawString(lineNumberStr, 0, y); numWidth = Math.max(numWidth, g.stringWidth(lineNumberStr)); } - - redrawValues(); -}; - -let redraw = function() { - g.setFont("Vector", fontSize); for (let i = 0; i < maxLines; i++) { - const lineIndex = i; - const line = lines[lineIndex]; - if (!line) continue; const y = headerHeight + i * lineHeight; + const line = lines[i]; + if (!line) continue; - const indentMatch = line.match(/^(\s*)/); - const indent = indentMatch ? indentMatch[1] : ""; - - const kvMatch = line.trim().match(/^"([^"]+)":\s*(.+)$/); + let kvMatch = getKeyValRegex(line); if (kvMatch) { const key = kvMatch[1]; let value = kvMatch[2]; - - let valPrev = (prevVals[key] && prevVals[key].text) || null; - if (valPrev === value) continue; - - if (!keysDrawn) { - prevVals[key] = {}; - // Key - g.setColor(clrs.keys); - const keyText = indent + `"${key}"`; - g.drawString(keyText, numWidth, y); - const keyWidth = g.stringWidth(keyText); - let valueX = numWidth + keyWidth; - g.setColor(clrs.brackets); - const colonText = ": "; - g.drawString(colonText, valueX, y); - valueX += g.stringWidth(colonText); - prevVals[key].x = valueX; - prevVals[key].y = y; - } - prevVals[key].text = value; - let pos = prevVals[key]; + // Key + g.setColor(clrs.keys); + const indent = getIndentRegex(line); + const keyText = indent + `"${key}"`; + g.drawString(keyText, numWidth, y); + const keyWidth = g.stringWidth(keyText); + let x = numWidth + keyWidth; - // Clear prev values - g.setColor(clrs.bg); - g.fillRect(pos.x, pos.y, w, pos.y + lineHeight); + g.setColor(clrs.brackets); + const colonText = ": "; + g.drawString(colonText, x, y); + x += g.stringWidth(colonText); // Value color const endComma = value.endsWith(','); + valsArrs[key] = {text:value, x:x, y:y, endComma:endComma}; if (endComma) value = value.slice(0, -1); if (value.startsWith('"')) { - g.setColor(clrs.strings); + valsArrs[key].color = clrs.strings; } else if (value.startsWith('{') || value.startsWith('}')) { - g.setColor(clrs.brackets); + valsArrs[key].color = clrs.brackets; } else { - g.setColor(clrs.ints); + valsArrs[key].color = clrs.ints; } - g.drawString(value, pos.x, pos.y); + g.setColor(valsArrs[key].color); + g.drawString(value, x, y); if (endComma){ g.setColor(clrs.brackets); - g.drawString(',', pos.x + g.stringWidth(value), pos.y); + g.drawString(',', x + g.stringWidth(value), y); } } - else if (!keysDrawn) { + else { g.setColor(clrs.brackets); g.drawString(line, numWidth, y); + } + } +}; + +// Redraws only values that changed +let redraw = function() { + g.setFontAlign(-1, -1); + g.setFont("Vector", fontSize); + var lines = getJsonLine(); + + for (let i = 0; i < lines.length; i++) { + let kvMatch = getKeyValRegex(lines[i]); + if (!kvMatch) continue; + const key = kvMatch[1]; + let value = kvMatch[2]; + if (!(key in valsArrs)) continue; + let valsArr = valsArrs[key]; + if (value === valsArr.text) continue; // No need to update + valsArrs[key].text = value; + + // Clear prev values + g.setColor(clrs.bg); + g.fillRect(valsArr.x, valsArr.y, w, valsArr.y + lineHeight); + + g.setColor(valsArr.color); + g.drawString(value, valsArr.x, valsArr.y); + if (valsArr.endComma){ + g.setColor(clrs.brackets); + g.drawString(',', valsArr.Banglex + g.stringWidth(value), valsArr.y); + } } -} - keysDrawn = true; }; let redrawValues = function() { - loadJson(); redraw(); if (drawTimeout) clearTimeout(drawTimeout); drawTimeout = setTimeout(function() { drawTimeout = undefined; redrawValues(); - }, 60000 - (Date.now() % 60000)); + }, 600 - (Date.now() % 600)); }; Bangle.on('touch', (zone, e) => { @@ -258,4 +271,5 @@ loadLocation(); Bangle.loadWidgets(); widget_utils.hide(); draw(); +redrawValues(); // To set the timeout } \ No newline at end of file From ba6d26523c1aef94067955342fbc03e40e98ef5b Mon Sep 17 00:00:00 2001 From: David Volovskiy Date: Wed, 23 Apr 2025 20:38:06 -0400 Subject: [PATCH 10/10] Remade the ttime update to once a minute --- apps/jsonclock/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/jsonclock/app.js b/apps/jsonclock/app.js index fb31c7f47..759b51793 100644 --- a/apps/jsonclock/app.js +++ b/apps/jsonclock/app.js @@ -250,7 +250,7 @@ let redrawValues = function() { drawTimeout = setTimeout(function() { drawTimeout = undefined; redrawValues(); - }, 600 - (Date.now() % 600)); + }, 60000 - (Date.now() % 60000)); }; Bangle.on('touch', (zone, e) => {