From 9850892c7c3f5dfd3600787e22e01b39b1f925ce Mon Sep 17 00:00:00 2001 From: "Marko.Kl.Berkenbusch@gmail.com" Date: Fri, 21 Aug 2020 22:43:55 -0400 Subject: [PATCH 1/8] Add magnetometer/accelerometer rotation mode --- apps.json | 2 +- apps/viewstl/ChangeLog | 2 ++ apps/viewstl/README.md | 5 +-- apps/viewstl/viewstl.app.js | 61 +++++++++++++++++-------------------- apps/viewstl/viewstl.min.js | 58 ++++++++++++++++++++--------------- 5 files changed, 67 insertions(+), 61 deletions(-) create mode 100644 apps/viewstl/ChangeLog diff --git a/apps.json b/apps.json index 57f2d1e1e..3c9124446 100644 --- a/apps.json +++ b/apps.json @@ -2147,7 +2147,7 @@ "name": "STL file viewer", "shortName":"ViewSTL", "icon": "icons8-octahedron-48.png", - "version":"0.01", + "version":"0.02", "description": "This app allows you to view STL 3D models on your watch", "tags": "tool", "readme": "README.md", diff --git a/apps/viewstl/ChangeLog b/apps/viewstl/ChangeLog new file mode 100644 index 000000000..fa2dcb2e1 --- /dev/null +++ b/apps/viewstl/ChangeLog @@ -0,0 +1,2 @@ +0.01: New app! +0.02: Add accelerometer/compass viewing mode diff --git a/apps/viewstl/README.md b/apps/viewstl/README.md index bd54f15bb..2676f3df7 100644 --- a/apps/viewstl/README.md +++ b/apps/viewstl/README.md @@ -14,10 +14,11 @@ The app supports 4 different rendering modes, swiping right-to-left on the touch - wireframe, only edges between non-coplanar facets visible - wireframe, all facet (triangle) edges visible -There are two different rotation modes that slightly alter the function of buttons 1 and 3, swiping left-to-right toggles between the two modes: +There are three different rotation modes that slightly alter the function of buttons 1 and 3, swiping left-to-right cycles through the modes: - free rotation: button 1 zooms in, button 3 out - Z-axis (vertical axis) rotation: buttons 1 and 3 tilt the Z-axis +- align rotation with compass and accelerometer readings: button 1 zooms in, button 3 out There is currently no interface to upload STL files to the watch, the web IDE storage icon can be used instead. -A future version might contain rotation based on accelerometer/magnetometer readings. + diff --git a/apps/viewstl/viewstl.app.js b/apps/viewstl/viewstl.app.js index c732ef298..0d2b6471c 100644 --- a/apps/viewstl/viewstl.app.js +++ b/apps/viewstl/viewstl.app.js @@ -37,7 +37,7 @@ var p_rnormals; var lastTime; var nFrames = 0; var interv; -var qZrot = false; +var qZrot = 0; var qWireframe = 0; var zBeta = 0; @@ -195,28 +195,6 @@ int findSlot(float *p, float *x, int len) { p[3*len+2] = x[2]; return len; } -typedef unsigned int uint32_t; -typedef signed int int32_t; -typedef unsigned char uint8_t; -/* -https://github.com/espruino/Espruino/blob/master/targetlibs/nrf5x_12/components/toolchain/cmsis/include/cmsis_gcc.h -*/ -__attribute__( ( always_inline ) ) static inline uint32_t __get_FPSCR(void) -{ - uint32_t result; - /* Empty asm statement works as a scheduling barrier */ - __asm volatile (""); - __asm volatile ("VMRS %0, fpscr" : "=r" (result) ); - __asm volatile (""); - return(result); -} -__attribute__( ( always_inline ) ) static inline void __set_FPSCR(uint32_t fpscr) -{ - /* Empty asm statement works as a scheduling barrier */ - __asm volatile (""); - __asm volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc"); - __asm volatile (""); -} `); function initNormals() { @@ -236,7 +214,7 @@ function initNormals() { function readSTL(fn) { var fb = require("Storage").read(fn); - var nverts=0,i=0; while((i=fb.indexOf("vertex",i)+1)!=0) nverts++; + var nverts=0,i=0; while(i=fb.indexOf("vertex",i)+1) nverts++; points = new Float32Array(nverts); p_points = E.getAddressOf(points, true); faces = new Uint16Array(nverts); @@ -283,7 +261,6 @@ function readSTL(fn) { addr[6] = p_polyedge; addr[7] = p_normals; c.initEdges(p_addr, faces.length/3); - console.log(edges); } function rotV(v, u, c, s) { @@ -306,8 +283,22 @@ function largestExtent(pts) { function draw() { "ram" const n = [1, 0, 0]; - if (qZrot) { - var ca=Math.cos(a), sa=Math.sin(a), cb=Math.cos(zBeta), sb=Math.sin(zBeta); + if (qZrot>0) { + var ca, sa, cb, sb; + if (qZrot==2) { + var acc = Bangle.getAccel(); + zBeta = -Math.atan2(acc.z, -acc.y); + var comp = Bangle.getCompass(); + if (!isNaN(comp.heading)) { + var m = [comp.dx, comp.dy, comp.dz]; + //console.log(m); + var rm = rotV(m, [1, 0, 0], Math.cos(zBeta), Math.sin(zBeta)); + a = -Math.atan2(rm[0], rm[2]); + //console.log("heading="+a*180/Math.PI, "zBeta="+zBeta); + } + else a = 0; + } + ca=Math.cos(a); sa=Math.sin(a); cb=Math.cos(zBeta); sb=Math.sin(zBeta); var ul = Math.sqrt(sb*sb+ca*ca*sb*sb+2*sa*sa*cb+2*ca*sb*sb+2*sa*sa); u = [(sb+ca*sb)/ul, (-sa-sa*cb)/ul, (-sa*sb)/ul]; var ra = Math.acos((ca+cb+ca*cb-1)/2); @@ -315,7 +306,7 @@ function draw() { aux[3] = Math.cos(ra); aux[4] = Math.sin(ra); } - else { + else{ u = rotV(u, n, c05, s05); aux[3] = Math.cos(a); aux[4] = Math.sin(a); @@ -389,17 +380,19 @@ function loadFile(fn) { interv = setInterval(function() { draw();}, 30); } }, BTN2, {repeat:true, debounce:50}); setWatch(function() { - if (qZrot && zBeta<2*Math.PI/2-0.08) zBeta += 0.08; - else zDist *= 0.9; + if (qZrot==1) { + if (zBeta<2*Math.PI/2-0.08) zBeta += 0.08; + } else zDist *= 0.9; }, BTN1, {repeat:true}); setWatch(function() { - if (qZrot && zBeta>-2*Math.PI/2-0.08) zBeta -= 0.08; - else zDist /= 0.9; + if (qZrot==1) { + if (zBeta>-2*Math.PI/2-0.08) zBeta -= 0.08; + } else zDist /= 0.9; }, BTN3, {repeat:true}); Bangle.on('swipe', function(direction){ switch(direction){ case 1: - qZrot = !qZrot; + qZrot = (qZrot+1)%3; break; case -1: qWireframe = (qWireframe+1)%4; @@ -419,4 +412,6 @@ function drawMenu() { E.showMenu(menu); } +Bangle.on('kill',()=>{Bangle.setCompassPower(0);}); +Bangle.setCompassPower(1); drawMenu(); diff --git a/apps/viewstl/viewstl.min.js b/apps/viewstl/viewstl.min.js index 227143f6f..f2e7d0685 100644 --- a/apps/viewstl/viewstl.min.js +++ b/apps/viewstl/viewstl.min.js @@ -37,7 +37,7 @@ var p_rnormals; var lastTime; var nFrames = 0; var interv; -var qZrot = false; +var qZrot = 0; var qWireframe = 0; var zBeta = 0; @@ -76,7 +76,7 @@ function initNormals() { function readSTL(fn) { var fb = require("Storage").read(fn); - var nverts=0,i=0; while((i=fb.indexOf("vertex",i)+1)!=0) nverts++; + var nverts=0,i=0; while(i=fb.indexOf("vertex",i)+1) nverts++; points = new Float32Array(nverts); p_points = E.getAddressOf(points, true); faces = new Uint16Array(nverts); @@ -145,8 +145,22 @@ function largestExtent(pts) { function draw() { "ram" const n = [1, 0, 0]; - if (qZrot) { - var ca=Math.cos(a), sa=Math.sin(a), cb=Math.cos(zBeta), sb=Math.sin(zBeta); + if (qZrot>0) { + var ca, sa, cb, sb; + if (qZrot==2) { + var acc = Bangle.getAccel(); + zBeta = -Math.atan2(acc.z, -acc.y); + var comp = Bangle.getCompass(); + if (!isNaN(comp.heading)) { + var m = [comp.dx, comp.dy, comp.dz]; + //console.log(m); + var rm = rotV(m, [1, 0, 0], Math.cos(zBeta), Math.sin(zBeta)); + a = -Math.atan2(rm[0], rm[2]); + //console.log("heading="+a*180/Math.PI, "zBeta="+zBeta); + } + else a = 0; + } + ca=Math.cos(a); sa=Math.sin(a); cb=Math.cos(zBeta); sb=Math.sin(zBeta); var ul = Math.sqrt(sb*sb+ca*ca*sb*sb+2*sa*sa*cb+2*ca*sb*sb+2*sa*sa); u = [(sb+ca*sb)/ul, (-sa-sa*cb)/ul, (-sa*sb)/ul]; var ra = Math.acos((ca+cb+ca*cb-1)/2); @@ -154,7 +168,7 @@ function draw() { aux[3] = Math.cos(ra); aux[4] = Math.sin(ra); } - else { + else{ u = rotV(u, n, c05, s05); aux[3] = Math.cos(a); aux[4] = Math.sin(a); @@ -173,16 +187,9 @@ function draw() { z = zbuf[i]; shade = 0|c.processFace(p_addr, z, 1); if (shade > 0) { - if (qWireframe==1) { - g.setColor(shade); - g.fillPoly(polyp); - g.setColor(0); - g.drawPoly(polyedge); - } + if (qWireframe==1) g.setColor(shade).fillPoly(polyp).setColor(0).drawPoly(polyedge); else { - g.setColor(0); - g.fillPoly(polyp); - g.setColor(shade); + g.setColor(0).fillPoly(polyp).setColor(shade); if (qWireframe==2) g.drawPoly(polyedge); else g.drawPoly(polyp, true); } @@ -194,10 +201,7 @@ function draw() { while (i--) { z = zbuf[i]; shade = 0|c.processFace(p_addr, z, 0); - if (shade > 0) { - g.setColor(shade); - g.fillPoly(polyp); - } + if (shade > 0) g.setColor(shade).fillPoly(polyp); } } nFrames++; @@ -229,7 +233,7 @@ function loadFile(fn) { setWatch(function() { if (interv) { interv = clearInterval(interv); - c.clearFPU(); load(); + load(); } else { Bangle.setLCDMode("doublebuffered"); @@ -238,17 +242,19 @@ function loadFile(fn) { interv = setInterval(function() { draw();}, 30); } }, BTN2, {repeat:true, debounce:50}); setWatch(function() { - if (qZrot && zBeta<2*Math.PI/2-0.08) zBeta += 0.08; - else zDist *= 0.9; + if (qZrot==1) { + if (zBeta<2*Math.PI/2-0.08) zBeta += 0.08; + } else zDist *= 0.9; }, BTN1, {repeat:true}); setWatch(function() { - if (qZrot && zBeta>-2*Math.PI/2-0.08) zBeta -= 0.08; - else zDist /= 0.9; + if (qZrot==1) { + if (zBeta>-2*Math.PI/2-0.08) zBeta -= 0.08; + } else zDist /= 0.9; }, BTN3, {repeat:true}); Bangle.on('swipe', function(direction){ switch(direction){ case 1: - qZrot = !qZrot; + qZrot = (qZrot+1)%3; break; case -1: qWireframe = (qWireframe+1)%4; @@ -264,8 +270,10 @@ function drawMenu() { for (var i=0; i{Bangle.setCompassPower(0);}); +Bangle.setCompassPower(1); drawMenu(); From 64ce7eeccf5fe99f441150b70ac69174a83fff62 Mon Sep 17 00:00:00 2001 From: "Marko.Kl.Berkenbusch@gmail.com" Date: Fri, 21 Aug 2020 22:52:54 -0400 Subject: [PATCH 2/8] Appease code checker --- apps/viewstl/viewstl.app.js | 2 +- apps/viewstl/viewstl.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/viewstl/viewstl.app.js b/apps/viewstl/viewstl.app.js index 0d2b6471c..0b2512176 100644 --- a/apps/viewstl/viewstl.app.js +++ b/apps/viewstl/viewstl.app.js @@ -214,7 +214,7 @@ function initNormals() { function readSTL(fn) { var fb = require("Storage").read(fn); - var nverts=0,i=0; while(i=fb.indexOf("vertex",i)+1) nverts++; + var nverts=0,i=0; while((i=fb.indexOf("vertex",i)+1)!=0) nverts++; points = new Float32Array(nverts); p_points = E.getAddressOf(points, true); faces = new Uint16Array(nverts); diff --git a/apps/viewstl/viewstl.min.js b/apps/viewstl/viewstl.min.js index f2e7d0685..77469042c 100644 --- a/apps/viewstl/viewstl.min.js +++ b/apps/viewstl/viewstl.min.js @@ -76,7 +76,7 @@ function initNormals() { function readSTL(fn) { var fb = require("Storage").read(fn); - var nverts=0,i=0; while(i=fb.indexOf("vertex",i)+1) nverts++; + var nverts=0,i=0; while((i=fb.indexOf("vertex",i)+1)!=0) nverts++; points = new Float32Array(nverts); p_points = E.getAddressOf(points, true); faces = new Uint16Array(nverts); From e7c3e983b2978b71b73cb6071e7e39a6db9132ec Mon Sep 17 00:00:00 2001 From: computermacgyver Date: Sun, 23 Aug 2020 23:49:08 +0100 Subject: [PATCH 3/8] First go --- apps/worldclock/ChangeLog | 1 + apps/worldclock/app.js | 98 +++++++++++++++++++++++++++++++++++++ apps/worldclock/custom.html | 76 ++++++++++++++++++++++++++++ 3 files changed, 175 insertions(+) create mode 100644 apps/worldclock/ChangeLog create mode 100644 apps/worldclock/app.js create mode 100644 apps/worldclock/custom.html diff --git a/apps/worldclock/ChangeLog b/apps/worldclock/ChangeLog new file mode 100644 index 000000000..1c7f88a87 --- /dev/null +++ b/apps/worldclock/ChangeLog @@ -0,0 +1 @@ +0.01 First try diff --git a/apps/worldclock/app.js b/apps/worldclock/app.js new file mode 100644 index 000000000..cdbc29cd8 --- /dev/null +++ b/apps/worldclock/app.js @@ -0,0 +1,98 @@ +/* jshint esversion: 6 */ +const timeFontSize = 6; +const dateFontSize = 3; +const gmtFontSize = 2; +const font = "6x8"; + +const xyCenter = g.getWidth() / 2; +const xcol1=10; +const xcol2=g.getWidth()-xcol1; +const yposTime = 75; +const yposDate = 130; +//const yposYear = 175; +//const yposGMT = 220; +const yposWorld=170; + + +var offsets = require("Storage").readJSON("worldclock.settings.json"); + +// Check settings for what type our clock should be +//var is12Hour = (require("Storage").readJSON("setting.json",1)||{})["12hour"]; +var secondInterval = undefined; + +function doublenum(x) { + return x<10? "0"+x : ""+x; +} + +function offset(dt,offset) { + return new Date(dt.getTime() + (offset*60*60*1000)); +} + +function drawSimpleClock() { + // get date + var d = new Date(); + var da = d.toString().split(" "); + + g.reset(); // default draw styles + // drawSting centered + g.setFontAlign(0, 0); + + // draw time + var time = da[4].substr(0, 5).split(":"); + var hours = time[0], minutes = time[1]; + + g.setFont(font, timeFontSize); + g.drawString(`${hours}:${minutes}`, xyCenter, yposTime, true); + + // draw Day, name of month, Date + var date = [da[0], da[1], da[2]].join(" "); + g.setFont(font, dateFontSize); + + g.drawString(date, xyCenter, yposDate, true); + + // draw year + //g.setFont(font, dateFontSize); + //g.drawString(d.getFullYear(), xyCenter, yposYear, true); + + // draw gmt + //console.log(d.getTimezoneOffset());//offset to GMT in minutes + var gmt = new Date(d.getTime()+(d.getTimezoneOffset()*60*1000)); + //gmt is now UTC+0 + + for (var i=0; i{ + if (secondInterval) clearInterval(secondInterval); + secondInterval = undefined; + if (on) { + secondInterval = setInterval(drawSimpleClock, 15E3); + drawSimpleClock(); // draw immediately + } +}); + +// draw now and every 15 sec until display goes off +drawSimpleClock(); +if (Bangle.isLCDOn()) { + secondInterval = setInterval(drawSimpleClock, 15E3); +} + +// Show launcher when middle button pressed +setWatch(Bangle.showLauncher, BTN2, {repeat:false,edge:"falling"}); + diff --git a/apps/worldclock/custom.html b/apps/worldclock/custom.html new file mode 100644 index 000000000..34d77c806 --- /dev/null +++ b/apps/worldclock/custom.html @@ -0,0 +1,76 @@ + + + + + + +

You can add up to 4 timezones. Please give a name and UTC offset in hours. + If you want less than 4, clear the checkbox to the left.

+ + + + + + + +
Enabled?NameUTC Offset
+ +

Click

+ + + + + + \ No newline at end of file From 05803858c8a3f0bd62fe2b37e0041b5847de31b6 Mon Sep 17 00:00:00 2001 From: computermacgyver Date: Sun, 23 Aug 2020 23:56:09 +0100 Subject: [PATCH 4/8] adding to apps.json --- apps.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/apps.json b/apps.json index d9f9b7e10..a8210a4ce 100644 --- a/apps.json +++ b/apps.json @@ -2171,5 +2171,20 @@ {"name":"cube.stl","url":"cube.stl"}, {"name":"icosa.stl","url":"icosa.stl"} ] - } + }, + { "id": "worldclock", + "name": "World Clock - 4 time zones", + "shortName":"World Clock", + "icon": "app.png", + "version":"0.01", + "description": "Current time zone plus up to four others", + "tags": "clock", + "type" : "clock", + "custom": "custom.html", + "storage": [ + {"name":"worldclock.app.js","url":"app.js"}, + {"name":"worldclock.settings.json"} + ] +} +] ] From a29faacadee0e06c3b9af146fbefb1a327c989cd Mon Sep 17 00:00:00 2001 From: computermacgyver Date: Sun, 23 Aug 2020 23:58:30 +0100 Subject: [PATCH 5/8] adding to apps.json - fix typo --- apps.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps.json b/apps.json index a8210a4ce..036c9a6db 100644 --- a/apps.json +++ b/apps.json @@ -2185,6 +2185,6 @@ {"name":"worldclock.app.js","url":"app.js"}, {"name":"worldclock.settings.json"} ] -} -] + } ] + From 42d0f020fc694932474674127b97fa01cb632a92 Mon Sep 17 00:00:00 2001 From: computermacgyver Date: Mon, 24 Aug 2020 00:34:53 +0100 Subject: [PATCH 6/8] Add icons --- apps/worldclock/app.png | Bin 0 -> 2867 bytes apps/worldclock/worldclock-icon.js | 1 + 2 files changed, 1 insertion(+) create mode 100755 apps/worldclock/app.png create mode 100644 apps/worldclock/worldclock-icon.js diff --git a/apps/worldclock/app.png b/apps/worldclock/app.png new file mode 100755 index 0000000000000000000000000000000000000000..506fa45b917be1f40fc2e691581ff199e8144f58 GIT binary patch literal 2867 zcmV-33(WM1P)Dr$W1mWa^_`k0JNLm4i2H*_fM*v3! zLEwGx1OW&FpahUD2*R!2a`Y+yk^+F|01O21A3+eBd+V?pUIzfr1Ly#dAqaxHFL;fe zNJu7;^z3u;UwyccOe7iD*TgeO&h1lD^ZuSC8Piu}uaFGr6SCg<^(GllvfqP{EFt+= zAL{C@e^-*p_Z0-mMI?P6g09}`7(_C$w?@yB9QBYi^%}bFWO7X0^=e2C1>htI!s&-C ztfvqJp$>qYU33i;a!VYj1DYPzSkO-kFq?G#|PI850w;MkEr=)bY3i@OO50 zj??|Nj*5y(`|`^#v$C_Zvm6~Ap90`!Z*M=)&CM+WCLXSCP|v&LY3hFj1qF#JD=Xvb z>+2O#sZ`P4-hSQM+FIDRZ{LK#z(D`3tgJn*uC7BI9UXnb!opk&3JOX!8ckmR{{5d( ztJNqgE2}OnEPQ{%h7JGLb6&rGJ@?yhzkRu@t1GgosHo)YufLXrhljg(d3jA$DwU(& ze*0~SNF)+eDisC%cA~z%{z_F<)u6z@K$ToBFKKOUEtAP);vqwZ$d@l)UXqfM z;!M&`5Cr8fZ)e)HX{+n&>u<_rvM!}kNkgbqDt2{s@tbeH$%u%E_3=IMEG%5MY}pI|4xXN#uK=(GfOp@0cXDxY@s&-RHdQn=HEFhQ-+sHXv5_R1 zo14q4SFftrL)6vPbyZhaD{^vjWK*V02_-q-@GXR`U%x)>%$YMEIXgRh*3{G}jS0@4 zJ=+o*8ag61HFddMF6ZvuyN>~|l1L;Detv%ThGfHs5BHipdGd=(mo9y4<;sCCYNlTCvlYCxx(Qn6&9hXS5 zrl#iN-o1ObtXZ>WrMtU(P*0prpFVx$wQJXY$qSvGovf^^Y^$oOYEDm2zjpKHO^sTu z=2u^RReAmTb#+g=&zd!B=1C+H4`W{>|3Fd#l24L+N`GV2s8R2=wY6zdQ&SfJu_*_JI^Qi_X0VzKy< z{QUfDB$=3)m;*oS=G6@xfcLnz<>eq4h{~H z-30M6NJg3pKnDwvNHqKC(W5s=vZbY^Ln@Vi?&jtuHr4pM@4nloP$*blUf$Hw(qb~x z%H?v^>eZ{CH?*5SfBwku@bFi4f4w3iB9^`Z3t-888FOpM0(w1f_0I$9FT3};iqshK4l}dM;6OxgU@t$G(ii(P602To3 z?iGYFJUl#n0s;bJ!otG-EEbDLe(}W@ugc|eZO5&zzkREH`i7oF$XVx}u_@KHR-~_d7bxFME1= zKA{g_(Y;u5a&k5pim9%yRs!g6&L%G}FUufchJ}UsA31X5a8y)Ow_Vl{adB}^78Mnp zRjai*Ppww-`0?Xs0rb;pw$%p^OVZ@bqQ|G7ewv^cbMD-^HeX*~?|TV|iHUi-t*wnD zdHVF}Y5=y27cX9dUyHluU|CX9a@n}sc6D_zAt51xlpdKmGL6Y?6L3 z>;WW~m}5&xNtvP1Xn648!Kz7dCl-s{#A2~qFU13Zl}IGgul%gHZQJ&b{QUeM zUwY}K0Fti*Kzw}szYGI-hUD<>*a89qp1N}7irUW3?x7WT%^^BEdc42Ce;`S>*4EYq z78Vu@TwPu7EVGbYYKFtMxVX3_K0babfctr(eFBn8h7TX^1MTk5U4^Z38mvr>aC`gq z?NdocIXOAmK2(+6fZ7$q)ym4s8ff7=1#ph!#NR|&51{MTZMqt1kBy?tjECP0)K;cnykFzk-!lkm_vK!HP?FidM|UC_ zOmabAk}dhIW+#$!NSgc>eh|_@B$ttVx=)Gk^zk?!@>VWLhEuzH=--E&LrK0ta%yjF z@B6HTZd~{PXa%re5QLk(w6_H?6~H3^F6lUWeO#e04tqEQm;&wg5urWzZ~;IQfE&7N zj?f-Y@Yb~x0Ne(UF9^bw2l4;F0T_d%4YVgx1_H2$Hd(eq`=-tt?yU3${s(KJ-urwb RzLEd{002ovPDHLkV1oI8cc%aV literal 0 HcmV?d00001 diff --git a/apps/worldclock/worldclock-icon.js b/apps/worldclock/worldclock-icon.js new file mode 100644 index 000000000..6e05d254c --- /dev/null +++ b/apps/worldclock/worldclock-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwgJC/ABEE+EA4EAj9E8HF//gn/gwP///wt/MgF//8gh/8gYLBwEP+EHAofghgFD4EOj//gEPA4ILBGgIxB/wFBgwFB/lsgCKBj/4oxHBvAFBJoV8gP4TQX+gJUBAAN/Aok+AoVgAoXogAfBjkA8AfBAoXAAoUYY4cAiCDEAooA/ABg")) From 1714b44d881efe70a45c0a7b9a2b1ae9c3652f6e Mon Sep 17 00:00:00 2001 From: computermacgyver Date: Mon, 24 Aug 2020 00:36:12 +0100 Subject: [PATCH 7/8] icon+typo --- apps.json | 3 ++- apps/worldclock/custom.html | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps.json b/apps.json index 036c9a6db..0a4386185 100644 --- a/apps.json +++ b/apps.json @@ -2183,7 +2183,8 @@ "custom": "custom.html", "storage": [ {"name":"worldclock.app.js","url":"app.js"}, - {"name":"worldclock.settings.json"} + {"name":"worldclock.settings.json"}, + {"name":"worldclock.img","url":"worldclock-icon.js","evaluate":true} ] } ] diff --git a/apps/worldclock/custom.html b/apps/worldclock/custom.html index 34d77c806..a997663fc 100644 --- a/apps/worldclock/custom.html +++ b/apps/worldclock/custom.html @@ -66,11 +66,11 @@ // send finished app (in addition to contents of app.json) sendCustomizedApp({ storage:[ - {name:"worldclock.settings.json", content:JSON.stringify(timezones)}, + {name:"worldclock.settings.json", content:JSON.stringify(app_offsets)}, ] }); }); - \ No newline at end of file + From 6cb3f92863d6f522958cb47ac0a99bfb48217cd6 Mon Sep 17 00:00:00 2001 From: computermacgyver Date: Mon, 24 Aug 2020 00:42:46 +0100 Subject: [PATCH 8/8] fix formatting that caused travis error --- apps/worldclock/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/worldclock/ChangeLog b/apps/worldclock/ChangeLog index 1c7f88a87..43ecbdf62 100644 --- a/apps/worldclock/ChangeLog +++ b/apps/worldclock/ChangeLog @@ -1 +1 @@ -0.01 First try +0.01: First try