From 867c8a9280dbfc858ddddc70c43c26b3467cd70c Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Mon, 30 May 2022 20:00:34 +0200 Subject: [PATCH 001/251] Create app.js --- apps/tinyVario/app.js | 77 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 apps/tinyVario/app.js diff --git a/apps/tinyVario/app.js b/apps/tinyVario/app.js new file mode 100644 index 000000000..f48afccc2 --- /dev/null +++ b/apps/tinyVario/app.js @@ -0,0 +1,77 @@ +Bangle.setBarometerPower(true, "tinyVario"); +Bangle.setGPSPower(true, "tinyVario"); + +require("Font8x16").add(Graphics); + +var intTime=10; +var altH = []; +var fAlt=0; +var roc; +var gs; +var lastPressure = Date.now(); +var flying=false; +var takeoffTime, flyingTime; + + +Bangle.on('pressure', function(e) { + if ((fAlt)==0) fAlt=e.altitude; + fAlt=fAlt+(e.altitude-fAlt)*0.1; +}); + +Bangle.on('GPS', function(fix) { + gs=fix.speed; +}); + +/*setWatch(function() { + +}, (process.env.HWVERSION==2) ? BTN1 : BTN2, {repeat:true});*/ + +setInterval(function () { + altH.push(fAlt); + if (altH.length>=intTime) altH.shift(); +}, 1000); + +setInterval(function() { + if ((!flying) && ((roc>1) || (roc<-1) || (gs>10))) { //take-off detected + takeoffTime=Date().getTime(); + flying=true; + flyingTime=0; + } + if (flying) { + flyingTime=Date().getTime()-takeoffTime; + ftString=(flyingTime / 3600000).toFixed(0)+":"+(flyingTime / 60000 % 60).toFixed(0).padStart(2,'0'); + } + + roc=(altH[altH.length-1]-altH[0])/intTime; + var timeStr = require("locale").time(Date(),1); + + g.reset(); + g.clear(); + g.setFont("8x16",4).setFontAlign(1,-1).drawString((fAlt).toFixed(0)+"m", g.getWidth(), 0); + //gs=100; + if (!isNaN(gs)) { + g.setFont("8x16",3).setFontAlign(1,-1).drawString(gs.toFixed(0), g.getWidth()-20, 14*7); + g.setFont("8x16",1).setFontAlign(-1,1).drawString("km", g.getWidth()-20, 14*8.5); + g.setFont("8x16",1).setFontAlign(-1,-1).drawString("h", g.getWidth()-20, 14*8.5); + } + g.setColor(0.5,0.5,0.5); + g.drawLine(0,14*4,g.getWidth(),14*4); + g.drawLine(0,14*7,g.getWidth(),14*7); + g.drawLine(0,14*10,g.getWidth(),14*10); + g.drawLine(g.getWidth()/2,14*10,g.getWidth()/2,g.getHeight()-1); + + g.setColor(1,1,1); + if (flying) { + g.setFont("8x16",2).setFontAlign(0,-1).drawString(ftString, g.getWidth()*0.75, 14*10+4); + } + g.setFont("8x16",2).setFontAlign(0,-1).drawString(timeStr, g.getWidth()/4, 14*10+4); + if (roc>0.1) g.setColor(0,1,0); + if (roc<-1) g.setColor(1,0,0); + + g.setFont("8x16",3).setFontAlign(1,-1).drawString(roc.toFixed(1), g.getWidth()-20, 58); + g.setFont("8x16",2).setFontAlign(-1,-1).drawString("m", g.getWidth()-20, 51); + g.setFont("8x16",2).setFontAlign(-1,-1).drawString("s", g.getWidth()-20, 71); + g.drawLine(g.getWidth()-20,77,g.getWidth()-8,77); + g.drawLine(g.getWidth()-20,14*8.5-1,g.getWidth()-8,14*8.5-1); + +}, 250); From 6a432f052f744753331372bb5ccf70698ab3c4d0 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Mon, 30 May 2022 20:04:16 +0200 Subject: [PATCH 002/251] Create metadata.json --- apps/tinyVario/metadata.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 apps/tinyVario/metadata.json diff --git a/apps/tinyVario/metadata.json b/apps/tinyVario/metadata.json new file mode 100644 index 000000000..749ca477f --- /dev/null +++ b/apps/tinyVario/metadata.json @@ -0,0 +1,13 @@ +{ "id": "tinyVario", + "name": "Tiny Vario", + "shortName" : "tinyVario", + "version":"0.01", + "icon": "app.png", + "description": "A very simple app for gliding / paragliding / hang gliding etc.", + "tags": "outdoors", + "supports" : ["BANGLEJS2"], + "storage": [ + {"name":"tinyvario.app.js","url":"app.js"}, + {"name":"tinyVario.img","url":"app-icon.js","evaluate":true} + ] +} From f1330afd48770be9319b6ae23118168c10af42ac Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Mon, 30 May 2022 20:15:31 +0200 Subject: [PATCH 003/251] Create app-icon.js --- apps/tinyVario/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/tinyVario/app-icon.js diff --git a/apps/tinyVario/app-icon.js b/apps/tinyVario/app-icon.js new file mode 100644 index 000000000..f54781894 --- /dev/null +++ b/apps/tinyVario/app-icon.js @@ -0,0 +1 @@ +atob("MDAB//////////////////////////////////////////////////w4P/////nD3/////v73/////v77/////v/7/////v/5////wP/9////n//8P///v//9n///v///3///v///3///v///3///v///3///gAAAP///////////////////////////////////+B//////88//////5+f/////7///////7z//////63/+H///+H/wz////P/n5////P/P9//////fP//////3f//////yf///8P/6////xn/4////n7/4////v///////vv//////7P//////7f//////9f//////+///////8f//////8//////////////") From e71242ffd3ff7a1fc9b099104903d5c2ece7b484 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Mon, 30 May 2022 20:22:09 +0200 Subject: [PATCH 004/251] Add files via upload --- apps/tinyVario/app.png | Bin 0 -> 341 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/tinyVario/app.png diff --git a/apps/tinyVario/app.png b/apps/tinyVario/app.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6c09bc454619416739a0453a6f0cd8884c71f1 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZA) z^mS!_#wsVoYuIo5r3)w|S>hT|;+&tGo0?a`;9QiNSdyBeP@Y+mq2TW68xY>eCk|9} z-qXb~#N+tW5J$el1{}qUPyMf7um5)8>?r~s3ClAd2ZgpKHGeEzD8^eKQP8)ZWx;bs zRjwcB#2B
  • xpeu^YxO;9q`3lwHkm?%$d{VqFS5H!NNGc~bM7|23O`NPL!fw4?6z zqaDGk6#t&+oZXf7Y2nqKy%Sn^RGeq&Oq_S+ Date: Mon, 30 May 2022 20:55:11 +0200 Subject: [PATCH 005/251] Update app-icon.js --- apps/tinyVario/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/tinyVario/app-icon.js b/apps/tinyVario/app-icon.js index f54781894..c94da4e62 100644 --- a/apps/tinyVario/app-icon.js +++ b/apps/tinyVario/app-icon.js @@ -1 +1 @@ -atob("MDAB//////////////////////////////////////////////////w4P/////nD3/////v73/////v77/////v/7/////v/5////wP/9////n//8P///v//9n///v///3///v///3///v///3///v///3///gAAAP///////////////////////////////////+B//////88//////5+f/////7///////7z//////63/+H///+H/wz////P/n5////P/P9//////fP//////3f//////yf///8P/6////xn/4////n7/4////v///////vv//////7P//////7f//////9f//////+///////8f//////8//////////////") +require("heatshrink").decompress(atob("mEw4P/AAMgFksD4/AAoUGnguDgkEAosQAocAAosYAoX8gEIAgMBwEAh4FCAQMJBAIFCgAFUO4Rraj4hBTwZwDgFgsAFDoAXEoYFEqUAg4fCj0AngfChgfEAoPAYomDD4kiAok2AYU8gEUAoXmgEcR4WBAogaEgKtBAAdMAolIAokoAojJDAAM4AokwRxIA==")) From 6d1077818b9a80ae8ae42fafc9c36f240ca6d134 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Mon, 30 May 2022 20:57:31 +0200 Subject: [PATCH 006/251] Update metadata.json --- apps/tinyVario/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/tinyVario/metadata.json b/apps/tinyVario/metadata.json index 749ca477f..be8618ec9 100644 --- a/apps/tinyVario/metadata.json +++ b/apps/tinyVario/metadata.json @@ -7,7 +7,7 @@ "tags": "outdoors", "supports" : ["BANGLEJS2"], "storage": [ - {"name":"tinyvario.app.js","url":"app.js"}, + {"name":"tinyVario.app.js","url":"app.js"}, {"name":"tinyVario.img","url":"app-icon.js","evaluate":true} ] } From b4e0467cf241eab278e448c93be97e1fe4dc9594 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 2 Jun 2022 09:48:54 +0200 Subject: [PATCH 007/251] Update app.js --- apps/tinyVario/app.js | 64 +++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/apps/tinyVario/app.js b/apps/tinyVario/app.js index f48afccc2..085556d6d 100644 --- a/apps/tinyVario/app.js +++ b/apps/tinyVario/app.js @@ -6,7 +6,7 @@ require("Font8x16").add(Graphics); var intTime=10; var altH = []; var fAlt=0; -var roc; +var roc,rocAvg; var gs; var lastPressure = Date.now(); var flying=false; @@ -24,7 +24,7 @@ Bangle.on('GPS', function(fix) { /*setWatch(function() { -}, (process.env.HWVERSION==2) ? BTN1 : BTN2, {repeat:true});*/ +}, BTN1);*/ setInterval(function () { altH.push(fAlt); @@ -32,7 +32,10 @@ setInterval(function () { }, 1000); setInterval(function() { - if ((!flying) && ((roc>1) || (roc<-1) || (gs>10))) { //take-off detected + //var y=0; + //gs=100; + //fAlt=7777; + if ((!flying) && ((rocAvg>1) || (rocAvg<-1) || (gs>10))) { //take-off detected takeoffTime=Date().getTime(); flying=true; flyingTime=0; @@ -42,36 +45,49 @@ setInterval(function() { ftString=(flyingTime / 3600000).toFixed(0)+":"+(flyingTime / 60000 % 60).toFixed(0).padStart(2,'0'); } - roc=(altH[altH.length-1]-altH[0])/intTime; + rocAvg=(altH[altH.length-1]-altH[0])/intTime; + roc=(altH[altH.length-1]-altH[altH.length-2]); var timeStr = require("locale").time(Date(),1); g.reset(); g.clear(); - g.setFont("8x16",4).setFontAlign(1,-1).drawString((fAlt).toFixed(0)+"m", g.getWidth(), 0); - //gs=100; - if (!isNaN(gs)) { - g.setFont("8x16",3).setFontAlign(1,-1).drawString(gs.toFixed(0), g.getWidth()-20, 14*7); - g.setFont("8x16",1).setFontAlign(-1,1).drawString("km", g.getWidth()-20, 14*8.5); - g.setFont("8x16",1).setFontAlign(-1,-1).drawString("h", g.getWidth()-20, 14*8.5); - } - g.setColor(0.5,0.5,0.5); - g.drawLine(0,14*4,g.getWidth(),14*4); - g.drawLine(0,14*7,g.getWidth(),14*7); - g.drawLine(0,14*10,g.getWidth(),14*10); - g.drawLine(g.getWidth()/2,14*10,g.getWidth()/2,g.getHeight()-1); - + //draw altitude + g.setFont("8x16",3).setFontAlign(1,-1).drawString((fAlt).toFixed(0)+"m", g.getWidth(), y); + //------------- + y+=16*3; + g.drawLine(24,y-2,g.getWidth(),y-2); + //draw rate of climb + if (roc>0.1) g.setColor(0,1,0); + if (roc<-1) g.setColor(1,0,0); + g.setFont("8x16",3).setFontAlign(1,-1).drawString(rocAvg.toFixed(1), g.getWidth()-20, y); g.setColor(1,1,1); + g.setFont("8x16",2).setFontAlign(-1,-1).drawString("m", g.getWidth()-20, y); + g.setFont("8x16",2).setFontAlign(-1,-1).drawString("s", g.getWidth()-20, y+20); + g.drawLine(g.getWidth()-20,y+26,g.getWidth()-8,y+26); + //------------- + y+=16*3; + g.drawLine(24,y-2,g.getWidth(),y-2); + //draw groundspeed + if (!isNaN(gs)) { + g.setFont("8x16",3).setFontAlign(1,-1).drawString(gs.toFixed(0), g.getWidth()-20, y); + g.setFont("8x16",1).setFontAlign(-1,-1).drawString("km", g.getWidth()-20, y+4); + g.setFont("8x16",1).setFontAlign(-1,-1).drawString("h", g.getWidth()-20, y+24); + g.drawLine(g.getWidth()-20,y+21,g.getWidth()-8,y+21); + } + //------------- + y+=16*3; + g.drawLine(0,y-2,g.getWidth(),y-2); + g.drawLine(24,0,24,y-2); + g.drawLine(g.getWidth()/2,y-2,g.getWidth()/2,g.getHeight()-1); + g.setColor(1,1,1); + //draw flight time if (flying) { g.setFont("8x16",2).setFontAlign(0,-1).drawString(ftString, g.getWidth()*0.75, 14*10+4); } + //draw time g.setFont("8x16",2).setFontAlign(0,-1).drawString(timeStr, g.getWidth()/4, 14*10+4); + //draw bar graph if (roc>0.1) g.setColor(0,1,0); if (roc<-1) g.setColor(1,0,0); - - g.setFont("8x16",3).setFontAlign(1,-1).drawString(roc.toFixed(1), g.getWidth()-20, 58); - g.setFont("8x16",2).setFontAlign(-1,-1).drawString("m", g.getWidth()-20, 51); - g.setFont("8x16",2).setFontAlign(-1,-1).drawString("s", g.getWidth()-20, 71); - g.drawLine(g.getWidth()-20,77,g.getWidth()-8,77); - g.drawLine(g.getWidth()-20,14*8.5-1,g.getWidth()-8,14*8.5-1); - + g.fillRect(0,(y-2)/2,23,Math.clip((y-2)/2-roc*20,0,y-2)); }, 250); From f857f3fa0b649a9d0ab77dac0bda20080cd8809a Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 2 Jun 2022 11:14:16 +0200 Subject: [PATCH 008/251] Update app.js --- apps/tinyVario/app.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/apps/tinyVario/app.js b/apps/tinyVario/app.js index 085556d6d..949e7c7ce 100644 --- a/apps/tinyVario/app.js +++ b/apps/tinyVario/app.js @@ -3,10 +3,10 @@ Bangle.setGPSPower(true, "tinyVario"); require("Font8x16").add(Graphics); -var intTime=10; +var intTime=10,pressureInterval=100; var altH = []; var fAlt=0; -var roc,rocAvg; +var roc=0,rocAvg=0; var gs; var lastPressure = Date.now(); var flying=false; @@ -28,11 +28,11 @@ Bangle.on('GPS', function(fix) { setInterval(function () { altH.push(fAlt); - if (altH.length>=intTime) altH.shift(); -}, 1000); + while (altH.length>intTime*1000/pressureInterval) altH.shift(); +}, pressureInterval); setInterval(function() { - //var y=0; + var y=0; //gs=100; //fAlt=7777; if ((!flying) && ((rocAvg>1) || (rocAvg<-1) || (gs>10))) { //take-off detected @@ -45,8 +45,11 @@ setInterval(function() { ftString=(flyingTime / 3600000).toFixed(0)+":"+(flyingTime / 60000 % 60).toFixed(0).padStart(2,'0'); } - rocAvg=(altH[altH.length-1]-altH[0])/intTime; - roc=(altH[altH.length-1]-altH[altH.length-2]); + if (altH.length==intTime*1000/pressureInterval) { + rocAvg=(altH[altH.length-1]-altH[0])/intTime; + roc=(altH[altH.length-1]-altH[altH.length-(1000/pressureInterval)]); + } + var timeStr = require("locale").time(Date(),1); g.reset(); From 4099564fc91faac553b60eb049bfc90cf85b7602 Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Fri, 3 Jun 2022 10:56:21 +0200 Subject: [PATCH 009/251] Create ChangeLog --- apps/tinyVario/ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/tinyVario/ChangeLog diff --git a/apps/tinyVario/ChangeLog b/apps/tinyVario/ChangeLog new file mode 100644 index 000000000..6c352f82b --- /dev/null +++ b/apps/tinyVario/ChangeLog @@ -0,0 +1 @@ +0.01: Initial Version From 7409acb3372068b283a63c57484c7062f96d0d6b Mon Sep 17 00:00:00 2001 From: xxDUxx <96152564+xxDUxx@users.noreply.github.com> Date: Thu, 9 Jun 2022 13:01:58 +0200 Subject: [PATCH 010/251] Update app.js --- apps/tinyVario/app.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/tinyVario/app.js b/apps/tinyVario/app.js index 949e7c7ce..b1604aa8c 100644 --- a/apps/tinyVario/app.js +++ b/apps/tinyVario/app.js @@ -5,7 +5,7 @@ require("Font8x16").add(Graphics); var intTime=10,pressureInterval=100; var altH = []; -var fAlt=0; +var fAlt=0, fAlt2=0; var roc=0,rocAvg=0; var gs; var lastPressure = Date.now(); @@ -16,6 +16,7 @@ var takeoffTime, flyingTime; Bangle.on('pressure', function(e) { if ((fAlt)==0) fAlt=e.altitude; fAlt=fAlt+(e.altitude-fAlt)*0.1; + fAlt2=fAlt2+(e.altitude-fAlt2)*0.09093; }); Bangle.on('GPS', function(fix) { @@ -47,7 +48,8 @@ setInterval(function() { if (altH.length==intTime*1000/pressureInterval) { rocAvg=(altH[altH.length-1]-altH[0])/intTime; - roc=(altH[altH.length-1]-altH[altH.length-(1000/pressureInterval)]); + //roc=(altH[altH.length-1]-altH[altH.length-(1000/pressureInterval)]); + roc=(fAlt-fAlt2)*(1000/pressureInterval); } var timeStr = require("locale").time(Date(),1); @@ -60,8 +62,8 @@ setInterval(function() { y+=16*3; g.drawLine(24,y-2,g.getWidth(),y-2); //draw rate of climb - if (roc>0.1) g.setColor(0,1,0); - if (roc<-1) g.setColor(1,0,0); + if (rocAvg>0.1) g.setColor(0,1,0); + if (rocAvg<-1) g.setColor(1,0,0); g.setFont("8x16",3).setFontAlign(1,-1).drawString(rocAvg.toFixed(1), g.getWidth()-20, y); g.setColor(1,1,1); g.setFont("8x16",2).setFontAlign(-1,-1).drawString("m", g.getWidth()-20, y); From cdecec225a4083e82edbd4e8263037d3656490a5 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 17:41:01 +0200 Subject: [PATCH 011/251] Create app.js --- agpsdata/app.js | 113 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 agpsdata/app.js diff --git a/agpsdata/app.js b/agpsdata/app.js new file mode 100644 index 000000000..72061a2b5 --- /dev/null +++ b/agpsdata/app.js @@ -0,0 +1,113 @@ +var _GB = global.GB; +var counter = 0; + +function GB(msg) { + console.log(msg); + if (msg.t == "http") { + display("Received", "(" + msg.resp.length + ") Touch to apply", () => { + display("Apply data..", ""); + setTimeout(() => { + if (setAGPS(msg.resp)) { + display("Success", "Touch for restart", httpTest); + } + else { + display("Error", "Touch for restart", httpTest); + } + }, 1); + }); + } + if (_GB) { + _GB(msg); + } +} + +function setAGPS(data) { + var js = jsFromBase64(data); + console.log(js); + try { + eval(js); + return true; + } + catch(e) { + console.log("Error:", e); + } + return false; +} + +function jsFromBase64(b64) { + var bin = atob(b64); + var chunkSize = 128; + var js = "Bangle.setGPSPower(1);\n"; // turn GPS on + var gnss_select="1"; + js += `Serial1.println("${CASIC_CHECKSUM("$PCAS04,"+gnss_select)}")\n`; // set GNSS mode + // What about: + // NAV-TIMEUTC (0x01 0x10) + // NAV-PV (0x01 0x03) + // or AGPS.zip uses AID-INI (0x0B 0x01) + + for (var i=0;i { + display("Request...", "Touch for restart", httpTest); + Bluetooth.println(JSON.stringify({t:"info", msg:"HTTP Request"})); + Bluetooth.println(JSON.stringify({t:"http", url:"https://www.espruino.com/agps/casic.base64"})); + setTimeout(() => { + //GB({t:"http", resp:testData}); + }, 1); + }); +} + +var nextStep = null; + +Bangle.on("touch", () => { + if (nextStep) { + nextStep(); + } +}); + +httpTest(); + +// Show launcher when middle button pressed +// Load widgets +Bangle.loadWidgets(); +Bangle.drawWidgets(); + + +require("Storage").write("httptest.info",{ + "id":"httptest", + "name":"Http Test", + "src":"httptest.js", + "icon":"wristlight.img" +}); + +var testData = "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"; From e833352e3ba7519d02c22e514c8f29cc85fbd1d0 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 18:08:34 +0200 Subject: [PATCH 012/251] Create metadata.json --- agpsdata/metadata.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 agpsdata/metadata.json diff --git a/agpsdata/metadata.json b/agpsdata/metadata.json new file mode 100644 index 000000000..a83bf5cf0 --- /dev/null +++ b/agpsdata/metadata.json @@ -0,0 +1,16 @@ +{ "id": "agpsdata", + "name": "A-GPS Data", + "shortName":"AGPS Data", + "icon": "agpsdata.png", + "version":"0.01", + "description": "Download assisted GPS data directly to watch", + "tags": "assisted,gps,agps,http", + "allow_emulator":true, + "supports": ["BANGLEJS2"], + "readme":"README.md", + "screenshots" : [ { "url":"screenshot.png" }, { "url":"screenshot2.png" } ], + "storage": [ + {"name":"agpsdata.app.js","url":"app.js"}, + {"name":"agps.img","url":"agps-icon.js","evaluate":true} + ] +} From a0fbf228387f73ae8e48aa9de6587b9f75966bb1 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 18:09:09 +0200 Subject: [PATCH 013/251] Create ChangeLog --- agpsdata/ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 agpsdata/ChangeLog diff --git a/agpsdata/ChangeLog b/agpsdata/ChangeLog new file mode 100644 index 000000000..c17eac852 --- /dev/null +++ b/agpsdata/ChangeLog @@ -0,0 +1 @@ +0.01: First, proof of concept From 07d8c35979f61bb8f7bf0a1a74b554bba24387f3 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 18:14:13 +0200 Subject: [PATCH 014/251] Create README.md --- agpsdata/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 agpsdata/README.md diff --git a/agpsdata/README.md b/agpsdata/README.md new file mode 100644 index 000000000..b9cb3c013 --- /dev/null +++ b/agpsdata/README.md @@ -0,0 +1,15 @@ +# A-GPS Data + +Load assisted GPS data directly to the watch using the new http requests on Android GadgetBridge. + +Make sure: +* your GadgetBridge version supports http requests +* turn on internet access in GadgetBridge settings + +Currently proof of concept on Bangle2 only. Will eventually add a widget for automatic download. + +![](screenshot.png) +![](screenshot2.png) + +## Creator +[@pidajo](https://github.com/pidajo) From 2028e0af2ba49d4c597fa747a76b8f7a448d2a40 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 18:21:35 +0200 Subject: [PATCH 015/251] Update README.md --- agpsdata/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/agpsdata/README.md b/agpsdata/README.md index b9cb3c013..93cc94259 100644 --- a/agpsdata/README.md +++ b/agpsdata/README.md @@ -10,6 +10,9 @@ Currently proof of concept on Bangle2 only. Will eventually add a widget for aut ![](screenshot.png) ![](screenshot2.png) +![](screenshot3.png) +![](screenshot4.png) +![](screenshot5.png) ## Creator [@pidajo](https://github.com/pidajo) From 9be18222733b1e8e4ff054bcc3e76dde10c5ef60 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 18:22:35 +0200 Subject: [PATCH 016/251] Add files via upload --- agpsdata/screenshot.png | Bin 0 -> 717 bytes agpsdata/screenshot2.png | Bin 0 -> 613 bytes agpsdata/screenshot3.png | Bin 0 -> 695 bytes agpsdata/screenshot4.png | Bin 0 -> 533 bytes agpsdata/screenshot5.png | Bin 0 -> 578 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 agpsdata/screenshot.png create mode 100644 agpsdata/screenshot2.png create mode 100644 agpsdata/screenshot3.png create mode 100644 agpsdata/screenshot4.png create mode 100644 agpsdata/screenshot5.png diff --git a/agpsdata/screenshot.png b/agpsdata/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..05cb79ffd1bb15f87880ea043127400f3140c148 GIT binary patch literal 717 zcmeAS@N?(olHy`uVBq!ia0vp^8$g(a8A!&?{Fw`+7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw0_p$%{{u0@e+K_~-Yh^qXMsm#F#`kNVGw3Kp1&f6fq}`()5S3) zQ)_iUTEXXlb+jGro1 z9KNHYZPA!2b>s7l>(}NpvEDPfff9Z&Lw_Robfqw zL&H}7X@UiEFWP++-~QP5|AXR&9}=%qeSVw8G^*|};?YxkeZMD>dx8y{{<9Lt6e~@S6eN1G-w*!|L%kOd|tUGw8 z!FH0Q$mbcem^c$WKL@FW%s%p_sdbKyZGqp%N8;O;USWQpaQQ$;yG>IigUoc+g)-V* zyO_>hZ$I!#vySbY>Zw`xjZf-dNswdsopR%rw%p?vZ|t-qiWxJ{EZ4d_ODL2-z9+=^ zdTOy@|12iYt3C@QUWq=+$?lSO{5@%#UCgd`tA6JgpH;cGiqlcRWJ%i96Z~nn)wf(+ zw7&VP)Q*>r7F+jEsTZ!;TN%A=b&2qE?tMp=<)?c;v6vy>u>JUi(+hrBT>7W$YdZP6 z6w~?(U%cjB{&wA$GiLTNCqss3B5R)?Omber<~?&m_yIfJXc6ukvsO;OJ7>M&z1&C7 w6XwgUI;i^ljoht+HV=$ok%EYw{>~TDpK7zu1hf@j1ST~GPgg&ebxsLQ0DJ5}e*gdg literal 0 HcmV?d00001 diff --git a/agpsdata/screenshot2.png b/agpsdata/screenshot2.png new file mode 100644 index 0000000000000000000000000000000000000000..7cdba148729aae274a4822b496c34eceee02ad1f GIT binary patch literal 613 zcmeAS@N?(olHy`uVBq!ia0vp^8$g(a8A!&?{Fw`+7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw0_p$%{{u0@e+K_~-Yh^qXMsm#F#`kNVGw3Kp1&dmXwV~17srr{ zdvB-nPHI-*ahp7kA@4y&>)!u&w@Do8U&On5%iOQk#$m2CM+F34`u*Syvf~%_Pd{qS z`q{?o&x~_j^;}#ZZ)$8m>R7$$WbVggsVk4t@5jnNR(&WZp5hu@<0`j5+(t*_^8!XA zox5$k6TI6>c0Xv6c;5juV?$@%mDQX;cY#3O(NB&~f4$$-x%=#V@!x_;(R=rI?lc#R zR}QoP9k6LiS5v5psm|ZnuB}$5dn3=>+Pl$h`3zIrKT&Ix)+UOD+wI&dvRS_+C`0h~ zoq)pD`BQH!W!qqC|M`TsT&XG7p~lyO!Y`S(AC;2sJ#h4qOmwoGxM!ixvOVUVCv}!h zk#j3FT{nBKdiV-;?McDe*}Im$xwJpU*W>h)pw8}(OKYdHaRh#pOFsMgOL%VKJV7bv z3EP}!ozP12wb1?Y`ld3wa#*G6y~f}7?+E;_Hr$~+dn)7ZuLs*cb-fq=UHs^*>fY@A z2jdm_E`KTBbk19S=B4oEbJV_WsMOPY-*I@hcE|MEs{OlvT@jDgxOS`kk-}8pD82Km zU4QP})4h6I$x90n*`#SJZXVSOE8Th{^if5Mcy_tY#nX=}W@Qzw5&gdY+QwZ$LWWn9 rqPkOePCa_(cPa-YIAP=mzK%LZ*@Mv=melG9f&@KX{an^LB{Ts5+w=*P literal 0 HcmV?d00001 diff --git a/agpsdata/screenshot3.png b/agpsdata/screenshot3.png new file mode 100644 index 0000000000000000000000000000000000000000..be152ba28a249248125a0bc7ae3564f740faf46e GIT binary patch literal 695 zcmV;o0!aOdP)Px#1ZP1_K>z@;j|==^1poj53{Xr|MF0Q*|Ns90|Nj9008gGv1ONa432;bRa{vGi z!vFvd!vV){sAK>D0yIfPK~!ko?UxC1!ypVrQBD9i$oK@E>HY6kkdOs-p(0p4$S7l)K4dKJEZ3syd9e=)>9(nB~!>p`%l2Wd33p$3<&$H1f= zH38L-PU%p3(RwH=G^6J`)KG!z)bi&3S16HN5M@=1uJQ`&h>8f z^a5;i+AQgG&MVc4lFkbj*|Q6SO1B2{!Q6UzhkzjHEwonRjUTn$t0LNbh%MIy*{M@DW$q8_NX!$44BXk6_EBG&N)9fAV$`OcH5()K@ zz3-+yTlPHi#lz~pz&>V2$QESako}V*q2S`(CWVC$o(ju%E%SkrfSiDRO7T!}}Jun(N^zIP8N@u5KmRK@bE%5ClOG1VIo4K@bE% d5cG#~?gw(2W0)8yo_hcQ002ovPDHLkV1o0#G}-_F literal 0 HcmV?d00001 diff --git a/agpsdata/screenshot4.png b/agpsdata/screenshot4.png new file mode 100644 index 0000000000000000000000000000000000000000..305a166d0866fb6f7554c2249acd49cf1bd6005e GIT binary patch literal 533 zcmeAS@N?(olHy`uVBq!ia0vp^8$g(a8A!&?{Fw`+7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw0_p$%{{u0@e+K_~-Yh^qXMsm#F#`kNVGw3Kp1&dmXwW227srr{ zdvB*F<{ehxaVzvsxUX=EQ|;})@@Od^hT|C*o0fb0y|bNaE%nFoc1(_jq;VN zDx~{`-+y-T*kzu3xTGd)>nw*)e8E2-&zFxb)Ouu-JpbgXV8im$Z=X%{&E7UOTuW-< zq@CSI^R{u8ClwxzQ3^7$^w#Wt+cY~fWz(!K*`%=P`?TygXnvHt+VO5e@aKr~V^N2V zeiuBIEsB4n=M`FG^G$W~#)vn6Jd-BvJ2L&~r`0o__RVmAlp^(c*NodY=SBQeS#~Sx zU7>aS_2rMlW_!qNA>lcBN7dF< zFMqbNEW~Z{#y0!;0YFt5U(SX{K`w^bri$?O!WP-10?S0>gTe~ HDWM4f#C71} literal 0 HcmV?d00001 diff --git a/agpsdata/screenshot5.png b/agpsdata/screenshot5.png new file mode 100644 index 0000000000000000000000000000000000000000..6468a18725fb1aa2dcc4fa43debd4f828b781f19 GIT binary patch literal 578 zcmeAS@N?(olHy`uVBq!ia0vp^8$g(a8A!&?{Fw`+7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw0_p$%{{u0@e+K_~-Yh^qXMsm#F#`kNVGw3Kp1&dmXwZI77srr{ zdvB-n<{ehxar5<0$P;+Vwfp~FF{Wqg4jwG?)V@{+T|IKaJZtubOXi8%H8tVF`I{g4 zCEVY7WPWbgpUD$D(>LD{vwr(z((Om*mu-2pxa@UtjoF=a$8eLQ+P{9}AI(~MW2#w4 z)b5qJ6I7#j$wo|g+*h$n`-WjCearr9hDrDlw=T`Mm-z2=th4c>BUAkSpE=vyoZu~fDr@-blci2xm z%sI$ES@3AlWsV)()9x*24@p|IW{ugB10HGf^RH$#`WD6>34Qea+43Z>y_Pz08s_|6 z&!1mf+VJ@3wX-g%yIWIF#XtUNtY+K)bkSb<+G6J;Pxp@+r}Li%e09E-a#;4G;TgZ0eaAP? zJsmxJZ%jnm{jRxJ_WwEc_xsd@!33-rgI0M}p+Ej+Ti2uCJSPBjfKmCU9uMi5ZPA#7mRIGQXJ3;{XYIy85}S Ib4q9e06g3R=Kufz literal 0 HcmV?d00001 From f29fa6d9fa670d2b59389dc431404f32be358f57 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 18:23:39 +0200 Subject: [PATCH 017/251] Update metadata.json --- agpsdata/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agpsdata/metadata.json b/agpsdata/metadata.json index a83bf5cf0..a3598c044 100644 --- a/agpsdata/metadata.json +++ b/agpsdata/metadata.json @@ -8,7 +8,7 @@ "allow_emulator":true, "supports": ["BANGLEJS2"], "readme":"README.md", - "screenshots" : [ { "url":"screenshot.png" }, { "url":"screenshot2.png" } ], + "screenshots" : [ { "url":"screenshot.png" }, { "url":"screenshot2.png" }, { "url":"screenshot3.png" }, { "url":"screenshot4.png" }, { "url":"screenshot5.png" } ], "storage": [ {"name":"agpsdata.app.js","url":"app.js"}, {"name":"agps.img","url":"agps-icon.js","evaluate":true} From 595c77569d0899138b41b5a4d0a86fc2fb4e7cab Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 18:40:39 +0200 Subject: [PATCH 018/251] Create agps-icon.js --- agpsdata/agps-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 agpsdata/agps-icon.js diff --git a/agpsdata/agps-icon.js b/agpsdata/agps-icon.js new file mode 100644 index 000000000..1677a2177 --- /dev/null +++ b/agpsdata/agps-icon.js @@ -0,0 +1 @@ +atob("MDCEAAAAAAAAAAAAAAAAiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAACIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAACIiIiIAAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAIiIOIiIiAAAAAAAAAAAAAAAAAAAAAAAAIiDOIiIiAAAAAAAAAAAAAAAAAAAAAAAAIiDOIiIiIAAAAAAAAAAAAAAAAAAAAAACIiPOIiIiIAAAAAAAAAAAAAAAAAAAAAAiIj/OIiIiIgAAAAAAAAAAAAAAAAAAAAAiI//OIiIiIgAAAAAAAAAAAAAAAAAAAAAiI//OIiIiIiAAAAAAAAAAAAAAAAAAAAAiD//OIiIiIiAAAAAAAAAAAAAAAAAAAAIiP//OIiIiIiAAAAAAAAAAAAAAAAAAAAIg///OIiIiIiIAAAAAAAAAAAAAAAAAACIj///OIiIiIiIAAAAAAAAAAAAAAAAAACIP///OIiIiIiIgAAAAAAAAAAAAAAAAACI////OIiIiIiIgAAAAAAAAAAAAAAAAAiD////OIiIiIiIiAAAAAAAAAAAAAAAAAiP////OIiIiIiIiAAAAAAAAAAAAAAAAIiP////OIiIiIiIiIAAAAAAAAAAAAAAAIj/////OIiIiIiIiIAAAAAAAAAAAAAACIj/////OIiIiIiIiIgAAAAAAAAAAAAACI//////OIiIiIiIiIgAAAAAAAAAAAAAiI//////OIiIiIiIiIgAAAAAAAAAAAAAiIiIiIiIgzMzMzMziIiAAAAAAAAAAAAAiIiIiIiIj///////+IiAAAAAAAAAAAAIiIiIiIiIj////////4iIAAAAAAAAAAAIiIiIiIiIgzMzMzMzM4iIAAAAAAAAAACIP///////OIiIiIiIiIiIgAAAAAAAAACI////////OIiIiIiIiIiIgAAAAAAAAAiI////////OIiIiIiIiIiIiAAAAAAAAAiP////////OIiIiIiIiIiIiAAAAAAAAIiP////////OIiIiIiIiIiIiIAAAAAAAIj/////////OIiIiIiIiIiIiIAAAAAACIj////////ziIiIiIiIiIiIiIgAAAAACIP///////+IiIiIiIiIiIiIiIgAAAAACI//////84gYiIiIiIiIiIiIiIgAAAAAiD////84iIiAAAiIiIiIiIiIiIiAAAAAiP///ziIiIAAAAAIiIiIiIiIiIiAAAAIg/8ziIiIAAAAAAAAAIiIiIiIiIiIAAAIj/iIiIAAAAAAAAAAAAAIiIiIiIiIAACIiIiBgAAAAAAAAAAAAAAACIiIiIiIgACIiIgAAAAAAAAAAAAAAAAAAACIiIiIgACIgAAAAAAAAAAAAAAAAAAAAAAAiIiIgA==") From 48ce375cd2ed2318630c4fba5e6b7f9e53fd6d44 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 18:40:56 +0200 Subject: [PATCH 019/251] Add files via upload --- agpsdata/agps.png | Bin 0 -> 1633 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 agpsdata/agps.png diff --git a/agpsdata/agps.png b/agpsdata/agps.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f4de4cb5790ca8f6a7fd03a443c309a498e9ae GIT binary patch literal 1633 zcmV-n2A=teP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T2;5FP7PDOQjrJpq5KY0XaMx!5BHTT*?u}LCh~`g z`Ui=|D<*1)8jVLK!GI7T8nm!m4(++!cDvo}&dl@oX5Lbk?lrTo_VdTv-}_Cso$v4a zX5Me60t^K{G64wr5(MEcZBEEVjO$>B;Me9H5!okiw%j~AfL0%1r9Mew zB|FBIp>Tj!dWIe*L37+)7zzRN*=H&;9Ww=A0d$F|@*FlB3_Zqq8S!>t8;AuZEFO%0 zjO#MuCqS#d`ZSxtno1Vjj;d_r=>ks&wt^^*rh(ID@Fqw0fF$4VWOW_QJdXTK!1yVH!%Y z7WIJ&n?uVRMUm&_vyAd_U==t#OK9-cLTlKa?bewNOMx3l)62-bfNS_4Wta!+D^%IDeF*urX!JL3-_hYzxBuBIrw%=b)mq7lg z>Jw&MFfPDHDsUHig@)Vi?8(3S2}E%cj)q+@Ewl3h7Wn#dtF6ZmLGzEos=;bj5<&YcB$MJ>xB2#S2{sJe|FPZ}3I7?*V?-0O=W;W4z9d-zNS)7*K z1ia?o1;rJI*(_(8p33pz207mj@WRPkM5sy&?$GySdm)^C3DM2N@M1mLaf!%earZu#)wk%~Q(-i|ac`eqr@2fxMbMbOl#8$?RAZ<;* zLo~Dj#?M)ZvlDs}ttaYQ5JY-Q%$KB%Em^>!j$Pm^K1{pK8_$%$?GNnq#C^Y9?>czS zD)m}R2fiC_@4`**Q;^D=aP|rQfxq+vx1d*!uHpIEBFtpHj&W2afZtt|XfKil>^^f2 z#?PL))7u<6vfL{Ly7j)KqA(QN^ZEHAzglYVl;~qCqciXWxW~PZzwmqfh1Xa%J4s^X z`#{9T$rv|X7!a`g^cYapE5)9XMUC4gLvs&6{WlRg5OWk*f__ju_&0A{h(bK_2e`){ z$7=tJ-}=$eiKikVMpZUoA(Ga2T8MfHm*W!Z!hnFSUwjDFE7n^=*NM|=A>Fpo`UT$I zqQcMbd Date: Thu, 16 Jun 2022 18:50:55 +0200 Subject: [PATCH 020/251] Update metadata.json --- agpsdata/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agpsdata/metadata.json b/agpsdata/metadata.json index a3598c044..4a2c8ea3c 100644 --- a/agpsdata/metadata.json +++ b/agpsdata/metadata.json @@ -1,7 +1,7 @@ { "id": "agpsdata", "name": "A-GPS Data", "shortName":"AGPS Data", - "icon": "agpsdata.png", + "icon": "agps.png", "version":"0.01", "description": "Download assisted GPS data directly to watch", "tags": "assisted,gps,agps,http", From ed05888aa270a73710cd2030bd6ce9f4835a896a Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 18:56:05 +0200 Subject: [PATCH 021/251] Update metadata.json --- agpsdata/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agpsdata/metadata.json b/agpsdata/metadata.json index 4a2c8ea3c..d9d488962 100644 --- a/agpsdata/metadata.json +++ b/agpsdata/metadata.json @@ -1,7 +1,7 @@ { "id": "agpsdata", "name": "A-GPS Data", "shortName":"AGPS Data", - "icon": "agps.png", + "icon": "agps1.png", "version":"0.01", "description": "Download assisted GPS data directly to watch", "tags": "assisted,gps,agps,http", From 4660e179601990e479b532c7751ff889069cb991 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 18:57:41 +0200 Subject: [PATCH 022/251] Update metadata.json --- agpsdata/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agpsdata/metadata.json b/agpsdata/metadata.json index d9d488962..4a2c8ea3c 100644 --- a/agpsdata/metadata.json +++ b/agpsdata/metadata.json @@ -1,7 +1,7 @@ { "id": "agpsdata", "name": "A-GPS Data", "shortName":"AGPS Data", - "icon": "agps1.png", + "icon": "agps.png", "version":"0.01", "description": "Download assisted GPS data directly to watch", "tags": "assisted,gps,agps,http", From ba51d1d667812a021dbc35989d7297a286ca0ed9 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:20:49 +0200 Subject: [PATCH 023/251] Rename agpsdata/ChangeLog to apps/agpsdata/ChangeLog --- {agpsdata => apps/agpsdata}/ChangeLog | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {agpsdata => apps/agpsdata}/ChangeLog (100%) diff --git a/agpsdata/ChangeLog b/apps/agpsdata/ChangeLog similarity index 100% rename from agpsdata/ChangeLog rename to apps/agpsdata/ChangeLog From 8f73d7b3e690527bd130f6813260db5aba25927e Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:21:33 +0200 Subject: [PATCH 024/251] Rename agpsdata/README.md to apps/agpsdata/README.md --- {agpsdata => apps/agpsdata}/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {agpsdata => apps/agpsdata}/README.md (100%) diff --git a/agpsdata/README.md b/apps/agpsdata/README.md similarity index 100% rename from agpsdata/README.md rename to apps/agpsdata/README.md From 29e589e992cf6f1e4f26d18728a923477deb6189 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:22:41 +0200 Subject: [PATCH 025/251] Rename agpsdata/agps-icon.js to apps/agpsdata/agps-icon.js --- {agpsdata => apps/agpsdata}/agps-icon.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {agpsdata => apps/agpsdata}/agps-icon.js (100%) diff --git a/agpsdata/agps-icon.js b/apps/agpsdata/agps-icon.js similarity index 100% rename from agpsdata/agps-icon.js rename to apps/agpsdata/agps-icon.js From 55ae2bc75b394b96c9ed13cb7c4edbfd3ac175d8 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:23:17 +0200 Subject: [PATCH 026/251] Rename agpsdata/app.js to apps/agpsdata/app.js --- {agpsdata => apps/agpsdata}/app.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {agpsdata => apps/agpsdata}/app.js (100%) diff --git a/agpsdata/app.js b/apps/agpsdata/app.js similarity index 100% rename from agpsdata/app.js rename to apps/agpsdata/app.js From be15e73536d3d333c199927c1460e0d9ccc0e647 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:23:45 +0200 Subject: [PATCH 027/251] Rename agpsdata/metadata.json to apps/agpsdata/metadata.json --- {agpsdata => apps/agpsdata}/metadata.json | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {agpsdata => apps/agpsdata}/metadata.json (100%) diff --git a/agpsdata/metadata.json b/apps/agpsdata/metadata.json similarity index 100% rename from agpsdata/metadata.json rename to apps/agpsdata/metadata.json From b1351202f07126c0148538c44ed244b83484dd09 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:24:39 +0200 Subject: [PATCH 028/251] Delete agpsdata directory --- agpsdata/agps.png | Bin 1633 -> 0 bytes agpsdata/screenshot.png | Bin 717 -> 0 bytes agpsdata/screenshot2.png | Bin 613 -> 0 bytes agpsdata/screenshot3.png | Bin 695 -> 0 bytes agpsdata/screenshot4.png | Bin 533 -> 0 bytes agpsdata/screenshot5.png | Bin 578 -> 0 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 agpsdata/agps.png delete mode 100644 agpsdata/screenshot.png delete mode 100644 agpsdata/screenshot2.png delete mode 100644 agpsdata/screenshot3.png delete mode 100644 agpsdata/screenshot4.png delete mode 100644 agpsdata/screenshot5.png diff --git a/agpsdata/agps.png b/agpsdata/agps.png deleted file mode 100644 index a0f4de4cb5790ca8f6a7fd03a443c309a498e9ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1633 zcmV-n2A=teP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T2;5FP7PDOQjrJpq5KY0XaMx!5BHTT*?u}LCh~`g z`Ui=|D<*1)8jVLK!GI7T8nm!m4(++!cDvo}&dl@oX5Lbk?lrTo_VdTv-}_Cso$v4a zX5Me60t^K{G64wr5(MEcZBEEVjO$>B;Me9H5!okiw%j~AfL0%1r9Mew zB|FBIp>Tj!dWIe*L37+)7zzRN*=H&;9Ww=A0d$F|@*FlB3_Zqq8S!>t8;AuZEFO%0 zjO#MuCqS#d`ZSxtno1Vjj;d_r=>ks&wt^^*rh(ID@Fqw0fF$4VWOW_QJdXTK!1yVH!%Y z7WIJ&n?uVRMUm&_vyAd_U==t#OK9-cLTlKa?bewNOMx3l)62-bfNS_4Wta!+D^%IDeF*urX!JL3-_hYzxBuBIrw%=b)mq7lg z>Jw&MFfPDHDsUHig@)Vi?8(3S2}E%cj)q+@Ewl3h7Wn#dtF6ZmLGzEos=;bj5<&YcB$MJ>xB2#S2{sJe|FPZ}3I7?*V?-0O=W;W4z9d-zNS)7*K z1ia?o1;rJI*(_(8p33pz207mj@WRPkM5sy&?$GySdm)^C3DM2N@M1mLaf!%earZu#)wk%~Q(-i|ac`eqr@2fxMbMbOl#8$?RAZ<;* zLo~Dj#?M)ZvlDs}ttaYQ5JY-Q%$KB%Em^>!j$Pm^K1{pK8_$%$?GNnq#C^Y9?>czS zD)m}R2fiC_@4`**Q;^D=aP|rQfxq+vx1d*!uHpIEBFtpHj&W2afZtt|XfKil>^^f2 z#?PL))7u<6vfL{Ly7j)KqA(QN^ZEHAzglYVl;~qCqciXWxW~PZzwmqfh1Xa%J4s^X z`#{9T$rv|X7!a`g^cYapE5)9XMUC4gLvs&6{WlRg5OWk*f__ju_&0A{h(bK_2e`){ z$7=tJ-}=$eiKikVMpZUoA(Ga2T8MfHm*W!Z!hnFSUwjDFE7n^=*NM|=A>Fpo`UT$I zqQcMbdk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw0_p$%{{u0@e+K_~-Yh^qXMsm#F#`kNVGw3Kp1&f6fq}`()5S3) zQ)_iUTEXXlb+jGro1 z9KNHYZPA!2b>s7l>(}NpvEDPfff9Z&Lw_Robfqw zL&H}7X@UiEFWP++-~QP5|AXR&9}=%qeSVw8G^*|};?YxkeZMD>dx8y{{<9Lt6e~@S6eN1G-w*!|L%kOd|tUGw8 z!FH0Q$mbcem^c$WKL@FW%s%p_sdbKyZGqp%N8;O;USWQpaQQ$;yG>IigUoc+g)-V* zyO_>hZ$I!#vySbY>Zw`xjZf-dNswdsopR%rw%p?vZ|t-qiWxJ{EZ4d_ODL2-z9+=^ zdTOy@|12iYt3C@QUWq=+$?lSO{5@%#UCgd`tA6JgpH;cGiqlcRWJ%i96Z~nn)wf(+ zw7&VP)Q*>r7F+jEsTZ!;TN%A=b&2qE?tMp=<)?c;v6vy>u>JUi(+hrBT>7W$YdZP6 z6w~?(U%cjB{&wA$GiLTNCqss3B5R)?Omber<~?&m_yIfJXc6ukvsO;OJ7>M&z1&C7 w6XwgUI;i^ljoht+HV=$ok%EYw{>~TDpK7zu1hf@j1ST~GPgg&ebxsLQ0DJ5}e*gdg diff --git a/agpsdata/screenshot2.png b/agpsdata/screenshot2.png deleted file mode 100644 index 7cdba148729aae274a4822b496c34eceee02ad1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmeAS@N?(olHy`uVBq!ia0vp^8$g(a8A!&?{Fw`+7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw0_p$%{{u0@e+K_~-Yh^qXMsm#F#`kNVGw3Kp1&dmXwV~17srr{ zdvB-nPHI-*ahp7kA@4y&>)!u&w@Do8U&On5%iOQk#$m2CM+F34`u*Syvf~%_Pd{qS z`q{?o&x~_j^;}#ZZ)$8m>R7$$WbVggsVk4t@5jnNR(&WZp5hu@<0`j5+(t*_^8!XA zox5$k6TI6>c0Xv6c;5juV?$@%mDQX;cY#3O(NB&~f4$$-x%=#V@!x_;(R=rI?lc#R zR}QoP9k6LiS5v5psm|ZnuB}$5dn3=>+Pl$h`3zIrKT&Ix)+UOD+wI&dvRS_+C`0h~ zoq)pD`BQH!W!qqC|M`TsT&XG7p~lyO!Y`S(AC;2sJ#h4qOmwoGxM!ixvOVUVCv}!h zk#j3FT{nBKdiV-;?McDe*}Im$xwJpU*W>h)pw8}(OKYdHaRh#pOFsMgOL%VKJV7bv z3EP}!ozP12wb1?Y`ld3wa#*G6y~f}7?+E;_Hr$~+dn)7ZuLs*cb-fq=UHs^*>fY@A z2jdm_E`KTBbk19S=B4oEbJV_WsMOPY-*I@hcE|MEs{OlvT@jDgxOS`kk-}8pD82Km zU4QP})4h6I$x90n*`#SJZXVSOE8Th{^if5Mcy_tY#nX=}W@Qzw5&gdY+QwZ$LWWn9 rqPkOePCa_(cPa-YIAP=mzK%LZ*@Mv=melG9f&@KX{an^LB{Ts5+w=*P diff --git a/agpsdata/screenshot3.png b/agpsdata/screenshot3.png deleted file mode 100644 index be152ba28a249248125a0bc7ae3564f740faf46e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmV;o0!aOdP)Px#1ZP1_K>z@;j|==^1poj53{Xr|MF0Q*|Ns90|Nj9008gGv1ONa432;bRa{vGi z!vFvd!vV){sAK>D0yIfPK~!ko?UxC1!ypVrQBD9i$oK@E>HY6kkdOs-p(0p4$S7l)K4dKJEZ3syd9e=)>9(nB~!>p`%l2Wd33p$3<&$H1f= zH38L-PU%p3(RwH=G^6J`)KG!z)bi&3S16HN5M@=1uJQ`&h>8f z^a5;i+AQgG&MVc4lFkbj*|Q6SO1B2{!Q6UzhkzjHEwonRjUTn$t0LNbh%MIy*{M@DW$q8_NX!$44BXk6_EBG&N)9fAV$`OcH5()K@ zz3-+yTlPHi#lz~pz&>V2$QESako}V*q2S`(CWVC$o(ju%E%SkrfSiDRO7T!}}Jun(N^zIP8N@u5KmRK@bE%5ClOG1VIo4K@bE% d5cG#~?gw(2W0)8yo_hcQ002ovPDHLkV1o0#G}-_F diff --git a/agpsdata/screenshot4.png b/agpsdata/screenshot4.png deleted file mode 100644 index 305a166d0866fb6f7554c2249acd49cf1bd6005e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 533 zcmeAS@N?(olHy`uVBq!ia0vp^8$g(a8A!&?{Fw`+7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw0_p$%{{u0@e+K_~-Yh^qXMsm#F#`kNVGw3Kp1&dmXwW227srr{ zdvB*F<{ehxaVzvsxUX=EQ|;})@@Od^hT|C*o0fb0y|bNaE%nFoc1(_jq;VN zDx~{`-+y-T*kzu3xTGd)>nw*)e8E2-&zFxb)Ouu-JpbgXV8im$Z=X%{&E7UOTuW-< zq@CSI^R{u8ClwxzQ3^7$^w#Wt+cY~fWz(!K*`%=P`?TygXnvHt+VO5e@aKr~V^N2V zeiuBIEsB4n=M`FG^G$W~#)vn6Jd-BvJ2L&~r`0o__RVmAlp^(c*NodY=SBQeS#~Sx zU7>aS_2rMlW_!qNA>lcBN7dF< zFMqbNEW~Z{#y0!;0YFt5U(SX{K`w^bri$?O!WP-10?S0>gTe~ HDWM4f#C71} diff --git a/agpsdata/screenshot5.png b/agpsdata/screenshot5.png deleted file mode 100644 index 6468a18725fb1aa2dcc4fa43debd4f828b781f19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 578 zcmeAS@N?(olHy`uVBq!ia0vp^8$g(a8A!&?{Fw`+7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw0_p$%{{u0@e+K_~-Yh^qXMsm#F#`kNVGw3Kp1&dmXwZI77srr{ zdvB-n<{ehxar5<0$P;+Vwfp~FF{Wqg4jwG?)V@{+T|IKaJZtubOXi8%H8tVF`I{g4 zCEVY7WPWbgpUD$D(>LD{vwr(z((Om*mu-2pxa@UtjoF=a$8eLQ+P{9}AI(~MW2#w4 z)b5qJ6I7#j$wo|g+*h$n`-WjCearr9hDrDlw=T`Mm-z2=th4c>BUAkSpE=vyoZu~fDr@-blci2xm z%sI$ES@3AlWsV)()9x*24@p|IW{ugB10HGf^RH$#`WD6>34Qea+43Z>y_Pz08s_|6 z&!1mf+VJ@3wX-g%yIWIF#XtUNtY+K)bkSb<+G6J;Pxp@+r}Li%e09E-a#;4G;TgZ0eaAP? zJsmxJZ%jnm{jRxJ_WwEc_xsd@!33-rgI0M}p+Ej+Ti2uCJSPBjfKmCU9uMi5ZPA#7mRIGQXJ3;{XYIy85}S Ib4q9e06g3R=Kufz From fefbc6d78551ab6bc43ecb2ac442d4505d0622ee Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:26:12 +0200 Subject: [PATCH 029/251] Add files via upload --- apps/agpsdata/agpsdata.png | Bin 0 -> 1633 bytes apps/agpsdata/screenshot.png | Bin 0 -> 717 bytes apps/agpsdata/screenshot2.png | Bin 0 -> 613 bytes apps/agpsdata/screenshot3.png | Bin 0 -> 695 bytes apps/agpsdata/screenshot4.png | Bin 0 -> 533 bytes apps/agpsdata/screenshot5.png | Bin 0 -> 578 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/agpsdata/agpsdata.png create mode 100644 apps/agpsdata/screenshot.png create mode 100644 apps/agpsdata/screenshot2.png create mode 100644 apps/agpsdata/screenshot3.png create mode 100644 apps/agpsdata/screenshot4.png create mode 100644 apps/agpsdata/screenshot5.png diff --git a/apps/agpsdata/agpsdata.png b/apps/agpsdata/agpsdata.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f4de4cb5790ca8f6a7fd03a443c309a498e9ae GIT binary patch literal 1633 zcmV-n2A=teP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T2;5FP7PDOQjrJpq5KY0XaMx!5BHTT*?u}LCh~`g z`Ui=|D<*1)8jVLK!GI7T8nm!m4(++!cDvo}&dl@oX5Lbk?lrTo_VdTv-}_Cso$v4a zX5Me60t^K{G64wr5(MEcZBEEVjO$>B;Me9H5!okiw%j~AfL0%1r9Mew zB|FBIp>Tj!dWIe*L37+)7zzRN*=H&;9Ww=A0d$F|@*FlB3_Zqq8S!>t8;AuZEFO%0 zjO#MuCqS#d`ZSxtno1Vjj;d_r=>ks&wt^^*rh(ID@Fqw0fF$4VWOW_QJdXTK!1yVH!%Y z7WIJ&n?uVRMUm&_vyAd_U==t#OK9-cLTlKa?bewNOMx3l)62-bfNS_4Wta!+D^%IDeF*urX!JL3-_hYzxBuBIrw%=b)mq7lg z>Jw&MFfPDHDsUHig@)Vi?8(3S2}E%cj)q+@Ewl3h7Wn#dtF6ZmLGzEos=;bj5<&YcB$MJ>xB2#S2{sJe|FPZ}3I7?*V?-0O=W;W4z9d-zNS)7*K z1ia?o1;rJI*(_(8p33pz207mj@WRPkM5sy&?$GySdm)^C3DM2N@M1mLaf!%earZu#)wk%~Q(-i|ac`eqr@2fxMbMbOl#8$?RAZ<;* zLo~Dj#?M)ZvlDs}ttaYQ5JY-Q%$KB%Em^>!j$Pm^K1{pK8_$%$?GNnq#C^Y9?>czS zD)m}R2fiC_@4`**Q;^D=aP|rQfxq+vx1d*!uHpIEBFtpHj&W2afZtt|XfKil>^^f2 z#?PL))7u<6vfL{Ly7j)KqA(QN^ZEHAzglYVl;~qCqciXWxW~PZzwmqfh1Xa%J4s^X z`#{9T$rv|X7!a`g^cYapE5)9XMUC4gLvs&6{WlRg5OWk*f__ju_&0A{h(bK_2e`){ z$7=tJ-}=$eiKikVMpZUoA(Ga2T8MfHm*W!Z!hnFSUwjDFE7n^=*NM|=A>Fpo`UT$I zqQcMbdk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw0_p$%{{u0@e+K_~-Yh^qXMsm#F#`kNVGw3Kp1&f6fq}`()5S3) zQ)_iUTEXXlb+jGro1 z9KNHYZPA!2b>s7l>(}NpvEDPfff9Z&Lw_Robfqw zL&H}7X@UiEFWP++-~QP5|AXR&9}=%qeSVw8G^*|};?YxkeZMD>dx8y{{<9Lt6e~@S6eN1G-w*!|L%kOd|tUGw8 z!FH0Q$mbcem^c$WKL@FW%s%p_sdbKyZGqp%N8;O;USWQpaQQ$;yG>IigUoc+g)-V* zyO_>hZ$I!#vySbY>Zw`xjZf-dNswdsopR%rw%p?vZ|t-qiWxJ{EZ4d_ODL2-z9+=^ zdTOy@|12iYt3C@QUWq=+$?lSO{5@%#UCgd`tA6JgpH;cGiqlcRWJ%i96Z~nn)wf(+ zw7&VP)Q*>r7F+jEsTZ!;TN%A=b&2qE?tMp=<)?c;v6vy>u>JUi(+hrBT>7W$YdZP6 z6w~?(U%cjB{&wA$GiLTNCqss3B5R)?Omber<~?&m_yIfJXc6ukvsO;OJ7>M&z1&C7 w6XwgUI;i^ljoht+HV=$ok%EYw{>~TDpK7zu1hf@j1ST~GPgg&ebxsLQ0DJ5}e*gdg literal 0 HcmV?d00001 diff --git a/apps/agpsdata/screenshot2.png b/apps/agpsdata/screenshot2.png new file mode 100644 index 0000000000000000000000000000000000000000..7cdba148729aae274a4822b496c34eceee02ad1f GIT binary patch literal 613 zcmeAS@N?(olHy`uVBq!ia0vp^8$g(a8A!&?{Fw`+7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw0_p$%{{u0@e+K_~-Yh^qXMsm#F#`kNVGw3Kp1&dmXwV~17srr{ zdvB-nPHI-*ahp7kA@4y&>)!u&w@Do8U&On5%iOQk#$m2CM+F34`u*Syvf~%_Pd{qS z`q{?o&x~_j^;}#ZZ)$8m>R7$$WbVggsVk4t@5jnNR(&WZp5hu@<0`j5+(t*_^8!XA zox5$k6TI6>c0Xv6c;5juV?$@%mDQX;cY#3O(NB&~f4$$-x%=#V@!x_;(R=rI?lc#R zR}QoP9k6LiS5v5psm|ZnuB}$5dn3=>+Pl$h`3zIrKT&Ix)+UOD+wI&dvRS_+C`0h~ zoq)pD`BQH!W!qqC|M`TsT&XG7p~lyO!Y`S(AC;2sJ#h4qOmwoGxM!ixvOVUVCv}!h zk#j3FT{nBKdiV-;?McDe*}Im$xwJpU*W>h)pw8}(OKYdHaRh#pOFsMgOL%VKJV7bv z3EP}!ozP12wb1?Y`ld3wa#*G6y~f}7?+E;_Hr$~+dn)7ZuLs*cb-fq=UHs^*>fY@A z2jdm_E`KTBbk19S=B4oEbJV_WsMOPY-*I@hcE|MEs{OlvT@jDgxOS`kk-}8pD82Km zU4QP})4h6I$x90n*`#SJZXVSOE8Th{^if5Mcy_tY#nX=}W@Qzw5&gdY+QwZ$LWWn9 rqPkOePCa_(cPa-YIAP=mzK%LZ*@Mv=melG9f&@KX{an^LB{Ts5+w=*P literal 0 HcmV?d00001 diff --git a/apps/agpsdata/screenshot3.png b/apps/agpsdata/screenshot3.png new file mode 100644 index 0000000000000000000000000000000000000000..be152ba28a249248125a0bc7ae3564f740faf46e GIT binary patch literal 695 zcmV;o0!aOdP)Px#1ZP1_K>z@;j|==^1poj53{Xr|MF0Q*|Ns90|Nj9008gGv1ONa432;bRa{vGi z!vFvd!vV){sAK>D0yIfPK~!ko?UxC1!ypVrQBD9i$oK@E>HY6kkdOs-p(0p4$S7l)K4dKJEZ3syd9e=)>9(nB~!>p`%l2Wd33p$3<&$H1f= zH38L-PU%p3(RwH=G^6J`)KG!z)bi&3S16HN5M@=1uJQ`&h>8f z^a5;i+AQgG&MVc4lFkbj*|Q6SO1B2{!Q6UzhkzjHEwonRjUTn$t0LNbh%MIy*{M@DW$q8_NX!$44BXk6_EBG&N)9fAV$`OcH5()K@ zz3-+yTlPHi#lz~pz&>V2$QESako}V*q2S`(CWVC$o(ju%E%SkrfSiDRO7T!}}Jun(N^zIP8N@u5KmRK@bE%5ClOG1VIo4K@bE% d5cG#~?gw(2W0)8yo_hcQ002ovPDHLkV1o0#G}-_F literal 0 HcmV?d00001 diff --git a/apps/agpsdata/screenshot4.png b/apps/agpsdata/screenshot4.png new file mode 100644 index 0000000000000000000000000000000000000000..305a166d0866fb6f7554c2249acd49cf1bd6005e GIT binary patch literal 533 zcmeAS@N?(olHy`uVBq!ia0vp^8$g(a8A!&?{Fw`+7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw0_p$%{{u0@e+K_~-Yh^qXMsm#F#`kNVGw3Kp1&dmXwW227srr{ zdvB*F<{ehxaVzvsxUX=EQ|;})@@Od^hT|C*o0fb0y|bNaE%nFoc1(_jq;VN zDx~{`-+y-T*kzu3xTGd)>nw*)e8E2-&zFxb)Ouu-JpbgXV8im$Z=X%{&E7UOTuW-< zq@CSI^R{u8ClwxzQ3^7$^w#Wt+cY~fWz(!K*`%=P`?TygXnvHt+VO5e@aKr~V^N2V zeiuBIEsB4n=M`FG^G$W~#)vn6Jd-BvJ2L&~r`0o__RVmAlp^(c*NodY=SBQeS#~Sx zU7>aS_2rMlW_!qNA>lcBN7dF< zFMqbNEW~Z{#y0!;0YFt5U(SX{K`w^bri$?O!WP-10?S0>gTe~ HDWM4f#C71} literal 0 HcmV?d00001 diff --git a/apps/agpsdata/screenshot5.png b/apps/agpsdata/screenshot5.png new file mode 100644 index 0000000000000000000000000000000000000000..6468a18725fb1aa2dcc4fa43debd4f828b781f19 GIT binary patch literal 578 zcmeAS@N?(olHy`uVBq!ia0vp^8$g(a8A!&?{Fw`+7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw0_p$%{{u0@e+K_~-Yh^qXMsm#F#`kNVGw3Kp1&dmXwZI77srr{ zdvB-n<{ehxar5<0$P;+Vwfp~FF{Wqg4jwG?)V@{+T|IKaJZtubOXi8%H8tVF`I{g4 zCEVY7WPWbgpUD$D(>LD{vwr(z((Om*mu-2pxa@UtjoF=a$8eLQ+P{9}AI(~MW2#w4 z)b5qJ6I7#j$wo|g+*h$n`-WjCearr9hDrDlw=T`Mm-z2=th4c>BUAkSpE=vyoZu~fDr@-blci2xm z%sI$ES@3AlWsV)()9x*24@p|IW{ugB10HGf^RH$#`WD6>34Qea+43Z>y_Pz08s_|6 z&!1mf+VJ@3wX-g%yIWIF#XtUNtY+K)bkSb<+G6J;Pxp@+r}Li%e09E-a#;4G;TgZ0eaAP? zJsmxJZ%jnm{jRxJ_WwEc_xsd@!33-rgI0M}p+Ej+Ti2uCJSPBjfKmCU9uMi5ZPA#7mRIGQXJ3;{XYIy85}S Ib4q9e06g3R=Kufz literal 0 HcmV?d00001 From 0010de6a0169643c0f0a79c2c3a3936088bb2681 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:26:44 +0200 Subject: [PATCH 030/251] Rename agps-icon.js to agpsdata-icon.js --- apps/agpsdata/{agps-icon.js => agpsdata-icon.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename apps/agpsdata/{agps-icon.js => agpsdata-icon.js} (100%) diff --git a/apps/agpsdata/agps-icon.js b/apps/agpsdata/agpsdata-icon.js similarity index 100% rename from apps/agpsdata/agps-icon.js rename to apps/agpsdata/agpsdata-icon.js From eba42b0114c6a3bf69573f10bdfdae12afd0e36c Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:27:15 +0200 Subject: [PATCH 031/251] Update metadata.json --- apps/agpsdata/metadata.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/agpsdata/metadata.json b/apps/agpsdata/metadata.json index 4a2c8ea3c..4ce28d214 100644 --- a/apps/agpsdata/metadata.json +++ b/apps/agpsdata/metadata.json @@ -1,7 +1,7 @@ { "id": "agpsdata", "name": "A-GPS Data", "shortName":"AGPS Data", - "icon": "agps.png", + "icon": "agpsdata.png", "version":"0.01", "description": "Download assisted GPS data directly to watch", "tags": "assisted,gps,agps,http", @@ -11,6 +11,6 @@ "screenshots" : [ { "url":"screenshot.png" }, { "url":"screenshot2.png" }, { "url":"screenshot3.png" }, { "url":"screenshot4.png" }, { "url":"screenshot5.png" } ], "storage": [ {"name":"agpsdata.app.js","url":"app.js"}, - {"name":"agps.img","url":"agps-icon.js","evaluate":true} + {"name":"agps.img","url":"agpsdata-icon.js","evaluate":true} ] } From 07c6a981e12c0582c360798e67461f002fe15eea Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:32:30 +0200 Subject: [PATCH 032/251] Update metadata.json --- apps/agpsdata/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/agpsdata/metadata.json b/apps/agpsdata/metadata.json index 4ce28d214..af51f3a10 100644 --- a/apps/agpsdata/metadata.json +++ b/apps/agpsdata/metadata.json @@ -11,6 +11,6 @@ "screenshots" : [ { "url":"screenshot.png" }, { "url":"screenshot2.png" }, { "url":"screenshot3.png" }, { "url":"screenshot4.png" }, { "url":"screenshot5.png" } ], "storage": [ {"name":"agpsdata.app.js","url":"app.js"}, - {"name":"agps.img","url":"agpsdata-icon.js","evaluate":true} + {"name":"agpsdata.img","url":"agpsdata-icon.js","evaluate":true} ] } From db297f98a79a319418c55beb676418b0279399db Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Fri, 17 Jun 2022 12:50:00 +0200 Subject: [PATCH 033/251] Update app.js --- apps/agpsdata/app.js | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/apps/agpsdata/app.js b/apps/agpsdata/app.js index 72061a2b5..530c864bd 100644 --- a/apps/agpsdata/app.js +++ b/apps/agpsdata/app.js @@ -62,12 +62,16 @@ function CASIC_CHECKSUM(cmd) { function display(text1, text2, next) { g.reset(); g.clear(); + var img = require("Storage").read("agpsdata.img"); + if (img) { + g.drawImage(img, g.getWidth() - 48, g.getHeight()-48-24); + } g.setFont("Vector", 30); g.setFontAlign(0, 1); - g.drawString(text1, g.getWidth() / 2, g.getHeight() / 2); + g.drawString(text1, g.getWidth() / 2, g.getHeight() / 3 + 24); g.setFont("Vector", 15); g.setFontAlign(-1, -1); - g.drawString(text2, 0, g.getHeight() / 2 + 5); + g.drawString(text2, 0, g.getHeight() / 3 + 29); Bangle.drawWidgets(); nextStep = null; if (next) { @@ -79,11 +83,17 @@ function httpTest() { counter++; display("AGPS Data", "Touch for start", () => { display("Request...", "Touch for restart", httpTest); - Bluetooth.println(JSON.stringify({t:"info", msg:"HTTP Request"})); - Bluetooth.println(JSON.stringify({t:"http", url:"https://www.espruino.com/agps/casic.base64"})); - setTimeout(() => { - //GB({t:"http", resp:testData}); - }, 1); + if (Bluetooth.println) { + console.log("On device"); + Bluetooth.println(JSON.stringify({t:"info", msg:"HTTP Request"})); + Bluetooth.println(JSON.stringify({t:"http", url:"https://www.espruino.com/agps/casic.base64"})); + } + else { + console.log("Testing on Emulator"); + setTimeout(() => { + GB({t:"http", resp:testData}); + }, 1); + } }); } From e72f5c4717f07a32118d844150b64cd438bd5c43 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Fri, 17 Jun 2022 12:56:16 +0200 Subject: [PATCH 034/251] Add files via upload --- apps/agpsdata/screenshot.png | Bin 717 -> 959 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/agpsdata/screenshot.png b/apps/agpsdata/screenshot.png index 05cb79ffd1bb15f87880ea043127400f3140c148..fae53ba85ecb0923cab59c55fb1f15adefd0be17 100644 GIT binary patch delta 908 zcmV;719SY%1-}Q7L4OZWOjJbx00960{{a900RI300RPc&wt)Zu010qNS#tmY4#NNd z4#NS*Z>VGd00TKmL_t(&-tCwTZrmUcg#q~hOqB!du6%$>y+F70!8wMi7=k(K`0s+nqId{R5V3L-n;$U;wk3%2FdU%@a2`x$U~5dWR<1_s{G zzkCYp@tNE!Gk^16V;it1R;IzVDfjQ5u{j|B9=tcF8$he$HQ3IA;nQG97pV`>OVZUK z*mPj?q-Jx6BSi$;Q@QMo_7!-TXRVkDh7s5gz(X4ZY+JDHz?ftK(K9XKW$$!dFT>+Q-Q((Xne+4d6)I#}Q zNO+?K+X*lZMqYb8W=zeVtHMH=KtSuMDYtHl0>(#^>c+ZmF4<8xLDFnCWHPiX#H+1| z{t9!R(z%bVT~D+7)n-~q7Me?yN~M}ow`y2_{?OktgIE9aV7LbEy5Q5j;eQGo4{!T+ zl@4*Z;D391iQCzpoF&a~z;VlsV4Jp5JcGBFkejgA6gWcDS8{HSpV*YZZPQ#76JVRt z`aIa@M|=zRb-=y?#$h>9tl)f^dga4;%=om4zXs#*m=;{CFQ1_iY$q(MR3-!&?y{~o z5wHv4w+MLMB?1mXC}b(eE;^P7d5MlC$|3|O6Myo0|BwkeY)&NPB{}8~IRtPbmAu~J zL!^?!1~QerLUPO93w`@oFOl1Lx?LrzW)+q-YRvdH0X>76HI$P0B0 zjDI1A^coebf-mG1fK~-t$Sy$Zm@DMvesateGL}Pi%oK8tm^kJM86$=ectc)F{jR(r zr=<;o<93W|@eOAnSIBvTj+MYV_hQ5~RmPCr_Jca)+p1%tG}47D`~gLlxW<`aj3fX6002ovP6b4+LSTYxnyaJ$ delta 664 zcmV;J0%!fd2h9bLL4OQTOjJbx00960{{a900RI3_o=XG(000SaNLh0L01m?d01m?e z$8V@)0006?Nkl$hnK(yh7WU@SFq4T@GZH_l3p)>zk)ss*ngrt8N6bX%ag&k`+P5oRI4y;_CFu8N&u_`d(}A+Y!u>t#&)He7)vxH1ebChOmfVGEEv1~2Ax zL1T8DgLxFJPlGizQXh@Y(3Koa4VVsc);erabnyN+o-j1)&@( zin;>M*N4FBDSigdCCZxLGs!R1U>*SbWZ2p(9^>fjJ}X#r0cp&qD&3kARS#c`R5RCQ zb1{#a0!h_Op&05F;%sY*A3^()wmw|C?yCE2GtDH{stG|5G^A$L$PZ@QC$!O`uY>g( zxas1fJAaRqe-n7Ud0V!tbQ9+bzQm?)XG`Qbm>+<*$B@gQ_&C!3Elo9(_ZkAP(DX{4 z)ArX*30#}TLNNg56s_mMVnd_`OPR1&z& Date: Fri, 17 Jun 2022 12:59:02 +0200 Subject: [PATCH 035/251] Delete screenshot.png --- apps/agpsdata/screenshot.png | Bin 959 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/agpsdata/screenshot.png diff --git a/apps/agpsdata/screenshot.png b/apps/agpsdata/screenshot.png deleted file mode 100644 index fae53ba85ecb0923cab59c55fb1f15adefd0be17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 959 zcmV;w13>(VP)Px#1ZP1_K>z@;j|==^1poj54^T{0MF0Q*|Ns90|Nj9000030(Qvkb00009a7bBm z000id000id0mpBsWB>pIIY~r8RA}DqmZW75uB}Cjnngc?^!&iiF-1#iDo!O%Sni6Pq9`Q+nLMknt1n<*E={=%uzMl}e>j zsZ=VJ>VK65k00>_eH^8Iz6;QFhPI&voZ5kKj|(W|Gsr?uehaqc)L+3c2KyOsc@Y1d z@CF9n&%b;M?D3i0D>L(7V;it1R;IzVDfjQ5u{j|B9=tcF8$he$HQ3IA;nQG97pV`> zOVZUK*mPj?q-Jx6BSi$;Q@QMo_7!-TXRVkDh7s5gz(X4ZY+JDHz?ftK(K9XKW$;wb&0hjwzV89Z81uj$6 zLit`uc%uc|2`~;uUVA-eOwFFF!a|uqK1xCZXJ;M2X~e+nEA zZ~JzY4sp2PdwPl6*`Ayw&2PYQ%Z*^0wo*KUx0jHcu-6ngLep1rZjPVWl)!D%Toe;v zo6`C`*yl%l3-)!uz5>Q!IZ~|Pe3^RX!+Fg3w28k41Sb>ndjF6KIc!cO<&IB9*+} z;X|a7!v->yyh3u!9kL4`<9NAe$J``~gLlxW<`aj3fX6002ovPDHLkV1g-wv=jgU From a560facf06f038f7a713972490ca2d9b741eb681 Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Fri, 17 Jun 2022 12:59:11 +0200 Subject: [PATCH 036/251] Add files via upload --- apps/agpsdata/screenshot.png | Bin 0 -> 959 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/agpsdata/screenshot.png diff --git a/apps/agpsdata/screenshot.png b/apps/agpsdata/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..fae53ba85ecb0923cab59c55fb1f15adefd0be17 GIT binary patch literal 959 zcmV;w13>(VP)Px#1ZP1_K>z@;j|==^1poj54^T{0MF0Q*|Ns90|Nj9000030(Qvkb00009a7bBm z000id000id0mpBsWB>pIIY~r8RA}DqmZW75uB}Cjnngc?^!&iiF-1#iDo!O%Sni6Pq9`Q+nLMknt1n<*E={=%uzMl}e>j zsZ=VJ>VK65k00>_eH^8Iz6;QFhPI&voZ5kKj|(W|Gsr?uehaqc)L+3c2KyOsc@Y1d z@CF9n&%b;M?D3i0D>L(7V;it1R;IzVDfjQ5u{j|B9=tcF8$he$HQ3IA;nQG97pV`> zOVZUK*mPj?q-Jx6BSi$;Q@QMo_7!-TXRVkDh7s5gz(X4ZY+JDHz?ftK(K9XKW$;wb&0hjwzV89Z81uj$6 zLit`uc%uc|2`~;uUVA-eOwFFF!a|uqK1xCZXJ;M2X~e+nEA zZ~JzY4sp2PdwPl6*`Ayw&2PYQ%Z*^0wo*KUx0jHcu-6ngLep1rZjPVWl)!D%Toe;v zo6`C`*yl%l3-)!uz5>Q!IZ~|Pe3^RX!+Fg3w28k41Sb>ndjF6KIc!cO<&IB9*+} z;X|a7!v->yyh3u!9kL4`<9NAe$J``~gLlxW<`aj3fX6002ovPDHLkV1g-wv=jgU literal 0 HcmV?d00001 From 99a2c0ffd6ab65f74680c893d7dc58c5943b341e Mon Sep 17 00:00:00 2001 From: pidajo <99899574+pidajo@users.noreply.github.com> Date: Fri, 17 Jun 2022 19:47:16 +0200 Subject: [PATCH 037/251] Update app.js --- apps/agpsdata/app.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/agpsdata/app.js b/apps/agpsdata/app.js index 530c864bd..825eda273 100644 --- a/apps/agpsdata/app.js +++ b/apps/agpsdata/app.js @@ -113,11 +113,13 @@ Bangle.loadWidgets(); Bangle.drawWidgets(); +/* require("Storage").write("httptest.info",{ "id":"httptest", "name":"Http Test", "src":"httptest.js", "icon":"wristlight.img" }); +*/ var testData = "QUdOU1MgZGF0YSBmcm9tIENBU0lDLgpEYXRhTGVuZ3RoOiAyNTk4LgpMaW1pdGF0aW9uOiAzLzEwMDAuCrrOSAAIB7YdxSr+Sg2h8NYlBux1jiUgQbrXgJk/KJvFZVv8pP//uy3i/PH6rv9EMQH6SwBfAOxepgDsXgAAlCULALv/AAtCAAAAAQMAALQ7kly6zkgACAdBzVam9HANoXGycgoqGmnG5X9h3mKrWicvBKhXAp7//+00U/9j/jP/SDHM/Vn/JADrXqYA614AAF6d6v8DAADaEAAAAAIDAADKmrVTus5IAAgHTUirJrjvDKHJDjACcmXJJ+8Lv6rw5LQnl4OChUCt//9XKG3/+u6ZE84ZQuwDAMf/7F6mAOxeAADa0Pb/mP8ABDUAAAADAwAA4pBeVLrOSAAIB5291DTIzAyhJGfzAJ7pCIcIUQMgcfEoJ2TIjrHkqv//YjDTCKj/wRPdGIz/8/9NAOxepgDsXgAAl9/6/yQAAPbhAAAABAMAAIJ7sXC6zkgACAeKKDOgmwEOocKrFwP8Jmgqq4lOQ1VtLSfEi8yDVqn//5MskP6E7WQRPxzv6vv/0//sXqYA7F4AAM4w/f/0/wDoJwAAAAUDAABcUW5Hus5IAAgHu+Va48nxDaFaw0UBkVc73Y3FB+HFmDgoUWIPW+Ck//+iLcf9X/t5/ikzgPrT/wgA7F6mAOxeAAADVgsAiQAACB0AAAAGAwAAvsu9zbrOSAAIB0OVp/7+JQ2hFANPCF+F6KOOMwe9/nC5JsX0CtthqP//WzhzADr/dgqbIRj/nwDj/+xepgDsXgAAP4oKAPv/AOg4AAAABwMAAM4qVwS6zkgACAey9J9b+zwOofLIzwObDg0HLdEmMOA3PydWaUQvr6b//0wxwf/7EJ8K/yLREhkANADsXqYA7F4AALug/f/y/wALLAAAAAgDAACs6Ue+us5IAAgHm7NJLLhaDKEumRQBAFtVTExfuke3AeEmNg9cr2Cq//92MTIJm/63FCkXPv4gABgA616mAOteAACQQfX/HgAAAzUAAAAJAwAAfmebX7rOSAAIB9fgVnnchw2hNlTrAyWnJ5rnBMWFV9GyJzPfZYV8rf//Oyh2AA3xmhLdGtXu/f/Z/+xepgDsXgAA8gXx/37/AAU/AAAACgMAAPbBtfm6zkgACAc+F7Ct97wMoVEVPQCJJG1yeakXMm80PSet+BBd+aH//5AzPf2J+uX97jG7+fj/DgDsXqYA7F4AAGqE//8WAADufQIAAAsDAADELmhius5IAAgHW3g6rwRJDqFpPmYEPf8lNRy9lKO/IX8nJPRjCLOt//90Lir7QQcEGFYUTAguAA4A7F6mAOxeAADrZfj/zP8A5SsAAAAMAwAA/vB8ZbrOSAAIB1mVSsfiXw2hUX8RA60JSyUgLkEgC910JykTq7Usqv//8S9rBw//HhIpGyT/+v8fAOxepgDsXgAAitgKAD4AAOcpAAAADQMAAPoqnZW6zkgACAcCLzz8Q1ANocBvBQFuUWqAxVSgoRjR0SaS5AkH3qr//7cx3vlcB2AYPROjCOr/vf/sXqYA7F4AAA5Y/P/7/wDvGwMAAA4DAABMXoD/us5IAAgH+RiyseCLDKGnOjkHATiXLOud6AnbGuclr2roqg2l///FNxcHi/0hFLoW4fyj/10A7F6mAOxeAAANRf7/GgAA6TQAAAAPAwAAOjJsarrOSAAIB1/+xFM3Xg2hVDKBBg6Tsx25u5hYROV9J/QyJQmLrf//zC1e+7QGxRfmFOAHhf+s/+xepgDsXgAAaE/v/+j/AOonAAAAEAMAAAb9ka66zkgACAc74z4AUZEMofLN6wbbUEjD/w54MWPC3SfOFa4yQ6f//4wtrwH5EOwKOCRTFLz/UP/sXqYA7F4AAOaAFAApAADoOQAAABEDAAC+xoUHus5IAAgH1yXSbYfZDaFOrzwBIM5keona3uYD8JYnC6ekWw+l//8JMC/9ivsaAGEwM/ssAN//7F6mAOxeAAAymwQAof8A7l8AAAASAwAA9kus4rrOSAAIB/9znedCsA2h5VDBBLdHG1Uw8P6P93bRJw5UgTR9qf//LS1BAj0TAwkqJioWBABHAOxepgDsXgAAD54FACwAAN6xAAAAEwMAAEboQta6zkgACAdVJvSzetsMoRclcgKU4/OAvUl5A73wdCYbpBB/P6X//08yQ/4N7voNgx5160gAFwDsXqYA7F4AADa+EADk/wDuLwAAABQDAADyTPBuus5IAAgHhpZXHJnuDaGfsmkMbSLS2QeTnDZBLR8ntwGPV8mj//+SM6n8rftj/EUyZfw7AaX/7F6mAOxeAAAvSQUAAAAA6j4AAAAVAwAAVC23P7rOSAAIB8FSSGuHmw2hXoTeBoU+tLS9TdsrYGopJ+h3h7O9p///mjEIB3X/GhN5GXP/c//V/+xepgDsXgAASREJADgAAO4rAAAAFgMAAMqlmN26zkgACAeGsPJwF8ENoU2cJwHhxiN62PG7uVyKfydPWVyEG6z//8spSgCQ8NkRnxsl7sr/EQDsXqYA7F4AAI0S///u/wDudQEAABcDAABUYe3ous5IAAgHtHJyvWVdDaFr1mwGwPVWIZcaxOQXwAwmeHqW1+Sh//+PPnAAQgAOCxwhof8sAGwA7F6mAOxeAAAhMQcAtf8ABjsAAAAYAwAAsOXsgbrOSAAIB4nxObhoSQ2hOjBcBf2n5ijflOaX/Iz8JpPiNAUTrP//ajEL++oEchfzE9AFSgDT/+tepgDrXgAAohMLACkAAAweAAAAGQMAAFrje3e6zkgACAexAdJ/MyYOoeXvjwPazb0PcXcXfIVaNCZ2mjMDkqn//z02W/qPBMcW7BM7BcX/6//sXqYA7F4AABv4BgAVAAAPIgAAABoDAACqA6wGus5IAAgHxYz/b8dNDaH6/WQF3AILHLKDgTJ+VponRocZMKSm//8bLycAMRANDG8i/RHR/2wA7F6mAOxeAAArEwcAHAAABEgAAQAbAwAA0hkH57rOSAAIB5HXkJcOjA2h8B4kAebzvl2gmkU1K1TzJ86wODP6qP//0CzCAM4OmQrkI1UR7f/n/+xepgDsXgAAcs/u/9//AOplAAAAHQMAAGqvKTa6zkgACAekogIGh+8NoYBTBQMDtQeTiKQ4u0KYHiYkF4HbzaT//7A80v9N/gQLmSC4/icA6v/sXqYA7F4AAB2V7v/2/wAIGQAAAB4DAACQRQ0Tus5IAAgHUsOCUJ71DaHkPFgFdJcpEDguP6ldR+UmgbrM2+6m//9vOPT/S/7vC1sh6/49AJH/7F6mAOxeAAAQCfr/8/8A4wwAAAAfAwAA7IYNqLrOSAAIByZDZIfa4AyhxlEVA9QtFKN+R+1NPIIIJ8xm1q8Qqv//djDzB9H+pBNQGGj+rv++/+xepgDsXgAA3f/6/67/AAFUAAAAIAMAAJSG0BW6zhQACAWVGZOmAAAAAPr///8SEpCmiQcDAD4zLlK6zhAACAZIDf33DwP+/jYK//gDAAAAoBoC9g=="; From 6c4bfc58b519a41bfe9008b671075c3829bdbe5b Mon Sep 17 00:00:00 2001 From: Darin755 Date: Fri, 17 Jun 2022 19:39:57 -0600 Subject: [PATCH 038/251] switched yards to meters for us locale --- apps/locale/locales.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/locale/locales.js b/apps/locale/locales.js index de56503fd..bfb8fdceb 100644 --- a/apps/locale/locales.js +++ b/apps/locale/locales.js @@ -141,7 +141,7 @@ var locales = { currency_symbol: "$", currency_first: true, int_curr_symbol: "USD", speed: "mph", - distance: { 0: "yd", 1: "mi" }, + distance: { 0: "m", 1: "mi" }, temperature: "°F", ampm: { 0: "am", 1: "pm" }, timePattern: { 0: "%HH:%MM:%SS ", 1: "%HH:%MM" }, From 1f2726a841f5593461857a009805462d6459c4da Mon Sep 17 00:00:00 2001 From: Stiralbios Date: Sat, 18 Jun 2022 15:17:34 +0200 Subject: [PATCH 039/251] [TerminalClock] Use ClockFace module --- apps/terminalclock/app.js | 208 ++++++++++++++++----------------- apps/terminalclock/settings.js | 15 ++- 2 files changed, 115 insertions(+), 108 deletions(-) diff --git a/apps/terminalclock/app.js b/apps/terminalclock/app.js index 7dc3bf1d1..d0699f855 100644 --- a/apps/terminalclock/app.js +++ b/apps/terminalclock/app.js @@ -1,8 +1,8 @@ -var locale = require("locale"); -var fontColor = g.theme.dark ? "#0f0" : "#000"; +const locale = require("locale"); var heartRate = 0; var altitude = -9001; +const fontColor = g.theme.dark ? "#0f0" : "#000"; // handling the differents versions of the Banglejs smartwatch screen sizes if (process.env.HWVERSION == 1){ var paddingY = 3; @@ -18,32 +18,81 @@ if (process.env.HWVERSION == 1){ var font6x8DefaultTextSize = 2; } -function setFontSize(pos){ +// initialising the clockface +const ClockFace = require("ClockFace"); +const clock = new ClockFace({ + init: function () { + // check settings and set default if needed + if (this.HRMinConfidence === undefined) this.HRMinConfidence = 50; + if (this.PowerOnInterval === undefined) this.PowerOnInterval = 15; + if (this.showAltitude === undefined){ + this.showAltitude = true && process.env.HWVERSION == 2; + }else { + this.showAltitude = this.showAltitude && process.env.HWVERSION == 2; + } + ["showHRM", "showActivity", "showStepCount", "powerSaving"].forEach(k => { + if (this[k]===undefined) this[k] = true; + }); + + this. + + Bangle.on("lock", on => { + if (on) lock(); + else unlock(); + }); + + turnOnServices(); + if(this.powerSaving){ + setInterval(turnOnServices, this.PowerOnInterval*60000); // every PowerOnInterval min + } + + }, + + draw: function (date) { + var curPos = 1; + g.reset(); + g.clearRect(g.appRect); + g.setFontAlign(-1, -1); + g.setColor(fontColor); + drawTime(date, curPos); + curPos++; + if(this.showDate){ + drawDate(date, curPos); + curPos++; + } + if(this.showAltitude){ + drawAltitude(curPos); + curPos++; + } + if(this.showHRM){ + drawHRM(curPos); + curPos++; + } + if(this.showActivity){ + drawActivity(curPos); + curPos++; + } + if(this.showStepCount){ + drawStepCount(curPos); + curPos++; + } + drawInput(curPos); + }, + + settingsFile: "terminalclock.json" +}); + + +/* ---------------------------- +Draw related of specific lines +-------------------------------- */ + +function drawLine(line, pos){ if(pos == 1) g.setFont("6x8", font6x8FirstTextSize); else g.setFont("6x8", font6x8DefaultTextSize); -} -function clearField(pos){ - var yStartPos = Bangle.appRect.y + - paddingY * (pos - 1) + - font6x8At4Size * Math.min(1, pos-1) + - font6x8At2Size * Math.max(0, pos-2); - var yEndPos = Bangle.appRect.y + - paddingY * (pos - 1) + - font6x8At4Size * Math.min(1, pos) + - font6x8At2Size * Math.max(0, pos-1); - g.clearRect(Bangle.appRect.x, yStartPos, Bangle.appRect.x2, yEndPos); -} - -function clearWatchIfNeeded(now){ - if(now.getMinutes() % 10 == 0) - g.clearRect(Bangle.appRect.x, Bangle.appRect.y, Bangle.appRect.x2, Bangle.appRect.y2); -} - -function drawLine(line, pos){ - setFontSize(pos); var yPos = Bangle.appRect.y + paddingY * (pos - 1) + font6x8At4Size * Math.min(1, pos-1) + @@ -66,7 +115,6 @@ function drawDate(now, pos){ } function drawInput(pos){ - clearField(pos); drawLine(">", pos); } @@ -77,7 +125,6 @@ function drawStepCount(pos){ } function drawHRM(pos){ - clearField(pos); if(heartRate != 0) drawLine(">HR: " + parseInt(heartRate), pos); else @@ -85,60 +132,31 @@ function drawHRM(pos){ } function drawAltitude(pos){ - clearField(pos); if(altitude > 0) drawLine(">Alt: " + altitude.toFixed(1) + "m", pos); else drawLine(">Alt: unknown", pos); } - + function drawActivity(pos){ - clearField(pos); var health = Bangle.getHealthStatus('last'); var steps_formated = ">Motion: " + parseInt(health.movement); drawLine(steps_formated, pos); } -function draw(){ - var curPos = 1; - g.reset(); - g.setFontAlign(-1, -1); - g.setColor(fontColor); - var now = new Date(); - clearWatchIfNeeded(now); // mostly to not have issues when changing days - drawTime(now, curPos); - curPos++; - if(settings.showDate){ - drawDate(now, curPos); - curPos++; - } - if(settings.showAltitude){ - drawAltitude(curPos); - curPos++; - } - if(settings.showHRM){ - drawHRM(curPos); - curPos++; - } - if(settings.showActivity){ - drawActivity(curPos); - curPos++; - } - if(settings.showStepCount){ - drawStepCount(curPos); - curPos++; - } - drawInput(curPos); -} + +/* ----------------------------------------------- +Services functions (HRM, pressure, etc...) +-------------------------------------------------- */ function turnOnServices(){ - if(settings.showHRM){ + if(clock.showHRM){ Bangle.setHRMPower(true, "terminalclock"); } - if(settings.showAltitude && process.env.HWVERSION != 1){ + if(clock.showAltitude){ Bangle.setBarometerPower(true, "terminalclock"); } - if(settings.powerSaving){ + if(clock.powerSaving){ setTimeout(function () { turnOffServices(); }, 45000); @@ -146,33 +164,20 @@ function turnOnServices(){ } function turnOffServices(){ - if(settings.showHRM){ + if(clock.showHRM){ Bangle.setHRMPower(false, "terminalclock"); } - if(settings.showAltitude && process.env.HWVERSION != 1){ + if(clock.showAltitude){ Bangle.setBarometerPower(false, "terminalclock"); } } -var unlockDrawIntervalID = -1; -Bangle.on('lock', function(on){ - if(!on){ // unclock - if(settings.powerSaving){ - turnOnServices(); - } - unlockDrawIntervalID = setInterval(draw, 1000); // every second - } - if(on && unlockDrawIntervalID != -1){ // lock - clearInterval(unlockDrawIntervalID); - } -}); - Bangle.on('HRM',function(hrmInfo) { - if(hrmInfo.confidence >= settings.HRMinConfidence) + if(hrmInfo.confidence >= clock.HRMinConfidence) heartRate = hrmInfo.bpm; }); -var MEDIANLENGTH = 20; // technical +const MEDIANLENGTH = 20; // technical var avr = [], median; // technical Bangle.on('pressure', function(e) { while (avr.length>MEDIANLENGTH) avr.pop(); @@ -184,32 +189,23 @@ Bangle.on('pressure', function(e) { } }); +/* ------------------------------------------------- +Clock related functions but not in the ClockFace module +---------------------------------------------------- */ -// Clear the screen once, at startup -g.clear(); -// load the settings -var settings = Object.assign({ - // default values - HRMinConfidence: 50, - showDate: true, - showHRM: true, - showActivity: true, - showStepCount: true, - showAltitude: process.env.HWVERSION != 1 ? true : false, - powerSaving: true, - PowerOnInterval: 15, -}, require('Storage').readJSON("terminalclock.json", true) || {}); - -// turn the services before drawing anything -turnOnServices(); -if(settings.powerSaving){ - setInterval(turnOnServices, settings.PowerOnInterval*60000); // every PowerOnInterval min +function unlock(){ + if(clock.powerSaving){ + turnOnServices(); + } + clock.old_precision = clock.precision; + clock.precision = 1; + clock.tick(); } -// Show launcher when middle button pressed -Bangle.setUI("clock"); -// Load and draw widgets -Bangle.loadWidgets(); -Bangle.drawWidgets(); -// draw immediately at first -draw(); -setInterval(draw, 10000); // every 10 seconds + +function lock(){ + clock.precision = clock.old_precision; + clock.tick(); +} + +// starting the clock +clock.start(); diff --git a/apps/terminalclock/settings.js b/apps/terminalclock/settings.js index bd860b491..cdad7b9a4 100644 --- a/apps/terminalclock/settings.js +++ b/apps/terminalclock/settings.js @@ -2,9 +2,12 @@ var FILE = "terminalclock.json"; // Load settings var settings = Object.assign({ - HRMinConfidence: 50, + // ClockFace lib showDate: true, - showAltitude: process.env.HWVERSION != 1 ? true : false, + loadWidgets: true, + // TerminalClock specific + HRMinConfidence: 50, + showAltitude: process.env.HWVERSION == 2 ? true : false, showHRM: true, showActivity: true, showStepCount: true, @@ -28,6 +31,14 @@ writeSettings(); } }, + 'Show widgets': { + value: settings.loadWidgets, + format: v => v?"Yes":"No", + onchange: v => { + settings.loadWidgets = v; + writeSettings(); + } + }, 'Show date': { value: settings.showDate, format: v => v?"Yes":"No", From 2aa56bdaf241f141b919cea8d4dc3dcc629a9c4f Mon Sep 17 00:00:00 2001 From: Stiralbios Date: Sat, 18 Jun 2022 15:25:02 +0200 Subject: [PATCH 040/251] [TerminalClock] Bug fix --- apps/terminalclock/app.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/terminalclock/app.js b/apps/terminalclock/app.js index d0699f855..ba19d693c 100644 --- a/apps/terminalclock/app.js +++ b/apps/terminalclock/app.js @@ -34,8 +34,6 @@ const clock = new ClockFace({ if (this[k]===undefined) this[k] = true; }); - this. - Bangle.on("lock", on => { if (on) lock(); else unlock(); From 621864da24791fcd7b11e92be943bb962aa6f2f4 Mon Sep 17 00:00:00 2001 From: Stiralbios Date: Sat, 18 Jun 2022 15:55:45 +0200 Subject: [PATCH 041/251] [ClockFace] Fix widget drawing --- modules/ClockFace.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/ClockFace.js b/modules/ClockFace.js index f8dc33287..5020af23f 100644 --- a/modules/ClockFace.js +++ b/modules/ClockFace.js @@ -58,7 +58,6 @@ ClockFace.prototype.tick = function() { }; if (!this._last) { g.clear(true); - if (global.WIDGETS) Bangle.drawWidgets(); g.reset(); this.draw.apply(this, [time, {d: true, h: true, m: true, s: true}]); } else { @@ -70,6 +69,7 @@ ClockFace.prototype.tick = function() { g.reset(); this.update.apply(this, [time, c]); } + if (global.WIDGETS) Bangle.drawWidgets(); this._last = now; if (this.paused) return; // called redraw() while still paused // figure out timeout: if e.g. precision=60s, update at the start of a new minute @@ -103,12 +103,13 @@ ClockFace.prototype.pause = function() { this.paused = true; // apps might want to check this if (this._pause) this._pause.apply(this); }; + ClockFace.prototype.resume = function() { if (this._timeout) return; // not paused delete this._last; this.paused = false; if (this._resume) this._resume.apply(this); - this.tick(true); + this.tick(); }; /** From 93b6fdb974fc8ca3e86fdddef204e87c50456154 Mon Sep 17 00:00:00 2001 From: Stiralbios Date: Sat, 18 Jun 2022 15:56:38 +0200 Subject: [PATCH 042/251] [TerminalClock] Remove useless calls to the graphic lib --- apps/terminalclock/app.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/apps/terminalclock/app.js b/apps/terminalclock/app.js index ba19d693c..b0bd47d16 100644 --- a/apps/terminalclock/app.js +++ b/apps/terminalclock/app.js @@ -48,8 +48,6 @@ const clock = new ClockFace({ draw: function (date) { var curPos = 1; - g.reset(); - g.clearRect(g.appRect); g.setFontAlign(-1, -1); g.setColor(fontColor); drawTime(date, curPos); From 0779a546c795bef6bb3385cc340395bc56298765 Mon Sep 17 00:00:00 2001 From: Michael Salaverry Date: Sat, 18 Jun 2022 19:37:18 +0300 Subject: [PATCH 043/251] fix: mjs content type by using js --- apps/hebrew_calendar/customizer.html | 2 +- apps/hebrew_calendar/{customizer.mjs => customizer.js} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename apps/hebrew_calendar/{customizer.mjs => customizer.js} (100%) diff --git a/apps/hebrew_calendar/customizer.html b/apps/hebrew_calendar/customizer.html index bea860e53..0cd63783b 100644 --- a/apps/hebrew_calendar/customizer.html +++ b/apps/hebrew_calendar/customizer.html @@ -39,7 +39,7 @@ - + diff --git a/apps/hebrew_calendar/customizer.mjs b/apps/hebrew_calendar/customizer.js similarity index 100% rename from apps/hebrew_calendar/customizer.mjs rename to apps/hebrew_calendar/customizer.js From a6fa71290be69b53023b70ddcd5873ecbe9ed688 Mon Sep 17 00:00:00 2001 From: Stiralbios Date: Sat, 18 Jun 2022 18:39:51 +0200 Subject: [PATCH 044/251] [TerminalClock] Change the settings to be able to personalize the line display more --- apps/terminalclock/ChangeLog | 1 + apps/terminalclock/app.js | 48 ++++----- apps/terminalclock/metadata.json | 2 +- apps/terminalclock/settings.js | 167 +++++++++++++++---------------- 4 files changed, 103 insertions(+), 115 deletions(-) diff --git a/apps/terminalclock/ChangeLog b/apps/terminalclock/ChangeLog index ce31583e9..75d1a760e 100644 --- a/apps/terminalclock/ChangeLog +++ b/apps/terminalclock/ChangeLog @@ -4,3 +4,4 @@ 0.04: Fix settings bug 0.05: Add altitude display (only Bangle.js 2) 0.06: Add power related settings to control the HR and pressure(altitude) sensor from the watchface +0.07: Use ClockFace module and rework the settings to be able to personnalize the order of the lines diff --git a/apps/terminalclock/app.js b/apps/terminalclock/app.js index b0bd47d16..c9be2f543 100644 --- a/apps/terminalclock/app.js +++ b/apps/terminalclock/app.js @@ -23,17 +23,17 @@ const ClockFace = require("ClockFace"); const clock = new ClockFace({ init: function () { // check settings and set default if needed + this.showHRM = false; + this.showAltitude = false; if (this.HRMinConfidence === undefined) this.HRMinConfidence = 50; if (this.PowerOnInterval === undefined) this.PowerOnInterval = 15; - if (this.showAltitude === undefined){ - this.showAltitude = true && process.env.HWVERSION == 2; - }else { - this.showAltitude = this.showAltitude && process.env.HWVERSION == 2; - } - ["showHRM", "showActivity", "showStepCount", "powerSaving"].forEach(k => { - if (this[k]===undefined) this[k] = true; + if (this.powerSaving===undefined) this[k] = true; + ["L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"].forEach(k => { + if (this[k]===undefined) this[k] = "Empty"; + else if (this[k]==="HR") this.showHRM = true; + else if (this[k]==="Alt") this.showAltitude = true && process.env.HWVERSION == 2; }); - + Bangle.on("lock", on => { if (on) lock(); else unlock(); @@ -52,27 +52,16 @@ const clock = new ClockFace({ g.setColor(fontColor); drawTime(date, curPos); curPos++; - if(this.showDate){ - drawDate(date, curPos); + + ["L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"].forEach(line => { + if (this[line]==='Date') drawDate(date, curPos); + else if (this[line]==='HR') drawHRM(curPos); + else if (this[line]==='Motion') drawMotion(curPos); + else if (this[line]==='Alt') drawAltitude(curPos); + else if (this[line]==='Steps') drawStepCount(curPos); + else if (this[line]==='>') drawInput(curPos); curPos++; - } - if(this.showAltitude){ - drawAltitude(curPos); - curPos++; - } - if(this.showHRM){ - drawHRM(curPos); - curPos++; - } - if(this.showActivity){ - drawActivity(curPos); - curPos++; - } - if(this.showStepCount){ - drawStepCount(curPos); - curPos++; - } - drawInput(curPos); + }); }, settingsFile: "terminalclock.json" @@ -134,13 +123,12 @@ function drawAltitude(pos){ drawLine(">Alt: unknown", pos); } -function drawActivity(pos){ +function drawMotion(pos){ var health = Bangle.getHealthStatus('last'); var steps_formated = ">Motion: " + parseInt(health.movement); drawLine(steps_formated, pos); } - /* ----------------------------------------------- Services functions (HRM, pressure, etc...) -------------------------------------------------- */ diff --git a/apps/terminalclock/metadata.json b/apps/terminalclock/metadata.json index 9f76ed8f2..a8682f9a8 100644 --- a/apps/terminalclock/metadata.json +++ b/apps/terminalclock/metadata.json @@ -3,7 +3,7 @@ "name": "Terminal Clock", "shortName":"Terminal Clock", "description": "A terminal cli like clock displaying multiple sensor data", - "version":"0.06", + "version":"0.07", "icon": "app.png", "type": "clock", "tags": "clock", diff --git a/apps/terminalclock/settings.js b/apps/terminalclock/settings.js index cdad7b9a4..3837d92c6 100644 --- a/apps/terminalclock/settings.js +++ b/apps/terminalclock/settings.js @@ -3,104 +3,103 @@ // Load settings var settings = Object.assign({ // ClockFace lib - showDate: true, loadWidgets: true, // TerminalClock specific HRMinConfidence: 50, - showAltitude: process.env.HWVERSION == 2 ? true : false, - showHRM: true, - showActivity: true, - showStepCount: true, powerSaving: true, PowerOnInterval: 15, + L2: 'Date', + L3: 'HR', + L4: 'Motion', + L5: 'Steps', + L6: '>', + L7: 'Empty', + L8: 'Empty', + L9: 'Empty', }, require('Storage').readJSON(FILE, true) || {}); function writeSettings() { require('Storage').writeJSON(FILE, settings); } - // Show the menu - var menu = { - "" : { "title" : "Terminal Clock" }, - "< Back" : () => back(), - 'HR confidence': { - value: settings.HRMinConfidence, - min: 0, max: 100, + if(process.env.HWVERSION == 2) { + var lineType = ['Date', 'HR', 'Motion', 'Alt', 'Steps', '>', 'Empty']; + } else{ + var lineType = ['Date', 'HR', 'Motion', 'Steps', '>', 'Empty']; + } + function getLineChooser(lineID){ + return { + value: lineType.indexOf(settings[lineID]), + min: 0, max: lineType.length-1, + format: v => lineType[v], onchange: v => { - settings.HRMinConfidence = v; - writeSettings(); - } - }, - 'Show widgets': { - value: settings.loadWidgets, - format: v => v?"Yes":"No", - onchange: v => { - settings.loadWidgets = v; - writeSettings(); - } - }, - 'Show date': { - value: settings.showDate, - format: v => v?"Yes":"No", - onchange: v => { - settings.showDate = v; - writeSettings(); - } - }, - 'Show Altitude': { - value: settings.showAltitude, - format: v => v?"Yes":"No", - onchange: v => { - settings.showAltitude = v; - writeSettings(); - } - }, - 'Show HRM': { - value: settings.showHRM, - format: v => v?"Yes":"No", - onchange: v => { - settings.showHRM = v; - writeSettings(); - } - }, - 'Show Activity': { - value: settings.showActivity, - format: v => v?"Yes":"No", - onchange: v => { - settings.showActivity = v; - writeSettings(); - } - }, - 'Show Steps': { - value: settings.showStepCount, - format: v => v?"Yes":"No", - onchange: v => { - settings.showStepCount = v; - writeSettings(); - } - }, - 'Power saving': { - value: settings.powerSaving, - format: v => v?"On":"Off", - onchange: v => { - settings.powerSaving = v; - writeSettings(); - } - }, - 'Power on interval': { - value: settings.PowerOnInterval, - min: 3, max: 60, - onchange: v => { - settings.PowerOnInterval = v; + settings[lineID] = lineType[v]; writeSettings(); }, - format: x => { - return x + " min"; + }; + } + + var lineMenu = { + '< Back': function() { E.showMenu(getMainMenu());}, + 'Line 2': getLineChooser('L2'), + 'Line 3': getLineChooser('L3'), + 'Line 4': getLineChooser('L4'), + 'Line 5': getLineChooser('L5'), + 'Line 6': getLineChooser('L6'), + 'Line 7': getLineChooser('L7'), + 'Line 8': getLineChooser('L8'), + 'Line 9': getLineChooser('L9'), + }; + + function getMainMenu(){ + var mainMenu = { + "" : { "title" : "Terminal Clock" }, + "< Back" : () => back(), + 'HR confidence': { + value: settings.HRMinConfidence, + min: 0, max: 100, + onchange: v => { + settings.HRMinConfidence = v; + writeSettings(); + } + }, + 'Show widgets': { + value: settings.loadWidgets, + format: v => v?"Yes":"No", + onchange: v => { + settings.loadWidgets = v; + writeSettings(); + } + }, + 'Power saving': { + value: settings.powerSaving, + format: v => v?"On":"Off", + onchange: v => { + settings.powerSaving = v; + writeSettings(); + setTimeout(function() { + E.showMenu(getMainMenu()); + },0); + } } + }; + if(settings.powerSaving){ + mainMenu['Power on interval'] = { + value: settings.PowerOnInterval, + min: 3, max: 60, + onchange: v => { + settings.PowerOnInterval = v; + writeSettings(); + }, + format: x => { + return x + " min"; + }, + }; } + + mainMenu['Lines'] = function() { E.showMenu(lineMenu);}; + return mainMenu; } - if (process.env.HWVERSION == 1) { - delete menu['Show Altitude'] - } - E.showMenu(menu); -}) \ No newline at end of file + + E.showMenu(getMainMenu()); +})(); \ No newline at end of file From 03fbd4c08abcc6cfa1f9e25c1868af1cb786776f Mon Sep 17 00:00:00 2001 From: Stiralbios Date: Sat, 18 Jun 2022 18:53:42 +0200 Subject: [PATCH 045/251] [TerminalClock] Small fix --- apps/terminalclock/app.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/terminalclock/app.js b/apps/terminalclock/app.js index c9be2f543..9b810a10a 100644 --- a/apps/terminalclock/app.js +++ b/apps/terminalclock/app.js @@ -27,18 +27,20 @@ const clock = new ClockFace({ this.showAltitude = false; if (this.HRMinConfidence === undefined) this.HRMinConfidence = 50; if (this.PowerOnInterval === undefined) this.PowerOnInterval = 15; - if (this.powerSaving===undefined) this[k] = true; + if (this.powerSaving===undefined) this.powerSaving = true; ["L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"].forEach(k => { if (this[k]===undefined) this[k] = "Empty"; else if (this[k]==="HR") this.showHRM = true; else if (this[k]==="Alt") this.showAltitude = true && process.env.HWVERSION == 2; }); + // set the lock and unlock actions Bangle.on("lock", on => { if (on) lock(); else unlock(); }); + // set the services (HRM, pressure sensor, etc....) turnOnServices(); if(this.powerSaving){ setInterval(turnOnServices, this.PowerOnInterval*60000); // every PowerOnInterval min From c50813322cb94b100102400d04c87e5d0e660fa3 Mon Sep 17 00:00:00 2001 From: Stiralbios Date: Sat, 18 Jun 2022 19:04:31 +0200 Subject: [PATCH 046/251] [TerminalClock] Consistent settings --- apps/terminalclock/settings.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/terminalclock/settings.js b/apps/terminalclock/settings.js index 3837d92c6..dfc9d88c2 100644 --- a/apps/terminalclock/settings.js +++ b/apps/terminalclock/settings.js @@ -8,11 +8,11 @@ HRMinConfidence: 50, powerSaving: true, PowerOnInterval: 15, - L2: 'Date', - L3: 'HR', - L4: 'Motion', - L5: 'Steps', - L6: '>', + L2: 'Empty', + L3: 'Empty', + L4: 'Empty', + L5: 'Empty', + L6: 'Empty', L7: 'Empty', L8: 'Empty', L9: 'Empty', From f77226e33ef88da8d8c657773d53c390ad5aa14f Mon Sep 17 00:00:00 2001 From: Stiralbios Date: Sat, 18 Jun 2022 19:16:44 +0200 Subject: [PATCH 047/251] [TerminalClock] Add sensible default settings --- apps/terminalclock/app.js | 11 ++++++++++- apps/terminalclock/settings.js | 12 ++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/apps/terminalclock/app.js b/apps/terminalclock/app.js index 9b810a10a..9b8eb1351 100644 --- a/apps/terminalclock/app.js +++ b/apps/terminalclock/app.js @@ -29,7 +29,16 @@ const clock = new ClockFace({ if (this.PowerOnInterval === undefined) this.PowerOnInterval = 15; if (this.powerSaving===undefined) this.powerSaving = true; ["L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9"].forEach(k => { - if (this[k]===undefined) this[k] = "Empty"; + if (this[k]===undefined){ + if(k == "L2") this[k] = "Date"; + else if(k == "L3") { + this[k] = "HR"; + this.showHRM = true; + }else if(k == "L4") this[k] = "Motion"; + else if(k == "L5") this[k] = "Steps"; + else if(k == "L6") this[k] = ">"; + else this[k] = "Empty"; + } else if (this[k]==="HR") this.showHRM = true; else if (this[k]==="Alt") this.showAltitude = true && process.env.HWVERSION == 2; }); diff --git a/apps/terminalclock/settings.js b/apps/terminalclock/settings.js index dfc9d88c2..59b55fb34 100644 --- a/apps/terminalclock/settings.js +++ b/apps/terminalclock/settings.js @@ -8,11 +8,11 @@ HRMinConfidence: 50, powerSaving: true, PowerOnInterval: 15, - L2: 'Empty', - L3: 'Empty', - L4: 'Empty', - L5: 'Empty', - L6: 'Empty', + L2: 'Date', + L3: 'HR', + L4: 'Motion', + L5: 'Steps', + L6: '>', L7: 'Empty', L8: 'Empty', L9: 'Empty', @@ -102,4 +102,4 @@ } E.showMenu(getMainMenu()); -})(); \ No newline at end of file +}) \ No newline at end of file From 93c18eb16e89707e6e17173ad4aea30e70778f55 Mon Sep 17 00:00:00 2001 From: Stiralbios Date: Sat, 18 Jun 2022 21:55:21 +0200 Subject: [PATCH 048/251] Use default Bangle formatter for booleans --- apps/terminalclock/settings.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/terminalclock/settings.js b/apps/terminalclock/settings.js index 59b55fb34..55035bfa3 100644 --- a/apps/terminalclock/settings.js +++ b/apps/terminalclock/settings.js @@ -65,7 +65,6 @@ }, 'Show widgets': { value: settings.loadWidgets, - format: v => v?"Yes":"No", onchange: v => { settings.loadWidgets = v; writeSettings(); @@ -73,7 +72,6 @@ }, 'Power saving': { value: settings.powerSaving, - format: v => v?"On":"Off", onchange: v => { settings.powerSaving = v; writeSettings(); @@ -91,9 +89,7 @@ settings.PowerOnInterval = v; writeSettings(); }, - format: x => { - return x + " min"; - }, + format: x => x + " min" }; } From 42c2b5c8a2913172032e2ad3b3d0b9bee0ff5ea7 Mon Sep 17 00:00:00 2001 From: Alessandro Cocco Date: Sat, 18 Jun 2022 22:08:51 +0200 Subject: [PATCH 049/251] Use default Bangle formatter for booleans --- apps/activityreminder/ChangeLog | 3 ++- apps/activityreminder/metadata.json | 2 +- apps/activityreminder/settings.js | 11 +++-------- apps/android/ChangeLog | 1 + apps/android/metadata.json | 2 +- apps/android/settings.js | 1 - apps/antonclk/ChangeLog | 3 ++- apps/antonclk/metadata.json | 2 +- apps/antonclk/settings.js | 10 ---------- apps/bikespeedo/ChangeLog | 1 + apps/bikespeedo/metadata.json | 2 +- apps/bikespeedo/settings.js | 2 -- apps/bthrm/ChangeLog | 1 + apps/bthrm/metadata.json | 2 +- apps/bthrm/settings.js | 2 -- apps/calendar/ChangeLog | 1 + apps/calendar/metadata.json | 2 +- apps/calendar/settings.js | 1 - apps/calibration/ChangeLog | 5 +++-- apps/calibration/metadata.json | 2 +- apps/calibration/settings.js | 1 - apps/chronowid/ChangeLog | 1 + apps/chronowid/app.js | 1 - apps/chronowid/metadata.json | 2 +- apps/clockcal/ChangeLog | 1 + apps/clockcal/metadata.json | 2 +- apps/clockcal/settings.js | 3 --- apps/coretemp/ChangeLog | 1 + apps/coretemp/metadata.json | 2 +- apps/coretemp/settings.js | 1 - apps/daisy/ChangeLog | 1 + apps/daisy/metadata.json | 2 +- apps/daisy/settings.js | 1 - apps/dane_tcr/ChangeLog | 3 ++- apps/dane_tcr/metadata.json | 2 +- apps/dane_tcr/settings.js | 2 -- apps/dtlaunch/ChangeLog | 1 + apps/dtlaunch/metadata.json | 2 +- apps/dtlaunch/settings-b1.js | 2 -- apps/dtlaunch/settings-b2.js | 5 ----- apps/files/files.js | 2 -- apps/game1024/ChangeLog | 1 + apps/game1024/metadata.json | 2 +- apps/game1024/settings.js | 5 ++--- apps/gbmusic/ChangeLog | 1 + apps/gbmusic/metadata.json | 2 +- apps/gbmusic/settings.js | 3 --- apps/gbridge/ChangeLog | 1 + apps/gbridge/metadata.json | 2 +- apps/gbridge/settings.js | 2 -- apps/gpsautotime/ChangeLog | 1 + apps/gpsautotime/metadata.json | 2 +- apps/gpsautotime/settings.js | 5 ++--- apps/gpsrec/ChangeLog | 1 + apps/gpsrec/app.js | 1 - apps/gpsrec/metadata.json | 2 +- apps/hardalarm/ChangeLog | 1 + apps/hardalarm/app.js | 3 --- apps/hardalarm/metadata.json | 2 +- apps/heart/ChangeLog | 5 +++-- apps/heart/app.js | 1 - apps/heart/metadata.json | 2 +- apps/hralarm/ChangeLog | 1 + apps/hralarm/metadata.json | 2 +- apps/hralarm/settings.js | 1 - apps/hworldclock/ChangeLog | 3 ++- apps/hworldclock/metadata.json | 2 +- apps/hworldclock/settings.js | 9 --------- apps/iconlaunch/ChangeLog | 3 ++- apps/iconlaunch/metadata.json | 2 +- apps/iconlaunch/settings.js | 4 ---- apps/imageclock/ChangeLog | 1 + apps/imageclock/metadata.json | 2 +- apps/imageclock/settings.js | 1 - apps/kbmulti/ChangeLog | 1 + apps/kbmulti/metadata.json | 2 +- apps/kbmulti/settings.js | 1 - apps/largeclock/ChangeLog | 1 + apps/largeclock/metadata.json | 2 +- apps/largeclock/settings.js | 1 - apps/launch/ChangeLog | 1 + apps/launch/metadata.json | 2 +- apps/launch/settings.js | 2 -- apps/messages/ChangeLog | 2 +- apps/messages/metadata.json | 2 +- apps/messages/settings.js | 4 ---- apps/multitimer/ChangeLog | 1 + apps/multitimer/app.js | 7 ------- apps/multitimer/metadata.json | 2 +- apps/noteify/ChangeLog | 1 + apps/noteify/app.js | 5 ----- apps/noteify/metadata.json | 2 +- apps/openwind/ChangeLog | 1 + apps/openwind/metadata.json | 2 +- apps/openwind/settings.js | 2 -- apps/pastel/ChangeLog | 1 + apps/pastel/metadata.json | 2 +- apps/pastel/pastel.settings.js | 3 --- apps/planetarium/ChangeLog | 3 ++- apps/planetarium/metadata.json | 2 +- apps/planetarium/settings.js | 3 --- apps/pongclock/ChangeLog | 1 + apps/pongclock/metadata.json | 2 +- apps/pongclock/settings.js | 10 ++++------ apps/powermanager/ChangeLog | 1 + apps/powermanager/metadata.json | 2 +- apps/powermanager/settings.js | 2 -- apps/qalarm/ChangeLog | 1 + apps/qalarm/app.js | 7 ------- apps/qalarm/metadata.json | 2 +- apps/qmsched/ChangeLog | 3 ++- apps/qmsched/app.js | 1 - apps/qmsched/metadata.json | 2 +- apps/recorder/ChangeLog | 1 + apps/recorder/app.js | 2 -- apps/recorder/metadata.json | 2 +- apps/run/settings.js | 1 - apps/sensible/ChangeLog | 3 ++- apps/sensible/metadata.json | 2 +- apps/sensible/sensible.js | 4 ---- apps/smclock/ChangeLog | 1 + apps/smclock/metadata.json | 2 +- apps/smclock/settings.js | 3 --- apps/sonicclk/Changelog | 11 ++++++----- apps/sonicclk/app.js | 1 - apps/sonicclk/metadata.json | 2 +- apps/speedalt/ChangeLog | 1 + apps/speedalt/metadata.json | 2 +- apps/speedalt/settings.js | 9 +-------- apps/speedalt2/ChangeLog | 13 +++++++------ apps/speedalt2/metadata.json | 2 +- apps/speedalt2/settings.js | 3 --- apps/timerclk/ChangeLog | 1 + apps/timerclk/metadata.json | 2 +- apps/timerclk/settings.js | 5 ----- apps/toucher/ChangeLog | 1 + apps/toucher/metadata.json | 2 +- apps/toucher/settings.js | 2 -- apps/touchtimer/ChangeLog | 1 + apps/touchtimer/metadata.json | 2 +- apps/touchtimer/settings.js | 1 - apps/widadjust/ChangeLog | 2 ++ apps/widadjust/metadata.json | 2 +- apps/widadjust/settings.js | 16 +++++----------- apps/widbatwarn/ChangeLog | 1 + apps/widbatwarn/metadata.json | 2 +- apps/widbatwarn/settings.js | 6 ++---- apps/widmp/ChangeLog | 1 + apps/widmp/metadata.json | 2 +- apps/widmp/settings.js | 1 - 150 files changed, 141 insertions(+), 236 deletions(-) create mode 100644 apps/widadjust/ChangeLog diff --git a/apps/activityreminder/ChangeLog b/apps/activityreminder/ChangeLog index da897b899..37820dce6 100644 --- a/apps/activityreminder/ChangeLog +++ b/apps/activityreminder/ChangeLog @@ -4,4 +4,5 @@ 0.04: Obey system quiet mode 0.05: Battery optimisation, add the pause option, bug fixes 0.06: Add a temperature threshold to detect (and not alert) if the BJS isn't worn. Better support for the peoples using the app at night -0.07: Fix bug on the cutting edge firmware \ No newline at end of file +0.07: Fix bug on the cutting edge firmware +0.08: Use default Bangle formatter for booleans diff --git a/apps/activityreminder/metadata.json b/apps/activityreminder/metadata.json index fb9423e7c..75ebf80b2 100644 --- a/apps/activityreminder/metadata.json +++ b/apps/activityreminder/metadata.json @@ -3,7 +3,7 @@ "name": "Activity Reminder", "shortName":"Activity Reminder", "description": "A reminder to take short walks for the ones with a sedentary lifestyle", - "version":"0.07", + "version":"0.08", "icon": "app.png", "type": "app", "tags": "tool,activity", diff --git a/apps/activityreminder/settings.js b/apps/activityreminder/settings.js index ce7cdc913..de490b796 100644 --- a/apps/activityreminder/settings.js +++ b/apps/activityreminder/settings.js @@ -9,7 +9,6 @@ "< Back": () => back(), 'Enable': { value: settings.enabled, - format: v => v ? "Yes" : "No", onchange: v => { settings.enabled = v; activityreminder.writeSettings(settings); @@ -38,9 +37,7 @@ settings.maxInnactivityMin = v; activityreminder.writeSettings(settings); }, - format: x => { - return x + " min"; - } + format: x => x + "m" }, 'Dismiss delay': { value: settings.dismissDelayMin, @@ -49,9 +46,7 @@ settings.dismissDelayMin = v; activityreminder.writeSettings(settings); }, - format: x => { - return x + " min"; - } + format: x => x + "m" }, 'Pause delay': { value: settings.pauseDelayMin, @@ -61,7 +56,7 @@ activityreminder.writeSettings(settings); }, format: x => { - return x + " min"; + return x + "m"; } }, 'Min steps': { diff --git a/apps/android/ChangeLog b/apps/android/ChangeLog index f13ccd95c..ee927c752 100644 --- a/apps/android/ChangeLog +++ b/apps/android/ChangeLog @@ -9,3 +9,4 @@ 0.08: Handling of alarms 0.09: Alarm vibration, repeat, and auto-snooze now handled by sched 0.10: Fix SMS bug +0.11: Use default Bangle formatter for booleans diff --git a/apps/android/metadata.json b/apps/android/metadata.json index 27b77cf2f..ec8b8b0fe 100644 --- a/apps/android/metadata.json +++ b/apps/android/metadata.json @@ -2,7 +2,7 @@ "id": "android", "name": "Android Integration", "shortName": "Android", - "version": "0.11", + "version": "0.12", "description": "Display notifications/music/etc sent from the Gadgetbridge app on Android. This replaces the old 'Gadgetbridge' Bangle.js widget.", "icon": "app.png", "tags": "tool,system,messages,notifications,gadgetbridge", diff --git a/apps/android/settings.js b/apps/android/settings.js index 695d483c6..c7c34a76f 100644 --- a/apps/android/settings.js +++ b/apps/android/settings.js @@ -18,7 +18,6 @@ }), /*LANG*/"Keep Msgs" : { value : !!settings.keep, - format : v=>v?/*LANG*/"Yes":/*LANG*/"No", onchange: v => { settings.keep = v; updateSettings(); diff --git a/apps/antonclk/ChangeLog b/apps/antonclk/ChangeLog index 73a63f7c7..f7e95b5fa 100644 --- a/apps/antonclk/ChangeLog +++ b/apps/antonclk/ChangeLog @@ -9,4 +9,5 @@ when weekday name and calendar weeknumber are on then display is # week is buffered until date or timezone changes 0.07: align default settings with app.js (otherwise the initial displayed settings will be confusing to users) -0.08: fixed calendar weeknumber not shortened to two digits \ No newline at end of file +0.08: fixed calendar weeknumber not shortened to two digits +0.09: Use default Bangle formatter for booleans \ No newline at end of file diff --git a/apps/antonclk/metadata.json b/apps/antonclk/metadata.json index c58ee2a1b..16bdf3aa8 100644 --- a/apps/antonclk/metadata.json +++ b/apps/antonclk/metadata.json @@ -1,7 +1,7 @@ { "id": "antonclk", "name": "Anton Clock", - "version": "0.08", + "version": "0.09", "description": "A clock using the bold Anton font, optionally showing seconds and date in ISO-8601 format.", "readme":"README.md", "icon": "app.png", diff --git a/apps/antonclk/settings.js b/apps/antonclk/settings.js index 6882cbd0f..4448c00ed 100644 --- a/apps/antonclk/settings.js +++ b/apps/antonclk/settings.js @@ -2,7 +2,6 @@ (function(back) { var FILE = "antonclk.json"; - // Load settings var settings = Object.assign({ secondsOnUnlock: false, }, require('Storage').readJSON(FILE, true) || {}); @@ -41,7 +40,6 @@ "Date": stringInSettings("dateOnMain", ["Long", "Short", "ISO8601"]), "Show Weekday": { value: (settings.weekDay !== undefined ? settings.weekDay : true), - format: v => v ? "On" : "Off", onchange: v => { settings.weekDay = v; writeSettings(); @@ -49,7 +47,6 @@ }, "Show CalWeek": { value: (settings.calWeek !== undefined ? settings.calWeek : false), - format: v => v ? "On" : "Off", onchange: v => { settings.calWeek = v; writeSettings(); @@ -57,7 +54,6 @@ }, "Uppercase": { value: (settings.upperCase !== undefined ? settings.upperCase : true), - format: v => v ? "On" : "Off", onchange: v => { settings.upperCase = v; writeSettings(); @@ -65,7 +61,6 @@ }, "Vector font": { value: (settings.vectorFont !== undefined ? settings.vectorFont : false), - format: v => v ? "On" : "Off", onchange: v => { settings.vectorFont = v; writeSettings(); @@ -82,7 +77,6 @@ "Show": stringInSettings("secondsMode", ["Never", "Unlocked", "Always"]), "With \":\"": { value: (settings.secondsWithColon !== undefined ? settings.secondsWithColon : true), - format: v => v ? "On" : "Off", onchange: v => { settings.secondsWithColon = v; writeSettings(); @@ -90,7 +84,6 @@ }, "Color": { value: (settings.secondsColoured !== undefined ? settings.secondsColoured : true), - format: v => v ? "On" : "Off", onchange: v => { settings.secondsColoured = v; writeSettings(); @@ -99,9 +92,6 @@ "Date": stringInSettings("dateOnSecs", ["Year", "Weekday", "No"]) }; - // Actually display the menu E.showMenu(mainmenu); }); - -// end of file diff --git a/apps/bikespeedo/ChangeLog b/apps/bikespeedo/ChangeLog index 2a3023750..10752ee2b 100644 --- a/apps/bikespeedo/ChangeLog +++ b/apps/bikespeedo/ChangeLog @@ -1,2 +1,3 @@ 0.01: New App! 0.02: Barometer altitude adjustment setting +0.03: Use default Bangle formatter for booleans diff --git a/apps/bikespeedo/metadata.json b/apps/bikespeedo/metadata.json index c3de0487c..80b91427c 100644 --- a/apps/bikespeedo/metadata.json +++ b/apps/bikespeedo/metadata.json @@ -2,7 +2,7 @@ "id": "bikespeedo", "name": "Bike Speedometer (beta)", "shortName": "Bike Speedometer", - "version": "0.02", + "version": "0.03", "description": "Shows GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude from internal sources", "icon": "app.png", "screenshots": [{"url":"Screenshot.png"}], diff --git a/apps/bikespeedo/settings.js b/apps/bikespeedo/settings.js index a3921f4a3..f41524263 100644 --- a/apps/bikespeedo/settings.js +++ b/apps/bikespeedo/settings.js @@ -33,12 +33,10 @@ '< Back': function() { E.showMenu(appMenu); }, 'Speed' : { value : settings.spdFilt, - format : v => v?"On":"Off", onchange : () => { settings.spdFilt = !settings.spdFilt; writeSettings(); } }, 'Altitude' : { value : settings.altFilt, - format : v => v?"On":"Off", onchange : () => { settings.altFilt = !settings.altFilt; writeSettings(); } } }; diff --git a/apps/bthrm/ChangeLog b/apps/bthrm/ChangeLog index 7ca8319b6..00ed856d6 100644 --- a/apps/bthrm/ChangeLog +++ b/apps/bthrm/ChangeLog @@ -22,3 +22,4 @@ Restructure the settings menu 0.08: Allow scanning for devices in settings 0.09: Misc Fixes and improvements (https://github.com/espruino/BangleApps/pull/1655) +0.10: Use default Bangle formatter for booleans diff --git a/apps/bthrm/metadata.json b/apps/bthrm/metadata.json index 39c1ff8bb..9e40896f0 100644 --- a/apps/bthrm/metadata.json +++ b/apps/bthrm/metadata.json @@ -2,7 +2,7 @@ "id": "bthrm", "name": "Bluetooth Heart Rate Monitor", "shortName": "BT HRM", - "version": "0.09", + "version": "0.10", "description": "Overrides Bangle.js's build in heart rate monitor with an external Bluetooth one.", "icon": "app.png", "type": "app", diff --git a/apps/bthrm/settings.js b/apps/bthrm/settings.js index b376d6a2d..8887ee81e 100644 --- a/apps/bthrm/settings.js +++ b/apps/bthrm/settings.js @@ -85,14 +85,12 @@ '< Back': function() { E.showMenu(buildMainMenu()); }, 'Alert on disconnect': { value: !!settings.warnDisconnect, - format: v => settings.warnDisconnect ? "On" : "Off", onchange: v => { writeSettings("warnDisconnect",v); } }, 'Debug log': { value: !!settings.debuglog, - format: v => settings.debuglog ? "On" : "Off", onchange: v => { writeSettings("debuglog",v); } diff --git a/apps/calendar/ChangeLog b/apps/calendar/ChangeLog index 873f90de6..0583ea45f 100644 --- a/apps/calendar/ChangeLog +++ b/apps/calendar/ChangeLog @@ -8,3 +8,4 @@ 0.08: Do not register as watch, manually start clock on button read start of week from system settings 0.09: Fix scope of let variables +0.10: Use default Bangle formatter for booleans diff --git a/apps/calendar/metadata.json b/apps/calendar/metadata.json index 65a54c097..48fd52d3e 100644 --- a/apps/calendar/metadata.json +++ b/apps/calendar/metadata.json @@ -1,7 +1,7 @@ { "id": "calendar", "name": "Calendar", - "version": "0.09", + "version": "0.10", "description": "Simple calendar", "icon": "calendar.png", "screenshots": [{"url":"screenshot_calendar.png"}], diff --git a/apps/calendar/settings.js b/apps/calendar/settings.js index 192d2ece0..54ed50a64 100644 --- a/apps/calendar/settings.js +++ b/apps/calendar/settings.js @@ -17,7 +17,6 @@ "< Back": () => back(), 'B2 Colors': { value: settings.ndColors, - format: v => v ? "Yes" : "No", onchange: v => { settings.ndColors = v; writeSettings(); diff --git a/apps/calibration/ChangeLog b/apps/calibration/ChangeLog index 0e22605af..64bff2b31 100644 --- a/apps/calibration/ChangeLog +++ b/apps/calibration/ChangeLog @@ -1,2 +1,3 @@ -1.00: New App! -1.01: Use fractional numbers and scale the points to keep working consistently on whole screen +0.01: New App! +0.02: Use fractional numbers and scale the points to keep working consistently on whole screen +0.03: Use default Bangle formatter for booleans diff --git a/apps/calibration/metadata.json b/apps/calibration/metadata.json index b7a719e1c..b60650300 100644 --- a/apps/calibration/metadata.json +++ b/apps/calibration/metadata.json @@ -2,7 +2,7 @@ "name": "Touchscreen Calibration", "shortName":"Calibration", "icon": "calibration.png", - "version":"1.01", + "version":"0.03", "description": "A simple calibration app for the touchscreen", "supports": ["BANGLEJS","BANGLEJS2"], "readme": "README.md", diff --git a/apps/calibration/settings.js b/apps/calibration/settings.js index 6db8dd3bb..08c728d96 100644 --- a/apps/calibration/settings.js +++ b/apps/calibration/settings.js @@ -13,7 +13,6 @@ "< Back" : () => back(), 'Active': { value: !!settings.active, - format: v => v? "On":"Off", onchange: v => { settings.active = v; writeSettings(); diff --git a/apps/chronowid/ChangeLog b/apps/chronowid/ChangeLog index ed230b737..08a9ac828 100644 --- a/apps/chronowid/ChangeLog +++ b/apps/chronowid/ChangeLog @@ -4,3 +4,4 @@ 0.04: Change to 7 segment font, move to top widget bar Better auto-update behaviour, less RAM used 0.05: Fix error running app on new firmwares (fix #1140) +0.06: Use default Bangle formatter for booleans diff --git a/apps/chronowid/app.js b/apps/chronowid/app.js index ab363ed17..b0ee7625a 100644 --- a/apps/chronowid/app.js +++ b/apps/chronowid/app.js @@ -79,7 +79,6 @@ function showMenu() { }, 'Timer on': { value: settingsChronowid.started, - format: v => v ? "On" : "Off", onchange: v => { settingsChronowid.started = v; updateSettings(); diff --git a/apps/chronowid/metadata.json b/apps/chronowid/metadata.json index 7cb32709f..69a5d3a2e 100644 --- a/apps/chronowid/metadata.json +++ b/apps/chronowid/metadata.json @@ -2,7 +2,7 @@ "id": "chronowid", "name": "Chrono Widget", "shortName": "Chrono Widget", - "version": "0.05", + "version": "0.06", "description": "Chronometer (timer) which runs as widget.", "icon": "app.png", "tags": "tool,widget", diff --git a/apps/clockcal/ChangeLog b/apps/clockcal/ChangeLog index 8b40a87ac..20a46b5b7 100644 --- a/apps/clockcal/ChangeLog +++ b/apps/clockcal/ChangeLog @@ -1,3 +1,4 @@ 0.01: Initial upload 0.02: Added scrollable calendar and swipe gestures 0.03: Configurable drag gestures +0.04: Use default Bangle formatter for booleans diff --git a/apps/clockcal/metadata.json b/apps/clockcal/metadata.json index 3998215d7..6d547a7a3 100644 --- a/apps/clockcal/metadata.json +++ b/apps/clockcal/metadata.json @@ -1,7 +1,7 @@ { "id": "clockcal", "name": "Clock & Calendar", - "version": "0.03", + "version": "0.04", "description": "Clock with Calendar", "readme":"README.md", "icon": "app.png", diff --git a/apps/clockcal/settings.js b/apps/clockcal/settings.js index abedad99b..d4cc4df68 100644 --- a/apps/clockcal/settings.js +++ b/apps/clockcal/settings.js @@ -26,7 +26,6 @@ "< Back": () => back(), 'Buzz(dis)conn.?': { value: settings.BUZZ_ON_BT, - format: v => v ? "On" : "Off", onchange: v => { settings.BUZZ_ON_BT = v; writeSettings(); @@ -59,7 +58,6 @@ }, 'Red Saturday?': { value: settings.REDSAT, - format: v => v ? "On" : "Off", onchange: v => { settings.REDSAT = v; writeSettings(); @@ -67,7 +65,6 @@ }, 'Red Sunday?': { value: settings.REDSUN, - format: v => v ? "On" : "Off", onchange: v => { settings.REDSUN = v; writeSettings(); diff --git a/apps/coretemp/ChangeLog b/apps/coretemp/ChangeLog index ad6f0742d..7386bbc35 100644 --- a/apps/coretemp/ChangeLog +++ b/apps/coretemp/ChangeLog @@ -1,3 +1,4 @@ 0.01: New app 0.02: Cleanup interface and add settings, widget, add skin temp reporting. 0.03: Move code for recording to this app +0.04: Use default Bangle formatter for booleans diff --git a/apps/coretemp/metadata.json b/apps/coretemp/metadata.json index cb12624ae..87cb42722 100644 --- a/apps/coretemp/metadata.json +++ b/apps/coretemp/metadata.json @@ -1,7 +1,7 @@ { "id": "coretemp", "name": "CoreTemp", - "version": "0.03", + "version": "0.04", "description": "Display CoreTemp device sensor data", "icon": "coretemp.png", "type": "app", diff --git a/apps/coretemp/settings.js b/apps/coretemp/settings.js index 3fc2dfbf2..23ea09167 100644 --- a/apps/coretemp/settings.js +++ b/apps/coretemp/settings.js @@ -35,7 +35,6 @@ const menu = { '< Back' : back, 'Enabled' : { value : !!s.enabled, - format : v => v ? "Yes" : "No", onchange : v => { s.enabled = v; updateSettings(); diff --git a/apps/daisy/ChangeLog b/apps/daisy/ChangeLog index d5844c62b..829ff3d13 100644 --- a/apps/daisy/ChangeLog +++ b/apps/daisy/ChangeLog @@ -4,3 +4,4 @@ 0.04: added heart rate which is switched on when cycled to it through up/down touch on rhs 0.05: changed text to uppercase, just looks better, removed colons on text 0.06: better contrast for light theme, use fg color instead of dithered for ring +0.07: Use default Bangle formatter for booleans diff --git a/apps/daisy/metadata.json b/apps/daisy/metadata.json index 5073db603..802ba6834 100644 --- a/apps/daisy/metadata.json +++ b/apps/daisy/metadata.json @@ -1,6 +1,6 @@ { "id": "daisy", "name": "Daisy", - "version":"0.06", + "version":"0.07", "dependencies": {"mylocation":"app"}, "description": "A beautiful digital clock with large ring guage, idle timer and a cyclic information line that includes, day, date, steps, battery, sunrise and sunset times", "icon": "app.png", diff --git a/apps/daisy/settings.js b/apps/daisy/settings.js index 044eee0d1..6397a81f4 100644 --- a/apps/daisy/settings.js +++ b/apps/daisy/settings.js @@ -41,7 +41,6 @@ }, 'Idle Warning': { value: !!s.idle_check, - format: v => v ? /*LANG*/"Yes":/*LANG*/"No", onchange: v => { s.idle_check = v; save(); diff --git a/apps/dane_tcr/ChangeLog b/apps/dane_tcr/ChangeLog index 4f6fe2edc..69424b1f4 100644 --- a/apps/dane_tcr/ChangeLog +++ b/apps/dane_tcr/ChangeLog @@ -4,4 +4,5 @@ 0.04: Move code to Arwes Module 0.05: Add icon 0.06: remove app image as it is unused -0.07: Bump version number for change to apps.json causing 404 on upload \ No newline at end of file +0.07: Bump version number for change to apps.json causing 404 on upload +0.08: Use default Bangle formatter for booleans diff --git a/apps/dane_tcr/metadata.json b/apps/dane_tcr/metadata.json index 817d0c59b..5527c846d 100644 --- a/apps/dane_tcr/metadata.json +++ b/apps/dane_tcr/metadata.json @@ -2,7 +2,7 @@ "id": "dane_tcr", "name": "DANE Touch Launcher", "shortName": "DANE Toucher", - "version": "0.07", + "version": "0.08", "description": "Touch enable left to right launcher in the style of the DANE Watchface", "icon": "app.png", "type": "launch", diff --git a/apps/dane_tcr/settings.js b/apps/dane_tcr/settings.js index 9d28d1b30..46988ec26 100644 --- a/apps/dane_tcr/settings.js +++ b/apps/dane_tcr/settings.js @@ -41,7 +41,6 @@ }, "Animation" : { value : settings.animation, - format : v => v?"On":"Off", onchange : saveChange('animation') }, "Frame rate" : { @@ -51,7 +50,6 @@ }, "Debug" : { value : settings.debug, - format : v => v?"On":"Off", onchange : saveChange('debug') }, '< Back': back diff --git a/apps/dtlaunch/ChangeLog b/apps/dtlaunch/ChangeLog index a360e4875..16c550334 100644 --- a/apps/dtlaunch/ChangeLog +++ b/apps/dtlaunch/ChangeLog @@ -13,3 +13,4 @@ 0.13: Added swipeExit setting so that left-right to exit is an option 0.14: Don't move pages when doing exit swipe - Bangle 2. 0.15: 'Swipe to exit'-code is slightly altered to be more reliable - Bangle 2. +0.16: Use default Bangle formatter for booleans diff --git a/apps/dtlaunch/metadata.json b/apps/dtlaunch/metadata.json index 9711a6964..36728f342 100644 --- a/apps/dtlaunch/metadata.json +++ b/apps/dtlaunch/metadata.json @@ -1,7 +1,7 @@ { "id": "dtlaunch", "name": "Desktop Launcher", - "version": "0.15", + "version": "0.16", "description": "Desktop style App Launcher with six (four for Bangle 2) apps per page - fast access if you have lots of apps installed.", "screenshots": [{"url":"shot1.png"},{"url":"shot2.png"},{"url":"shot3.png"}], "icon": "icon.png", diff --git a/apps/dtlaunch/settings-b1.js b/apps/dtlaunch/settings-b1.js index f3101da16..fe5546edb 100644 --- a/apps/dtlaunch/settings-b1.js +++ b/apps/dtlaunch/settings-b1.js @@ -15,7 +15,6 @@ "< Back" : () => back(), 'Show clocks': { value: settings.showClocks, - format: v => v?"On":"Off", onchange: v => { settings.showClocks = v; writeSettings(); @@ -23,7 +22,6 @@ }, 'Show launchers': { value: settings.showLaunchers, - format: v => v?"On":"Off", onchange: v => { settings.showLaunchers = v; writeSettings(); diff --git a/apps/dtlaunch/settings-b2.js b/apps/dtlaunch/settings-b2.js index 7ead63be0..fac9c0fff 100644 --- a/apps/dtlaunch/settings-b2.js +++ b/apps/dtlaunch/settings-b2.js @@ -18,7 +18,6 @@ "< Back" : () => back(), 'Show clocks': { value: settings.showClocks, - format: v => v?"On":"Off", onchange: v => { settings.showClocks = v; writeSettings(); @@ -26,7 +25,6 @@ }, 'Show launchers': { value: settings.showLaunchers, - format: v => v?"On":"Off", onchange: v => { settings.showLaunchers = v; writeSettings(); @@ -34,7 +32,6 @@ }, 'Direct launch': { value: settings.direct, - format: v => v?"On":"Off", onchange: v => { settings.direct = v; writeSettings(); @@ -42,7 +39,6 @@ }, 'Swipe Exit': { value: settings.swipeExit, - format: v => v?"On":"Off", onchange: v => { settings.swipeExit = v; writeSettings(); @@ -50,7 +46,6 @@ }, 'One click exit': { value: settings.oneClickExit, - format: v => v?"On":"Off", onchange: v => { settings.oneClickExit = v; writeSettings(); diff --git a/apps/files/files.js b/apps/files/files.js index e7b42c101..e81e9589f 100644 --- a/apps/files/files.js +++ b/apps/files/files.js @@ -1,7 +1,5 @@ const store = require('Storage'); -const boolFormat = (v) => v ? "On" : "Off"; - function showMainMenu() { const mainmenu = { '': { diff --git a/apps/game1024/ChangeLog b/apps/game1024/ChangeLog index 800fa6b9d..df36b6456 100644 --- a/apps/game1024/ChangeLog +++ b/apps/game1024/ChangeLog @@ -8,3 +8,4 @@ 0.08: Bug fix at end of the game with victorious splash and glorious orchestra 0.09: Added settings menu, removed symbol selection button (*), added highscore reset 0.10: fixed clockmode in settings +0.11: Use default Bangle formatter for booleans diff --git a/apps/game1024/metadata.json b/apps/game1024/metadata.json index 728b5dc0e..f3b72aad3 100644 --- a/apps/game1024/metadata.json +++ b/apps/game1024/metadata.json @@ -1,7 +1,7 @@ { "id": "game1024", "name": "1024 Game", "shortName" : "1024 Game", - "version": "0.10", + "version": "0.11", "icon": "game1024.png", "screenshots": [ {"url":"screenshot.png" } ], "readme":"README.md", diff --git a/apps/game1024/settings.js b/apps/game1024/settings.js index 24a972600..b52e060b1 100644 --- a/apps/game1024/settings.js +++ b/apps/game1024/settings.js @@ -32,7 +32,7 @@ } }, "Exit press:": { - value: !settings.clockMode, // ! converts undefined to true + value: !settings.clockMode, format: v => v?"short":"long", onchange: v => { settings.clockMode = v; @@ -40,8 +40,7 @@ }, }, "Debug mode:": { - value: !!settings.debugMode, // !! converts undefined to false - format: v => v?"On":"Off", + value: !!settings.debugMode, onchange: v => { settings.debugMode = v; writeSettings(); diff --git a/apps/gbmusic/ChangeLog b/apps/gbmusic/ChangeLog index e2ee53ede..d8379b317 100644 --- a/apps/gbmusic/ChangeLog +++ b/apps/gbmusic/ChangeLog @@ -9,3 +9,4 @@ 0.09: Move event listener from widget to boot code, stops music from showing up in messages 0.10: Simplify touch events Remove date+time +0.11: Use default Bangle formatter for booleans diff --git a/apps/gbmusic/metadata.json b/apps/gbmusic/metadata.json index 0ded80452..bbe2a158d 100644 --- a/apps/gbmusic/metadata.json +++ b/apps/gbmusic/metadata.json @@ -2,7 +2,7 @@ "id": "gbmusic", "name": "Gadgetbridge Music Controls", "shortName": "Music Controls", - "version": "0.10", + "version": "0.11", "description": "Control the music on your Gadgetbridge-connected phone", "icon": "icon.png", "screenshots": [{"url":"screenshot_v1_d.png"},{"url":"screenshot_v1_l.png"}, diff --git a/apps/gbmusic/settings.js b/apps/gbmusic/settings.js index ae013fda5..6619eab1c 100644 --- a/apps/gbmusic/settings.js +++ b/apps/gbmusic/settings.js @@ -25,19 +25,16 @@ } } - const yesNo = (v) => translate(v ? "Yes" : "No"); let menu = { "": {"title": "Music Control"}, }; menu[translate("< Back")] = back; menu[translate("Auto start")] = { value: !!s.autoStart, - format: yesNo, onchange: save("autoStart"), }; menu[translate("Simple button")] = { value: !!s.simpleButton, - format: yesNo, onchange: save("simpleButton"), }; diff --git a/apps/gbridge/ChangeLog b/apps/gbridge/ChangeLog index 059767ece..f707ffb94 100644 --- a/apps/gbridge/ChangeLog +++ b/apps/gbridge/ChangeLog @@ -27,3 +27,4 @@ 0.25: workaround call notification Fix inflated step number 0.26: Include charging status in battery updates to phone +0.27: Use default Bangle formatter for booleans diff --git a/apps/gbridge/metadata.json b/apps/gbridge/metadata.json index db7119758..e6130b06b 100644 --- a/apps/gbridge/metadata.json +++ b/apps/gbridge/metadata.json @@ -1,7 +1,7 @@ { "id": "gbridge", "name": "Gadgetbridge", - "version": "0.26", + "version": "0.27", "description": "(NOT RECOMMENDED) Displays Gadgetbridge notifications from Android. Please use the 'Android Integration' Bangle.js app instead.", "icon": "app.png", "type": "widget", diff --git a/apps/gbridge/settings.js b/apps/gbridge/settings.js index f9c7cde90..cf6c84c73 100644 --- a/apps/gbridge/settings.js +++ b/apps/gbridge/settings.js @@ -27,13 +27,11 @@ "Connected" : { value : NRF.getSecurityStatus().connected?"Yes":"No" }, "Show Icon" : { value: settings().showIcon, - format: v => v?"Yes":"No", onchange: setIcon }, "Find Phone" : function() { E.showMenu(findPhone); }, "Record HRM" : { value: !!settings().hrm, - format: v => v?"Yes":"No", onchange: v => updateSetting('hrm', v) } }; diff --git a/apps/gpsautotime/ChangeLog b/apps/gpsautotime/ChangeLog index 97b80ecdf..de7af4fc7 100644 --- a/apps/gpsautotime/ChangeLog +++ b/apps/gpsautotime/ChangeLog @@ -1,3 +1,4 @@ 0.01: New App! 0.02: Set Bangle.js 2 compatible 0.03: Add setting to hide the widget +0.04: Use default Bangle formatter for booleans diff --git a/apps/gpsautotime/metadata.json b/apps/gpsautotime/metadata.json index 217a27931..c852c6a3e 100644 --- a/apps/gpsautotime/metadata.json +++ b/apps/gpsautotime/metadata.json @@ -2,7 +2,7 @@ "id": "gpsautotime", "name": "GPS auto time", "shortName": "GPS auto time", - "version": "0.03", + "version": "0.04", "description": "A widget that automatically updates the Bangle.js time to the GPS time whenever there is a valid GPS fix.", "icon": "widget.png", "type": "widget", diff --git a/apps/gpsautotime/settings.js b/apps/gpsautotime/settings.js index dbdd121d1..be6e3bbec 100644 --- a/apps/gpsautotime/settings.js +++ b/apps/gpsautotime/settings.js @@ -13,9 +13,8 @@ E.showMenu({ "" : { "title" : "GPS auto time" }, "< Back" : () => back(), - 'Show widget?': { - value: !!settings.show, // !! converts undefined to false - format: v => v?"Show":"Hide", + 'Show Widgets': { + value: !!settings.show, onchange: v => { settings.show = v; writeSettings(); diff --git a/apps/gpsrec/ChangeLog b/apps/gpsrec/ChangeLog index f923739f0..5867140fb 100644 --- a/apps/gpsrec/ChangeLog +++ b/apps/gpsrec/ChangeLog @@ -30,3 +30,4 @@ 0.26: Multiple bugfixes 0.27: Map drawing with light theme (fix #1023) 0.28: Show distance more accurately in conjunction with new locale app (fix #1523) +0.29: Use default Bangle formatter for booleans diff --git a/apps/gpsrec/app.js b/apps/gpsrec/app.js index 4595f616d..acd5433b2 100644 --- a/apps/gpsrec/app.js +++ b/apps/gpsrec/app.js @@ -22,7 +22,6 @@ function showMainMenu() { '': { 'title': 'GPS Record' }, 'RECORD': { value: !!settings.recording, - format: v=>v?"On":"Off", onchange: v => { settings.recording = v; updateSettings(); diff --git a/apps/gpsrec/metadata.json b/apps/gpsrec/metadata.json index c870157df..192b05edf 100644 --- a/apps/gpsrec/metadata.json +++ b/apps/gpsrec/metadata.json @@ -1,7 +1,7 @@ { "id": "gpsrec", "name": "GPS Recorder", - "version": "0.28", + "version": "0.29", "description": "(NOT RECOMMENDED) - please use the more flexible 'Recorder' app instead. Application that allows you to record a GPS track. Can run in background", "icon": "app.png", "tags": "tool,outdoors,gps,widget", diff --git a/apps/hardalarm/ChangeLog b/apps/hardalarm/ChangeLog index dac7d317e..fea8770fc 100644 --- a/apps/hardalarm/ChangeLog +++ b/apps/hardalarm/ChangeLog @@ -1,3 +1,4 @@ 0.01: Add a number to match to turn off alarm 0.02: Respect Quiet Mode 0.03: Fix hour/minute wrapping code for new menu system +0.04: Use default Bangle formatter for booleans diff --git a/apps/hardalarm/app.js b/apps/hardalarm/app.js index 0c72a2c8f..0aa33b21b 100644 --- a/apps/hardalarm/app.js +++ b/apps/hardalarm/app.js @@ -66,17 +66,14 @@ function editAlarm(alarmIndex) { }, /*LANG*/'Enabled': { value: en, - format: v=>v?"On":"Off", onchange: v=>en=v }, /*LANG*/'Repeat': { value: en, - format: v=>v?"Yes":"No", onchange: v=>repeat=v }, /*LANG*/'Auto snooze': { value: as, - format: v=>v?"Yes":"No", onchange: v=>as=v } }; diff --git a/apps/hardalarm/metadata.json b/apps/hardalarm/metadata.json index 1dab4501d..df287b426 100644 --- a/apps/hardalarm/metadata.json +++ b/apps/hardalarm/metadata.json @@ -2,7 +2,7 @@ "id": "hardalarm", "name": "Hard Alarm", "shortName": "HardAlarm", - "version": "0.03", + "version": "0.04", "description": "Make sure you wake up! Count to the right number to turn off the alarm", "icon": "app.png", "tags": "tool,alarm,widget", diff --git a/apps/heart/ChangeLog b/apps/heart/ChangeLog index f6fd9793e..fe03575c9 100644 --- a/apps/heart/ChangeLog +++ b/apps/heart/ChangeLog @@ -11,5 +11,6 @@ Reduce memory usage by ~30% Generate scale based on defined minimum and maximum measurement Added background line on 50% to ease estimation of drawn values -0.06: tag HRM power requests to allow this ot work alongside other widgets/apps (fix #799) -0.07: theme support +0.06: Tag HRM power requests to allow this ot work alongside other widgets/apps (fix #799) +0.07: Theme support +0.08: Use default Bangle formatter for booleans diff --git a/apps/heart/app.js b/apps/heart/app.js index 5428ea06b..c10185b5f 100644 --- a/apps/heart/app.js +++ b/apps/heart/app.js @@ -28,7 +28,6 @@ function showMainMenu() { '': { 'title': 'Heart Recorder' }, 'RECORD': { value: !!settings.isRecording, - format: v=>v?"On":"Off", onchange: v => { settings.isRecording = v; updateSettings(); diff --git a/apps/heart/metadata.json b/apps/heart/metadata.json index 6265dbfef..2071bdf08 100644 --- a/apps/heart/metadata.json +++ b/apps/heart/metadata.json @@ -2,7 +2,7 @@ "id": "heart", "name": "Heart Rate Recorder", "shortName": "HRM Record", - "version": "0.07", + "version": "0.08", "description": "Application that allows you to record your heart rate. Can run in background", "icon": "app.png", "tags": "tool,health,widget", diff --git a/apps/hralarm/ChangeLog b/apps/hralarm/ChangeLog index 4c21f3ace..11e79d703 100644 --- a/apps/hralarm/ChangeLog +++ b/apps/hralarm/ChangeLog @@ -1 +1,2 @@ 0.01: New Widget! +0.02: Use default Bangle formatter for booleans diff --git a/apps/hralarm/metadata.json b/apps/hralarm/metadata.json index 1fae68084..4c661b3fc 100644 --- a/apps/hralarm/metadata.json +++ b/apps/hralarm/metadata.json @@ -2,7 +2,7 @@ "id": "hralarm", "name": "Heart rate alarm", "shortName":"HR Alarm", - "version":"0.01", + "version":"0.02", "description": "This invisible widget vibrates whenever the heart rate gets close to the upper limit or goes over or under the configured limits", "icon": "widget.png", "type": "widget", diff --git a/apps/hralarm/settings.js b/apps/hralarm/settings.js index 3158ab8b7..02cdccdaf 100644 --- a/apps/hralarm/settings.js +++ b/apps/hralarm/settings.js @@ -17,7 +17,6 @@ '< Back': back, 'Enabled': { value: !!settings.enabled, - format: v => settings.enabled ? "On" : "Off", onchange: v => { settings.enabled = v; writeSettings(); diff --git a/apps/hworldclock/ChangeLog b/apps/hworldclock/ChangeLog index 72b25a7c6..199393d2a 100644 --- a/apps/hworldclock/ChangeLog +++ b/apps/hworldclock/ChangeLog @@ -4,4 +4,5 @@ 0.18: Code cleanup and major changes with seconds timing. New feature: if watch is locked, seconds get refreshed every 10 seconds. 0.19: Fix PM Hours 0.20: Add theme support -0.21: Add Settings \ No newline at end of file +0.21: Add Settings +0.22: Use default Bangle formatter for booleans diff --git a/apps/hworldclock/metadata.json b/apps/hworldclock/metadata.json index 3d9be3bc7..8f1eb5a3c 100644 --- a/apps/hworldclock/metadata.json +++ b/apps/hworldclock/metadata.json @@ -2,7 +2,7 @@ "id": "hworldclock", "name": "Hanks World Clock", "shortName": "Hanks World Clock", - "version": "0.21", + "version": "0.22", "description": "Current time zone plus up to three others", "allow_emulator":true, "icon": "app.png", diff --git a/apps/hworldclock/settings.js b/apps/hworldclock/settings.js index 60092d21e..26c946b5f 100644 --- a/apps/hworldclock/settings.js +++ b/apps/hworldclock/settings.js @@ -1,8 +1,5 @@ -// Settings menu for the enhanced Anton clock - (function(back) { var FILE = "hworldclock.json"; - // Load settings var settings = Object.assign({ secondsOnUnlock: false, }, require('Storage').readJSON(FILE, true) || {}); @@ -41,7 +38,6 @@ "Color w. dark": stringInSettings("colorWhenDark", ["green", "default"]), "Show SunInfo": { value: (settings.showSunInfo !== undefined ? settings.showSunInfo : true), - format: v => v ? "On" : "Off", onchange: v => { settings.showSunInfo = v; writeSettings(); @@ -49,11 +45,6 @@ } }; - - - // Actually display the menu E.showMenu(mainmenu); }); - -// end of file diff --git a/apps/iconlaunch/ChangeLog b/apps/iconlaunch/ChangeLog index 4a72a9f28..991f15abb 100644 --- a/apps/iconlaunch/ChangeLog +++ b/apps/iconlaunch/ChangeLog @@ -1,2 +1,3 @@ 0.01: Initial release -0.02: implemented "direct launch" and "one click exit" settings \ No newline at end of file +0.02: implemented "direct launch" and "one click exit" settings +0.03: Use default Bangle formatter for booleans diff --git a/apps/iconlaunch/metadata.json b/apps/iconlaunch/metadata.json index 01e447672..2e8b285ad 100644 --- a/apps/iconlaunch/metadata.json +++ b/apps/iconlaunch/metadata.json @@ -2,7 +2,7 @@ "id": "iconlaunch", "name": "Icon Launcher", "shortName" : "Icon launcher", - "version": "0.02", + "version": "0.03", "icon": "app.png", "description": "A launcher inspired by smartphones, with an icon-only scrollable menu.", "tags": "tool,system,launcher", diff --git a/apps/iconlaunch/settings.js b/apps/iconlaunch/settings.js index e9667047c..bd1a4a597 100644 --- a/apps/iconlaunch/settings.js +++ b/apps/iconlaunch/settings.js @@ -15,22 +15,18 @@ /*LANG*/"< Back": back, /*LANG*/"Show Clocks": { value: settings.showClocks == true, - format: v => v ? /*LANG*/"Yes" : /*LANG*/"No", onchange: (m) => { save("showClocks", m) } }, /*LANG*/"Fullscreen": { value: settings.fullscreen == true, - format: v => v ? /*LANG*/"Yes" : /*LANG*/"No", onchange: (m) => { save("fullscreen", m) } }, /*LANG*/"Direct launch": { value: settings.direct == true, - format: v => v ? /*LANG*/"Yes" : /*LANG*/"No", onchange: (m) => { save("direct", m) } }, /*LANG*/"One click exit": { value: settings.oneClickExit == true, - format: v => v ? /*LANG*/"Yes" : /*LANG*/"No", onchange: (m) => { save("oneClickExit", m) } } }; diff --git a/apps/imageclock/ChangeLog b/apps/imageclock/ChangeLog index 5b99b5848..af1b97b3d 100644 --- a/apps/imageclock/ChangeLog +++ b/apps/imageclock/ChangeLog @@ -7,3 +7,4 @@ 0.06: Watchfaces can be refreshed partly 0.07: Allow wrapping drawing in timeouts to get faster reactions Show/Hide widgets with swipe up or down +0.08: Use default Bangle formatter for booleans diff --git a/apps/imageclock/metadata.json b/apps/imageclock/metadata.json index a2594653e..c3ece0184 100644 --- a/apps/imageclock/metadata.json +++ b/apps/imageclock/metadata.json @@ -2,7 +2,7 @@ "id": "imageclock", "name": "Imageclock", "shortName": "Imageclock", - "version": "0.07", + "version": "0.08", "type": "clock", "description": "BETA!!! File formats still subject to change --- This app is a highly customizable watchface. To use it, you need to select a watchface. You can build the watchfaces yourself without programming anything. All you need to do is write some json and create image files.", "icon": "app.png", diff --git a/apps/imageclock/settings.js b/apps/imageclock/settings.js index a86901b9e..a0c1ee9d2 100644 --- a/apps/imageclock/settings.js +++ b/apps/imageclock/settings.js @@ -25,7 +25,6 @@ }, 'Performance log': { value: !!settings.perflog, - format: v => settings.perflog ? "On" : "Off", onchange: v => { settings.perflog = v; writeSettings(); diff --git a/apps/kbmulti/ChangeLog b/apps/kbmulti/ChangeLog index 709aa3203..26647b548 100644 --- a/apps/kbmulti/ChangeLog +++ b/apps/kbmulti/ChangeLog @@ -1,2 +1,3 @@ 0.01: New keyboard 0.02: Introduce setting "Show help button?". Make setting firstLaunch invisible by removing corresponding code from settings.js. Add marker that shows when character selection timeout has run out. Display opened text on launch when editing existing text string. Perfect horizontal alignment of buttons. Tweak help message letter casing. +0.03: Use default Bangle formatter for booleans diff --git a/apps/kbmulti/metadata.json b/apps/kbmulti/metadata.json index 1efdb8847..30ffa6f9e 100644 --- a/apps/kbmulti/metadata.json +++ b/apps/kbmulti/metadata.json @@ -1,6 +1,6 @@ { "id": "kbmulti", "name": "Multitap keyboard", - "version":"0.02", + "version":"0.03", "description": "A library for text input via multitap/T9 style keypad", "icon": "app.png", "type":"textinput", diff --git a/apps/kbmulti/settings.js b/apps/kbmulti/settings.js index 8a66cd8f0..96e72b290 100644 --- a/apps/kbmulti/settings.js +++ b/apps/kbmulti/settings.js @@ -23,7 +23,6 @@ }, /*LANG*/'Show help button?': { value: !!settings().showHelpBtn, - format: v => v?"Yes":"No", onchange: v => updateSetting("showHelpBtn", v) } }; diff --git a/apps/largeclock/ChangeLog b/apps/largeclock/ChangeLog index 8c9b24be9..f35a02c54 100644 --- a/apps/largeclock/ChangeLog +++ b/apps/largeclock/ChangeLog @@ -8,3 +8,4 @@ 0.08: Use Bangle.setUI for button/launcher handling 0.09: fix font size for latest firmwares 0.10: Configure the side text direction based on the wrist on which you wear your watch +0.11: Use default Bangle formatter for booleans diff --git a/apps/largeclock/metadata.json b/apps/largeclock/metadata.json index dde790786..204243089 100644 --- a/apps/largeclock/metadata.json +++ b/apps/largeclock/metadata.json @@ -1,7 +1,7 @@ { "id": "largeclock", "name": "Large Clock", - "version": "0.10", + "version": "0.11", "description": "A readable and informational digital watch, with date, seconds and moon phase", "icon": "largeclock.png", "type": "clock", diff --git a/apps/largeclock/settings.js b/apps/largeclock/settings.js index f996666ab..4ebf842ce 100644 --- a/apps/largeclock/settings.js +++ b/apps/largeclock/settings.js @@ -74,7 +74,6 @@ "BTN3 app": () => showApps("BTN3"), "On right hand": { value: !!settings.right_hand, - format: v=>v?"Yes":"No", onchange: v=>{ settings.right_hand = v; s.writeJSON("largeclock.json", settings); diff --git a/apps/launch/ChangeLog b/apps/launch/ChangeLog index 7248f69c3..44866b9f3 100644 --- a/apps/launch/ChangeLog +++ b/apps/launch/ChangeLog @@ -13,3 +13,4 @@ 0.12: Add an option to hide clocks from the app list (fix #1015) Add /*LANG*/ tags for internationalisation 0.13: Add fullscreen mode +0.14: Use default Bangle formatter for booleans diff --git a/apps/launch/metadata.json b/apps/launch/metadata.json index da76fc4bb..19ca74e73 100644 --- a/apps/launch/metadata.json +++ b/apps/launch/metadata.json @@ -2,7 +2,7 @@ "id": "launch", "name": "Launcher", "shortName": "Launcher", - "version": "0.13", + "version": "0.14", "description": "This is needed to display a menu allowing you to choose your own applications. You can replace this with a customised launcher.", "readme": "README.md", "icon": "app.png", diff --git a/apps/launch/settings.js b/apps/launch/settings.js index 5d37e1c1b..496a6d77e 100644 --- a/apps/launch/settings.js +++ b/apps/launch/settings.js @@ -26,12 +26,10 @@ }, /*LANG*/"Show Clocks": { value: settings.showClocks == true, - format: v => v ? /*LANG*/"Yes" : /*LANG*/"No", onchange: (m) => { save("showClocks", m) } }, /*LANG*/"Fullscreen": { value: settings.fullscreen == true, - format: v => v ? /*LANG*/"Yes" : /*LANG*/"No", onchange: (m) => { save("fullscreen", m) } } }; diff --git a/apps/messages/ChangeLog b/apps/messages/ChangeLog index 4b577e191..77334c54d 100644 --- a/apps/messages/ChangeLog +++ b/apps/messages/ChangeLog @@ -52,4 +52,4 @@ 0.37: Now use the setUI 'back' icon in the top left rather than specific buttons/menu items 0.38: Add telegram foss handling 0.39: Set default color for message icons according to theme - Don't turn on the screen after unread timeout expires (#1873) +0.40: Use default Bangle formatter for booleans diff --git a/apps/messages/metadata.json b/apps/messages/metadata.json index 4bc9f59e4..b30d31705 100644 --- a/apps/messages/metadata.json +++ b/apps/messages/metadata.json @@ -1,7 +1,7 @@ { "id": "messages", "name": "Messages", - "version": "0.39", + "version": "0.40", "description": "App to display notifications from iOS and Gadgetbridge/Android", "icon": "app.png", "type": "app", diff --git a/apps/messages/settings.js b/apps/messages/settings.js index 1b166dcf6..b708213be 100644 --- a/apps/messages/settings.js +++ b/apps/messages/settings.js @@ -40,22 +40,18 @@ }, /*LANG*/'Auto-Open Music': { value: !!settings().openMusic, - format: v => v?/*LANG*/'Yes':/*LANG*/'No', onchange: v => updateSetting("openMusic", v) }, /*LANG*/'Unlock Watch': { value: !!settings().unlockWatch, - format: v => v?/*LANG*/'Yes':/*LANG*/'No', onchange: v => updateSetting("unlockWatch", v) }, /*LANG*/'Flash Icon': { value: !!settings().flash, - format: v => v?/*LANG*/'Yes':/*LANG*/'No', onchange: v => updateSetting("flash", v) }, /*LANG*/'Quiet mode disables auto-open': { value: !!settings().quietNoAutOpn, - format: v => v?/*LANG*/'Yes':/*LANG*/'No', onchange: v => updateSetting("quietNoAutOpn", v) }, }; diff --git a/apps/multitimer/ChangeLog b/apps/multitimer/ChangeLog index 9b60f403a..9a2ab0ff4 100644 --- a/apps/multitimer/ChangeLog +++ b/apps/multitimer/ChangeLog @@ -1,2 +1,3 @@ 0.01: Initial version 0.02: Update for time_utils module +0.03: Use default Bangle formatter for booleans diff --git a/apps/multitimer/app.js b/apps/multitimer/app.js index e5d77d860..8832d1a25 100644 --- a/apps/multitimer/app.js +++ b/apps/multitimer/app.js @@ -267,7 +267,6 @@ function editTimer(idx, a) { }, "Enabled": { value: a.on, - format: v => v ? "On" : "Off", onchange: v => a.on = v }, "Hours": { @@ -293,7 +292,6 @@ function editTimer(idx, a) { }, "Hard Mode": { value: a.data.hm, - format: v => v ? "On" : "Off", onchange: v => a.data.hm = v }, "Vibrate": require("buzz_menu").pattern(a.vibrate, v => a.vibrate = v), @@ -535,7 +533,6 @@ function editDOW(dow, onchange) { var dayOfWeek = require("locale").dow({ getDay: () => i }); menu[dayOfWeek] = { value: !!(dow&(1< v ? "Yes" : "No", onchange: v => v ? dow |= 1< v ? "On" : "Off", onchange: v => a.on = v }, "Hours": { @@ -614,7 +610,6 @@ function editAlarm(idx, a) { }, "Repeat": { value: a.rp, - format: v => v ? "Yes" : "No", onchange: v => a.rp = v }, "Days": { @@ -623,13 +618,11 @@ function editAlarm(idx, a) { }, "Hard Mode": { value: a.data.hm, - format: v => v ? "On" : "Off", onchange: v => a.data.hm = v }, "Vibrate": require("buzz_menu").pattern(a.vibrate, v => a.vibrate = v), "Auto Snooze": { value: a.as, - format: v => v ? "Yes" : "No", onchange: v => a.as = v }, "Msg": { diff --git a/apps/multitimer/metadata.json b/apps/multitimer/metadata.json index abb958b90..ee77d2ecb 100644 --- a/apps/multitimer/metadata.json +++ b/apps/multitimer/metadata.json @@ -1,7 +1,7 @@ { "id": "multitimer", "name": "Multi Timer", - "version": "0.02", + "version": "0.03", "description": "Set timers and chronographs (stopwatches) and watch them count down in real time. Pause, create, edit, and delete timers and chronos, and add custom labels/messages. Also sets alarms.", "icon": "app.png", "screenshots": [ diff --git a/apps/noteify/ChangeLog b/apps/noteify/ChangeLog index ec66c5568..d7bc46dcd 100644 --- a/apps/noteify/ChangeLog +++ b/apps/noteify/ChangeLog @@ -1 +1,2 @@ 0.01: Initial version +0.02: Use default Bangle formatter for booleans diff --git a/apps/noteify/app.js b/apps/noteify/app.js index 2b3ee64f0..02d43c065 100644 --- a/apps/noteify/app.js +++ b/apps/noteify/app.js @@ -171,7 +171,6 @@ function editDOW(dow, onchange) { var dayOfWeek = require("locale").dow({ getDay: () => i }); menu[dayOfWeek] = { value: !!(dow&(1< v ? "Yes" : "No", onchange: v => v ? dow |= 1<v?"On":"Off", onchange: v=>a.on=v }, 'Repeat': { value: a.rp, - format: v=>v?"Yes":"No", onchange: v=>a.rp=v }, 'Vibrate': require("buzz_menu").pattern(a.vibrate, v => a.vibrate=v ), 'Auto snooze': { value: a.as, - format: v=>v?"Yes":"No", onchange: v=>a.as=v } }; @@ -278,7 +274,6 @@ function editTimer(alarmIndex, alarm) { }, 'Enabled': { value: a.on, - format: v=>v?"On":"Off", onchange: v=>a.on=v }, 'Vibrate': require("buzz_menu").pattern(a.vibrate, v => a.vibrate=v ), diff --git a/apps/noteify/metadata.json b/apps/noteify/metadata.json index 7e897d1f0..eb6dc695a 100644 --- a/apps/noteify/metadata.json +++ b/apps/noteify/metadata.json @@ -1,7 +1,7 @@ { "id": "noteify", "name": "Noteify", - "version": "0.01", + "version": "0.02", "description": "Write notes using an onscreen keyboard and use them as custom messages for alarms or timers.", "icon": "app.png", "tags": "tool,alarm", diff --git a/apps/openwind/ChangeLog b/apps/openwind/ChangeLog index 1e5f791b2..50dbb9f64 100644 --- a/apps/openwind/ChangeLog +++ b/apps/openwind/ChangeLog @@ -1,2 +1,3 @@ 0.01: New App! 0.02: Fix true wind computation, add swipe gesture to pause GPS +0.03: Use default Bangle formatter for booleans diff --git a/apps/openwind/metadata.json b/apps/openwind/metadata.json index 43961cc44..01d7ca124 100644 --- a/apps/openwind/metadata.json +++ b/apps/openwind/metadata.json @@ -1,7 +1,7 @@ { "id": "openwind", "name": "OpenWind", "shortName":"OpenWind", - "version":"0.02", + "version":"0.03", "description": "OpenWind", "icon": "openwind.png", "readme": "README.md", diff --git a/apps/openwind/settings.js b/apps/openwind/settings.js index a7e3a1abe..dd6736811 100644 --- a/apps/openwind/settings.js +++ b/apps/openwind/settings.js @@ -2,7 +2,6 @@ /** * @param {function} back Use back() to return to settings menu */ -const boolFormat = v => v ? /*LANG*/"On" : /*LANG*/"Off"; (function(back) { const SETTINGS_FILE = 'openwindsettings.json' // initialize with default settings... @@ -29,7 +28,6 @@ const boolFormat = v => v ? /*LANG*/"On" : /*LANG*/"Off"; '< Back': back, 'True wind': { value: settings.truewind, - format: boolFormat, onchange: save('truewind'), }, 'Mounting angle': { diff --git a/apps/pastel/ChangeLog b/apps/pastel/ChangeLog index a77fa758f..f4640426b 100644 --- a/apps/pastel/ChangeLog +++ b/apps/pastel/ChangeLog @@ -17,3 +17,4 @@ 0.15: fixed tendancy for mylocation to default to London added setting to enable/disable idle timer warning 0.16: make check_idle boolean setting work properly with new B2 menu +0.17: Use default Bangle formatter for booleans diff --git a/apps/pastel/metadata.json b/apps/pastel/metadata.json index f04a7ae54..1fe176d5f 100644 --- a/apps/pastel/metadata.json +++ b/apps/pastel/metadata.json @@ -2,7 +2,7 @@ "id": "pastel", "name": "Pastel Clock", "shortName": "Pastel", - "version": "0.16", + "version": "0.17", "description": "A Configurable clock with custom fonts, background and weather display. Has a cyclic information line that includes, day, date, battery, sunrise and sunset times", "icon": "pastel.png", "dependencies": {"mylocation":"app","weather":"app"}, diff --git a/apps/pastel/pastel.settings.js b/apps/pastel/pastel.settings.js index afe461f15..14b3d2037 100644 --- a/apps/pastel/pastel.settings.js +++ b/apps/pastel/pastel.settings.js @@ -39,7 +39,6 @@ }, 'Show Grid': { value: !!s.grid, - format: v => v ? /*LANG*/"Yes":/*LANG*/"No", onchange: v => { s.grid = v; save(); @@ -47,7 +46,6 @@ }, 'Show Weather': { value: !!s.weather, - format: v => v ? /*LANG*/"Yes":/*LANG*/"No", onchange: v => { s.weather = v; save(); @@ -55,7 +53,6 @@ }, 'Idle Warning': { value: !!s.idle_check, - format: v => v ? /*LANG*/"Yes":/*LANG*/"No", onchange: v => { s.idle_check = v; save(); diff --git a/apps/planetarium/ChangeLog b/apps/planetarium/ChangeLog index 78288f646..9eedad602 100644 --- a/apps/planetarium/ChangeLog +++ b/apps/planetarium/ChangeLog @@ -1,3 +1,4 @@ 0.01: New App! 0.02: Major speed improvement. Added more stars. Up to 500! -0.03: Added more stars and constellations. Now it shows 20 constellations. \ No newline at end of file +0.03: Added more stars and constellations. Now it shows 20 constellations. +0.04: Use default Bangle formatter for booleans diff --git a/apps/planetarium/metadata.json b/apps/planetarium/metadata.json index 00e998634..78add2cea 100644 --- a/apps/planetarium/metadata.json +++ b/apps/planetarium/metadata.json @@ -2,7 +2,7 @@ "id": "planetarium", "name": "Planetarium", "shortName": "Planetarium", - "version": "0.03", + "version": "0.04", "description": "Planetarium showing up to 500 stars using the watch location and time", "icon": "planetarium.png", "tags": "", diff --git a/apps/planetarium/settings.js b/apps/planetarium/settings.js index caadb4016..524901a09 100644 --- a/apps/planetarium/settings.js +++ b/apps/planetarium/settings.js @@ -10,19 +10,16 @@ '< Back': back, 'Star names': { value: !!settings.starnames, - format: v =>v?'On':'Off', onchange: v => { save('starnames',v); }}, 'Constellations': { value: !!settings.constellations, - format: v =>v?'On':'Off', onchange: v => { save('constellations',v); }}, 'Const. names': { value: !!settings.consnames, - format: v =>v?'On':'Off', onchange: v => { save('consnames',v); }}, diff --git a/apps/pongclock/ChangeLog b/apps/pongclock/ChangeLog index 9b83b345f..93217e76f 100644 --- a/apps/pongclock/ChangeLog +++ b/apps/pongclock/ChangeLog @@ -1,2 +1,3 @@ 0.01: First release 0.02: added missing type i metadata +0.03: Use default Bangle formatter for booleans diff --git a/apps/pongclock/metadata.json b/apps/pongclock/metadata.json index c714e9a10..3447893ab 100644 --- a/apps/pongclock/metadata.json +++ b/apps/pongclock/metadata.json @@ -2,7 +2,7 @@ "name": "Pong Clock", "shortName":"Pong Clock", "icon": "pongclock.png", - "version":"0.02", + "version":"0.03", "description": "A Pong playing clock", "type": "clock", "tags": "", diff --git a/apps/pongclock/settings.js b/apps/pongclock/settings.js index 0d61d013d..7e8511da7 100644 --- a/apps/pongclock/settings.js +++ b/apps/pongclock/settings.js @@ -16,24 +16,22 @@ E.showMenu({ "" : { "title" : "Pong Clock" }, "< Back" : () => back(), - 'Widgets?': { - value: !!settings.withWidgets, // !! converts undefined to false - format: v => v?"Show":"Hide", + 'Show Widgets': { + value: !!settings.withWidgets, onchange: v => { settings.withWidgets = v; writeSettings(); } }, 'Inverted?': { - value: !!settings.isInvers, // !! converts undefined to false - format: v => v?"Yes":"No", + value: !!settings.isInvers, onchange: v => { settings.isInvers = v; writeSettings(); } }, 'On Lock?': { - value: !!settings.playLocked, // !! converts undefined to false + value: !!settings.playLocked, format: v => v?"Play":"Pause", onchange: v => { settings.playLocked = v; diff --git a/apps/powermanager/ChangeLog b/apps/powermanager/ChangeLog index 8ccf678de..f0b60a45a 100644 --- a/apps/powermanager/ChangeLog +++ b/apps/powermanager/ChangeLog @@ -1,2 +1,3 @@ 0.01: New App! 0.02: Allow forcing monotonic battery voltage/percentage +0.03: Use default Bangle formatter for booleans diff --git a/apps/powermanager/metadata.json b/apps/powermanager/metadata.json index 2bb531099..dd1727657 100644 --- a/apps/powermanager/metadata.json +++ b/apps/powermanager/metadata.json @@ -2,7 +2,7 @@ "id": "powermanager", "name": "Power Manager", "shortName": "Power Manager", - "version": "0.02", + "version": "0.03", "description": "Allow configuration of warnings and thresholds for battery charging and display.", "icon": "app.png", "type": "bootloader", diff --git a/apps/powermanager/settings.js b/apps/powermanager/settings.js index 8af873e5f..7cc683024 100644 --- a/apps/powermanager/settings.js +++ b/apps/powermanager/settings.js @@ -26,14 +26,12 @@ '< Back': back, 'Monotonic percentage': { value: !!settings.forceMonoPercentage, - format: v => settings.forceMonoPercentage ? "On" : "Off", onchange: v => { writeSettings("forceMonoPercentage", v); } }, 'Monotonic voltage': { value: !!settings.forceMonoVoltage, - format: v => settings.forceMonoVoltage ? "On" : "Off", onchange: v => { writeSettings("forceMonoVoltage", v); } diff --git a/apps/qalarm/ChangeLog b/apps/qalarm/ChangeLog index b9be6039d..173765967 100644 --- a/apps/qalarm/ChangeLog +++ b/apps/qalarm/ChangeLog @@ -4,3 +4,4 @@ Fix app icon Change menu order so 'back' is at the top 0.04: Fix alarm not activating sometimes. +0.05: Use default Bangle formatter for booleans diff --git a/apps/qalarm/app.js b/apps/qalarm/app.js index ad071adf0..b04a635b5 100644 --- a/apps/qalarm/app.js +++ b/apps/qalarm/app.js @@ -115,22 +115,18 @@ function showEditAlarmMenu(alarmIndex, alarm) { }, Enabled: { value: alarm.on, - format: (v) => (v ? "On" : "Off"), onchange: (v) => (alarm.on = v), }, Repeat: { value: alarm.rp, - format: (v) => (v ? "Yes" : "No"), onchange: (v) => (alarm.rp = v), }, "Auto snooze": { value: alarm.as, - format: (v) => (v ? "Yes" : "No"), onchange: (v) => (alarm.as = v), }, Hard: { value: alarm.hard, - format: (v) => (v ? "Yes" : "No"), onchange: (v) => (alarm.hard = v), }, "Days of week": () => showDaysMenu(alarmIndex, getAlarm()), @@ -175,7 +171,6 @@ function showDaysMenu(alarmIndex, alarm) { let dayOfWeek = require("locale").dow({ getDay: () => i }); menu[dayOfWeek] = { value: alarm.daysOfWeek[i], - format: (v) => (v ? "Yes" : "No"), onchange: (v) => (alarm.daysOfWeek[i] = v), }; } @@ -235,12 +230,10 @@ function showEditTimerMenu(timerIndex) { }, Enabled: { value: alarm.on, - format: (v) => (v ? "On" : "Off"), onchange: (v) => (alarm.on = v), }, Hard: { value: alarm.hard, - format: (v) => (v ? "On" : "Off"), onchange: (v) => (alarm.hard = v), }, }; diff --git a/apps/qalarm/metadata.json b/apps/qalarm/metadata.json index 2039af4bf..841c10e6f 100644 --- a/apps/qalarm/metadata.json +++ b/apps/qalarm/metadata.json @@ -3,7 +3,7 @@ "name": "Q Alarm and Timer", "shortName": "Q Alarm", "icon": "app.png", - "version": "0.04", + "version": "0.05", "description": "[Not recommended - use 'Alarm & Timer' app] Alarm and timer app with days of week and 'hard' option.", "tags": "tool,alarm,widget", "supports": ["BANGLEJS", "BANGLEJS2"], diff --git a/apps/qmsched/ChangeLog b/apps/qmsched/ChangeLog index 94fcffe1a..88185f337 100644 --- a/apps/qmsched/ChangeLog +++ b/apps/qmsched/ChangeLog @@ -6,4 +6,5 @@ 0.06: Fix: don't try to redraw widget when widgets not loaded 0.07: Option to switch theme Changed time selection to 5-minute intervals -0.08: Support new Bangle.js 2 menu \ No newline at end of file +0.08: Support new Bangle.js 2 menu +0.09: Use default Bangle formatter for booleans diff --git a/apps/qmsched/app.js b/apps/qmsched/app.js index 8cd0fa8d9..da43dd7d6 100644 --- a/apps/qmsched/app.js +++ b/apps/qmsched/app.js @@ -125,7 +125,6 @@ function showMainMenu() { menu[/*LANG*/"Add Schedule"] = () => showEditMenu(-1); menu[/*LANG*/"Switch Theme"] = { value: !!get("switchTheme"), - format: v => v ? /*LANG*/"Yes" : /*LANG*/"No", onchange: v => v ? set("switchTheme", v) : unset("switchTheme"), }; menu[/*LANG*/"LCD Settings"] = () => showOptionsMenu(); diff --git a/apps/qmsched/metadata.json b/apps/qmsched/metadata.json index 326a8fc4f..23bdbd2e4 100644 --- a/apps/qmsched/metadata.json +++ b/apps/qmsched/metadata.json @@ -2,7 +2,7 @@ "id": "qmsched", "name": "Quiet Mode Schedule and Widget", "shortName": "Quiet Mode", - "version": "0.08", + "version": "0.09", "description": "Automatically turn Quiet Mode on or off at set times, change theme and LCD options while Quiet Mode is active.", "icon": "app.png", "screenshots": [{"url":"screenshot_b1_main.png"},{"url":"screenshot_b1_edit.png"},{"url":"screenshot_b1_lcd.png"}, diff --git a/apps/recorder/ChangeLog b/apps/recorder/ChangeLog index 140567068..1941a435b 100644 --- a/apps/recorder/ChangeLog +++ b/apps/recorder/ChangeLog @@ -20,3 +20,4 @@ 0.14: Remove unneeded variable assignment 0.15: Show distance more accurately in conjunction with new locale app (fix #1523) 0.16: Ability to append to existing track (fix #1712) +0.17: Use default Bangle formatter for booleans diff --git a/apps/recorder/app.js b/apps/recorder/app.js index fb3dfab4f..9006d2236 100644 --- a/apps/recorder/app.js +++ b/apps/recorder/app.js @@ -40,11 +40,9 @@ function getTrackNumber(filename) { } function showMainMenu() { - function boolFormat(v) { return v?"Yes":"No"; } function menuRecord(id) { return { value: settings.record.includes(id), - format: boolFormat, onchange: v => { settings.recording = false; // stop recording if we change anything settings.record = settings.record.filter(r=>r!=id); diff --git a/apps/recorder/metadata.json b/apps/recorder/metadata.json index 3d50bbd14..a7eb09cd5 100644 --- a/apps/recorder/metadata.json +++ b/apps/recorder/metadata.json @@ -2,7 +2,7 @@ "id": "recorder", "name": "Recorder", "shortName": "Recorder", - "version": "0.16", + "version": "0.17", "description": "Record GPS position, heart rate and more in the background, then download to your PC.", "icon": "app.png", "tags": "tool,outdoors,gps,widget", diff --git a/apps/run/settings.js b/apps/run/settings.js index c3bb31a0d..0312200a3 100644 --- a/apps/run/settings.js +++ b/apps/run/settings.js @@ -63,7 +63,6 @@ if (global.WIDGETS&&WIDGETS["recorder"]) menu[/*LANG*/"Record Run"] = { value : !!settings.record, - format : v => v?/*LANG*/"Yes":/*LANG*/"No", onchange : v => { settings.record = v; saveSettings(); diff --git a/apps/sensible/ChangeLog b/apps/sensible/ChangeLog index 0699954d7..a874d8948 100644 --- a/apps/sensible/ChangeLog +++ b/apps/sensible/ChangeLog @@ -3,4 +3,5 @@ 0.03: Advertise app name, added screenshots 0.04: Advertise bar, GPS, HRM and mag services 0.05: Refactored for efficiency, corrected sensor value inaccuracies -0.06: User settings are written to persistent storage, loaded on app start \ No newline at end of file +0.06: User settings are written to persistent storage, loaded on app start +0.07: Use default Bangle formatter for booleans diff --git a/apps/sensible/metadata.json b/apps/sensible/metadata.json index 6715e2538..c4be32942 100644 --- a/apps/sensible/metadata.json +++ b/apps/sensible/metadata.json @@ -2,7 +2,7 @@ "id": "sensible", "name": "SensiBLE", "shortName": "SensiBLE", - "version": "0.06", + "version": "0.07", "description": "Collect, display and advertise real-time sensor data.", "icon": "sensible.png", "screenshots": [ diff --git a/apps/sensible/sensible.js b/apps/sensible/sensible.js index 8ec7d93d4..a68dff90b 100644 --- a/apps/sensible/sensible.js +++ b/apps/sensible/sensible.js @@ -50,7 +50,6 @@ let barMenu = { "": { "title" : "- Barometer -" }, "State": { value: settings.isBarEnabled, - format: v => v ? "On" : "Off", onchange: v => { updateSetting('isBarEnabled', v); } }, "Altitude": { value: null }, @@ -62,7 +61,6 @@ let gpsMenu = { "": { "title" : "- GPS -" }, "State": { value: settings.isGpsEnabled, - format: v => v ? "On" : "Off", onchange: v => { updateSetting('isGpsEnabled', v); } }, "Lat": { value: null }, @@ -76,7 +74,6 @@ let hrmMenu = { "": { "title" : "- Heart Rate -" }, "State": { value: settings.isHrmEnabled, - format: v => v ? "On" : "Off", onchange: v => { updateSetting('isHrmEnabled', v); } }, "BPM": { value: null }, @@ -87,7 +84,6 @@ let magMenu = { "": { "title" : "- Magnetometer -" }, "State": { value: settings.isMagEnabled, - format: v => v ? "On" : "Off", onchange: v => { updateSetting('isMagEnabled', v); } }, "x": { value: null }, diff --git a/apps/smclock/ChangeLog b/apps/smclock/ChangeLog index 2a3874d34..42d50d3b9 100644 --- a/apps/smclock/ChangeLog +++ b/apps/smclock/ChangeLog @@ -4,3 +4,4 @@ 0.04: Add support for settings 0.05: Add ability to change background (3bit or 4bit) 0.06: Replace battery text with image +0.07: Use default Bangle formatter for booleans diff --git a/apps/smclock/metadata.json b/apps/smclock/metadata.json index ca40193a2..6790c2030 100644 --- a/apps/smclock/metadata.json +++ b/apps/smclock/metadata.json @@ -4,7 +4,7 @@ "shortName": "MonoClock", "icon": "app.png", "screenshots": [{ "url": "screenshot0.png" }, {"url": "screenshot1.png" }], - "version": "0.06", + "version": "0.07", "description": "A simple watchface based on my stylised monogram.", "type": "clock", "tags": "clock", diff --git a/apps/smclock/settings.js b/apps/smclock/settings.js index ee4a35a26..30119e48d 100644 --- a/apps/smclock/settings.js +++ b/apps/smclock/settings.js @@ -46,7 +46,6 @@ "Analog Face": { value: settings.showAnalogFace !== undefined ? settings.showAnalogFace : false, - format: v => v ? "On" : "Off", onchange: v => { settings.showAnalogFace = v; writeSettings(); @@ -71,7 +70,6 @@ "Week Info": { value: settings.showWeekInfo !== undefined ? settings.showWeekInfo : false, - format: v => v ? "On" : "Off", onchange: v => { settings.showWeekInfo = v; writeSettings(); @@ -80,7 +78,6 @@ "Vector Font": { value: settings.useVectorFont !== undefined ? settings.useVectorFont : false, - format: v => v ? "On" : "Off", onchange: v => { settings.useVectorFont = v; writeSettings(); diff --git a/apps/sonicclk/Changelog b/apps/sonicclk/Changelog index d78fe291f..5cdaa3764 100644 --- a/apps/sonicclk/Changelog +++ b/apps/sonicclk/Changelog @@ -1,5 +1,6 @@ -0.01 [MAJOR] Added sonic clock app -0.02 [PATCH] Fixed text alignment issue; Increased acceleration required to activate twist; -0.03 [MINOR] Added settings menu to control twist threshold and LCD Activity -0.04 [PATCH] Call `Bangle.setUI` when exiting settings menu, settings tap moved to top -0.05 [PATCH] Firmware 2v11 - use `wakeOnTwist` rather than manual `setLCDPower`; Reset sonic on `fullReset` +0.01: [MAJOR] Added sonic clock app +0.02: [PATCH] Fixed text alignment issue; Increased acceleration required to activate twist; +0.03: [MINOR] Added settings menu to control twist threshold and LCD Activity +0.04: [PATCH] Call `Bangle.setUI` when exiting settings menu, settings tap moved to top +0.05: [PATCH] Firmware 2v11 - use `wakeOnTwist` rather than manual `setLCDPower`; Reset sonic on `fullReset` +0.06: Use default Bangle formatter for booleans diff --git a/apps/sonicclk/app.js b/apps/sonicclk/app.js index eddb971f8..2d72de68e 100644 --- a/apps/sonicclk/app.js +++ b/apps/sonicclk/app.js @@ -268,7 +268,6 @@ const settingsMenu = { "": { title: "Settings" }, "Active Mode": { value: settings.activeMode, - format: (v) => (v ? "On" : "Off"), onchange: (v) => (settings.activeMode = v), }, "Twist Thresh": { diff --git a/apps/sonicclk/metadata.json b/apps/sonicclk/metadata.json index 5a2d64db1..ad3e52fdb 100644 --- a/apps/sonicclk/metadata.json +++ b/apps/sonicclk/metadata.json @@ -1,7 +1,7 @@ { "id": "sonicclk", "name": "Sonic Clock", - "version": "0.05", + "version": "0.06", "description": "A classic sonic clock featuring run, stop and wait animations.", "icon": "app.png", "screenshots": [{"url":"screenshot.png"}], diff --git a/apps/speedalt/ChangeLog b/apps/speedalt/ChangeLog index 78c14594b..224d2711d 100644 --- a/apps/speedalt/ChangeLog +++ b/apps/speedalt/ChangeLog @@ -10,3 +10,4 @@ 0.10: Add Kalman filter to smooth the speed and altitude values. Can be disabled in settings. 0.11: Now also runs on Bangle.js 2 with basic functionality 0.12: Full functionality on Bangle.js 2: Bangle.js 1 buttons mapped to touch areas. +0.13: Use default Bangle formatter for booleans diff --git a/apps/speedalt/metadata.json b/apps/speedalt/metadata.json index e03d23c8b..b23d2692c 100644 --- a/apps/speedalt/metadata.json +++ b/apps/speedalt/metadata.json @@ -2,7 +2,7 @@ "id": "speedalt", "name": "GPS Adventure Sports", "shortName": "GPS Adv Sport", - "version": "0.12", + "version": "0.13", "description": "GPS speed, altitude and distance to waypoint display. Designed for easy viewing and use during outdoor activities such as para-gliding, hang-gliding, sailing, cycling etc.", "icon": "app.png", "type": "app", diff --git a/apps/speedalt/settings.js b/apps/speedalt/settings.js index 8906e2e2c..aeaa84f2c 100644 --- a/apps/speedalt/settings.js +++ b/apps/speedalt/settings.js @@ -37,12 +37,7 @@ '< Load GPS Adv Sport': ()=>{load('speedalt.app.js');}, 'Units' : function() { E.showMenu(unitsMenu); }, 'Colours' : function() { E.showMenu(colMenu); }, - 'Kalman Filter' : function() { E.showMenu(kalMenu); }/*, - 'Vibrate' : { - value : settings.buzz, - format : v => v?"On":"Off", - onchange : () => { settings.buzz = !settings.buzz; writeSettings(); } - }*/ + 'Kalman Filter' : function() { E.showMenu(kalMenu); } }; const unitsMenu = { @@ -73,12 +68,10 @@ '< Back': function() { E.showMenu(appMenu); }, 'Speed' : { value : settings.spdFilt, - format : v => v?"On":"Off", onchange : () => { settings.spdFilt = !settings.spdFilt; writeSettings(); } }, 'Altitude' : { value : settings.altFilt, - format : v => v?"On":"Off", onchange : () => { settings.altFilt = !settings.altFilt; writeSettings(); } } }; diff --git a/apps/speedalt2/ChangeLog b/apps/speedalt2/ChangeLog index 9e2abb4ef..0e54d5db3 100644 --- a/apps/speedalt2/ChangeLog +++ b/apps/speedalt2/ChangeLog @@ -8,9 +8,10 @@ 0.08: New features. Added waypoints file and distance to selected waypoint display. Added integration with GPS Setup module to switch GPS to low power mode when screen off. Save display settings and restore when app restarted. 0.09: Add third screen mode with large clock and waypoint selection display to ease visibility in bright daylight. 0.10: Add Kalman filter to smooth the speed and altitude values. Can be disabled in settings. -1.06: Misc memory and screen optimisations. -1.10: Adds Kalman filter. -1.14: Add VMG and coordinates screens -1.43: Adds mirroring of the watch face to an Android device. See README.md -1.49: Droidscript mirroring prog automatically uses last connection address. Auto connects when run. -1.50: Add configuration item Wpt File Suffix. A one character suffix to append to the waypoints.json file. A number of other apps also use this file name. Using the file name suffix allows the speedalt2 waypoints to be retained if one of these other apps is installed for a different use. +0.11: Misc memory and screen optimisations. +0.12: Adds Kalman filter. +0.13: Add VMG and coordinates screens +0.14: Adds mirroring of the watch face to an Android device. See README.md +0.15: Droidscript mirroring prog automatically uses last connection address. Auto connects when run. +0.16: Add configuration item Wpt File Suffix. A one character suffix to append to the waypoints.json file. A number of other apps also use this file name. Using the file name suffix allows the speedalt2 waypoints to be retained if one of these other apps is installed for a different use. +0.17: Use default Bangle formatter for booleans diff --git a/apps/speedalt2/metadata.json b/apps/speedalt2/metadata.json index 2a111af28..ae513acd5 100644 --- a/apps/speedalt2/metadata.json +++ b/apps/speedalt2/metadata.json @@ -2,7 +2,7 @@ "id": "speedalt2", "name": "GPS Adventure Sports II", "shortName":"GPS Adv Sport II", - "version":"1.50", + "version":"0.17", "description": "GPS speed, altitude and distance to waypoint display. Designed for easy viewing and use during outdoor activities such as para-gliding, hang-gliding, sailing, cycling etc.", "icon": "app.png", "type": "app", diff --git a/apps/speedalt2/settings.js b/apps/speedalt2/settings.js index 1bdb58f9d..63fa424ba 100644 --- a/apps/speedalt2/settings.js +++ b/apps/speedalt2/settings.js @@ -46,7 +46,6 @@ 'Wpt File Suffix' : function() { E.showMenu(sfxMenu); }, 'Touch' : { value : settings.touch, - format : v => v?"On":"Off", onchange : () => { settings.touch = !settings.touch; writeSettings(); } } }; @@ -89,12 +88,10 @@ '< Back': function() { E.showMenu(appMenu); }, 'Speed' : { value : settings.spdFilt, - format : v => v?"On":"Off", onchange : () => { settings.spdFilt = !settings.spdFilt; writeSettings(); } }, 'Altitude' : { value : settings.altFilt, - format : v => v?"On":"Off", onchange : () => { settings.altFilt = !settings.altFilt; writeSettings(); } } }; diff --git a/apps/timerclk/ChangeLog b/apps/timerclk/ChangeLog index e17baa27c..7a357b1aa 100644 --- a/apps/timerclk/ChangeLog +++ b/apps/timerclk/ChangeLog @@ -1,2 +1,3 @@ 0.01: New App! 0.02: Add sunrise/sunset. Fix timer bugs. +0.03: Use default Bangle formatter for booleans diff --git a/apps/timerclk/metadata.json b/apps/timerclk/metadata.json index 7c6c7c9b3..72f42d8d4 100644 --- a/apps/timerclk/metadata.json +++ b/apps/timerclk/metadata.json @@ -2,7 +2,7 @@ "id": "timerclk", "name": "Timer Clock", "shortName":"Timer Clock", - "version":"0.02", + "version":"0.03", "description": "A clock with stopwatches, timers and alarms build in.", "icon": "app-icon.png", "type": "clock", diff --git a/apps/timerclk/settings.js b/apps/timerclk/settings.js index 992985f52..1a8500add 100644 --- a/apps/timerclk/settings.js +++ b/apps/timerclk/settings.js @@ -1,6 +1,5 @@ (function(back) { const FILE = "timerclk.json"; - const BOOL_FORMAT = v=>v?/*LANG*/"On":/*LANG*/"Off"; // Load settings var settings = require('Storage').readJSON(FILE, true) || {} settings.clock = Object.assign({ @@ -130,7 +129,6 @@ }, "short date": { value: !!settings.clock.shortDate, - format: BOOL_FORMAT, onchange: v => { settings.clock.shortDate = v; writeSettings(); @@ -138,7 +136,6 @@ }, "stopwatches": { value: !!settings.clock.showStopwatches, - format: v=>v?/*LANG*/"Show":/*LANG*/"Hide", onchange: v => { settings.clock.showStopwatches = v; writeSettings(); @@ -146,7 +143,6 @@ }, "timers": { value: !!settings.clock.showTimers, - format: v=>v?/*LANG*/"Show":/*LANG*/"Hide", onchange: v => { settings.clock.showTimers = v; writeSettings(); @@ -154,7 +150,6 @@ }, "sun times": { value: !!settings.clock.showSrss, - format: v=>v?/*LANG*/"Show":/*LANG*/"Hide", onchange: v => { settings.clock.showSrss = v; writeSettings(); diff --git a/apps/toucher/ChangeLog b/apps/toucher/ChangeLog index 7b5c53de7..e15ffa29b 100644 --- a/apps/toucher/ChangeLog +++ b/apps/toucher/ChangeLog @@ -5,3 +5,4 @@ 0.05: Improve perf 0.06: Complete rewrite in 80x80, better perf, add settings 0.07: Added suppport for Bangle 2, added README file +0.08: Use default Bangle formatter for booleans diff --git a/apps/toucher/metadata.json b/apps/toucher/metadata.json index 8b2715f0c..0c7a35773 100644 --- a/apps/toucher/metadata.json +++ b/apps/toucher/metadata.json @@ -2,7 +2,7 @@ "id": "toucher", "name": "Touch Launcher", "shortName": "Toucher", - "version": "0.07", + "version": "0.08", "description": "Touch enable left to right launcher.", "icon": "app.png", "type": "launch", diff --git a/apps/toucher/settings.js b/apps/toucher/settings.js index 51275d846..f3004000a 100644 --- a/apps/toucher/settings.js +++ b/apps/toucher/settings.js @@ -41,7 +41,6 @@ }, "Animation" : { value : settings.animation, - format : v => v?"On":"Off", onchange : saveChange('animation') }, "Frame rate" : { @@ -51,7 +50,6 @@ }, "Debug" : { value : settings.debug, - format : v => v?"On":"Off", onchange : saveChange('debug') }, '< Back': back diff --git a/apps/touchtimer/ChangeLog b/apps/touchtimer/ChangeLog index f81907152..203360bd0 100644 --- a/apps/touchtimer/ChangeLog +++ b/apps/touchtimer/ChangeLog @@ -3,3 +3,4 @@ 0.03: Add ability to repeat last timer 0.04: Add 5 second count down buzzer 0.05: Fix 5 second count down buzzer to be only in the final 5 seconds +0.06: Use default Bangle formatter for booleans diff --git a/apps/touchtimer/metadata.json b/apps/touchtimer/metadata.json index 9261f3619..8e09a7e34 100644 --- a/apps/touchtimer/metadata.json +++ b/apps/touchtimer/metadata.json @@ -2,7 +2,7 @@ "id": "touchtimer", "name": "Touch Timer", "shortName": "Touch Timer", - "version": "0.05", + "version": "0.06", "description": "Quickly and easily create a timer with touch-only input. The time can be easily set with a number pad.", "icon": "app.png", "tags": "tools", diff --git a/apps/touchtimer/settings.js b/apps/touchtimer/settings.js index 79424f250..d3de4e6d3 100644 --- a/apps/touchtimer/settings.js +++ b/apps/touchtimer/settings.js @@ -33,7 +33,6 @@ }, "CountDown Buzz": { value: !!settings.countDownBuzz, - format: value => value?"On":"Off", onchange: (value) => { settings.countDownBuzz = value; writeSettings(settings); diff --git a/apps/widadjust/ChangeLog b/apps/widadjust/ChangeLog new file mode 100644 index 000000000..9b2a8d3c8 --- /dev/null +++ b/apps/widadjust/ChangeLog @@ -0,0 +1,2 @@ +0.01: New widget +0.02: Use default Bangle formatter for booleans diff --git a/apps/widadjust/metadata.json b/apps/widadjust/metadata.json index a308072f5..cef91369f 100644 --- a/apps/widadjust/metadata.json +++ b/apps/widadjust/metadata.json @@ -2,7 +2,7 @@ "id": "widadjust", "name": "Adjust Clock", "icon": "icon.png", - "version": "0.01", + "version": "0.02", "description": "Adjusts clock continually in the background to counter clock drift", "type": "widget", "tags": "widget", diff --git a/apps/widadjust/settings.js b/apps/widadjust/settings.js index 5791d763b..6743c7fc5 100644 --- a/apps/widadjust/settings.js +++ b/apps/widadjust/settings.js @@ -80,9 +80,7 @@ min: 0, max: intervalV.length - 1, format: v => intervalN[v], - onchange: v => { - settings.updateInterval = intervalV[v]; - }, + onchange: v => settings.updateInterval = intervalV[v] , }, 'Threshold': { @@ -97,10 +95,9 @@ 'Save State': { value: settings.saveState, - format: v => v ? 'On' : 'Off', - onchange: () => { - settings.saveState = !settings.saveState; - if (!settings.saveState && !stateFileErased) { + onchange: (v) => { + settings.saveState = v; + if (!v && !stateFileErased) { stateFileErased = true; require("Storage").erase(STATE_FILE); } @@ -109,10 +106,7 @@ 'Debug Log': { value: settings.debugLog, - format: v => v ? 'On' : 'Off', - onchange: () => { - settings.debugLog = !settings.debugLog; - }, + onchange: v => settings.debugLog = v, }, }; diff --git a/apps/widbatwarn/ChangeLog b/apps/widbatwarn/ChangeLog index 5420b9706..c0e2387db 100644 --- a/apps/widbatwarn/ChangeLog +++ b/apps/widbatwarn/ChangeLog @@ -1,2 +1,3 @@ 0.01: New Battery Warning! 0.02: Respect Quiet Mode +0.03: Use default Bangle formatter for booleans diff --git a/apps/widbatwarn/metadata.json b/apps/widbatwarn/metadata.json index 959eeca08..26143ad4a 100644 --- a/apps/widbatwarn/metadata.json +++ b/apps/widbatwarn/metadata.json @@ -2,7 +2,7 @@ "id": "widbatwarn", "name": "Battery Warning", "shortName": "Battery Warning", - "version": "0.02", + "version": "0.03", "description": "Show a warning when the battery runs low.", "icon": "widget.png", "screenshots": [{"url":"screenshot.png"}], diff --git a/apps/widbatwarn/settings.js b/apps/widbatwarn/settings.js index 8d15c8458..c3464a82b 100644 --- a/apps/widbatwarn/settings.js +++ b/apps/widbatwarn/settings.js @@ -2,9 +2,8 @@ * @param {function} back Use back() to return to settings menu */ (function(back) { - const SETTINGS_FILE = "widbatwarn.json", - storage = require("Storage"), - translate = require("locale").translate; + const SETTINGS_FILE = "widbatwarn.json"; + const storage = require("Storage"); // initialize with default settings... let s = { @@ -39,7 +38,6 @@ }, "Buzz": { value: s.buzz, - format: b => translate(b?"Yes":"No"), onchange: save("buzz"), }, }; diff --git a/apps/widmp/ChangeLog b/apps/widmp/ChangeLog index f0cd6bd8a..809173d54 100644 --- a/apps/widmp/ChangeLog +++ b/apps/widmp/ChangeLog @@ -4,3 +4,4 @@ 0.04: Replace the 8 phases by a more exact drawing, see forum.espruino.com/conversations/371985 0.05: Fixed the algorithm for calculating the moon's phase 0.06: Darkmode, custom colours, and fix a bug with acting on mylocation changes +0.07: Use default Bangle formatter for booleans diff --git a/apps/widmp/metadata.json b/apps/widmp/metadata.json index b1e6a6c8c..6cfd239f2 100644 --- a/apps/widmp/metadata.json +++ b/apps/widmp/metadata.json @@ -1,7 +1,7 @@ { "id": "widmp", "name": "Moon Phase", - "version": "0.06", + "version": "0.07", "description": "Display the current moon phase in blueish (in light mode) or white (in dark mode) for both hemispheres. In the southern hemisphere the 'My Location' app is needed.", "icon": "widget.png", "type": "widget", diff --git a/apps/widmp/settings.js b/apps/widmp/settings.js index 46c5d3609..a389f7918 100644 --- a/apps/widmp/settings.js +++ b/apps/widmp/settings.js @@ -25,7 +25,6 @@ "< Back": () => back(), "Default": { value: (settings.default_colour !== undefined ? settings.default_colour : true), - format: v => v ? "Yes" : "No", onchange: v => { settings.default_colour = v; writeSettings(); From 295d646e74f584c4f00c7e5fd9529de01fbbc2e5 Mon Sep 17 00:00:00 2001 From: Stiralbios Date: Sat, 18 Jun 2022 22:12:21 +0200 Subject: [PATCH 050/251] [TerminalClock] Use "m" instead of "min" for consistence with other apps --- apps/terminalclock/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/terminalclock/settings.js b/apps/terminalclock/settings.js index 55035bfa3..f347e8ee3 100644 --- a/apps/terminalclock/settings.js +++ b/apps/terminalclock/settings.js @@ -89,7 +89,7 @@ settings.PowerOnInterval = v; writeSettings(); }, - format: x => x + " min" + format: x => x + "m" }; } From 4d8558ef1328ed75efca2a77d0b0a63a3f8815ac Mon Sep 17 00:00:00 2001 From: Stiralbios Date: Sun, 19 Jun 2022 08:47:59 +0200 Subject: [PATCH 051/251] [TerminalClock] Attempt to fix high batery usage since the switch to ClockFace --- apps/terminalclock/app.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/apps/terminalclock/app.js b/apps/terminalclock/app.js index 9b8eb1351..b60a32094 100644 --- a/apps/terminalclock/app.js +++ b/apps/terminalclock/app.js @@ -21,10 +21,15 @@ if (process.env.HWVERSION == 1){ // initialising the clockface const ClockFace = require("ClockFace"); const clock = new ClockFace({ + precision: 60, + settingsFile: "terminalclock.json", + init: function () { // check settings and set default if needed this.showHRM = false; this.showAltitude = false; + this.lock_precision = this.precision; + this.unlock_precision = 1; if (this.HRMinConfidence === undefined) this.HRMinConfidence = 50; if (this.PowerOnInterval === undefined) this.PowerOnInterval = 15; if (this.powerSaving===undefined) this.powerSaving = true; @@ -50,11 +55,13 @@ const clock = new ClockFace({ }); // set the services (HRM, pressure sensor, etc....) - turnOnServices(); - if(this.powerSaving){ + if(!this.powerSaving){ + turnOnServices(); + } else{ setInterval(turnOnServices, this.PowerOnInterval*60000); // every PowerOnInterval min } - + // start the clock unlocked + unlock(); }, draw: function (date) { @@ -74,8 +81,6 @@ const clock = new ClockFace({ curPos++; }); }, - - settingsFile: "terminalclock.json" }); @@ -192,13 +197,12 @@ function unlock(){ if(clock.powerSaving){ turnOnServices(); } - clock.old_precision = clock.precision; - clock.precision = 1; + clock.precision = clock.unlock_precision; clock.tick(); } function lock(){ - clock.precision = clock.old_precision; + clock.precision = clock.lock_precision; clock.tick(); } From a0ef33a8fe12355a71a21fb00400304f186c347f Mon Sep 17 00:00:00 2001 From: Michael Salaverry Date: Sun, 19 Jun 2022 15:06:47 +0300 Subject: [PATCH 052/251] fix: pin hebcal --- apps/hebrew_calendar/customizer.html | 344 ++++++++++++++++++++++++++- apps/hebrew_calendar/customizer.js | 329 ------------------------- 2 files changed, 337 insertions(+), 336 deletions(-) delete mode 100644 apps/hebrew_calendar/customizer.js diff --git a/apps/hebrew_calendar/customizer.html b/apps/hebrew_calendar/customizer.html index 0cd63783b..b83646d60 100644 --- a/apps/hebrew_calendar/customizer.html +++ b/apps/hebrew_calendar/customizer.html @@ -7,6 +7,333 @@ Hebrew Calendar Customizer + + @@ -20,11 +347,15 @@
    - + - -
    get your latitude and longitude from plus.codes or:
    - + +
    get your latitude and longitude from plus.codes or: +
    +
    - - diff --git a/apps/hebrew_calendar/customizer.js b/apps/hebrew_calendar/customizer.js deleted file mode 100644 index 06716a63b..000000000 --- a/apps/hebrew_calendar/customizer.js +++ /dev/null @@ -1,329 +0,0 @@ -import { - HebrewCalendar, - HDate, - Location, - Zmanim, -} from "https://cdn.skypack.dev/@hebcal/core@^3?min"; - -function onload(event) { - event.preventDefault(); - const latLon = getLatLonFromForm(); - const events = generateHebCal(latLon); - const calendar = serializeEvents(events); - console.debug(calendar); - globalThis["cal"] = calendar; - loadWatch(calendar); -} - -function loadWatch(json) { - sendCustomizedApp({ - id: "hebrew_calendar", - - storage: [ - { - name: "hebrew_calendar.app.js", - url: "app.js", - // content below is same as app.js except for the first line which customizes the hebrewCalendar object used - content: ` -let hebrewCalendar = ${json}; - -const dayInMS = 86400000; - -const DateProvider = { now: () => Date.now() }; - -const Layout = require("Layout"); -const Locale = require("locale"); - -let nextEndingEvent; - -function getCurrentEvents() { - const now = DateProvider.now(); - - const current = hebrewCalendar.filter( - (x) => x.startEvent <= now && x.endEvent >= now - ); - - nextEndingEvent = current.reduce((acc, ev) => { - return Math.min(acc, ev.endEvent); - }, Infinity); - - return current.map((event, i) => { - return { - type: "txt", - font: "12x20", - id: "currentEvents" + i, - label: event.desc, - pad: 2, - bgCol: g.theme.bg, - }; - }); -} - -function getUpcomingEvents() { - const now = DateProvider.now(); - - const futureEvents = hebrewCalendar.filter( - (x) => x.startEvent >= now && x.startEvent <= now + dayInMS - ); - - let warning; - let eventsLeft = hebrewCalendar.filter( - (x) => x.startEvent >= now && x.startEvent <= now + dayInMS * 14 - ).length; - - if (eventsLeft < 14) { - warning = { - startEvent: 0, - type: "txt", - font: "4x6", - id: "warning", - label: "only " + eventsLeft + " events left in calendar; update soon", - pad: 2, - bgCol: g.theme.bg, - }; - } - - return futureEvents - .slice(0, 2) - .map((event, i) => { - return { - startEvent: event.startEvent, - type: "txt", - font: "6x8", - id: "upcomingEvents" + 1, - label: event.desc + " at " + Locale.time(new Date(event.startEvent), 1), - pad: 2, - bgCol: g.theme.bg, - }; - }) - .concat(warning) - .sort(function (a, b) { - return a.startEvent - b.startEvent; - }); -} - -function dateTime() { - return ( - Locale.dow(new Date(), 1) + - " " + - Locale.date(new Date(), 1) + - " " + - Locale.time(new Date(), 1) - ); -} - -function makeLayout() { - return new Layout( - { - type: "v", - c: [ - { - type: "txt", - font: "6x8", - id: "title", - label: "-- Hebrew Calendar Events --", - pad: 2, - bgCol: g.theme.bg2, - }, - { - type: "txt", - font: "6x8", - id: "currently", - label: "Currently", - pad: 2, - bgCol: g.theme.bgH, - }, - ] - .concat(getCurrentEvents()) - .concat([ - { - type: "txt", - font: "6x8", - label: "Upcoming", - id: "upcoming", - pad: 2, - bgCol: g.theme.bgH, - }, - ]) - .concat(getUpcomingEvents()) - .concat([ - { - type: "txt", - font: "Vector14", - id: "time", - label: dateTime(), - pad: 2, - bgCol: undefined, - }, - ]), - }, - { lazy: true } - ); -} -let layout = makeLayout(); -// see also https://www.espruino.com/Bangle.js+Layout#updating-the-screen - -// timeout used to update every minute -let drawTimeout; - -function draw() { - layout.time.label = dateTime(); - layout.render(); - - // schedule a draw for the next minute - if (drawTimeout) clearTimeout(drawTimeout); - drawTimeout = setTimeout(function () { - drawTimeout = undefined; - draw(); - }, 60000 - (DateProvider.now() % 60000)); - console.log("updated time"); -} - -// update time and draw -g.clear(); -Bangle.loadWidgets(); -Bangle.drawWidgets(); -draw(); - -function findNextEvent() { - return hebrewCalendar.find((ev) => { - return ev.startEvent > DateProvider.now(); - }); -} - -function updateCalendar() { - layout.clear(); - layout = makeLayout(); - layout.forgetLazyState(); - layout.render(); - - let nextChange = Math.min( - findNextEvent().startEvent - DateProvider.now() + 5000, - nextEndingEvent - DateProvider.now() + 5000 - ); - setTimeout(updateCalendar, nextChange); - console.log("updated events"); -} - -updateCalendar(); - -Bangle.setUI("clock"); - `, - }, - ], - }); -} - -document - .querySelector("button[type=submit]") - .addEventListener("click", onload, false); - -document.querySelector("#geoloc")?.addEventListener("click", (event) => { - event.preventDefault(); - navigator.geolocation.getCurrentPosition( - (pos) => { - const { - coords: { latitude, longitude }, - } = pos; - locationElements[0].value = latitude; - locationElements[1].value = longitude; - console.debug(pos); - }, - (err) => { - if (err.PERMISSION_DENIED) { - alert("permission required to use geolocation api; enter manually"); - } - if (err.POSITION_UNAVAILABLE) { - alert("position unavailable; enter manually"); - } - }, - { enableHighAccuracy: false } - ); -}); - -document.querySelector( - "#hDate" -).innerText = `Today is ${new Date().toLocaleDateString()} & ${new HDate().toString()}`; - -const locationElements = [ - document.querySelector("#lat"), - document.querySelector("#lon"), -]; - -function getLatLonFromForm() { - const latLon = locationElements.map((el) => el.value); - if (locationElements.every((x) => x.checkValidity())) { - return latLon; - } else { - console.debug("lat lon invalid error"); - return [0, 0]; - } -} - -function groupBy(arr, fn) { - return arr - .map(typeof fn === "function" ? fn : (val) => val[fn]) - .reduce((acc, val, i) => { - acc[val] = (acc[val] || []).concat(arr[i]); - return acc; - }, {}); -} - -function generateHebCal(latLon) { - const location = new Location( - ...latLon, - document.querySelector("#inIL").checked - ); - - const now = new Date(); - - const options = { - year: now.getFullYear(), - isHebrewYear: false, - candlelighting: true, - location, - addHebrewDates: true, - addHebrewDatesForEvents: true, - sedrot: true, - start: now, - end: new Date(now.getFullYear(), now.getMonth() + 3), - }; - - const events = HebrewCalendar.calendar(options).map((ev) => { - const { desc, eventTime, startEvent, endEvent } = ev; - - const zman = new Zmanim(ev.date, ...latLon.map(Number)); - - let output = { - desc, - startEvent: startEvent?.eventTime?.getTime() || zman.gregEve().getTime(), - endEvent: endEvent?.eventTime?.getTime() || zman.shkiah().getTime(), - }; - - if (eventTime) { - delete output.startEvent; - delete output.endEvent; - output.startEvent = eventTime.getTime(); - output.endEvent = eventTime.getTime() + 60000 * 15; - } - - return output; - }); - - // console.table(events) - - return events.sort((a, b) => { - return a.startEvent - b.startEvent; - }); -} - -function enc(data) { - return btoa(heatshrink.compress(new TextEncoder().encode(data))); -} - -function serializeEvents(events) { - // const splitByGregorianMonth = groupBy(events, (evt) => { - // return new Date(evt.startEvent).getMonth(); - // }); - return JSON.stringify(events); -} From dc11845dbb0e5ff33669376c22188291cc327e78 Mon Sep 17 00:00:00 2001 From: Michael Salaverry Date: Sun, 19 Jun 2022 15:08:46 +0300 Subject: [PATCH 053/251] fix: less specific pin in same major version --- apps/hebrew_calendar/customizer.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/hebrew_calendar/customizer.html b/apps/hebrew_calendar/customizer.html index b83646d60..c6d529414 100644 --- a/apps/hebrew_calendar/customizer.html +++ b/apps/hebrew_calendar/customizer.html @@ -10,11 +10,11 @@ - - - - +

    Store on Bangle (file named log.csv, download with IDE)

    +

    + + + + +

    + + + + diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index 25f5e0580..029165dea 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -1,38 +1,31 @@ -var _GB = global.GB; - - +var storage = require("Storage"); var W = g.getWidth(), H = g.getHeight(); var position=0; -var response="..."; -function GB(msg) { - if (msg.t == "http" || msg.t == "intent") { - response = JSON.stringify(msg); - draw(); - } +// Try to read custom actions, otherwise use default +var actions = [ + "No Actions", +]; - if (_GB) { - _GB(msg); - } +try{ + actions = storage.read("ha.actions.txt").split(","); +} catch(e) { + // In case there are no user actions yet, we show the default... } function draw() { g.reset().clearRect(Bangle.appRect); - // Header - g.setFont("Vector", 32).setFontAlign(0,0); - var text = ""; - if(position == 0){ - text = "Door"; - } else if(position == 1){ - text = "Light"; - } + var h = 26; + g.setFont("Vector", h).setFontAlign(0,0); + var action = actions[position]; + var w = g.stringWidth(action); - g.drawString(text, W/2, H/3); - g.setFont("Vector", 24); - g.drawString(response, W/2, H/3+34); + + g.fillRect(W/2-w/2-8, H/2-h/2-8, W/2+w/2+2, H/2+h/2+2); + g.setColor(g.theme.bg).drawString(action, W/2, H/2); } @@ -46,21 +39,25 @@ Bangle.on('touch', function(btn, e){ var isRight = e.x > right; if(isRight){ + Bangle.buzz(40, 0.6); position += 1; - position = position > 1 ? 0 : position; + position = position >= actions.length ? 0 : position; } if(isLeft){ + Bangle.buzz(40, 0.6); position -= 1; - position = position < 0 ? 1 : position; + position = position < 0 ? actions.length-1 : position; } if(!isRight && !isLeft){ - Bangle.buzz(40, 0.6); - - // Trigger HA bridge - response = "sending..."; - Bluetooth.println(JSON.stringify({t:"int­ent",action:"com.espruino.gadgetbridge.banglejs.TOGGLE_LIGHT",extra:{}})); + Bangle.buzz(80, 0.6).then(()=>{ + action = "com.espruino.gadgetbridge.banglejs.ha." + actions[position]; + Bluetooth.println(JSON.stringify({t:"intent", action:action, extra:{}})); + setTimeout(()=>{ + Bangle.buzz(80, 0.6); + }, 250); + }); } draw(); diff --git a/apps/ha/ha.icon.js b/apps/ha/ha.icon.js index 8dbab8357..0b71898f3 100644 --- a/apps/ha/ha.icon.js +++ b/apps/ha/ha.icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwwcBkmSpICDBwcJBYwCDpAhFggRJGg8SCI+ABgU//gSDCI4JBj//AAX4JRAIBg4QDAAPgBIJWGgIQFAAI+BLglAgEPCI/wEgJoEgYQHAAPANwhWFAApcBCIWQgAQJAAMAgSMDCJiSCwB6GQA6eCn5TFL4q5BUgIRF/wuBv4RGkCeGO4IREUgMBCJCVGCISwIWw0BYRLIICLBHHCJRrGCIQIFR44I5LIoRaPpARcdIwRJfYMBCJuACKUkgE/a5f8gEJCJD7FCIeAg78FAAvggFJCIMACJZOBCIOQCJsCCIOSgEfCBP4gESCIZTFOIwRDoDIGaguSCIVIgCkFTwcAggRDpIYBQAx6BgAOCAQYIBLghWBTwQRFFgIABXIIFDBwgCDBYQAENAYCFLgIAEKwpKIIhA=")) +require("heatshrink").decompress(atob("mEwwMB/4Ae/1/Aof4j4FD+EPAofgAonAgYFDwA/EgOBFAcH8FDAoP8h/wDAX4h1wAoXwhkwAoXgBYnAC4mAEYIwCgED4EAFwIFE/gFDn/4h/D4fwj5dBAokc8fHnEP8EYsfGjEH/4FDF4MfCIP4AoMP+fP+AFBg/77/gIIV/HwIFCn4+BAoUf/AFDL4IFDL4IFDLIYFkAEQ=")) \ No newline at end of file diff --git a/apps/ha/ha.png b/apps/ha/ha.png index c73813025950aaccc31b7476b67ceb6326b5f915..8fce958e47d8f0a5ba2fda55f346b052ffe3ca8c 100644 GIT binary patch delta 943 zcmV;g15o^o4AcjZGk*h%NklxlBv|z+t{{eBO8xc2((3QpC3l~MvgMq`NFd+=C%{}d}j+<$A}7{@F4Gvo!dw$-8< z7{@%8&8!@({F^N+)8lQLKbj;b2Xi3JexY_tjR&de|45w~kQzknuoO*>#FDC{P zPP;d`zJ-_YvW;PJ4IkqzoW(M3xBja)@u(D1Ux#iMw_!i_#hM$Nw67=1!sarLN%ug8 z7LLYP@g!cy-GBHTKZksQJBDd|S=h93BIY!4IHVc66EP>h<}c}_7IV5wI5aHddsUks zq)>q8@H>9Pv!R=fImLBrQn(D=fqvEIlbF-QM>+k6p&O4m{gS-01G{P%KPe^a^Oz`^ zlO=;TWsJ z(Z-twaM|6;CDp-~n9lJ`OQo?6$EGj4s$o+l2@i#?E>GXyX{@g2UA z9z+l0p&ndisKV2f-W7YL)A+jzaj&qsh8L}eM*{~!_lN2yP?aYiPN!4|r+#5GFZEB2 z*nB#^?|+W5sty!+W=eSSaviVg6HX_kCaN33Pu5G@llV5|iO}7P3l$uw!&8)HDYUzW z>nzSmHTV)PO3hc+yPT6QurYj)BYi(~6EUZs19f=XVZ+5(zaUk!yE5XuCs*-|bVM2H zLA)n*hAkwjT#6;H=lBczRAyE(9iUkaNwLJtq% zh}6r><4Wk?j?e4(9*^{K;C#$g!gD0{%51tK{qnbjV)C7pPNfX9ct?uiI}1D)@UHZ* zDZ|0oqpTRzM$v&A(g_@u;_yBx>GFS&9l#kk=fIg5%diU%;{M<|7Tg1EtIKZCCF$j~ zh<_h3S6DY?;{~|KdPA3CPO3v8{1HHnjuJPOEKu4 z-hqDa*sL3DNL8T<8nI?AryCSc*GauFCMcD_v6>sNO1=E*fO$q3VTAu0{sE4eC~3Kb R0O0@t002ovPDHLkV1j|R)CB+l delta 1515 zcmV& zf>~B9rWa~TO&bJa&{8T~N=wOnsPP9`P{G7MVAx;4pjMrUnq>u3O-u&aq>I5{OcTJi z(H~mE+Gfk`hf%z{UZL%^)V-5S?s@KcKA+d;p68x>?s-lCJb#1`DvrnF`(m-!N0CTG z83+WFckbNze4{#QwR*0)y82mVW#tTx)ebZKgbFwE#j0 zi$Do;`a8i;9YT zPN(zlboe%v$zx>)YMeY;OXM>rPu4-4u6M3l5qfB@Esi;c>$-(Y&Ita zq0{LeAcXL=;kmkv)9K7Rd_os4T*$6FA%w7=o}Q!!_S&^;TLz!d`1p8I5EhH22O(6P zGJt`BfdhrS^K6ZcjU@$Pv)SrX24FNAUG&23?d=7FPpGS_ixEI;YwJCPkT40}Znqy~ zNBh2r&41P3-~WAr8(Zu9!i9we#zS)R=FOBXm5u}g0psAK|6+Kj`T6-D8LdE)q#AN~ z_bnEShi$K|t?gGnHd|U+81_h#Bme*~givuH5IDI}#F*(`&g+jsC4*&o>di3ZpMNvRe6g+(R@Nh0{DwWFhbFbGcj>TdJuy8oc z7*}mJTP}R%MI=cw(&2Ep9t#8l$`s|_dj*5Rg8+FN`xOd>Ct*{eP)z5_Zfk2R`@Qfk zaewyg*_=2T9UV>jn+tJsW;0QkQ0w?b@2MgS`-D_aVajo6Hg0D{5bmcnGCP${=llMtAC#rkcXESi5CktrJ9g|y`Xbx8b0@F2q|s<(q@_~n`1*bVLVrj| z5X4iUO_JPhH?K*TTrQtZ*gACR5bxP2olT`u`I44a);1UZ7t1PreSKQaX432RZhAqp z*<5ILiX=$}yjH9Aq+IBAI2@m`qdkBAe8J$kmKLp6>o;^}##Cb4wr%rg&YbC|=bbxu z4z6Fn&KYn%b^G>huvjdNyzcJqAAd?pN}g_55g~-FEoCzzzjEbDLGOH9TiZ_?u1vFa z;>3w5wvkh(PURiGx3@P5{`m3Zzhtz*0RS*CFi@k@=^n6+K^{jZE?-)$)-yOb_+duy z2_b}VuI>Z?R7*=s&cF=@11J1iw<*aAo-UKgWa4rF0F*|fp+-hVGKL--8-Jq+g5b0X z0F=pO8ce6pr@PTz9F0c5diCm+ePUvwX``}wy&h_7Ye6g)LwR{Q2m}HMhro?R10R7E_@r*?ZHDb!N2bn#L88V4g6Uw7JQXaDh>0~k{cEetAEZnPixZVeS90-*!LTd(XM&-Y@sd&GGRfYik&5005xv ze#Y(mt~UJxHPu~iY@H6>6>fheR!8s(9zeIgU-s z#{NA8M+S2pUn|G&`}!aGjX~wVpZX+EmwTg546$rr+XK^7MHmWsQI|`H6#bdoOF6+? z5(Pf}o3-eg0A{$&L3$R#^AO4m?NAS}dDErIs4BqurFOt%Lvdo7bjHI9{4A7S8Rao{ zn6zJ#;_+#)t$Gqut}Y!3_?YmAOakZkNEoO3hT{xI6ZUyBbq=M&+FMbE(C4YheqQs9 zE(6KS=gr+3xbmX=iz5T49xtwL;Co}tE}iCIzosc}@L#*?`6Po#*WZ{xbYw!DguJJn z!vqD9D#?l^XQo2Yld_{mD7^uNfq8g+cq9D*&~!OFn)B&sAtJ`i{PvbI9>sa2Q-iAD z<%}QC=x34NzWB_;Fv+cmBDQeCb;1Y?T3+hgUh);qhueik@GU6Hdk7;Ra+o#tLvLGV zsfTp-6&Ya1nB|Mdv>E&`CT-ubQp`6*^-tl|;Fd)so)Ugw| zP}G@o4A$j7;8zAedv4vL9VxePxe%#=!;8x2^`LU(x#F+Ep$HnslS$LF^RER=4|mu{ zt-lS4xOrvUcD8Qu<(r6gyaG6J=^SJ|4~JBhY<)f}RwLFaSBOKJ`t8^Np>!twI|S z8e?i}%xM$LIsj)hJ5i;XKtoQ3j`~&tFP7|r-kLNJeSJjsH59T-A9}+fJ$j|C>*r(d z%9eLRus2)SHJ@59vUXNV0>XSEy&wKmxHLve;v$J~j3bP*IU|XxwkiwXnV)Jq<9FwA zLQpK{Q%za~oDa0^rCyO450@-_-&Z6`fo)HnG#D*AZCX~vqSB7zQda#G#2RjjisSQm z1xeaPdZ8^HSv0APH!66%S(gB>aF3!;kv&wORO?)UB}mU+Vd*#-t5~;unadU?lYft7 zJ9p>_*727mX!*D6V3aE9hOIy8D~_coMQoeU2Je6ewka=TLH6x_76JE$>nFTsx5+1Z z{t9SHEo|Wjsy&46CjGGjwLnPKQabPP1L?^GqB`#G7VZAgCeZ_Kdahx^X`!L{YWVuX zt038lO!>eg-ToG`S!#Zs7dXEm(wBzF;9F(@&83t@gxhT@Lx2FbLO^Cc+n2ln9^WHK z=Rd0$vF^31Rmk8BXjv$>zjdDZ0kzC-;A0tHWzFV@_rj4w?G7djeG(QqxQ_iLdoR&a zV#VB8@2*kiZhNzZCcPrkU(`+l{Z%>7ml8T9K+5q^H}L{Sv=u1I*fEi4IDN^cURSE+ z4i`6FYE9J3Uvu1adzcReM|v{n4hN-WB1D$&I#TqYL`OfI7cKSp>^my*&Qn+Dg?DLv-R zTu|?kspFg|?M|>-tk!!hC}l3JB1@}q!PP(yqP9=}|M0)Ih7xhr15PS%Y%SRRNWlG+ KmmAlWa_etnmSL*^ literal 0 HcmV?d00001 diff --git a/apps/ha/screenshot_1.png b/apps/ha/screenshot_1.png deleted file mode 100644 index 97d42a89636e01437a6397075db1dc453ca22fe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3552 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 diff --git a/apps/ha/screenshot_2.png b/apps/ha/screenshot_2.png deleted file mode 100644 index 2d25dd4e6ce4166d5a6b48ad7f50231bf643cc95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3334 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 diff --git a/apps/ha/screenshot_3.png b/apps/ha/screenshot_3.png deleted file mode 100644 index 782e4a1952f1dc3205f20852edf88e9493edd6d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3455 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 Xk+%_!CsMW>72tTx)$W-M?(+Wt^h|>m From 8fe186df28090ee7b8c3786c8354de4c690c9c64 Mon Sep 17 00:00:00 2001 From: "greg@1m" Date: Thu, 23 Jun 2022 20:10:31 +0200 Subject: [PATCH 130/251] readme update --- apps/advcasio/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/advcasio/README.md b/apps/advcasio/README.md index 97fa61c40..8583424f1 100644 --- a/apps/advcasio/README.md +++ b/apps/advcasio/README.md @@ -12,6 +12,7 @@ Forked from the awesome Cassio Watch.
    - Improving quality of the background images, right now it is quite blurry. - Improving screenshots quality. - Improving web app look. +- Improving bangle app performances (using functions for images and specialized array). ## Functionalities From 4966143cefbe6353165f9aa5d24869e2b4b8e5a2 Mon Sep 17 00:00:00 2001 From: David Peer Date: Thu, 23 Jun 2022 20:11:07 +0200 Subject: [PATCH 131/251] Added custom html page --- apps/ha/metadata.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/ha/metadata.json b/apps/ha/metadata.json index 065bb0fa7..1931b72a0 100644 --- a/apps/ha/metadata.json +++ b/apps/ha/metadata.json @@ -8,6 +8,7 @@ "tags": "tool", "readme": "README.md", "supports": ["BANGLEJS2"], + "custom": "actions.html", "screenshots": [ {"url":"screenshot.png"}], "data": [ From 23da906d511585614b7a74623746eb1830159760 Mon Sep 17 00:00:00 2001 From: David Peer Date: Thu, 23 Jun 2022 20:23:20 +0200 Subject: [PATCH 132/251] Use extra of intent rather than intents -- much easier to configure. --- apps/ha/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/ha/README.md b/apps/ha/README.md index 2a037cd68..41c90c616 100644 --- a/apps/ha/README.md +++ b/apps/ha/README.md @@ -1,21 +1,21 @@ # Home Assistant This app integrates your BangleJs into the HomeAssistant. -# Setup +# First Setup 1.) First of all, make sure that HomeAssistant is working and the HomeAssistant, as well as BangleJS Android App, is running on your device 2.) Enable intent access in your BangleJS Android App. -3.) Upload this app to your BangleJS and set the actions that you want to trigger from your -BangleJs within the app store. +3.) Set the "com.espruino.gadgetbridge.banglejs.HA" intent in your HomeAssistant android app -4.) Set all the actions on your HomeAssistant Android app with preceding "com.espruino.gadgetbridge.banglejs.ha." - -5.) The HomeAssistant Android app must be restarted in order to listen for those actions +4.) The HomeAssistant Android app must be restarted in order to listen for those actions -- a "Force Stop" is necessary! -6.) Set the corresponding actions in HomeAssistant Web UI +# Setup Trigger + +1.) Upload the app and all corresponding trigger +1.) Set the corresponding actions in HomeAssistant Web UI using the trigger data and intent. Thats it! From 23e892559553633fb9b69e2c55e28eb54b67b438 Mon Sep 17 00:00:00 2001 From: David Peer Date: Thu, 23 Jun 2022 20:23:30 +0200 Subject: [PATCH 133/251] Minor changes --- apps/ha/ha.app.js | 9 +++++++-- apps/ha/metadata.json | 4 ++-- apps/ha/{actions.html => trigger.html} | 6 +++--- 3 files changed, 12 insertions(+), 7 deletions(-) rename apps/ha/{actions.html => trigger.html} (81%) diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index 029165dea..d60ede1bb 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -52,8 +52,13 @@ Bangle.on('touch', function(btn, e){ if(!isRight && !isLeft){ Bangle.buzz(80, 0.6).then(()=>{ - action = "com.espruino.gadgetbridge.banglejs.ha." + actions[position]; - Bluetooth.println(JSON.stringify({t:"intent", action:action, extra:{}})); + Bluetooth.println(JSON.stringify({ + t:"intent", + action:"com.espruino.gadgetbridge.banglejs.HA", + extra:{ + trigger: actions[position] + }}) + ); setTimeout(()=>{ Bangle.buzz(80, 0.6); }, 250); diff --git a/apps/ha/metadata.json b/apps/ha/metadata.json index 1931b72a0..0b7424b92 100644 --- a/apps/ha/metadata.json +++ b/apps/ha/metadata.json @@ -8,11 +8,11 @@ "tags": "tool", "readme": "README.md", "supports": ["BANGLEJS2"], - "custom": "actions.html", + "custom": "trigger.html", "screenshots": [ {"url":"screenshot.png"}], "data": [ - {"name":"ha.actions.txt" } + {"name":"ha.trigger.txt" } ], "storage": [ {"name":"ha.app.js","url":"ha.app.js"}, diff --git a/apps/ha/actions.html b/apps/ha/trigger.html similarity index 81% rename from apps/ha/actions.html rename to apps/ha/trigger.html index cb0ed9db1..77008a5fa 100644 --- a/apps/ha/actions.html +++ b/apps/ha/trigger.html @@ -4,7 +4,7 @@ -

    Actions:

    +

    Actions:

    Click

    @@ -20,10 +20,10 @@ // send finished app (in addition to contents of app.json) sendCustomizedApp({ storage:[ - {name:"ha.actions.txt", url:"ha.actions.txt", content:app}, + {name:"ha.trigger.txt", url:"ha.trigger.txt", content:app}, ] }); - console.log("Sent actions.txt!"); + console.log("Sent ha.trigger.txt!"); }); From 0c0fb6089c653ee9902665756654c2ce21cc6db5 Mon Sep 17 00:00:00 2001 From: David Peer Date: Thu, 23 Jun 2022 20:24:32 +0200 Subject: [PATCH 134/251] Fixed Icon Color --- apps/ha/ha.icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ha/ha.icon.js b/apps/ha/ha.icon.js index 0b71898f3..9bf6af796 100644 --- a/apps/ha/ha.icon.js +++ b/apps/ha/ha.icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwwMB/4Ae/1/Aof4j4FD+EPAofgAonAgYFDwA/EgOBFAcH8FDAoP8h/wDAX4h1wAoXwhkwAoXgBYnAC4mAEYIwCgED4EAFwIFE/gFDn/4h/D4fwj5dBAokc8fHnEP8EYsfGjEH/4FDF4MfCIP4AoMP+fP+AFBg/77/gIIV/HwIFCn4+BAoUf/AFDL4IFDL4IFDLIYFkAEQ=")) \ No newline at end of file +require("heatshrink").decompress(atob("mEwwIjggOAAocH8AFDh/wAocfAok//gFDv/+Aof+vwoD/Ef3gFBgfwh4YCg/xx4FCh/z54FCj4LEn4XEv4jBGAX//k//4uBAokDAofAg/wnk8h/gLoIFE8ccnHH+Ef8+cnPn/EAAoYvB8ARBg4FB+EMmEPAoP4gkgj5BCwA+BAoXAHwIFC8EHAoZfBAoZfBAoZZDAsgAiA==")) \ No newline at end of file From ee2d45ebd64056ade0a087f9d5b79727adb1c852 Mon Sep 17 00:00:00 2001 From: David Peer Date: Thu, 23 Jun 2022 20:26:25 +0200 Subject: [PATCH 135/251] Better description --- apps/ha/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ha/metadata.json b/apps/ha/metadata.json index 0b7424b92..eea1b6905 100644 --- a/apps/ha/metadata.json +++ b/apps/ha/metadata.json @@ -2,7 +2,7 @@ "id": "ha", "name": "HomeAssistant", "version": "0.01", - "description": "An application that displays information such as battery level, steps etc.", + "description": "Integrates your BangleJS into HomeAssistant.", "icon": "ha.png", "type": "app", "tags": "tool", From 9c6178df7d0a9633d1ce0b3ca936845619e4f520 Mon Sep 17 00:00:00 2001 From: David Peer Date: Thu, 23 Jun 2022 20:32:39 +0200 Subject: [PATCH 136/251] Minor fixes --- apps/ha/ha.app.js | 4 ++-- apps/ha/trigger.html | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index d60ede1bb..bea3a142c 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -9,7 +9,7 @@ var actions = [ ]; try{ - actions = storage.read("ha.actions.txt").split(","); + actions = storage.read("ha.trigger.txt").split(","); } catch(e) { // In case there are no user actions yet, we show the default... } @@ -18,7 +18,7 @@ try{ function draw() { g.reset().clearRect(Bangle.appRect); - var h = 26; + var h = 22; g.setFont("Vector", h).setFontAlign(0,0); var action = actions[position]; var w = g.stringWidth(action); diff --git a/apps/ha/trigger.html b/apps/ha/trigger.html index 77008a5fa..54f57f683 100644 --- a/apps/ha/trigger.html +++ b/apps/ha/trigger.html @@ -4,8 +4,8 @@ -

    Actions:

    -

    Click

    +

    Trigger - seperate list with ',':

    +

    From a3e8fb5b776f7a890e08095822cbf431c379fc6e Mon Sep 17 00:00:00 2001 From: David Peer Date: Thu, 23 Jun 2022 20:52:20 +0200 Subject: [PATCH 137/251] Finished readme --- apps/ha/README.md | 29 ++++++++++++++++++++--------- apps/ha/ha_automation.png | Bin 0 -> 72312 bytes 2 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 apps/ha/ha_automation.png diff --git a/apps/ha/README.md b/apps/ha/README.md index 41c90c616..685946a47 100644 --- a/apps/ha/README.md +++ b/apps/ha/README.md @@ -2,22 +2,33 @@ This app integrates your BangleJs into the HomeAssistant. # First Setup -1.) First of all, make sure that HomeAssistant is working and -the HomeAssistant, as well as BangleJS Android App, is running on your device +1.) First of all, make sure that HomeAssistant and the HomeAssistant Android App works. -2.) Enable intent access in your BangleJS Android App. +2.) Open your BangleJs Gadgetbridge App, click on the Settings icon of your BangleJs and enable "Allow Intent Access" -3.) Set the "com.espruino.gadgetbridge.banglejs.HA" intent in your HomeAssistant android app +3.) Enable sensor in HomeAssistant Andoird App/Configuration/Companion App/Manage Sensors/LastUpdate Trigger -4.) The HomeAssistant Android app must be restarted in order to listen for those actions - -- a "Force Stop" is necessary! +4.) At the bottom of the same screen click on "Add New Intent" and enter "com.espruino.gadgetbridge.banglejs.HA" + +5.) The HomeAssistant Android app must be restarted in order to listen for those actions + -- a "Force Stop" is necessary (through Android App settings) or restart your phone! + +This setup must be done only once -- now you are ready to configure your BangleJS to +control some devices or entities in your HomeAssistant :) # Setup Trigger +1.) Upload the app and all corresponding triggers through the AppStore UI. For example I entered "DOOR,LIGHT,OVEN". The list will be shown in your BangleJs in the corresponding order so enter more important triggers first. -1.) Upload the app and all corresponding trigger -1.) Set the corresponding actions in HomeAssistant Web UI using the trigger data and intent. +2.) Create an "automation" in the HomeAssistant WebUI for each trigger that you created on your BangleJs in order to tell HomeAssistant what you want to control. A sample configuration is shown in the image below -- I use this trigger to open the door: -Thats it! +![](ha_automation.png) + +3.) Don't forget to select the action that should be executed at the bottom of each automation. + +# Error Handling + +While playing and testing a bit I found that it is very important that you allow the android HomeAssistant app, as well as BangleJs Gadgetbridge app to (1) run in background and (2), disable energy optimizations for both apps. +Otherwise, Android could stop one of both apps and the trigger will never be sent to HomeAssistant... ## Creator - [David Peer](https://github.com/peerdavid). diff --git a/apps/ha/ha_automation.png b/apps/ha/ha_automation.png new file mode 100644 index 0000000000000000000000000000000000000000..9372cfa1525912a8ef0c5c759a72b695ea327aac GIT binary patch literal 72312 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 x3Co)99L*qz`u(1+rmUq@@zna`e*xTPmYo0q literal 0 HcmV?d00001 From 3d86cb3e23e7d23df52e4047512d1a01435447b2 Mon Sep 17 00:00:00 2001 From: "greg@1m" Date: Thu, 23 Jun 2022 20:57:30 +0200 Subject: [PATCH 138/251] adding data.json in settings and updating links --- apps/advcasio/app.js | 13 ++----------- apps/advcasio/data.json | 1 + apps/advcasio/metadata.json | 3 +++ 3 files changed, 6 insertions(+), 11 deletions(-) create mode 100644 apps/advcasio/data.json diff --git a/apps/advcasio/app.js b/apps/advcasio/app.js index a8f0e2001..4a10f6bf6 100644 --- a/apps/advcasio/app.js +++ b/apps/advcasio/app.js @@ -137,7 +137,7 @@ function drawTimer() { function getDataJson(){ var res = {"tasks":"", "weather":[]}; try { - res = storage.readJSON('advCasioData.json'); + res = storage.readJSON('advcasio.data.json'); } catch(ex) { return res; } @@ -145,7 +145,7 @@ function getDataJson(){ } function setDataJson(resJson){ try { - res = storage.writeJSON('advCasioData.json', resJson); + res = storage.writeJSON('advcasio.data.json', resJson); } catch(ex) { return res; } @@ -181,13 +181,10 @@ function drawWeather(arr) { // DRAWING FUNCS // function drawTasks(str) { - //g.setFont("8x12", 1); g.setFont("6x8", 1); var t = 60; var l = 0; g.drawString(str, l+5, t+0); - //g.drawString(".meeting", l+5, t+10); - //g.drawString("15h gisele", l+5, t+20); } @@ -272,18 +269,12 @@ function draw() { g.setColor(0, 0, 0); g.setFont("6x12"); - //g.drawString("woop Process", 30, 20); - //g.setFont("8x12"); - //g.drawString("ACTIVATE", 40, 35); if(dataJson && dataJson.weather) drawWeather(dataJson.weather); if(dataJson && dataJson.tasks) drawTasks(dataJson.tasks); g.setFontAlign(0,-1); g.setFont("8x12", 2); - //g.drawString(getTemperature(), 155, 132); - //g.drawString(Math.round(Bangle.getHealthStatus("last").bpm || 0), 109, 98); - drawSteps(); g.setFontAlign(-1,-1); diff --git a/apps/advcasio/data.json b/apps/advcasio/data.json new file mode 100644 index 000000000..d986fa09c --- /dev/null +++ b/apps/advcasio/data.json @@ -0,0 +1 @@ +{"tasks":"", "weather":[]}; diff --git a/apps/advcasio/metadata.json b/apps/advcasio/metadata.json index 388defcee..90183df0a 100644 --- a/apps/advcasio/metadata.json +++ b/apps/advcasio/metadata.json @@ -16,5 +16,8 @@ "storage": [ {"name":"advcasio.app.js","url":"app.js"}, {"name":"advcasio.img","url":"app-icon.js","evaluate":true} + ], + "data": [ + { "name": "advcasio.data.json", "url": "data.json", "storageFile": true } ] } From a3f192c3d9336db5eb7b6442866fc003be5a4651 Mon Sep 17 00:00:00 2001 From: David Peer Date: Thu, 23 Jun 2022 21:03:32 +0200 Subject: [PATCH 139/251] Minor change --- apps/ha/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/ha/README.md b/apps/ha/README.md index 685946a47..c1f0bc3a6 100644 --- a/apps/ha/README.md +++ b/apps/ha/README.md @@ -1,6 +1,10 @@ # Home Assistant This app integrates your BangleJs into the HomeAssistant. +# How to use +Click on the left and right side of the screen to select the triggers that you +configured. Click in the middle of the screen to send the trigger to HomeAssistant. + # First Setup 1.) First of all, make sure that HomeAssistant and the HomeAssistant Android App works. From 007344115bf67d7cbab022a8e3e7ac0c501247d4 Mon Sep 17 00:00:00 2001 From: "greg@1m" Date: Thu, 23 Jun 2022 21:11:03 +0200 Subject: [PATCH 140/251] cleaning code --- apps/advcasio/app.js | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/apps/advcasio/app.js b/apps/advcasio/app.js index 4a10f6bf6..be80f2cf9 100644 --- a/apps/advcasio/app.js +++ b/apps/advcasio/app.js @@ -86,11 +86,6 @@ function initTouchTimer () { timer_time = timer_time - 5; } draw(); - - - - - draw(); }); } setTimeout(() => { @@ -157,10 +152,8 @@ var dataJson = getDataJson(); // WEATHER! // function drawWeather(arr) { - //g.setFont("8x12", 1); g.setFont("6x8", 1); var p = {l: 8, tText: 40, tIcon:20, decal:25}; - //var length = Math.min(arr.length, 4); var today = new Date().getTime(); var yesterday = today - (1000 * 60 * 60 * 24); var testday = today + (1000 * 60 * 60 * 24 * 2); @@ -187,11 +180,7 @@ function drawTasks(str) { g.drawString(str, l+5, t+0); } - - - function drawSteps() { - //g.setFont("8x12", 1); g.setFont("8x12", 2); var t = 132; var l = 150; @@ -279,24 +268,15 @@ function draw() { drawSteps(); g.setFontAlign(-1,-1); drawClock(); - //drawAlarm(); - //drawRocket(); drawBattery(); - - drawTimer(); - // Hide widgets - for (let wd of WIDGETS) {wd.draw=()=>{};wd.area="";} } - - -// save batt power +// save batt power, does not seem to work although... var canTouch = true; Bangle.on("lcdPower", (on) => { - console.log(22, on, canTouch); if (on) { draw(); } else { @@ -307,17 +287,12 @@ Bangle.on("lcdPower", (on) => { Bangle.on("lock", (locked) => { - clearIntervals(); draw(); if (!locked) { - canTouch = true; - console.log(33, locked, canTouch); - //rocketInterval = setInterval(drawRocket, rocketSpeed); } else { canTouch = false; - console.log(33, locked, canTouch); } }); From 9c63ebf9daa633c49e1403f8e1e154b1c05b8e7d Mon Sep 17 00:00:00 2001 From: Marco Heiming Date: Thu, 23 Jun 2022 21:29:21 +0200 Subject: [PATCH 141/251] Bump version --- apps/widbaroalarm/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widbaroalarm/metadata.json b/apps/widbaroalarm/metadata.json index 101d09f3d..17630eaa8 100644 --- a/apps/widbaroalarm/metadata.json +++ b/apps/widbaroalarm/metadata.json @@ -2,7 +2,7 @@ "id": "widbaroalarm", "name": "Barometer Alarm Widget", "shortName": "Barometer Alarm", - "version": "0.04", + "version": "0.05", "description": "A widget that can alarm on when the pressure reaches defined thresholds.", "icon": "widget.png", "type": "widget", From 221f1a371b87c0482eda81ad7853395cde5b544e Mon Sep 17 00:00:00 2001 From: "greg@1m" Date: Thu, 23 Jun 2022 21:39:34 +0200 Subject: [PATCH 142/251] updating webapp link to github --- apps/advcasio/README.md | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/apps/advcasio/README.md b/apps/advcasio/README.md index 8583424f1..ef38d71df 100644 --- a/apps/advcasio/README.md +++ b/apps/advcasio/README.md @@ -4,7 +4,7 @@ An over-engineered clock inspired by Casio watches.
    It has a dedicated timer, a scratchpad and can display the weather condition 4 days ahead.
    -It uses a custom webapp to update its content.
    +It uses a
    custom web app to update its content.
    Forked from the awesome Cassio Watch.
    ## Todo @@ -30,15 +30,15 @@ Clock: Web interface to update weather & scratchpad
    -https://adv-casio-bangle-updater.herokuapp.com/ +https://dotgreg.github.io/advCasioBangleClock ## Usage ### How to update the tasks list / weather -- you will need a free openweathermap.org api key. -- go to https://adv-casio-bangle-updater.herokuapp.com - - Alternatively you can install it on your own server/heroku/service/github pages, the web-app code is here +- you will need a free openweathermap.org api key. +- go to https://dotgreg.github.io/advCasioBangleClock/ + - Alternatively you can install it on your own server/heroku/service/github pages, the web-app code is here - fill the location and the api key (it will be saved on your browser, no need to do it each time) - edit the scratchpad with what you want - click on sync @@ -50,14 +50,12 @@ Web interface to update weather & scratchpad
    - swipe right : start timer - swipe left : stop timer -## Issues, suggestions and bugtracker -https://github.com/dotgreg/advCasioBangleClock/issues - -## Code repository (bangle app and web app) -https://github.com/dotgreg/advCasioBangleClock - -## Creator -https://github.com/dotgreg - +## Links +### Issues, suggestions and bugtracker +https://github.com/dotgreg/advCasioBangleClock/issues +### Code repository (bangle app and web app) +https://github.com/dotgreg/advCasioBangleClock +### Creator +https://github.com/dotgreg From 5af5f5a7d0e8f215c22306feeb03767bd9409ff1 Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 08:19:08 +0200 Subject: [PATCH 143/251] Undo other changes... --- apps/cassioWatch/app.js | 100 ++-------------------------------------- 1 file changed, 5 insertions(+), 95 deletions(-) diff --git a/apps/cassioWatch/app.js b/apps/cassioWatch/app.js index 3f5cfee40..6bbb9e823 100644 --- a/apps/cassioWatch/app.js +++ b/apps/cassioWatch/app.js @@ -4,11 +4,8 @@ require("Font6x12").add(Graphics); require("Font8x12").add(Graphics); require("Font7x11Numeric7Seg").add(Graphics); - -const TIMER_IDX = "cassioWatch"; - - function bigThenSmall(big, small, x, y) { + g.setFont("7x11Numeric7Seg", 2); g.drawString(big, x, y); x += g.stringWidth(big); g.setFont("8x12"); @@ -74,7 +71,6 @@ function drawClock() { } function drawBattery() { - g.setFont("7x11Numeric7Seg", 2); bigThenSmall(E.getBattery(), "%", 135, 21); } @@ -121,59 +117,6 @@ function getSteps() { return steps + "k"; } -function isAlarmEnabled(){ - try{ - var alarm = require('sched'); - var alarmObj = alarm.getAlarm(TIMER_IDX); - if(alarmObj===undefined || !alarmObj.on){ - return false; - } - - return true; - - } catch(ex){ } - return false; -} - -function getAlarmMinutes(){ - if(!isAlarmEnabled()){ - return -1; - } - - var alarm = require('sched'); - var alarmObj = alarm.getAlarm(TIMER_IDX); - return Math.round(alarm.getTimeToAlarm(alarmObj)/(60*1000)); -} - -function increaseAlarm(){ - try{ - var minutes = isAlarmEnabled() ? getAlarmMinutes() : 0; - var alarm = require('sched') - alarm.setAlarm(TIMER_IDX, { - timer : (minutes+5)*60*1000, - }); - alarm.reload(); - } catch(ex){ } -} - -function decreaseAlarm(){ - try{ - var minutes = getAlarmMinutes(); - minutes -= 5; - - var alarm = require('sched') - alarm.setAlarm(TIMER_IDX, undefined); - - if(minutes > 0){ - alarm.setAlarm(TIMER_IDX, { - timer : minutes*60*1000, - }); - } - - alarm.reload(); - } catch(ex){ } -} - function draw() { queueDraw(); @@ -185,17 +128,10 @@ function draw() { let background = getBackgroundImage(); g.drawImage(background, 0, 0, { scale: 1 }); g.setColor(0, 0, 0); - - if(!isAlarmEnabled()){ - g.setFont("6x12"); - g.drawString("Launching Process", 30, 20); - g.setFont("8x12"); - g.drawString("ACTIVATE", 40, 35); - } else { - g.setFont("8x12", 2); - // g.drawString("T-" + getAlarmMinutes()+ "min", 30, 23); - bigThenSmall("T-" + getAlarmMinutes(), " min.", 30, 23); - } + g.setFont("6x12"); + g.drawString("Launching Process", 30, 20); + g.setFont("8x12"); + g.drawString("ACTIVATE", 40, 35); g.setFontAlign(0,-1); g.setFont("8x12", 2); @@ -230,32 +166,6 @@ Bangle.on("lock", (locked) => { }); -Bangle.on('touch', function(btn, e){ - var left = parseInt(g.getWidth() * 0.2); - var right = g.getWidth() - left; - var upper = parseInt(g.getHeight() * 0.2); - var lower = g.getHeight() - upper; - - var is_left = e.x < left; - var is_right = e.x > right; - var is_upper = e.y < upper; - var is_lower = e.y > lower; - - if(is_upper){ - Bangle.buzz(40, 0.6); - increaseAlarm(); - draw(); - } - - if(is_lower){ - Bangle.buzz(40, 0.6); - decreaseAlarm(); - draw(); - } -}); - - - // Load widgets, but don't show them Bangle.loadWidgets(); Bangle.setUI("clock"); From 27eaa5beed65ce140f7c0406836a65538c6826a4 Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 08:33:14 +0200 Subject: [PATCH 144/251] Improved UI --- apps/ha/ha.app.js | 37 ++++++++++++++++++++++++++++++------- apps/ha/screenshot.png | Bin 1873 -> 2574 bytes 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index bea3a142c..73915d731 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -3,6 +3,12 @@ var W = g.getWidth(), H = g.getHeight(); var position=0; +var icon = { + width : 48, height : 48, bpp : 1, + transparent : 0, + buffer : require("heatshrink").decompress(atob("AD8BwAFDg/gAocP+AFDj4FEn/8Aod//wFD/1+FAf4j+8AoMD+EPDAUH+OPAoUP+fPAoUfBYk/C4l/EYIwC//8n//FwIFEgYFD4EH+E8nkP8BdBAonjjk44/wj/nzk58/4gAFDF4PgCIMHAoPwhkwh4FB/EEkEfIIWAHwIFC4A+BAoXgg4FDL4IFDL4IFDLIYFkAEQA==")) +}; + // Try to read custom actions, otherwise use default var actions = [ "No Actions", @@ -19,19 +25,22 @@ function draw() { g.reset().clearRect(Bangle.appRect); var h = 22; - g.setFont("Vector", h).setFontAlign(0,0); + g.setFont("Vector", h); var action = actions[position]; var w = g.stringWidth(action); + g.setFontAlign(-1,-1); + g.setColor(g.theme.fg).drawImage(icon, 12, H/5-2); + g.drawString("Home", icon.width + 20, H/5); + g.drawString("Assistant", icon.width + 18, H/5+24); - g.fillRect(W/2-w/2-8, H/2-h/2-8, W/2+w/2+2, H/2+h/2+2); - g.setColor(g.theme.bg).drawString(action, W/2, H/2); + g.setFontAlign(0,0); + var ypos = H/5*3+20; + g.fillRect(W/2-w/2-8, ypos-h/2-8, W/2+w/2+2, ypos+h/2+2); + g.setColor(g.theme.bg).drawString(action, W/2, ypos); } -draw(); -setWatch(_=>load(), BTN1); - Bangle.on('touch', function(btn, e){ var left = parseInt(g.getWidth() * 0.3); var right = g.getWidth() - left; @@ -68,5 +77,19 @@ Bangle.on('touch', function(btn, e){ draw(); }); +// Send a startup trigger such that we could also execute +// an action when the app is started :) +Bluetooth.println(JSON.stringify({ + t:"intent", + action:"com.espruino.gadgetbridge.banglejs.HA", + extra:{ + trigger: "APP_STARTED" + }}) +); + +// Next load the widgets and draw the app Bangle.loadWidgets(); -Bangle.drawWidgets(); \ No newline at end of file +Bangle.drawWidgets(); + +draw(); +setWatch(_=>load(), BTN1); diff --git a/apps/ha/screenshot.png b/apps/ha/screenshot.png index 4125df314fab20e5ba5eb6827940d8ddc38f3bf1..e92b7e97d156cec5e07b421735c3ebf0df8919ca 100644 GIT binary patch literal 2574 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 KmmAlWa_etnmSL*^ From b4ce80db862b0bb8f98af04fcd8cdbb2b16ba937 Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 08:33:44 +0200 Subject: [PATCH 145/251] Added screenshot --- apps/ha/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/ha/README.md b/apps/ha/README.md index c1f0bc3a6..67f5a83ce 100644 --- a/apps/ha/README.md +++ b/apps/ha/README.md @@ -5,6 +5,8 @@ This app integrates your BangleJs into the HomeAssistant. Click on the left and right side of the screen to select the triggers that you configured. Click in the middle of the screen to send the trigger to HomeAssistant. +![](screenshot.png) + # First Setup 1.) First of all, make sure that HomeAssistant and the HomeAssistant Android App works. From dee0ca3aef69eda950e1b0b375ba6a238db69420 Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 08:36:08 +0200 Subject: [PATCH 146/251] Added APP_STARTED to Readme --- apps/ha/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/ha/README.md b/apps/ha/README.md index 67f5a83ce..35a90ea88 100644 --- a/apps/ha/README.md +++ b/apps/ha/README.md @@ -31,8 +31,12 @@ control some devices or entities in your HomeAssistant :) 3.) Don't forget to select the action that should be executed at the bottom of each automation. -# Error Handling +*Note: There is also an automatic trigger send when the app is started (APP_STARTED) -- so you could +add an action also for that.* +# FAQ + +## Sometimes the trigger is not executed While playing and testing a bit I found that it is very important that you allow the android HomeAssistant app, as well as BangleJs Gadgetbridge app to (1) run in background and (2), disable energy optimizations for both apps. Otherwise, Android could stop one of both apps and the trigger will never be sent to HomeAssistant... From d5557ee508e0ef5611fc205543409e18e4951870 Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 08:46:31 +0200 Subject: [PATCH 147/251] Minor design changes --- apps/ha/ha.app.js | 3 ++- apps/ha/screenshot.png | Bin 2574 -> 2677 bytes 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index 73915d731..65524036f 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -36,7 +36,8 @@ function draw() { g.setFontAlign(0,0); var ypos = H/5*3+20; - g.fillRect(W/2-w/2-8, ypos-h/2-8, W/2+w/2+2, ypos+h/2+2); + g.drawRect(W/2-w/2-8, ypos-h/2-8, W/2+w/2+5, ypos+h/2+5); + g.fillRect(W/2-w/2-6, ypos-h/2-6, W/2+w/2+3, ypos+h/2+3); g.setColor(g.theme.bg).drawString(action, W/2, ypos); } diff --git a/apps/ha/screenshot.png b/apps/ha/screenshot.png index e92b7e97d156cec5e07b421735c3ebf0df8919ca..ea5a41ed912c3f98ca7beb880c7ff8b00f6c2ab8 100644 GIT binary patch literal 2677 zcmc&$=~ohX7yf|@1uivVy}6F1qhV@kR+d{TnM)R_fJ;c0ORm_aCZkxHdrnTdMwYmP zf|-gNl4(v>I^&Y1rpTmaijoE@ZZGo}%%}IfAMSn5x#v9het7OZ&rLb&>YxZ$g#!Q- z9Z%VxlOpS%*di~@%!bbdDL}5CbFc-~J?hf{z>OX4Pq;@D1k{PX5q$;pYU`$5R2Nmm zcmr)}&!X}A3p2Lyzu~t$I&9q*w=P*vv(^`uz}J8?}O`i$e4@SKFwm;>noZ9Z^?**{#?Nb~mj06MtI+0AM^x5 zFpvKH(BKO~z;s!)N|WdPdS#{iArKn$b9##)(S<&oE4pB<`}urr5E#?TVft(ZZ6<=% z{i>9u*OLY~DEHrK;a6hTj}?l>$(nY7hgXT`qI7`*_xdz)kAa-fbKS~wu$&7uOLTDp z7LuJCdN%Sr+iUQrWOd?9;cpg-2LWOLX|kfv-PuxjR0l%RK9+daN}dIsH`^#fMIyNZ z$<6P*huFggoNBKaft+i1K3SG%+){S)jLmFDRfc2Y0{-_XqnQNp+w<9{0*RS2jO4Y~ zcGO)cWp0@BXDa=jfZ9lX^uR10Ni@ziU1fyzAqIo!nUdArKcc4eor_IbT|nF(TWu$Y zs%&NV%k;hyTP+SZoMz|7c_+Y z1ENfEJL-HjAI^gMGKc4|2@c9=ETYD{-~i29ktj!)M57;Q)ya-laJvU{uLy(J)5FyU zypyR3t`K};&+rCqtz78E^I3mXQ?X5?`Th@hsHH`-t-2CxSJUZ9GsqVUO$`jp{#(RzN!_c$8x!H1^=C4&>((+M&$z%D%_vme^)vGR}X1@Re#(dB~?|1 zdpGO-yAJbFgk84p{7Zhuad?ZqHBgsj1vcX*M9a@9Z1I#wR(L0aOz=0vM3RdWg`saW zqiG<#Q%Ehm4!y=>mTys2f};t90k3@Kh} za@)@Aaad$ZSbVqVI50Qav7@&0>{d!^+9N|$kwa^}@)w^d2*H!Kz&x`5&w=>I{=e=j zDQkq2ns0!|+sM0!C4Hi)+^~uFG6$Vla;&JHhtx}A@B`HQiIK8&N%m!JY-N8?S;J6{7Z`NP`ZkY@}Q{H`VFG0}nuXQ+k(+lmmFo)`DknK>9eaEw=~&1JngKECd)8 zs6yS4fQZ%&?M4BvzndK~6$%*TcTRiC0d{Ec78eYls61rtqXUq0S}|cC9I%RhI_$3k zc+V=d51=9c_(CZI3VaTm$(Bl;0%%mp^v1&8%d7JX*Ihs6;EaBF(_mbja zf_jkaG#e|cM1p)M^Gp@x$pZ0f1lOvyj{%83?F9(^hGZmQI>NajO^KOMo|&Vx+#tk& zmS6S(=JZZ0IAusjj%W6%-N6&kt?}jZr5iy{CL=n}eD(q#y8pB*9EU6`U>a|^8Lic> z+jo)}Y7{N#K>jaK-bJNeBIU>)7$@bYqj7R>-f_f8YE$_E-I?l)4>27!MCyM>TRyu_m%Nd3!F`cqQ+-kd2U` zq!r6jhJJ$lyLJ#^elch%^-6M!!vZxvFcXHmpv_uv3!(JbJuy&O1-@$va$0JtlvrglY8@JQdNdQrOa z;D~m$ueK%L`Y+z$;d}r9 literal 2574 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 u0j?xN1Z~~OA_L|vyjCOJSoWV;yawMObPcj Date: Fri, 24 Jun 2022 08:59:51 +0200 Subject: [PATCH 148/251] First test with display name and json file --- apps/ha/ha.app.js | 21 +++++++++++---------- apps/ha/trigger.html | 11 ++++++----- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index 65524036f..4b85fbf56 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -10,14 +10,15 @@ var icon = { }; // Try to read custom actions, otherwise use default -var actions = [ - "No Actions", +var triggers = [ + {display: "Not found.", trigger: "NOP", icon: null}, ]; try{ - actions = storage.read("ha.trigger.txt").split(","); + triggers = storage.read("ha.trigger.json"); + triggers = JSON.parse(triggers); } catch(e) { - // In case there are no user actions yet, we show the default... + // In case there are no user triggers yet, we show the default... } @@ -26,8 +27,8 @@ function draw() { var h = 22; g.setFont("Vector", h); - var action = actions[position]; - var w = g.stringWidth(action); + var trigger = triggers[position]; + var w = g.stringWidth(trigger.display); g.setFontAlign(-1,-1); g.setColor(g.theme.fg).drawImage(icon, 12, H/5-2); @@ -38,7 +39,7 @@ function draw() { var ypos = H/5*3+20; g.drawRect(W/2-w/2-8, ypos-h/2-8, W/2+w/2+5, ypos+h/2+5); g.fillRect(W/2-w/2-6, ypos-h/2-6, W/2+w/2+3, ypos+h/2+3); - g.setColor(g.theme.bg).drawString(action, W/2, ypos); + g.setColor(g.theme.bg).drawString(trigger.display, W/2, ypos); } @@ -51,13 +52,13 @@ Bangle.on('touch', function(btn, e){ if(isRight){ Bangle.buzz(40, 0.6); position += 1; - position = position >= actions.length ? 0 : position; + position = position >= triggers.length ? 0 : position; } if(isLeft){ Bangle.buzz(40, 0.6); position -= 1; - position = position < 0 ? actions.length-1 : position; + position = position < 0 ? triggers.length-1 : position; } if(!isRight && !isLeft){ @@ -66,7 +67,7 @@ Bangle.on('touch', function(btn, e){ t:"intent", action:"com.espruino.gadgetbridge.banglejs.HA", extra:{ - trigger: actions[position] + trigger: triggers[position].trigger }}) ); setTimeout(()=>{ diff --git a/apps/ha/trigger.html b/apps/ha/trigger.html index 54f57f683..bcb3c72b7 100644 --- a/apps/ha/trigger.html +++ b/apps/ha/trigger.html @@ -3,8 +3,9 @@ - -

    Trigger - seperate list with ',':

    + triggers +

    Json file [{display: "Text", trigger: "TRIGGER_1", icon: null}, ...]

    +

    @@ -13,17 +14,17 @@ // When the 'upload' button is clicked... document.getElementById("upload").addEventListener("click", function() { // get the text to add - var text = document.getElementById("subjects").value; + var text = document.getElementById("triggers").value; console.log(text); // build the app's text using a templated String var app = text; // send finished app (in addition to contents of app.json) sendCustomizedApp({ storage:[ - {name:"ha.trigger.txt", url:"ha.trigger.txt", content:app}, + {name:"ha.trigger.json", url:"ha.trigger.json", content:app}, ] }); - console.log("Sent ha.trigger.txt!"); + console.log("Sent ha.trigger.json!"); }); From bd1a6459b213867d870e2d76cffea494c748f8e5 Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 09:29:49 +0200 Subject: [PATCH 149/251] Support display name and icons. --- apps/ha/README.md | 12 +++++++++++- apps/ha/ha.app.js | 35 ++++++++++++++++++++++++++++++----- apps/ha/metadata.json | 4 +++- apps/ha/screenshot.png | Bin 2677 -> 2402 bytes apps/ha/screenshot_2.png | Bin 0 -> 2695 bytes apps/ha/screenshot_3.png | Bin 0 -> 2679 bytes apps/ha/trigger.html | 12 +++++++++--- 7 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 apps/ha/screenshot_2.png create mode 100644 apps/ha/screenshot_3.png diff --git a/apps/ha/README.md b/apps/ha/README.md index 35a90ea88..c51da967a 100644 --- a/apps/ha/README.md +++ b/apps/ha/README.md @@ -23,7 +23,14 @@ This setup must be done only once -- now you are ready to configure your BangleJ control some devices or entities in your HomeAssistant :) # Setup Trigger -1.) Upload the app and all corresponding triggers through the AppStore UI. For example I entered "DOOR,LIGHT,OVEN". The list will be shown in your BangleJs in the corresponding order so enter more important triggers first. +1.) Upload the app and all corresponding triggers through the AppStore UI. You must specify +the display name, the trigger as well as an icon. +The following icons are currently supported: +- ha (default) +- light +- door +- fire + 2.) Create an "automation" in the HomeAssistant WebUI for each trigger that you created on your BangleJs in order to tell HomeAssistant what you want to control. A sample configuration is shown in the image below -- I use this trigger to open the door: @@ -40,5 +47,8 @@ add an action also for that.* While playing and testing a bit I found that it is very important that you allow the android HomeAssistant app, as well as BangleJs Gadgetbridge app to (1) run in background and (2), disable energy optimizations for both apps. Otherwise, Android could stop one of both apps and the trigger will never be sent to HomeAssistant... +## Thanks to +Icons created by Flaticon + ## Creator - [David Peer](https://github.com/peerdavid). diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index 4b85fbf56..ee30a66e9 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -3,15 +3,39 @@ var W = g.getWidth(), H = g.getHeight(); var position=0; -var icon = { - width : 48, height : 48, bpp : 1, - transparent : 0, - buffer : require("heatshrink").decompress(atob("AD8BwAFDg/gAocP+AFDj4FEn/8Aod//wFD/1+FAf4j+8AoMD+EPDAUH+OPAoUP+fPAoUfBYk/C4l/EYIwC//8n//FwIFEgYFD4EH+E8nkP8BdBAonjjk44/wj/nzk58/4gAFDF4PgCIMHAoPwhkwh4FB/EEkEfIIWAHwIFC4A+BAoXgg4FDL4IFDL4IFDLIYFkAEQA==")) +// Note: All icons should have 48x48 pixels +function getIcon(icon){ + if(icon == "light"){ + return { + width : 48, height : 48, bpp : 1, + transparent : 0, + buffer : require("heatshrink").decompress(atob("AAMBwAFE4AFDgYFJjgFBnAFBjwXBvAFBh4jBuAFCAQPwAQMHAQPgEQQCBEgcf/AvDn/8Aof//5GDAoJOBh+BAoOB+EP8YFB4fwgfnAoPnGANHAoPjHYQFBHYQFd44pDg47C4/gh/DIIZNFLIplGgF//wFIgZ9BRIUHRII7Ch4FBUIUOAoKzCjwFEhgCBmDpIVooFFh4oCAA4LFC5b7BAob1BAYI=")) + }; + } else if(icon == "door"){ + return { + width : 48, height : 48, bpp : 1, + transparent : 0, + buffer : require("heatshrink").decompress(atob("AAM4Aok/4AED///Aov4Aon8DgQGBAv4FpnIFKJv4FweAQFFAgQFB8AFDnADC")) + }; + } else if (icon == "fire"){ + return { + width : 48, height : 48, bpp : 1, + transparent : 0, + buffer : require("heatshrink").decompress(atob("ABsDAokBwAFE4AFE8AFE+AFE/AFJgf8Aon+AocHAokP/8QAokYAoUfAok//88ApF//4kDAo//AgMQAgIFCjgFEjwFCOYIFFHQIFDn/+AoJ/BAoIqBAoN//xCBAoI5BDIPAgP//gFB8AFChYFBgf//EJAogOBAoSgBAoMHAQIFEFgXAAoJEBv4FCNoQFGVYd/wAFEYYIFIvwCBDoV8UwQCBcgUPwDwDfQMBaIYADA")) + }; + } + + // Default is always the HA icon + return { + width : 48, height : 48, bpp : 1, + transparent : 0, + buffer : require("heatshrink").decompress(atob("AD8BwAFDg/gAocP+AFDj4FEn/8Aod//wFD/1+FAf4j+8AoMD+EPDAUH+OPAoUP+fPAoUfBYk/C4l/EYIwC//8n//FwIFEgYFD4EH+E8nkP8BdBAonjjk44/wj/nzk58/4gAFDF4PgCIMHAoPwhkwh4FB/EEkEfIIWAHwIFC4A+BAoXgg4FDL4IFDL4IFDLIYFkAEQA==")) + }; }; // Try to read custom actions, otherwise use default var triggers = [ - {display: "Not found.", trigger: "NOP", icon: null}, + {display: "Not found.", trigger: "NOP", icon: "ha"}, ]; try{ @@ -31,6 +55,7 @@ function draw() { var w = g.stringWidth(trigger.display); g.setFontAlign(-1,-1); + var icon = getIcon(trigger.icon); g.setColor(g.theme.fg).drawImage(icon, 12, H/5-2); g.drawString("Home", icon.width + 20, H/5); g.drawString("Assistant", icon.width + 18, H/5+24); diff --git a/apps/ha/metadata.json b/apps/ha/metadata.json index eea1b6905..c7ba2f46b 100644 --- a/apps/ha/metadata.json +++ b/apps/ha/metadata.json @@ -11,8 +11,10 @@ "custom": "trigger.html", "screenshots": [ {"url":"screenshot.png"}], + {"url":"screenshot_2.png"}], + {"url":"screenshot_3.png"}], "data": [ - {"name":"ha.trigger.txt" } + {"name":"ha.trigger.json" } ], "storage": [ {"name":"ha.app.js","url":"ha.app.js"}, diff --git a/apps/ha/screenshot.png b/apps/ha/screenshot.png index ea5a41ed912c3f98ca7beb880c7ff8b00f6c2ab8..dc059e2de43b614bdab4a70e86d6cf8edf4203ac 100644 GIT binary patch literal 2402 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 diff --git a/apps/ha/screenshot_2.png b/apps/ha/screenshot_2.png new file mode 100644 index 0000000000000000000000000000000000000000..55019c3b1d54754ce027f6a390d8085881bde42c GIT binary patch literal 2695 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 b)l6)+-*~{493hDFSpsIJ)+Q7q&-i}<6_ws= literal 0 HcmV?d00001 diff --git a/apps/ha/screenshot_3.png b/apps/ha/screenshot_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b9eae0b74de95ce232a67b1e6e898928ce6b7a10 GIT binary patch literal 2679 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 WeFV>U7j26_Nnmg5Xv46^J@^-jYWLj$ literal 0 HcmV?d00001 diff --git a/apps/ha/trigger.html b/apps/ha/trigger.html index bcb3c72b7..60fedda7a 100644 --- a/apps/ha/trigger.html +++ b/apps/ha/trigger.html @@ -3,9 +3,15 @@ - triggers -

    Json file [{display: "Text", trigger: "TRIGGER_1", icon: null}, ...]

    -

    +

    Upload Tiggers

    +

    You must upload a list of json objects -- an example is given below

    +

    From 96c247944b768f9308ff98924a18258b2d74a7ea Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 09:33:02 +0200 Subject: [PATCH 150/251] Fixed metadata --- apps/ha/metadata.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/ha/metadata.json b/apps/ha/metadata.json index c7ba2f46b..9b4ca54af 100644 --- a/apps/ha/metadata.json +++ b/apps/ha/metadata.json @@ -10,9 +10,10 @@ "supports": ["BANGLEJS2"], "custom": "trigger.html", "screenshots": [ - {"url":"screenshot.png"}], - {"url":"screenshot_2.png"}], - {"url":"screenshot_3.png"}], + {"url":"screenshot.png"}, + {"url":"screenshot_2.png"}, + {"url":"screenshot_3.png"} + ], "data": [ {"name":"ha.trigger.json" } ], From 2f29c9ada2c7f48a0ff5dfa81a17e5ebca091157 Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 09:37:49 +0200 Subject: [PATCH 151/251] Minor changes --- apps/ha/trigger.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/ha/trigger.html b/apps/ha/trigger.html index 60fedda7a..3c4673c3c 100644 --- a/apps/ha/trigger.html +++ b/apps/ha/trigger.html @@ -6,11 +6,11 @@

    Upload Tiggers

    You must upload a list of json objects -- an example is given below

    From b974887c4b91379ddcb6349915d701ad2cdf7dfd Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 09:39:56 +0200 Subject: [PATCH 152/251] Remove Unnecessary semicolon no-extra-semi --- apps/ha/ha.app.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index ee30a66e9..a6d45f056 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -10,19 +10,19 @@ function getIcon(icon){ width : 48, height : 48, bpp : 1, transparent : 0, buffer : require("heatshrink").decompress(atob("AAMBwAFE4AFDgYFJjgFBnAFBjwXBvAFBh4jBuAFCAQPwAQMHAQPgEQQCBEgcf/AvDn/8Aof//5GDAoJOBh+BAoOB+EP8YFB4fwgfnAoPnGANHAoPjHYQFBHYQFd44pDg47C4/gh/DIIZNFLIplGgF//wFIgZ9BRIUHRII7Ch4FBUIUOAoKzCjwFEhgCBmDpIVooFFh4oCAA4LFC5b7BAob1BAYI=")) - }; + } } else if(icon == "door"){ return { width : 48, height : 48, bpp : 1, transparent : 0, buffer : require("heatshrink").decompress(atob("AAM4Aok/4AED///Aov4Aon8DgQGBAv4FpnIFKJv4FweAQFFAgQFB8AFDnADC")) - }; + } } else if (icon == "fire"){ return { width : 48, height : 48, bpp : 1, transparent : 0, buffer : require("heatshrink").decompress(atob("ABsDAokBwAFE4AFE8AFE+AFE/AFJgf8Aon+AocHAokP/8QAokYAoUfAok//88ApF//4kDAo//AgMQAgIFCjgFEjwFCOYIFFHQIFDn/+AoJ/BAoIqBAoN//xCBAoI5BDIPAgP//gFB8AFChYFBgf//EJAogOBAoSgBAoMHAQIFEFgXAAoJEBv4FCNoQFGVYd/wAFEYYIFIvwCBDoV8UwQCBcgUPwDwDfQMBaIYADA")) - }; + } } // Default is always the HA icon @@ -30,7 +30,7 @@ function getIcon(icon){ width : 48, height : 48, bpp : 1, transparent : 0, buffer : require("heatshrink").decompress(atob("AD8BwAFDg/gAocP+AFDj4FEn/8Aod//wFD/1+FAf4j+8AoMD+EPDAUH+OPAoUP+fPAoUfBYk/C4l/EYIwC//8n//FwIFEgYFD4EH+E8nkP8BdBAonjjk44/wj/nzk58/4gAFDF4PgCIMHAoPwhkwh4FB/EEkEfIIWAHwIFC4A+BAoXgg4FDL4IFDL4IFDLIYFkAEQA==")) - }; + } }; // Try to read custom actions, otherwise use default From f7247753c024ba8cee19f9b75fae2ba3fc782f51 Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 09:40:20 +0200 Subject: [PATCH 153/251] Minor fix; --- apps/ha/ha.app.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index a6d45f056..9e12f491a 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -10,19 +10,19 @@ function getIcon(icon){ width : 48, height : 48, bpp : 1, transparent : 0, buffer : require("heatshrink").decompress(atob("AAMBwAFE4AFDgYFJjgFBnAFBjwXBvAFBh4jBuAFCAQPwAQMHAQPgEQQCBEgcf/AvDn/8Aof//5GDAoJOBh+BAoOB+EP8YFB4fwgfnAoPnGANHAoPjHYQFBHYQFd44pDg47C4/gh/DIIZNFLIplGgF//wFIgZ9BRIUHRII7Ch4FBUIUOAoKzCjwFEhgCBmDpIVooFFh4oCAA4LFC5b7BAob1BAYI=")) - } + }; } else if(icon == "door"){ return { width : 48, height : 48, bpp : 1, transparent : 0, buffer : require("heatshrink").decompress(atob("AAM4Aok/4AED///Aov4Aon8DgQGBAv4FpnIFKJv4FweAQFFAgQFB8AFDnADC")) - } + }; } else if (icon == "fire"){ return { width : 48, height : 48, bpp : 1, transparent : 0, buffer : require("heatshrink").decompress(atob("ABsDAokBwAFE4AFE8AFE+AFE/AFJgf8Aon+AocHAokP/8QAokYAoUfAok//88ApF//4kDAo//AgMQAgIFCjgFEjwFCOYIFFHQIFDn/+AoJ/BAoIqBAoN//xCBAoI5BDIPAgP//gFB8AFChYFBgf//EJAogOBAoSgBAoMHAQIFEFgXAAoJEBv4FCNoQFGVYd/wAFEYYIFIvwCBDoV8UwQCBcgUPwDwDfQMBaIYADA")) - } + }; } // Default is always the HA icon @@ -30,8 +30,8 @@ function getIcon(icon){ width : 48, height : 48, bpp : 1, transparent : 0, buffer : require("heatshrink").decompress(atob("AD8BwAFDg/gAocP+AFDj4FEn/8Aod//wFD/1+FAf4j+8AoMD+EPDAUH+OPAoUP+fPAoUfBYk/C4l/EYIwC//8n//FwIFEgYFD4EH+E8nkP8BdBAonjjk44/wj/nzk58/4gAFDF4PgCIMHAoPwhkwh4FB/EEkEfIIWAHwIFC4A+BAoXgg4FDL4IFDL4IFDLIYFkAEQA==")) - } -}; + }; +} // Try to read custom actions, otherwise use default var triggers = [ From 649ecf495206c747c2da9f256173e75bd2835ee8 Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 11:29:25 +0200 Subject: [PATCH 154/251] Add trick how to start HomeAssistant automatically. --- apps/ha/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/ha/README.md b/apps/ha/README.md index c51da967a..46c3b8afe 100644 --- a/apps/ha/README.md +++ b/apps/ha/README.md @@ -47,6 +47,12 @@ add an action also for that.* While playing and testing a bit I found that it is very important that you allow the android HomeAssistant app, as well as BangleJs Gadgetbridge app to (1) run in background and (2), disable energy optimizations for both apps. Otherwise, Android could stop one of both apps and the trigger will never be sent to HomeAssistant... +If you still have problems, you can try another trick: +Install "MacroDroid" from the Android AppStore and start the HomeAssistant App +each time the "com.espruino.gadgetbridge.banglejs.HA" intent is send together +with the extra trigger: APP_STARTED. Then whenever you open the app on your BangleJs +it is ensured that HomeAssistant is running... + ## Thanks to Icons created by Flaticon From 936702d9fc45388ebfefebd62fad7c7bac20fe77 Mon Sep 17 00:00:00 2001 From: Marco Heiming Date: Fri, 24 Jun 2022 11:30:12 +0200 Subject: [PATCH 155/251] Fix widget drawing without having the actual widget area --- apps/widbaroalarm/widget.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/widbaroalarm/widget.js b/apps/widbaroalarm/widget.js index b4136fd69..cd3e9b2e7 100644 --- a/apps/widbaroalarm/widget.js +++ b/apps/widbaroalarm/widget.js @@ -254,6 +254,8 @@ function draw() { if (setting("show")) { g.setFont("6x8", 1).setFontAlign(1, 0); const x = this.x, y = this.y; + if (this.x == undefined) + return; // widget not yet there if (medianPressure == undefined) { // trigger a new check getPressureValue(); From 212d165f15fcfbe56878aa84266f0c0a90f893d8 Mon Sep 17 00:00:00 2001 From: Giles Booth Date: Fri, 24 Jun 2022 10:58:59 +0100 Subject: [PATCH 156/251] Create app.js --- apps/macwatch2/app.js | 45 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 apps/macwatch2/app.js diff --git a/apps/macwatch2/app.js b/apps/macwatch2/app.js new file mode 100644 index 000000000..7b8b9e4fb --- /dev/null +++ b/apps/macwatch2/app.js @@ -0,0 +1,45 @@ +// 68k Mac Finder desktop themed clock. +// only works in light mode - either bodge it so it always +// displays black text on white bg or code it to properly invert + +var img = require("heatshrink").decompress(atob("2GwgP4C6cf8AVTg/ACqcDwADBDCMBCoICCCqACEj8zAwXwmcYgEGswYHhxwBjEDGocwCoVgQxHwCoMzjwVBwPzngrCnlmDAsfNoIVBIQMBwZBEAAIVIjwVD8YVNIIc/FY9+CpcwCo9gCo0PQYUzmIVGo1is1ACokGNoaDC+PzhkAg+Gnl/aiIA/AD//AClVACmqACgr/Fd2vVqP+FYNUbKMNFYOsCqMOFa+t/f/35LC/AODK43uFYUCgGACAUB/IFDFZP6gArEsArTgFhz9w+ArRsOZzOYFaQVCFan4FaiFHFZuIFaeYQZbbVf5LbK1gVRhwrX15MGABX+K/4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Ff4r/Fe+v/4AQ/wrBq4VR/orBAClVACgr/Ff4r/AAmr6or/q/6Fae/A=")); + +var font = atob("f3/gMB/7+AAAACA///AAAAAAQcHhsZ+LhAAAgUhsPh38eAAADAoJCI///BAA8XhkMhn8eAAAPz/0Mhn4eAAAgEAh8f+HgAAAb3/kMh/7eAAAeH5hML/z8AAAAAADYbAAAAAA"); + +function draw() { + g.reset(); + g.setFontCustom(font, 48, 8, 1033); + g.setFontAlign(0, -1, 0); + g.setColor(0,0,0); + var d = new Date(); + var da = d.toString().split(" "); + hh = da[4].substr(0,2); + mi = da[4].substr(3,2); + dd = ("0"+(new Date()).getDate()).substr(-2); + mo = ("0"+((new Date()).getMonth()+1)).substr(-2); + yy = ("0"+((new Date()).getFullYear())).substr(-2); + g.drawString(hh, 52, 65, true); + g.drawString(mi, 132, 65, true); + g.drawString(':', 93,65); + g.setFontCustom(font, 48, 8, 521); + g.drawString(dd + ':' + mo + ':' + yy, 88, 120, true); +} + +// handle switch display on by pressing BTN1 +Bangle.on('lcdPower', function(on) { + if (on) draw(); +}); + + +g.clear(); +g.drawImage(img,0,0); +var showDate = 0; +setInterval(draw, 60000); // refresh display every 60s +draw(); + +// Show launcher when button pressed +Bangle.setUI("clock"); + +// need to decide what to do about widgets... +// Bangle.loadWidgets(); +// Bangle.drawWidgets(); From 683f3361d20e5242490e881766e936da60f6f241 Mon Sep 17 00:00:00 2001 From: Giles Booth Date: Fri, 24 Jun 2022 11:08:18 +0100 Subject: [PATCH 157/251] Create ChangeLog --- apps/macwatch2/ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/macwatch2/ChangeLog diff --git a/apps/macwatch2/ChangeLog b/apps/macwatch2/ChangeLog new file mode 100644 index 000000000..d729e1f51 --- /dev/null +++ b/apps/macwatch2/ChangeLog @@ -0,0 +1 @@ +0.01: Created first version of the app with numeric date, only works in light mode From 082cb20c5d18e23066e430d41d964bf64e43b083 Mon Sep 17 00:00:00 2001 From: Giles Booth Date: Fri, 24 Jun 2022 11:10:00 +0100 Subject: [PATCH 158/251] Create metadata.json --- apps/macwatch2/metadata.json | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 apps/macwatch2/metadata.json diff --git a/apps/macwatch2/metadata.json b/apps/macwatch2/metadata.json new file mode 100644 index 000000000..0e6d390d0 --- /dev/null +++ b/apps/macwatch2/metadata.json @@ -0,0 +1,17 @@ +{ "id": "macwatch2", + "name": "MacWatch2", + "shortName":"MacWatch2", + "icon": "app.png", + "version":"0.01", + "description": "Classic Mac Finder clock", + "type": "clock", + "tags": "clock", + "supports": ["BANGLEJS2"], + "screenshots": [{"url":"screenshot.png"}], + "readme": "README.md", + "allow_emulator": true, + "storage": [ + {"name":"macwatch.app.js","url":"app.js"}, + {"name":"macwatch.img","url":"app-icon.js","evaluate":true} + ] +} From fc1adeb19300a2b3f936eee94e62f1e516d7256a Mon Sep 17 00:00:00 2001 From: Giles Booth Date: Fri, 24 Jun 2022 11:10:54 +0100 Subject: [PATCH 159/251] Add files via upload --- apps/macwatch2/app.png | Bin 0 -> 308 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/macwatch2/app.png diff --git a/apps/macwatch2/app.png b/apps/macwatch2/app.png new file mode 100644 index 0000000000000000000000000000000000000000..9618b8b50f7c49f03a415fd5769942ea9c09afaa GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}c0*}aI z1_nK45N51cYF`EvWH0gbb!C6XCMs%Rz;2WN4Jag8;u=xnoS&PUnpeW$T$GwvlA5AW zo>`Ki;O^-g5Z=fq4pcPH)5S3)y~ayzI#tvJ36rBk(+T vSbWxAy3F`?nv-q7fj1#l&vjTBCY Date: Fri, 24 Jun 2022 11:12:15 +0100 Subject: [PATCH 160/251] Add files via upload --- apps/macwatch2/screenshot.png | Bin 0 -> 2418 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/macwatch2/screenshot.png diff --git a/apps/macwatch2/screenshot.png b/apps/macwatch2/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..732b29d7f492639a7ae82cc758ab23c816909dfe GIT binary patch literal 2418 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 VhneU2K=O%#IP7z=tss&w{sTbzr2PN@ literal 0 HcmV?d00001 From 70653776429574a508646480899b34f95f832b7c Mon Sep 17 00:00:00 2001 From: Giles Booth Date: Fri, 24 Jun 2022 11:13:57 +0100 Subject: [PATCH 161/251] Create app-icon.js --- apps/macwatch2/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/macwatch2/app-icon.js diff --git a/apps/macwatch2/app-icon.js b/apps/macwatch2/app-icon.js new file mode 100644 index 000000000..f4592b508 --- /dev/null +++ b/apps/macwatch2/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwwkBIf4AOh//AggADC8YRCBIwXlI4oX/C5QWOC74WPC/4X/C6AA/AH4AmXwK5DAobBNC60P+DqHFxwXWCJAWRC44vUPwouRJKQXWBxAXlOAIgQbBDeLFxAXXAAa/RC64A/AH4AKA==")) From 1bf98df049e54c4d28117f9fb3cacdfde26fdfc3 Mon Sep 17 00:00:00 2001 From: Giles Booth Date: Fri, 24 Jun 2022 11:15:21 +0100 Subject: [PATCH 162/251] Add files via upload --- apps/macwatch2/IMG_3782 crop.JPG | Bin 0 -> 48302 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/macwatch2/IMG_3782 crop.JPG diff --git a/apps/macwatch2/IMG_3782 crop.JPG b/apps/macwatch2/IMG_3782 crop.JPG new file mode 100644 index 0000000000000000000000000000000000000000..2c0bc375ac389ed844b027adf6ec9bc7869e8a66 GIT binary patch literal 48302 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 Nf9Zr0f6y literal 0 HcmV?d00001 From 05137dfde01925f84437eff9924a8b7d5760595a Mon Sep 17 00:00:00 2001 From: "greg@1m" Date: Fri, 24 Jun 2022 12:38:19 +0200 Subject: [PATCH 163/251] improving webapp and adding screenshots --- apps/advcasio/app.js | 6 +++--- apps/advcasio/metadata.json | 6 ++++-- apps/advcasio/screenshot-clock-1.jpg | Bin 0 -> 89708 bytes apps/advcasio/screenshot-clock-2.jpg | Bin 0 -> 89017 bytes ...nshot-clock.jpg => screenshot-clock-3.jpg} | Bin apps/advcasio/screenshot-webapp.jpg | Bin 111128 -> 235577 bytes 6 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 apps/advcasio/screenshot-clock-1.jpg create mode 100644 apps/advcasio/screenshot-clock-2.jpg rename apps/advcasio/{screenshot-clock.jpg => screenshot-clock-3.jpg} (100%) diff --git a/apps/advcasio/app.js b/apps/advcasio/app.js index be80f2cf9..8c27b7823 100644 --- a/apps/advcasio/app.js +++ b/apps/advcasio/app.js @@ -61,6 +61,7 @@ function initTouchTimer () { Bangle.on('swipe', function(dirX,dirY) { if (canTouch === false) return; var njson = getDataJson(); + if (!njson) return; if (dirX === -1) { timer_time = 0; @@ -68,8 +69,6 @@ function initTouchTimer () { setDataJson(njson); } else if (dirX === 1) { - - var njson = getDataJson(); var now = new Date().getTime(); njson.timer = now + (timer_time * 1000 * 60); Bangle.setLocked(true); @@ -99,6 +98,7 @@ function getTimerTime() { } else { // else, show diff between njsontime and now var njson = getDataJson(); + if (!njson) return false; var now = new Date().getTime(); var diff = Math.round((njson.timer - now) / (1000 * 60)); //console.log(123, njson, diff, now, njson.timer - now); @@ -175,7 +175,7 @@ function drawWeather(arr) { // function drawTasks(str) { g.setFont("6x8", 1); - var t = 60; + var t = 57; var l = 0; g.drawString(str, l+5, t+0); } diff --git a/apps/advcasio/metadata.json b/apps/advcasio/metadata.json index 90183df0a..0f0c75c07 100644 --- a/apps/advcasio/metadata.json +++ b/apps/advcasio/metadata.json @@ -7,7 +7,9 @@ "tags": "clock", "type": "clock", "screenshots": [ - { "url": "screenshot-clock.jpg" }, + { "url": "screenshot-clock-1.jpg" }, + { "url": "screenshot-clock-2.jpg" }, + { "url": "screenshot-clock-3.jpg" }, { "url": "screenshot-webapp.jpg" } ], "supports" : ["BANGLEJS", "BANGLEJS2"], @@ -18,6 +20,6 @@ {"name":"advcasio.img","url":"app-icon.js","evaluate":true} ], "data": [ - { "name": "advcasio.data.json", "url": "data.json", "storageFile": true } + { "name": "advcasio.data.json", "url": "data.json", "storageFile": true } ] } diff --git a/apps/advcasio/screenshot-clock-1.jpg b/apps/advcasio/screenshot-clock-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f6f042c94939e9576ad9c9bd0450e58deca0d87 GIT binary patch literal 89708 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�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 z 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 literal 111128 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 jd7BYNo~v2M8S!%lv{z64 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 W+5W$6dqZCI-~R3Y&%gUK_P+o&2yXHK From c0f3d9b8a9760ddbe43623195f115114b699c2cb Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 12:45:11 +0200 Subject: [PATCH 164/251] Retry logic for sending intents --- apps/ha/ha.app.js | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index 9e12f491a..17290ab26 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -46,6 +46,29 @@ try{ } +function sendIntent(trigger){ + var retries=3; + + while(retries > 0){ + try{ + // Send a startup trigger such that we could also execute + // an action when the app is started :) + Bluetooth.println(JSON.stringify({ + t:"intent", + action:"com.espruino.gadgetbridge.banglejs.HA", + extra:{ + trigger: trigger + }}) + ); + retries = -1; + + } catch(e){ + retries--; + } + } +} + + function draw() { g.reset().clearRect(Bangle.appRect); @@ -88,13 +111,7 @@ Bangle.on('touch', function(btn, e){ if(!isRight && !isLeft){ Bangle.buzz(80, 0.6).then(()=>{ - Bluetooth.println(JSON.stringify({ - t:"intent", - action:"com.espruino.gadgetbridge.banglejs.HA", - extra:{ - trigger: triggers[position].trigger - }}) - ); + sendIntent(triggers[position].trigger); setTimeout(()=>{ Bangle.buzz(80, 0.6); }, 250); @@ -104,15 +121,8 @@ Bangle.on('touch', function(btn, e){ draw(); }); -// Send a startup trigger such that we could also execute -// an action when the app is started :) -Bluetooth.println(JSON.stringify({ - t:"intent", - action:"com.espruino.gadgetbridge.banglejs.HA", - extra:{ - trigger: "APP_STARTED" - }}) -); +// Send intent that the we started the app. +sendIntent("APP_STARTED"); // Next load the widgets and draw the app Bangle.loadWidgets(); From 9b676885d3de6c9f053a3bb13557b8e7f60892c3 Mon Sep 17 00:00:00 2001 From: "greg@1m" Date: Fri, 24 Jun 2022 12:47:34 +0200 Subject: [PATCH 165/251] updating readme --- apps/advcasio/README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/advcasio/README.md b/apps/advcasio/README.md index ef38d71df..3ce771497 100644 --- a/apps/advcasio/README.md +++ b/apps/advcasio/README.md @@ -25,14 +25,15 @@ Forked from the awesome Cassio Watch.
    - Scratchpad ## Screenshots -Clock: - - +Clock:
    + + + Web interface to update weather & scratchpad
    https://dotgreg.github.io/advCasioBangleClock - + ## Usage ### How to update the tasks list / weather From 6efb06a8333f13a057f43e1c758019a0dfbf89de Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 24 Jun 2022 12:47:56 +0200 Subject: [PATCH 166/251] Set width of text area --- apps/ha/trigger.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ha/trigger.html b/apps/ha/trigger.html index 3c4673c3c..b57f131b2 100644 --- a/apps/ha/trigger.html +++ b/apps/ha/trigger.html @@ -5,7 +5,7 @@

    Upload Tiggers

    You must upload a list of json objects -- an example is given below

    -

    +

    + @@ -13,25 +19,16 @@ + + + + From 9ec50b4d8fcc7505cd1dc668419794789c328e52 Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 11:49:45 +0200 Subject: [PATCH 207/251] Remove custom -- interafce.html --- apps/ha/metadata.json | 2 +- apps/ha/trigger.html | 50 ------------------------------------------- 2 files changed, 1 insertion(+), 51 deletions(-) delete mode 100644 apps/ha/trigger.html diff --git a/apps/ha/metadata.json b/apps/ha/metadata.json index 9b4ca54af..c1e6a0392 100644 --- a/apps/ha/metadata.json +++ b/apps/ha/metadata.json @@ -8,7 +8,7 @@ "tags": "tool", "readme": "README.md", "supports": ["BANGLEJS2"], - "custom": "trigger.html", + "interface": "interface.html", "screenshots": [ {"url":"screenshot.png"}, {"url":"screenshot_2.png"}, diff --git a/apps/ha/trigger.html b/apps/ha/trigger.html deleted file mode 100644 index 8ee4419e4..000000000 --- a/apps/ha/trigger.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - -

    Upload Tiggers

    -

    You must upload a list of json objects -- an example is given below

    -

    -

    - - - - - - - From cb2d2657d6aa0d8f1e019af3129f5c1db79c4a6b Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 11:52:13 +0200 Subject: [PATCH 208/251] onInit needed --- apps/ha/interface.html | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/ha/interface.html b/apps/ha/interface.html index eca0f3a14..4c69692fb 100644 --- a/apps/ha/interface.html +++ b/apps/ha/interface.html @@ -17,10 +17,12 @@ From 189b85301b90f211a0b7c6f61c6504bc13cf3056 Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 12:14:06 +0200 Subject: [PATCH 209/251] Write and load data --- apps/ha/interface.html | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/apps/ha/interface.html b/apps/ha/interface.html index 4c69692fb..7ba08e4c7 100644 --- a/apps/ha/interface.html +++ b/apps/ha/interface.html @@ -14,26 +14,24 @@

    - + + + + + + + diff --git a/apps/ha/interface.html b/apps/ha/interface.html deleted file mode 100644 index 76457085b..000000000 --- a/apps/ha/interface.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - -

    Upload Tiggers

    -

    You must upload a list of json objects -- an example is given below

    -

    -

    - - - - - - - diff --git a/apps/ha/metadata.json b/apps/ha/metadata.json index c1e6a0392..9b4ca54af 100644 --- a/apps/ha/metadata.json +++ b/apps/ha/metadata.json @@ -8,7 +8,7 @@ "tags": "tool", "readme": "README.md", "supports": ["BANGLEJS2"], - "interface": "interface.html", + "custom": "trigger.html", "screenshots": [ {"url":"screenshot.png"}, {"url":"screenshot_2.png"}, From 5461a7c6f5964b7956231f2f9f104fc7525a6ea6 Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 12:41:53 +0200 Subject: [PATCH 216/251] Fixed path to html --- apps/ha/custom.html | 28 ++++++++++++++-------------- apps/ha/metadata.json | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/apps/ha/custom.html b/apps/ha/custom.html index 6c4bb9077..b0bb39242 100644 --- a/apps/ha/custom.html +++ b/apps/ha/custom.html @@ -22,21 +22,21 @@ }); - // When the 'upload' button is clicked... - document.getElementById("upload").addEventListener("click", function() { - // get the text to add - var text = document.getElementById("triggers").value; - console.log(text); - // build the app's text using a templated String - var app = text; - // send finished app (in addition to contents of app.json) - sendCustomizedApp({ - storage:[ - {name:"ha.trigger.json", url:"ha.trigger.json", content:app}, - ] + // When the 'upload' button is clicked... + document.getElementById("upload").addEventListener("click", function() { + // get the text to add + var text = document.getElementById("triggers").value; + console.log(text); + // build the app's text using a templated String + var app = text; + // send finished app (in addition to contents of app.json) + sendCustomizedApp({ + storage:[ + {name:"ha.trigger.json", url:"ha.trigger.json", content:app}, + ] + }); + console.log("Sent ha.trigger.json!"); }); - console.log("Sent ha.trigger.json!"); - }); diff --git a/apps/ha/metadata.json b/apps/ha/metadata.json index 9b4ca54af..0f9929d8c 100644 --- a/apps/ha/metadata.json +++ b/apps/ha/metadata.json @@ -8,7 +8,7 @@ "tags": "tool", "readme": "README.md", "supports": ["BANGLEJS2"], - "custom": "trigger.html", + "custom": "custom.html", "screenshots": [ {"url":"screenshot.png"}, {"url":"screenshot_2.png"}, From f98fd1662d6772a45e0f8ade19213e8e92f38b8b Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 12:49:06 +0200 Subject: [PATCH 217/251] Improved custom.html --- apps/ha/custom.html | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/apps/ha/custom.html b/apps/ha/custom.html index b0bb39242..7d2296003 100644 --- a/apps/ha/custom.html +++ b/apps/ha/custom.html @@ -3,8 +3,8 @@ -

    Upload Tiggers

    -

    You must upload a list of json objects -- an example is given below

    +

    Upload Tigger

    +

    Status:

    +

    @@ -20,14 +13,22 @@ /* * Load trigger from BangleJs */ - document.getElementById("status").innerHTML = "Loading trigger from BangleJs..."; + console.log("Loading trigger from BangleJs..."); try { Puck.eval(`require("Storage").read(${JSON.stringify("ha.trigger.json")})`,data=>{ document.getElementById("triggers").innerHTML = data; - document.getElementById("status").innerHTML = "Loaded trigger from BangleJs."; + console.log("Successfully loaded trigger from BangleJs."); + console.log(data); }); } catch(ex) { - document.getElementById("status").innerHTML = "Could not load trigger from BangleJs."; + console.log("(Warning) Could not load trigger from BangleJs."); + console.log(ex); + document.getElementById("triggers").innerHTML = ` +[ + {"display": "Open", "trigger": "OPEN_DOOR", "icon":"door"}, + {"display": "Office", "trigger": "TOGGLE_LIGHT", "icon":"light"}, + {"display": "Living Room", "trigger": "OVEN", "icon":"fire"} +]` } /* @@ -35,14 +36,11 @@ */ document.getElementById("upload").addEventListener("click", function() { // get the text to add - var text = document.getElementById("triggers").value; - console.log(text); - // build the app's text using a templated String - var app = text; + var triggerText = document.getElementById("triggers").value; // send finished app (in addition to contents of app.json) sendCustomizedApp({ storage:[ - {name:"ha.trigger.json", url:"ha.trigger.json", content:app}, + {name:"ha.trigger.json", url:"ha.trigger.json", content:triggerText}, ] }); console.log("Sent ha.trigger.json!"); From e51967d8d4db724f59965ae93bc6ff0b6bd9f744 Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 12:57:33 +0200 Subject: [PATCH 219/251] Improvements --- apps/ha/custom.html | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/ha/custom.html b/apps/ha/custom.html index f1597d740..f5021f6b6 100644 --- a/apps/ha/custom.html +++ b/apps/ha/custom.html @@ -14,21 +14,25 @@ * Load trigger from BangleJs */ console.log("Loading trigger from BangleJs..."); + var loadedData = false; try { Puck.eval(`require("Storage").read(${JSON.stringify("ha.trigger.json")})`,data=>{ document.getElementById("triggers").innerHTML = data; console.log("Successfully loaded trigger from BangleJs."); console.log(data); + loadedData = true; }); - } catch(ex) { - console.log("(Warning) Could not load trigger from BangleJs."); - console.log(ex); - document.getElementById("triggers").innerHTML = ` + } finally { + if(!loadedData){ + console.log("(Warning) Could not load trigger from BangleJs."); + console.log(ex); + document.getElementById("triggers").innerHTML = ` [ {"display": "Open", "trigger": "OPEN_DOOR", "icon":"door"}, {"display": "Office", "trigger": "TOGGLE_LIGHT", "icon":"light"}, {"display": "Living Room", "trigger": "OVEN", "icon":"fire"} ]` + } } /* From 701e1c58ef2f74a1519a74db9c4cf260ac9505c9 Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 13:01:29 +0200 Subject: [PATCH 220/251] Minor changes --- apps/ha/custom.html | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/apps/ha/custom.html b/apps/ha/custom.html index f5021f6b6..3c52794ad 100644 --- a/apps/ha/custom.html +++ b/apps/ha/custom.html @@ -4,7 +4,12 @@

    Upload Tigger

    -

    +

    @@ -22,17 +27,9 @@ console.log(data); loadedData = true; }); - } finally { - if(!loadedData){ - console.log("(Warning) Could not load trigger from BangleJs."); - console.log(ex); - document.getElementById("triggers").innerHTML = ` -[ - {"display": "Open", "trigger": "OPEN_DOOR", "icon":"door"}, - {"display": "Office", "trigger": "TOGGLE_LIGHT", "icon":"light"}, - {"display": "Living Room", "trigger": "OVEN", "icon":"fire"} -]` - } + } catch { + console.log("(Warning) Could not load trigger from BangleJs."); + console.log(ex); } /* From 6c1b48bcbad7e66b20fb41731ee01f431c8d09cf Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 13:04:13 +0200 Subject: [PATCH 221/251] Test --- apps/ha/custom.html | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/apps/ha/custom.html b/apps/ha/custom.html index 3c52794ad..f5021f6b6 100644 --- a/apps/ha/custom.html +++ b/apps/ha/custom.html @@ -4,12 +4,7 @@

    Upload Tigger

    -

    +

    @@ -27,9 +22,17 @@ console.log(data); loadedData = true; }); - } catch { - console.log("(Warning) Could not load trigger from BangleJs."); - console.log(ex); + } finally { + if(!loadedData){ + console.log("(Warning) Could not load trigger from BangleJs."); + console.log(ex); + document.getElementById("triggers").innerHTML = ` +[ + {"display": "Open", "trigger": "OPEN_DOOR", "icon":"door"}, + {"display": "Office", "trigger": "TOGGLE_LIGHT", "icon":"light"}, + {"display": "Living Room", "trigger": "OVEN", "icon":"fire"} +]` + } } /* From 3543cc68581a85d120f928a1c4d33db4b3bca266 Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 13:09:02 +0200 Subject: [PATCH 222/251] Better default entries handling --- apps/ha/custom.html | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/apps/ha/custom.html b/apps/ha/custom.html index f5021f6b6..7de7bd8b6 100644 --- a/apps/ha/custom.html +++ b/apps/ha/custom.html @@ -14,27 +14,35 @@ * Load trigger from BangleJs */ console.log("Loading trigger from BangleJs..."); - var loadedData = false; + + function setDefaultEntries(){ + console.log("Set default trigger entries."); + document.getElementById("triggers").innerHTML = ` +[ +{"display": "Open", "trigger": "OPEN_DOOR", "icon":"door"}, +{"display": "Office", "trigger": "TOGGLE_LIGHT", "icon":"light"}, +{"display": "Living Room", "trigger": "OVEN", "icon":"fire"} +]` + } + try { Puck.eval(`require("Storage").read(${JSON.stringify("ha.trigger.json")})`,data=>{ document.getElementById("triggers").innerHTML = data; - console.log("Successfully loaded trigger from BangleJs."); - console.log(data); - loadedData = true; + if(data != ""){ + console.log("Successfully loaded trigger from BangleJs."); + console.log(data); + loadedData = true; + } else { + setDefaultEntries(); + } }); - } finally { - if(!loadedData){ - console.log("(Warning) Could not load trigger from BangleJs."); - console.log(ex); - document.getElementById("triggers").innerHTML = ` -[ - {"display": "Open", "trigger": "OPEN_DOOR", "icon":"door"}, - {"display": "Office", "trigger": "TOGGLE_LIGHT", "icon":"light"}, - {"display": "Living Room", "trigger": "OVEN", "icon":"fire"} -]` - } + } catch(ex) { + console.log("(Warning) Could not load trigger from BangleJs."); + console.log(ex); + setDefaultEntries(); } + /* * Upload trigger to BangleJs */ From 49eb18df0b463e95dec04b6d4d969da790281578 Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 13:12:21 +0200 Subject: [PATCH 223/251] Working verision. --- apps/ha/custom.html | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/apps/ha/custom.html b/apps/ha/custom.html index 7de7bd8b6..90ba6e10c 100644 --- a/apps/ha/custom.html +++ b/apps/ha/custom.html @@ -4,7 +4,13 @@

    Upload Tigger

    -

    +

    @@ -14,35 +20,16 @@ * Load trigger from BangleJs */ console.log("Loading trigger from BangleJs..."); - - function setDefaultEntries(){ - console.log("Set default trigger entries."); - document.getElementById("triggers").innerHTML = ` -[ -{"display": "Open", "trigger": "OPEN_DOOR", "icon":"door"}, -{"display": "Office", "trigger": "TOGGLE_LIGHT", "icon":"light"}, -{"display": "Living Room", "trigger": "OVEN", "icon":"fire"} -]` - } - try { Puck.eval(`require("Storage").read(${JSON.stringify("ha.trigger.json")})`,data=>{ document.getElementById("triggers").innerHTML = data; - if(data != ""){ - console.log("Successfully loaded trigger from BangleJs."); - console.log(data); - loadedData = true; - } else { - setDefaultEntries(); - } + console.log("Loaded trigger from BangleJs."); }); } catch(ex) { console.log("(Warning) Could not load trigger from BangleJs."); console.log(ex); - setDefaultEntries(); } - /* * Upload trigger to BangleJs */ From 8ee12fc5e83f45ab9fbfd911c7b9a9d8ea5c6bae Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 15:56:41 +0200 Subject: [PATCH 224/251] Minor fix if nothing is installed yet --- apps/ha/custom.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/ha/custom.html b/apps/ha/custom.html index 90ba6e10c..49f5a2eb8 100644 --- a/apps/ha/custom.html +++ b/apps/ha/custom.html @@ -9,8 +9,7 @@ {"display": "Open", "trigger": "OPEN_DOOR", "icon":"door"}, {"display": "Office", "trigger": "TOGGLE_LIGHT", "icon":"light"}, {"display": "Living Room", "trigger": "OVEN", "icon":"fire"} -] -

    +]

    @@ -22,8 +21,10 @@ console.log("Loading trigger from BangleJs..."); try { Puck.eval(`require("Storage").read(${JSON.stringify("ha.trigger.json")})`,data=>{ + if(data.length > 0){ document.getElementById("triggers").innerHTML = data; console.log("Loaded trigger from BangleJs."); + } }); } catch(ex) { console.log("(Warning) Could not load trigger from BangleJs."); From 8eb1f230103ac53cd04ce52e07f9c6b6f2f14334 Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 15:59:40 +0200 Subject: [PATCH 225/251] Show template if nothing is on bangle yet... --- apps/ha/custom.html | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/apps/ha/custom.html b/apps/ha/custom.html index 49f5a2eb8..095c2959c 100644 --- a/apps/ha/custom.html +++ b/apps/ha/custom.html @@ -4,12 +4,7 @@

    Upload Tigger

    -

    +

    @@ -22,8 +17,15 @@ try { Puck.eval(`require("Storage").read(${JSON.stringify("ha.trigger.json")})`,data=>{ if(data.length > 0){ + console.log("Load trigger from BangleJs."); document.getElementById("triggers").innerHTML = data; - console.log("Loaded trigger from BangleJs."); + } else { + console.log("Load trigger from Template."); + document.getElementById("triggers").innerHTML = `[ + {"display": "Open", "trigger": "OPEN_DOOR", "icon":"door"}, + {"display": "Office", "trigger": "TOGGLE_LIGHT", "icon":"light"}, + {"display": "Living Room", "trigger": "OVEN", "icon":"fire"} +]` } }); } catch(ex) { From d6a1c6b07fbccfabb945e529f5c3e876cbea61b5 Mon Sep 17 00:00:00 2001 From: David Peer Date: Sun, 26 Jun 2022 16:02:33 +0200 Subject: [PATCH 226/251] Fix template --- apps/ha/custom.html | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/apps/ha/custom.html b/apps/ha/custom.html index 095c2959c..49f5a2eb8 100644 --- a/apps/ha/custom.html +++ b/apps/ha/custom.html @@ -4,7 +4,12 @@

    Upload Tigger

    -

    +

    @@ -17,15 +22,8 @@ try { Puck.eval(`require("Storage").read(${JSON.stringify("ha.trigger.json")})`,data=>{ if(data.length > 0){ - console.log("Load trigger from BangleJs."); document.getElementById("triggers").innerHTML = data; - } else { - console.log("Load trigger from Template."); - document.getElementById("triggers").innerHTML = `[ - {"display": "Open", "trigger": "OPEN_DOOR", "icon":"door"}, - {"display": "Office", "trigger": "TOGGLE_LIGHT", "icon":"light"}, - {"display": "Living Room", "trigger": "OVEN", "icon":"fire"} -]` + console.log("Loaded trigger from BangleJs."); } }); } catch(ex) { From e161a030c158b57923692570d261c8c6b0287396 Mon Sep 17 00:00:00 2001 From: Marco H Date: Mon, 27 Jun 2022 12:58:33 +0200 Subject: [PATCH 227/251] Fix deletion of old entries in log Only use valid pressure values --- apps/widbaroalarm/widget.js | 38 +++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/apps/widbaroalarm/widget.js b/apps/widbaroalarm/widget.js index cd3e9b2e7..9740da68d 100644 --- a/apps/widbaroalarm/widget.js +++ b/apps/widbaroalarm/widget.js @@ -76,6 +76,12 @@ function doWeNeedToAlarm(key) { return setting(key) == undefined || setting(key) == 0 || setting(key) < tsNow; } +function isValidPressureValue(pressure) { + if (pressure == undefined || pressure <= 0) + return false; + return pressure > 800 && pressure < 1200; // very rough values +} + function handlePressureValue(pressure) { if (pressure == undefined || pressure <= 0) return; @@ -85,6 +91,17 @@ function handlePressureValue(pressure) { history3.push(d); + // delete entries older than 3h + for (let i = 0; i < history3.length; i++) { + if (history3[i]["ts"] < ts - (3 * 60 * 60)) { + history3.shift(); + } + } + // delete oldest entries until we have max 50 + while (history3.length > 50) { + history3.shift(); + } + // write data to storage storage.writeJSON(LOG_FILE, history3); @@ -99,17 +116,6 @@ function handlePressureValue(pressure) { function checkForAlarms(pressure, ts) { let alreadyWarned = false; - // delete entries older than 3h - for (let i = 0; i < history3.length; i++) { - if (history3[i]["ts"] < ts - (3 * 60 * 60)) { - history3.shift(); - } - } - // delete oldest entries until we have max 50 - while (history3.length > 50) { - history3.shift(); - } - if (setting("lowalarm")) { // Is below the alarm threshold? if (pressure <= setting("min")) { @@ -217,8 +223,12 @@ function getPressureValue() { Bangle.on('pressure', function(e) { while (currentPressures.length > MEDIANLENGTH) currentPressures.pop(); - currentPressures.unshift(e.pressure); - median = currentPressures.slice().sort(); + + const pressure = e.pressure; + if (isValidPressureValue(pressure)) { + currentPressures.unshift(pressure); + median = currentPressures.slice().sort(); + } if (median.length > 10) { var mid = median.length >> 1; @@ -231,7 +241,7 @@ function getPressureValue() { } }); - setTimeout(function() { turnOff(); }, 10000); + setTimeout(function() { turnOff(); }, 30000); } function turnOff() { From 803c65eb75379f06f68349032824dd9554336e4d Mon Sep 17 00:00:00 2001 From: Marco H Date: Mon, 27 Jun 2022 12:59:21 +0200 Subject: [PATCH 228/251] Update changelog --- apps/widbaroalarm/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/widbaroalarm/ChangeLog b/apps/widbaroalarm/ChangeLog index 11f26b353..f0ab89928 100644 --- a/apps/widbaroalarm/ChangeLog +++ b/apps/widbaroalarm/ChangeLog @@ -5,3 +5,4 @@ Improve barometer value median calculation 0.05: Fix warning calculation Show difference of last measurement to pressure average of the the last three hours in the widget + Only use valid pressure values From 11507d5eb450e51a07089a1c34f67f29360c2588 Mon Sep 17 00:00:00 2001 From: Marco H Date: Mon, 27 Jun 2022 13:50:58 +0200 Subject: [PATCH 229/251] Improve performance for deletion Better titles for alarms --- apps/widbaroalarm/widget.js | 48 ++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/apps/widbaroalarm/widget.js b/apps/widbaroalarm/widget.js index 9740da68d..229bac721 100644 --- a/apps/widbaroalarm/widget.js +++ b/apps/widbaroalarm/widget.js @@ -30,13 +30,13 @@ const interval = setting("interval"); let history3 = storage.readJSON(LOG_FILE, true) || []; // history of recent 3 hours -function showAlarm(body, key) { +function showAlarm(body, key, type) { if (body == undefined) return; stop = true; E.showPrompt(body, { - title : "Pressure alarm", + title : "Pressure " + (type != undefined ? type : "alarm"), buttons : {"Ok" : 1, "Dismiss" : 2, "Pause" : 3} }).then(function(v) { const tsNow = Math.round(Date.now() / 1000); // seconds @@ -91,16 +91,19 @@ function handlePressureValue(pressure) { history3.push(d); + // delete oldest entries until we have max 50 + while (history3.length > 50) { + history3.shift(); + } + // delete entries older than 3h for (let i = 0; i < history3.length; i++) { if (history3[i]["ts"] < ts - (3 * 60 * 60)) { history3.shift(); + } else { + break; } } - // delete oldest entries until we have max 50 - while (history3.length > 50) { - history3.shift(); - } // write data to storage storage.writeJSON(LOG_FILE, history3); @@ -120,8 +123,8 @@ function checkForAlarms(pressure, ts) { // Is below the alarm threshold? if (pressure <= setting("min")) { if (!doWeNeedToAlarm("lowWarnTs")) { - showAlarm("Pressure low: " + Math.round(pressure) + " hPa", - "lowWarnTs"); + showAlarm("Pressure low: " + Math.round(pressure) + " hPa", "lowWarnTs", + "low"); alreadyWarned = true; } } else { @@ -134,7 +137,7 @@ function checkForAlarms(pressure, ts) { if (pressure >= setting("max")) { if (doWeNeedToAlarm("highWarnTs")) { showAlarm("Pressure high: " + Math.round(pressure) + " hPa", - "highWarnTs"); + "highWarnTs", "high"); alreadyWarned = true; } } else { @@ -162,7 +165,7 @@ function checkForAlarms(pressure, ts) { showAlarm((Math.round(diffPressure * 10) / 10) + " hPa/3h from " + Math.round(oldestPressure) + " to " + Math.round(pressure) + " hPa", - "dropWarnTs"); + "dropWarnTs", "drop"); } } else { if (ts > setting("dropWarnTs")) @@ -180,7 +183,7 @@ function checkForAlarms(pressure, ts) { showAlarm((Math.round(diffPressure * 10) / 10) + " hPa/3h from " + Math.round(oldestPressure) + " to " + Math.round(pressure) + " hPa", - "raiseWarnTs"); + "raiseWarnTs", "raise"); } } else { if (ts > setting("raiseWarnTs")) @@ -249,23 +252,23 @@ function turnOff() { Bangle.setBarometerPower(false, "widbaroalarm"); } -function reload() { getPressureValue(); } - function draw() { if (global.WIDGETS != undefined && typeof global.WIDGETS === "object") { global.WIDGETS["baroalarm"] = { width : setting("show") ? 24 : 0, - reload : reload, area : "tr", draw : draw }; } g.reset(); + + if (this.x == undefined) + return; // widget not yet there + + g.clearRect(this.x, this.y, this.x + this.width - 1, this.y + 23); + if (setting("show")) { g.setFont("6x8", 1).setFontAlign(1, 0); - const x = this.x, y = this.y; - if (this.x == undefined) - return; // widget not yet there if (medianPressure == undefined) { // trigger a new check getPressureValue(); @@ -273,12 +276,12 @@ function draw() { // lets load last value from log (if available) if (history3.length > 0) { medianPressure = history3[history3.length - 1]["p"]; - g.drawString(Math.round(medianPressure), x + 24, y + 6); + g.drawString(Math.round(medianPressure), this.x + 24, this.y + 6); } else { - g.drawString("...", x + 24, y + 6); + g.drawString("...", this.x + 24, this.y + 6); } } else { - g.drawString(Math.round(medianPressure), x + 24, y + 6); + g.drawString(Math.round(medianPressure), this.x + 24, this.y + 6); } if (threeHourAvrPressure == undefined) { @@ -287,7 +290,8 @@ function draw() { if (threeHourAvrPressure != undefined) { if (medianPressure != undefined) { const diff = Math.round(medianPressure - threeHourAvrPressure); - g.drawString((diff > 0 ? "+" : "") + diff, x + 24, y + 6 + 10); + g.drawString((diff > 0 ? "+" : "") + diff, this.x + 24, + this.y + 6 + 10); } } } @@ -296,5 +300,5 @@ function draw() { if (interval > 0) { setInterval(getPressureValue, interval * 60000); } -draw(); +getPressureValue(); })(); From ee994e027fe21fd94041ec73bbe795787bfbacca Mon Sep 17 00:00:00 2001 From: David Peer Date: Mon, 27 Jun 2022 16:12:26 +0200 Subject: [PATCH 230/251] Version 0.02 of "Info" app including weather data --- apps/info/ChangeLog | 3 +- apps/info/info.app.js | 144 ++++++++++++++++++++++++------------- apps/info/metadata.json | 2 +- apps/info/screenshot_1.png | Bin 3552 -> 3399 bytes apps/info/screenshot_2.png | Bin 3334 -> 3825 bytes apps/info/screenshot_3.png | Bin 3455 -> 3620 bytes 6 files changed, 98 insertions(+), 51 deletions(-) diff --git a/apps/info/ChangeLog b/apps/info/ChangeLog index 07afedd21..400e7a119 100644 --- a/apps/info/ChangeLog +++ b/apps/info/ChangeLog @@ -1 +1,2 @@ -0.01: Release \ No newline at end of file +0.01: Release +0.02: Recfactoring and show weather data. \ No newline at end of file diff --git a/apps/info/info.app.js b/apps/info/info.app.js index c61a88045..9de80affc 100644 --- a/apps/info/info.app.js +++ b/apps/info/info.app.js @@ -1,27 +1,90 @@ -var s = require("Storage"); +const storage = require("Storage"); const locale = require('locale'); var ENV = process.env; var W = g.getWidth(), H = g.getHeight(); var screen = 0; -const maxScreen = 2; + + +var screens = [ + { + name: "General", + items: [ + {name: "Steps", fun: () => getSteps()}, + {name: "HRM", fun: () => getBpm()}, + {name: "", fun: () => ""}, + {name: "Temp.", fun: () => getWeatherTemp()}, + {name: "Humidity", fun: () => getWeatherHumidity()}, + {name: "Wind", fun: () => getWeatherWind()}, + ] + }, + { + name: "Hardware", + items: [ + {name: "Battery", fun: () => E.getBattery() + "%"}, + {name: "Charge?", fun: () => Bangle.isCharging() ? "Yes" : "No"}, + {name: "TempInt.", fun: () => locale.temp(parseInt(E.getTemperature()))}, + {name: "Bluetooth", fun: () => NRF.getSecurityStatus().connected ? "Conn" : "NoConn"}, + {name: "GPS", fun: () => Bangle.isGPSOn() ? "On" : "Off"}, + {name: "Compass", fun: () => Bangle.isCompassOn() ? "On" : "Off"}, + ] + }, + { + name: "Software", + items: [ + {name: "Firmw.", fun: () => ENV.VERSION}, + {name: "Boot.", fun: () => getVersion("boot.info")}, + {name: "Settings.", fun: () => getVersion("setting.info")}, + {name: "Storage.", fun: () => ""}, + {name: " Total", fun: () => ENV.STORAGE>>10}, + {name: " Free", fun: () => require("Storage").getFree()>>10}, + ] + } +]; + + +function getWeatherTemp(){ + try { + var weather = storage.readJSON('weather.json').weather; + return locale.temp(weather.temp-273.15); + } catch(ex) { } + + return "?"; +} + + +function getWeatherHumidity(){ + try { + var weather = storage.readJSON('weather.json').weather; + return weather.hum = weather.hum + "%"; + } catch(ex) { } + + return "?"; +} + + +function getWeatherWind(){ + try { + var weather = storage.readJSON('weather.json').weather; + var speed = locale.speed(weather.wind).replace("mph", ""); + return Math.round(speed * 1.609344) + "kph"; + } catch(ex) { } + + return "?"; +} + function getVersion(file) { - var j = s.readJSON(file,1); + var j = storage.readJSON(file,1); var v = ("object"==typeof j)?j.version:false; return v?((v?"v"+v:"Unknown")):"NO "; } -function drawData(name, value, y){ - g.drawString(name, 5, y); - g.drawString(value, 100, y); -} - function getSteps(){ try{ return Bangle.getHealthStatus("day").steps; } catch(e) { - return ">= 2v12"; + return ">2v12"; } } @@ -29,53 +92,36 @@ function getBpm(){ try{ return Math.round(Bangle.getHealthStatus("day").bpm) + "bpm"; } catch(e) { - return ">= 2v12"; + return ">2v12"; } } +function drawData(name, value, y){ + g.drawString(name, 10, y); + g.drawString(value, 100, y); +} + function drawInfo() { g.reset().clearRect(Bangle.appRect); var h=18, y = h;//-h; // Header - g.setFont("Vector", h+2).setFontAlign(0,-1); - g.drawString("--==|| INFO ||==--", W/2, 0); + g.drawLine(0,25,W,25); + g.drawLine(0,26,W,26); + + // Info body depending on screen g.setFont("Vector",h).setFontAlign(-1,-1); + screens[screen].items.forEach(function (item, index){ + drawData(item.name, item.fun(), y+=h); + }); - // Dynamic data - if(screen == 0){ - drawData("Steps", getSteps(), y+=h); - drawData("HRM", getBpm(), y+=h); - drawData("Battery", E.getBattery() + "%", y+=h); - drawData("Voltage", E.getAnalogVRef().toFixed(2) + "V", y+=h); - drawData("IntTemp.", locale.temp(parseInt(E.getTemperature())), y+=h); - } - - if(screen == 1){ - drawData("Charging?", Bangle.isCharging() ? "Yes" : "No", y+=h); - drawData("Bluetooth", NRF.getSecurityStatus().connected ? "Conn." : "Disconn.", y+=h); - drawData("GPS", Bangle.isGPSOn() ? "On" : "Off", y+=h); - drawData("Compass", Bangle.isCompassOn() ? "On" : "Off", y+=h); - drawData("HRM", Bangle.isHRMOn() ? "On" : "Off", y+=h); - } - - // Static data - if(screen == 2){ - drawData("Firmw.", ENV.VERSION, y+=h); - drawData("Boot.", getVersion("boot.info"), y+=h); - drawData("Settings", getVersion("setting.info"), y+=h); - drawData("Storage", "", y+=h); - drawData(" Total", ENV.STORAGE>>10, y+=h); - drawData(" Free", require("Storage").getFree()>>10, y+=h); - } - - if(Bangle.isLocked()){ - g.setFont("Vector",h-2).setFontAlign(-1,-1); - g.drawString("Locked", 0, H-h+2); - } - + // Bottom + g.drawLine(0,H-h-3,W,H-h-3); + g.drawLine(0,H-h-2,W,H-h-2); + g.setFont("Vector",h-2).setFontAlign(-1,-1); + g.drawString(screens[screen].name, 2, H-h+2); g.setFont("Vector",h-2).setFontAlign(1,-1); - g.drawString((screen+1) + "/3", W, H-h+2); + g.drawString((screen+1) + "/" + screens.length, W, H-h+2); } drawInfo(); @@ -88,14 +134,15 @@ Bangle.on('touch', function(btn, e){ var isRight = e.x > right; if(isRight){ - screen = (screen + 1) % (maxScreen+1); + screen = (screen + 1) % screens.length; } if(isLeft){ screen -= 1; - screen = screen < 0 ? maxScreen : screen; + screen = screen < 0 ? screens.length-1 : screen; } + Bangle.buzz(40, 0.6); drawInfo(); }); @@ -104,5 +151,4 @@ Bangle.on('lock', function(isLocked) { }); Bangle.loadWidgets(); -for (let wd of WIDGETS) {wd.draw=()=>{};wd.area="";} -// Bangle.drawWidgets(); \ No newline at end of file +Bangle.drawWidgets(); \ No newline at end of file diff --git a/apps/info/metadata.json b/apps/info/metadata.json index f05f0e134..97aeb687a 100644 --- a/apps/info/metadata.json +++ b/apps/info/metadata.json @@ -1,7 +1,7 @@ { "id": "info", "name": "Info", - "version": "0.01", + "version": "0.02", "description": "An application that displays information such as battery level, steps etc.", "icon": "info.png", "type": "app", diff --git a/apps/info/screenshot_1.png b/apps/info/screenshot_1.png index 97d42a89636e01437a6397075db1dc453ca22fe8..25f5b0a8bea17a3edd50da81e9196af01a22756b 100644 GIT binary patch literal 3399 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 BcGmy^ literal 3552 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 diff --git a/apps/info/screenshot_2.png b/apps/info/screenshot_2.png index 2d25dd4e6ce4166d5a6b48ad7f50231bf643cc95..517a83299fe937020cdbd4e427cc4e7de98ae6e0 100644 GIT binary patch literal 3825 zcmbuCcR1Vq*T=t!nWX&gXr%V6sw$-|B_vH%j4rcAtSBXf+AE==<)(JWZO2McTZujH z(3aLt`B_o4MXjK%(VOCNKmR>{KYyHau5(@I{PQ~3`F!5ziRm3f0jL-h0004FBYpGZ zSo5#(^B()^#(Br%017ZS)B~ypC6)m|u-sVxnq{aXhsGu^z7o{e**F@`976l)5smK( z@jYhQb0l5lLNH}oaP=GoyX0PH!lh)GC5UYPXFoJIe>Ne zcY9rK2X(A#$aDZ{<}sA_dt~r$%3+Z(V?=$QGcRw-k7en6rr z4^~&=2-V6rp;DgY9&B02fYwXy?_9Qxx+QxCmiy-5C|{O5Q%=)&g{QmTwqSxYZu5zy zuo&rKKa8g@Lp7yd&FpLt`=#hXp{Y*+pZ=k*#T4v)i==R&-6p#s^?&PSD@uaj_UVd7 z4Rux?-O`}i#p}4k(}CTPRc$n0+qd$OVocM9#`*_7(Qkx?@mooZ&$}PQ54*LTh_ij$ z9+d^yj^W%;uSzVqt$zRGuN0F-<(5$;VH?XR?ohLym$o_JOg&%J{c@bJ5%pBit*m!S zsX)O0E5~wGv|n^SNEUYQ+7{kD+Ms$y6s)dkwbm0@3;;{x_ z3RYXAo~+d~N2#NGZR~WhF(>p|MYZ^x*r?QV!-)J<{y16{$?RkKwND+<4TrPnN5d9k zSGdAO*M%E%&$mcBMBZqd{921L;;g(<#Vt<$Tvm4kPhWp$9Kit2^N780G0CzTQ5yi{ z;ilim$p^XZNN2|CRKo`Z%Bpj6Uf`?S%eu=ZmgzOHd!sqztyNwTVc0@YvB)w=ZH1nQ zd3NCCc$NM6V;lLJHboUp5RT|Mw5UTSnqPh{XTZR|e(TordddSxf0~v=MN9q#xM+NW zi_i=UzcA0K$$euIonMQYV}>F9#En{$6|iF;cqKu72)Cuek(SwA2yY!XkTY!L7e>OX=)H6cfnp+CH|%Dw%n_F<&g^80R5@D@lWuHm5FnI zuI!uI4F$Qix;I#RJYenH@Y%TFm7b>kumSMfu}CfaqWaevRe*li4jM}(HV@ACzPD0| z*_OG-)&h*hi*N0I0vVY6K^gpya4N)?k7^rBlL_9?KEv#YNJwT9Nk64>_xtS|w~5r* zoV4xDGI4_Do@2LqN@%^J)57ekwcP3x`Yx9#1+jg(Kt4fC`!?CrR2_$m6X+;3$W;DLR!sB4etolQaH) z#Nctb%@mKp+KF;KG!G#Vli2WXDwAK#Co(JGrJunY*-2I0{g=iY)4w%f<2LpkEQ|JeF75uv7^o&wIG366A z|MhdFj6mVV;B+tNy^(k=*b>V(6qJlC{Y6T2Rc!J1LIR&_Bye>nA%;i;NYy$G) zP{W{bn+N^PbiO%uv{C21OrLEwK#YvAHFw zn)}yQn{Ut(d1@C=t;~5{LY*A1gSLsyxfczv+|OdUyd-aWl<;0UGbj33NjLM*4ZZLK zk@!lb*7nDRb41ZfgGOU27gSyZ>~Po;gMQQCf3TVrcxyRqxpbW#OEMu^atL$>b|Eaq7JnM_*d_ zgyo;^_dR^-kR>25@d9wUTLSXJX{tQ4sVOWI@05xN2|L3qa?8|vucpX!YGJ6#NhnX* z<#*izJKprJjoaTlwb-X}CCk0O>rJt+)mGvJVE`SkTzmb7UxnVKJ^#b|J#lTAvIIOV z2@``2%QO_+tAOuCb=sfebhEo(<~+tyf!Ih*vNql z5bf%YI-t?=zD}2>$Tz9%E%ra_+@bCpMV#*vTJ<-1tW2rNOniO3V6P#PtImS27`ujc zS`_i;NzJV-5G9lrUPu`t>x`m6A}U{QQA4iIh;d-MO59|O*#VK*X& zuvZ`EL3T%j(>tc&HbP10YK}@T8*~S&u73PiFSWi)L=XH9n0z?ebc)mSbfDdO+2nn+dLgGT=4V*|l>FB$wFGxfb10 zEP~*gr!j=eTh~YzrG{|XoGehq+6?y{PMp0!GtGbavcoVrHb)GULA$;YOjNy8)e35e z*Mg)WsS2Qs#))3y8f!IhCqQvRMWCQ)!r^?k$jfK0!381oqyUAv|}qTuWW+??Yb znt(6b8pexkn&G$s@!g>a0_mp94}j6~Mg`%hD%lTW>0k9qCB$eBNu1Rme|28!7_!{ z8IH>!0!jKZvyyA!pp?naBQysubITh+7*R`%X*?Q5(TeSX968C8J|$p1!axQ6~R+62h5DW@&>Czt@TrhI*5L@OvG0s;FSun;cVCV%0{|FKLiXf{YJh z0)_*xSyaH7UM#ch?lw*g6ge9>?(+$(R;H7&x~jaz?&<;DEZ}Dpr*8-L&2UeAyM2Xe zm5f?(jS4FBSs^vJA-#}(QF2w&4^PJ_n4#x9yhUTHp4^*0$7`xmua`w%^()V7exA(K zV5T)MUBAO|tc=s)xOROk7#-Y~+F@yLsz?Z>{}ZhM>Sp!Q1181eYnD(AUX{oy{_~I` z@B1p{2X7fs4x_Jr;i!eHq|Z+(AzX>AgUC{5=rR58V&C|=j&&1Xe6~Z1^)dZwzhpJj zWBTTQB|;OUeujFFtDxwQ1RQ3sSzckXzS1P$+I;9n(&|Gj81!KpR|<@%(#YG?W)&TC#n{JnF1088i`4AD$C&rX0k!Nl()r>z z)(;#a#8pshv zwlvr@0CPk7{P5GUr9CK?>@5PVVf?rLHz!LXUUxg&SK%$XdrYSK=#ZP4g;7APfxkc6 zvfNh!NM^A1V2{q;wr#7~YHbseH7e%dw-WS03PKK~nFhD8A8n*WUCXEQC$775N}aPH z7wG~2JDzC6J{33?FD+HmW@dXsR?dUUJFp#6e02!f2jGz{xrombh{8XI{Nox$R(RCT z?F>u2{N23%JTsfYqyu%RI;Hn4KptScPh{c+2&7!PiEPCdPtnCpE}bs@h|`bbPmvaO z!A-hXb|y}~P8!&id=`J3veFOCcy6riFI&V-{u$OyVK*#g?k{_voEw2mgdajS7X@`c z{k8_eTTYtfMuNj@cb(LBxqtE8(G7z_Hb2Znc21w1JEiq~Ug8=TBth_pQo5~JP3yD<9r*#)r zzo}-kte5NG-_L{i%1u;Iw@Jp<-;i(l9k6P&oG-#I`c-;_NB;vo C7%aU2 literal 3334 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 diff --git a/apps/info/screenshot_3.png b/apps/info/screenshot_3.png index 782e4a1952f1dc3205f20852edf88e9493edd6d8..6802495f5edb75442a3b7e397ddc19bfe8a4710a 100644 GIT binary patch literal 3620 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 Qdiy{&mUb467rj&d5BxC2SO5S3 literal 3455 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 Xk+%_!CsMW>72tTx)$W-M?(+Wt^h|>m From eee3a8c0af31ee14697696143f1cf9087ad49624 Mon Sep 17 00:00:00 2001 From: David Peer Date: Mon, 27 Jun 2022 16:36:26 +0200 Subject: [PATCH 231/251] Export a library for other apps --- apps/ha/ChangeLog | 3 +- apps/ha/README.md | 29 +++++++++++++- apps/ha/ha.app.js | 84 +++++----------------------------------- apps/ha/ha.lib.js | 90 +++++++++++++++++++++++++++++++++++++++++++ apps/ha/metadata.json | 3 +- 5 files changed, 132 insertions(+), 77 deletions(-) create mode 100644 apps/ha/ha.lib.js diff --git a/apps/ha/ChangeLog b/apps/ha/ChangeLog index 07afedd21..e78b4ccd0 100644 --- a/apps/ha/ChangeLog +++ b/apps/ha/ChangeLog @@ -1 +1,2 @@ -0.01: Release \ No newline at end of file +0.01: Release +0.02: Includeas the ha.lib.js library that can be used by other apps or clocks. \ No newline at end of file diff --git a/apps/ha/README.md b/apps/ha/README.md index 8005421f1..654a262c8 100644 --- a/apps/ha/README.md +++ b/apps/ha/README.md @@ -1,13 +1,15 @@ # Home Assistant This app integrates your BangleJs into the HomeAssistant. + # How to use Click on the left and right side of the screen to select the triggers that you configured. Click in the middle of the screen to send the trigger to HomeAssistant. ![](screenshot.png) -# First Setup + +# Initial Setup 1.) First of all, make sure that HomeAssistant and the HomeAssistant Android App works. 2.) Open your BangleJs Gadgetbridge App, click on the Settings icon of your BangleJs and enable "Allow Intent Access" @@ -22,6 +24,7 @@ configured. Click in the middle of the screen to send the trigger to HomeAssista This setup must be done only once -- now you are ready to configure your BangleJS to control some devices or entities in your HomeAssistant :) + # Setup Trigger 1.) Upload the app and all corresponding triggers through the AppStore UI. You must specify the display name, the trigger as well as an icon. @@ -38,12 +41,36 @@ The following icons are currently supported: 3.) Don't forget to select the action that should be executed at the bottom of each automation. + # Default Trigger This app also implements two default trigger that can always be used: - APP_STARTED -- Will be sent whenever the app is started. So you could do some actions already when the app is sarted without the need of any user interaction. - TRIGGER -- Will be sent whenever some trigger is executed. So you could generically listen to that. +# How to use the library (ha.lib.js) in my own app/clk +This app inlcludes a library that can be used by other apps or clocks +to read all configured intents or to send a trigger. Example code: + +```js +// First of all impport the library +var ha = require("ha.lib.js"); + +// You can read all triggers that a user configured simply via +var triggers = ha.getTriggers(); + +// Get display name and icon of trigger +var display = triggers[0].display; +var icon = triggers[0].getIcon(); + +// Trigger the first configured trigger +ha.sendTrigger(triggers[0].trigger); + +// Send a custom trigger that is not configured by a user +ha.sendTrigger("MY_CUSTOM_TRIGGER"); +``` + + # FAQ ## Sometimes the trigger is not executed diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index 85f926138..9ad8db8fa 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -1,72 +1,10 @@ -var storage = require("Storage"); +/** + * This app uses the ha library to send trigger to HomeAssistant. + */ +var ha = require("ha.lib.js"); var W = g.getWidth(), H = g.getHeight(); var position=0; - - -// Note: All icons should have 48x48 pixels -function getIcon(icon){ - if(icon == "light"){ - return { - width : 48, height : 48, bpp : 1, - transparent : 0, - buffer : require("heatshrink").decompress(atob("AAMBwAFE4AFDgYFJjgFBnAFBjwXBvAFBh4jBuAFCAQPwAQMHAQPgEQQCBEgcf/AvDn/8Aof//5GDAoJOBh+BAoOB+EP8YFB4fwgfnAoPnGANHAoPjHYQFBHYQFd44pDg47C4/gh/DIIZNFLIplGgF//wFIgZ9BRIUHRII7Ch4FBUIUOAoKzCjwFEhgCBmDpIVooFFh4oCAA4LFC5b7BAob1BAYI=")) - }; - } else if(icon == "door"){ - return { - width : 48, height : 48, bpp : 1, - transparent : 0, - buffer : require("heatshrink").decompress(atob("AAM4Aok/4AED///Aov4Aon8DgQGBAv4FpnIFKJv4FweAQFFAgQFB8AFDnADC")) - }; - } else if (icon == "fire"){ - return { - width : 48, height : 48, bpp : 1, - transparent : 0, - buffer : require("heatshrink").decompress(atob("ABsDAokBwAFE4AFE8AFE+AFE/AFJgf8Aon+AocHAokP/8QAokYAoUfAok//88ApF//4kDAo//AgMQAgIFCjgFEjwFCOYIFFHQIFDn/+AoJ/BAoIqBAoN//xCBAoI5BDIPAgP//gFB8AFChYFBgf//EJAogOBAoSgBAoMHAQIFEFgXAAoJEBv4FCNoQFGVYd/wAFEYYIFIvwCBDoV8UwQCBcgUPwDwDfQMBaIYADA")) - }; - } - - // Default is always the HA icon - return { - width : 48, height : 48, bpp : 1, - transparent : 0, - buffer : require("heatshrink").decompress(atob("AD8BwAFDg/gAocP+AFDj4FEn/8Aod//wFD/1+FAf4j+8AoMD+EPDAUH+OPAoUP+fPAoUfBYk/C4l/EYIwC//8n//FwIFEgYFD4EH+E8nkP8BdBAonjjk44/wj/nzk58/4gAFDF4PgCIMHAoPwhkwh4FB/EEkEfIIWAHwIFC4A+BAoXgg4FDL4IFDL4IFDLIYFkAEQA==")) - }; -} - -// Try to read custom actions, otherwise use default -var triggers = [ - {display: "Not found.", trigger: "NOP", icon: "ha"}, -]; - -try{ - triggers = storage.read("ha.trigger.json"); - triggers = JSON.parse(triggers); -} catch(e) { - // In case there are no user triggers yet, we show the default... -} - - -function sendIntent(trigger){ - var retries=3; - - while(retries > 0){ - try{ - // Send a startup trigger such that we could also execute - // an action when the app is started :) - Bluetooth.println(JSON.stringify({ - t:"intent", - action:"com.espruino.gadgetbridge.banglejs.HA", - extra:{ - trigger: trigger - }}) - ); - retries = -1; - - } catch(e){ - retries--; - } - } -} +var triggers = ha.getTriggers(); function draw() { @@ -78,7 +16,7 @@ function draw() { var w = g.stringWidth(trigger.display); g.setFontAlign(-1,-1); - var icon = getIcon(trigger.icon); + var icon = ha.getIcon(trigger.getIcon()); g.setColor(g.theme.fg).drawImage(icon, 12, H/5-2); g.drawString("Home", icon.width + 20, H/5); g.drawString("Assistant", icon.width + 18, H/5+24); @@ -112,13 +50,9 @@ Bangle.on('touch', function(btn, e){ } if(!isRight && !isLeft){ - - // Send a default intent that we triggered something. - sendIntent("TRIGGER"); - // Now send the selected trigger Bangle.buzz(80, 0.6).then(()=>{ - sendIntent(triggers[position].trigger); + ha.sendTrigger(triggers[position].trigger); setTimeout(()=>{ Bangle.buzz(80, 0.6); }, 250); @@ -126,12 +60,14 @@ Bangle.on('touch', function(btn, e){ } }); + // Send intent that the we started the app. -sendIntent("APP_STARTED"); +ha.sendTrigger("APP_STARTED"); // Next load the widgets and draw the app Bangle.loadWidgets(); Bangle.drawWidgets(); +// Draw app draw(); setWatch(_=>load(), BTN1); diff --git a/apps/ha/ha.lib.js b/apps/ha/ha.lib.js new file mode 100644 index 000000000..0de98d62a --- /dev/null +++ b/apps/ha/ha.lib.js @@ -0,0 +1,90 @@ +/** + * This library can be used to read all triggers that a user + * configured and send a trigger to homeassistant. + */ +function _getIcon(trigger){ + icon = trigger.icon; + if(icon == "light"){ + return { + width : 48, height : 48, bpp : 1, + transparent : 0, + buffer : require("heatshrink").decompress(atob("AAMBwAFE4AFDgYFJjgFBnAFBjwXBvAFBh4jBuAFCAQPwAQMHAQPgEQQCBEgcf/AvDn/8Aof//5GDAoJOBh+BAoOB+EP8YFB4fwgfnAoPnGANHAoPjHYQFBHYQFd44pDg47C4/gh/DIIZNFLIplGgF//wFIgZ9BRIUHRII7Ch4FBUIUOAoKzCjwFEhgCBmDpIVooFFh4oCAA4LFC5b7BAob1BAYI=")) + }; + } else if(icon == "door"){ + return { + width : 48, height : 48, bpp : 1, + transparent : 0, + buffer : require("heatshrink").decompress(atob("AAM4Aok/4AED///Aov4Aon8DgQGBAv4FpnIFKJv4FweAQFFAgQFB8AFDnADC")) + }; + } else if (icon == "fire"){ + return { + width : 48, height : 48, bpp : 1, + transparent : 0, + buffer : require("heatshrink").decompress(atob("ABsDAokBwAFE4AFE8AFE+AFE/AFJgf8Aon+AocHAokP/8QAokYAoUfAok//88ApF//4kDAo//AgMQAgIFCjgFEjwFCOYIFFHQIFDn/+AoJ/BAoIqBAoN//xCBAoI5BDIPAgP//gFB8AFChYFBgf//EJAogOBAoSgBAoMHAQIFEFgXAAoJEBv4FCNoQFGVYd/wAFEYYIFIvwCBDoV8UwQCBcgUPwDwDfQMBaIYADA")) + }; + } + + // Default is always the HA icon + return { + width : 48, height : 48, bpp : 1, + transparent : 0, + buffer : require("heatshrink").decompress(atob("AD8BwAFDg/gAocP+AFDj4FEn/8Aod//wFD/1+FAf4j+8AoMD+EPDAUH+OPAoUP+fPAoUfBYk/C4l/EYIwC//8n//FwIFEgYFD4EH+E8nkP8BdBAonjjk44/wj/nzk58/4gAFDF4PgCIMHAoPwhkwh4FB/EEkEfIIWAHwIFC4A+BAoXgg4FDL4IFDL4IFDLIYFkAEQA==")) + }; +} + +exports.getTriggers = function(){ + var triggers = [ + {display: "Empty", trigger: "NOP", icon: "ha"}, + ]; + + try{ + triggers = require("Storage").read("ha.trigger.json"); + triggers = JSON.parse(triggers); + + // We lazy load all icons, otherwise, we have to keep + // all the icons n times in memory which can be + // problematic for embedded devices. Therefore, + // we lazy load icons only if needed using the getIcon + // method of each trigger... + triggers.forEach(trigger => { + trigger.getIcon = function(){ + return _getIcon(trigger); + } + }) + } catch(e) { + // In case there are no user triggers yet, we show the default... + } + + return triggers; +} + +exports.sendTrigger = function(triggerName){ + var retries=3; + + while(retries > 0){ + try{ + // First send a generic trigger which can be used + // to listen to all trigger send. + Bluetooth.println(JSON.stringify({ + t:"intent", + action:"com.espruino.gadgetbridge.banglejs.HA", + extra:{ + trigger: "TRIGGER" + }}) + ); + + // Now lets send the trigger that we sould send. + Bluetooth.println(JSON.stringify({ + t:"intent", + action:"com.espruino.gadgetbridge.banglejs.HA", + extra:{ + trigger: triggerName + }}) + ); + retries = -1; + + } catch(e){ + retries--; + } + } +} \ No newline at end of file diff --git a/apps/ha/metadata.json b/apps/ha/metadata.json index 0f9929d8c..63308b933 100644 --- a/apps/ha/metadata.json +++ b/apps/ha/metadata.json @@ -1,7 +1,7 @@ { "id": "ha", "name": "HomeAssistant", - "version": "0.01", + "version": "0.02", "description": "Integrates your BangleJS into HomeAssistant.", "icon": "ha.png", "type": "app", @@ -19,6 +19,7 @@ ], "storage": [ {"name":"ha.app.js","url":"ha.app.js"}, + {"name":"ha.lib.js","url":"ha.lib.js"}, {"name":"ha.img","url":"ha.icon.js","evaluate":true} ] } From 69f4aa13957035305a1f7067cc04bc212a22598c Mon Sep 17 00:00:00 2001 From: David Peer Date: Mon, 27 Jun 2022 16:46:40 +0200 Subject: [PATCH 232/251] Minor fixes --- apps/ha/ha.app.js | 4 +++- apps/ha/ha.lib.js | 10 ---------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/apps/ha/ha.app.js b/apps/ha/ha.app.js index 9ad8db8fa..d9199fb0e 100644 --- a/apps/ha/ha.app.js +++ b/apps/ha/ha.app.js @@ -16,7 +16,7 @@ function draw() { var w = g.stringWidth(trigger.display); g.setFontAlign(-1,-1); - var icon = ha.getIcon(trigger.getIcon()); + var icon = trigger.getIcon(); g.setColor(g.theme.fg).drawImage(icon, 12, H/5-2); g.drawString("Home", icon.width + 20, H/5); g.drawString("Assistant", icon.width + 18, H/5+24); @@ -50,6 +50,8 @@ Bangle.on('touch', function(btn, e){ } if(!isRight && !isLeft){ + ha.sendTrigger("TRIGGER"); + // Now send the selected trigger Bangle.buzz(80, 0.6).then(()=>{ ha.sendTrigger(triggers[position].trigger); diff --git a/apps/ha/ha.lib.js b/apps/ha/ha.lib.js index 0de98d62a..b09cbeab2 100644 --- a/apps/ha/ha.lib.js +++ b/apps/ha/ha.lib.js @@ -63,16 +63,6 @@ exports.sendTrigger = function(triggerName){ while(retries > 0){ try{ - // First send a generic trigger which can be used - // to listen to all trigger send. - Bluetooth.println(JSON.stringify({ - t:"intent", - action:"com.espruino.gadgetbridge.banglejs.HA", - extra:{ - trigger: "TRIGGER" - }}) - ); - // Now lets send the trigger that we sould send. Bluetooth.println(JSON.stringify({ t:"intent", From 5c6952a26012c4991b5c9a888cc48589098ef6d5 Mon Sep 17 00:00:00 2001 From: David Peer Date: Mon, 27 Jun 2022 17:41:43 +0200 Subject: [PATCH 233/251] Integrate HomeAssistant into BW Clock --- apps/bwclk/ChangeLog | 3 +- apps/bwclk/README.md | 1 + apps/bwclk/app.js | 71 +++++++++++++++++++++++++++++------- apps/bwclk/metadata.json | 4 +- apps/bwclk/screenshot_4.png | Bin 0 -> 3389 bytes 5 files changed, 63 insertions(+), 16 deletions(-) create mode 100644 apps/bwclk/screenshot_4.png diff --git a/apps/bwclk/ChangeLog b/apps/bwclk/ChangeLog index ecd0c355f..f9bc5e65a 100644 --- a/apps/bwclk/ChangeLog +++ b/apps/bwclk/ChangeLog @@ -6,4 +6,5 @@ 0.06: Design and usability improvements. 0.07: Improved positioning. 0.08: Select the color of widgets correctly. Additional settings to hide colon. -0.09: Larger font size if colon is hidden to improve readability further. \ No newline at end of file +0.09: Larger font size if colon is hidden to improve readability further. +0.10: HomeAssistant integration if HomeAssistant is installed. \ No newline at end of file diff --git a/apps/bwclk/README.md b/apps/bwclk/README.md index f6a1c6522..190488d6b 100644 --- a/apps/bwclk/README.md +++ b/apps/bwclk/README.md @@ -7,6 +7,7 @@ - Tab left/right of screen to show steps, temperature etc. - Enable / disable lock icon in the settings. - If the "sched" app is installed tab top / bottom of the screen to set the timer. +- If HomeAssistant is installed, triggers are shown. Simple select the trigger and touch the middle of the screen to send the trigger to HomeAssistant. - The design is adapted to the theme of your bangle. - The colon (e.g. 7:35 = 735) can be hidden now in the settings. diff --git a/apps/bwclk/app.js b/apps/bwclk/app.js index 5bfec4097..73cd6c35f 100644 --- a/apps/bwclk/app.js +++ b/apps/bwclk/app.js @@ -62,7 +62,12 @@ Graphics.prototype.setMediumFont = function(scale) { Graphics.prototype.setSmallFont = function(scale) { // Actual height 28 (27 - 0) - this.setFontCustom(atob("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//84D//zgP/+GAAAAAAAAAAAAAAAAAAAD4AAAPgAAA+AAAAAAAAAAAAA+AAAD4AAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAg4AAHDgAAcOCABw54AHD/gAf/8AD/8AB//gAP8OAA9w4YCHD/gAcf+AB//gAf/gAP/uAA/w4ADnDgAAcOAABw4AAHAAAAcAAAAAAAAAAAAAAAIAA+A4AH8HwA/4PgHjgOAcHAcBwcBw/BwH78DgfvwOB8HA4HAOBw8A+HngB4P8ADgfgAAAYAAAAAAAAAAB4AAAf4AQB/gDgOHAeA4cDwDhweAOHDwA88eAB/nwAD88AAAHgAAA8AAAHn4AA8/wAHnvgA8cOAHhg4A8GDgHgcOA8B74BgD/AAAH4AAAAAAAAAAAAAAAAAMAAAH8AD8/4Af/3wB/8HgODwOA4HA4DgODgOAcOA4A44DwDzgHAH8AMAPwAQP+AAA/8AAAB4AAADAAAAAA+AAAD4AAAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/8AD//+A/+/+H4AD98AAB3gAADIAAAAAAAAAAAAAIAAABwAAAXwAAHPwAB8P8D/gP//4AH/8AAAAAAAAAAAAAAAAAAAAAAAAGAAAA4gAAB/AAAH8AAD/AAAP8AAAH4AAAfwAADiAAAOAAAAAAAAAAAAAAGAAAAYAAABgAAAGAAAAYAAABgAAD/+AAP/4AABgAAAGAAAAYAAABgAAAGAAAAYAAAAAAAAAAAAAADkAAAPwAAA/AAAAAAAAAAAAAAAAAAAAAAAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAAAAAAAAAAAAAAAAAAAAAADgAAAOAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAA4AAA/gAA/+AA//AA//AAP/AAA/AAADAAAAAAAAAAAAAAAAAAA//gAP//gB///AHgA8A8AB4DgADgOAAOA4AA4DgADgPAAeAeADwB///AD//4AD/+AAAAAAAAAAAAAAAA4AAAHgAAAcAAADwAAAP//+A///4D///gAAAAAAAAAAAAAAAAAAAAAAYAeADgD4AeAfAD4DwAfgOAD+A4Ae4DgDzgOAeOA4Dw4DweDgH/wOAP+A4AfwDgAAAAAAAAAAAAIAOAA4A4ADwDggHAOHgOA48A4DnwDgO/AOA7uA4D84HgPh/8A8H/gDgH8AAACAAAAAAAAAAAAAHgAAB+AAA/4AAP7gAD+OAA/g4AP4DgA+AOADAA4AAB/+AAH/4AAf/gAADgAAAOAAAAAAAAAAAAAAAAD4cAP/h4A/+HwDw4HgOHAOA4cA4DhwDgOHAOA4cA4Dh4HAOD58A4H/gAAP8AAAGAAAAAAAAAAAAAAAAD/+AAf/8AD//4AePDwDw4HgOHAOA4cA4DhwDgOHAOA4cB4Bw8PAHD/8AIH/gAAH4AAAAAAAAAADgAAAOAAAA4AAYDgAHgOAD+A4B/wDgf4AOP+AA7/AAD/gAAP4AAA8AAAAAAAAAAAAAAAAAAeH8AD+/4Af//wDz8HgOHgOA4OA4Dg4DgODgOA4eA4Dz8HgH//8AP7/gAeH8AAAAAAAAAAAAAAAA+AAAH+AgB/8HAHh4cA8Dg4DgODgOAcOA4Bw4DgODgPA4eAeHDwB///AD//4AD/+AAAAAAAAAAAAAAAAAAAAAAAAAAODgAA4OAADg4AAAAAAAAAAAAAAAAAAAAAAAAAAAAABwA5AHAD8AcAPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAB8AAAP4AAB5wAAPDgAB4HAAHAOAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGMAAAYwAABjAAAGMAAAYwAABjAAAGMAAAYwAABjAAAGMAAAYwAABjAAAGMAAAYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAEAAcA4AB4HAADw4AADnAAAH4AAAPAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAB8AAAHgAAA4AAADgDzgOA/OA4D84DgeAAPHwAAf+AAA/wAAB8AAAAAAAAAAAAAAAAAAD+AAB/+AAP/8AB4B4AOABwBwADgHB8OA4P4cDhxxwMGDDAwYMMDBgwwOHHHA4f4cDh/xwHAHCAcAMAA8AwAB8PAAD/4AAD/AAAAAAAAAAAAAACAAAB4AAB/gAA/8AAf+AAP/wAH/nAA/gcADwBwAPwHAA/4cAA/9wAAf/AAAP/AAAD/gAAB+AAAA4AAAAAAAAAAAAAAD///gP//+A///4DgcDgOBwOA4HA4DgcDgOBwOA4HA4Dg8DgPHwOAf/h4A///AB8f4AAAfAAAAAAAP+AAD/+AAf/8AD4D4AeADwBwAHAOAAOA4AA4DgADgOAAOA4AA4DgADgOAAOAcABwB4APAD4D4AHgPAAOA4AAAAAAAAAAAAAAAP//+A///4D///gOAAOA4AA4DgADgOAAOA4AA4DgADgOAAOA8AB4BwAHAHwB8AP//gAP/4AAP+AAAAAAAAAAAAAAAA///4D///gP//+A4HA4DgcDgOBwOA4HA4DgcDgOBwOA4HA4DgcDgOBgOA4AA4AAAAAAAAAAAAAAD///gP//+A///4DgcAAOBwAA4HAADgcAAOBwAA4HAADgcAAOAwAA4AAAAAAAAAf+AAD/+AA//+ADwB4AeADwDwAHgOAAOA4AA4DgADgOAAOA4AA4DgMDgPAweAcDBwB8MfADw/4AHD/AAAPwAAAAAAAAAAAAAAAP//+A///4D///gABwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAHAAAAcAAABwAA///4D///gP//+AAAAAAAAAAAAAAAAAAAD///gP//+A///4AAAAAAAAAAAADgAAAPAAAA+AAAA4AAADgAAAOAAAA4AAAHgP//8A///wD//8AAAAAAAAAAAAAAAAAAAA///4D///gP//+AAHAAAA+AAAP8AAB54AAPDwAB4HgAPAPAB4AfAPAA+A4AA4DAABgAAACAAAAAAAAAAP//+A///4D///gAAAOAAAA4AAADgAAAOAAAA4AAADgAAAOAAAA4AAADgAAAAAAAAAAAAAAP//+A///4D///gD+AAAD+AAAB+AAAB/AAAB/AAAB/AAAB+AAAH4AAB+AAA/gAAP4AAD+AAA/AAAfwAAD///gP//+A///4AAAAAAAAAAAAAAAAAAAP//+A///4D///gHwAAAPwAAAPgAAAfgAAAfAAAAfAAAA/AAAA+AAAB+AAAB8A///4D///gP//+AAAAAAAAAAAP+AAD/+AAf/8AD4D4AeADwBwAHAOAAOA4AA4DgADgOAAOA4AA4DgADgOAAOAcABwB4APAD4D4AH//AAP/4AAP+AAAAAAAAAAAP//+A///4D///gOAcAA4BwADgHAAOAcAA4BwADgHAAOAcAA4DgAD4eAAH/wAAP+AAAPgAAAAAAAA/4AAP/4AB//wAPgPgB4APAHAAcA4AA4DgADgOAAOA4AA4DgADgOAAOA4AO4BwA/AHgB8APgPwAf//gA//uAA/4QAAAAAAAAAA///4D///gP//+A4BwADgHAAOAcAA4BwADgHAAOAcAA4B8ADgP8APh/8Af/H4A/4HgA+AGAAAAAAAAAAAABgAHwHAA/g+AH/A8A8cBwDg4DgODgOA4OA4DgcDgOBwOA4HA4DwODgHg4cAPh/wAcH+AAwPwAAAAADgAAAOAAAA4AAADgAAAOAAAA4AAAD///gP//+A///4DgAAAOAAAA4AAADgAAAOAAAA4AAADgAAAAAAAAAAAAAAAAAP//AA///AD//+AAAB8AAABwAAADgAAAOAAAA4AAADgAAAOAAAA4AAAHgAAA8A///gD//8AP//gAAAAAAAAAAIAAAA8AAAD+AAAH/AAAD/wAAB/4AAA/8AAAf4AAAPgAAB+AAA/4AAf+AAP/AAH/gAD/wAAP4AAA4AAAAAAAAPAAAA/gAAD/4AAA/+AAAf/AAAH/gAAB+AAAf4AAf/AAf/AAP/gAD/gAAPwAAA/4AAA/+AAAf/AAAH/wAAB/gAAB+AAB/4AA/+AA/+AA/+AAD/AAAPAAAAgAAAAAAAAMAAGA4AA4D4APgHwB8APwfAAPn4AAf+AAAfwAAB/AAAf+AAD4+AA/B8AHwB8A+AD4DgADgMAAGAwAAADwAAAPwAAAPwAAAfgAAAfgAAAf/4AAf/gAH/+AB+AAAPwAAD8AAA/AAADwAAAMAAAAgAAAAAAAAMAACA4AA4DgAPgOAD+A4Af4DgH7gOB+OA4Pw4Dj8DgO/AOA/4A4D+ADgPgAOA4AA4DAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////gAAAOAAAA4AAADAAAAAAAAAAAAAAAAAAAAAAA4AAAD+AAAP/gAAH/4AAB/+AAAf+AAAH4AAABgAAAAAAAAADAAAAOAAAA4AAADgAAAP////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADgAAAcAAADgAAAcAAADgAAAcAAAB4AAADwAAADgAAAHAAAAOAAAAYAAAAAAAAAAAAAAAAAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAHH8AA8/4AHzjgAcMOABxwYAHHBgAccOABxwwAHGHAAP/4AA//4AA//gAAAAAAAAAAAAAAAAAAA///4D///gP//+AA4BwAHADgAcAOABwA4AHADgAcAOAB4B4ADwPAAP/8AAf/AAAf4AAAAAAAAAAAAPwAAD/wAAf/gADwPAAeAeABwA4AHADgAcAOABwA4AHADgAeAeAA8DwABwOAADAwAAAAAAAAAAAA/AAAP/AAD//AAPA8AB4B4AHADgAcAOABwA4AHADgAcAOAA4BwD///gP//+A///4AAAAAAAAAAAAAAAAPwAAD/wAAf/gAD2PAAeYeABxg4AHGDgAcYOABxg4AHGDgAeYeAA/jwAB+OAAD4wAABgAAAAAAAAAAABgAAAGAAAB//+Af//4D///gPcAAA5gAADGAAAMYAAAAAAAAAPwAAD/wMA//w4DwPHgeAePBwA4cHADhwcAOHBwA4cHADhwOAcPB///4H///Af//wAAAAAAAAAAAAAAAAAAD///gP//+AA//4ADgAAAcAAABwAAAHAAAAcAAABwAAAHgAAAP/+AAf/4AA//gAAAAAAAAAAAAAAMf/+A5//4Dn//gAAAAAAAAAAAAAAAAAAHAAAAfn///+f//+5///wAAAAAAAAAAAAAAAAAAP//+A///4D///gAAcAAAD8AAAf4AADzwAAeHgAHwPAAeAeABgA4AEABgAAAAAAAAAD///gP//+A///4AAAAAAAAAAAAAAAAAAAAf/+AB//4AH//gAOAAABwAAAHAAAAcAAABwAAAHgAAAP/+AA//4AB//gAOAAABwAAAHAAAAcAAABwAAAHgAAAf/+AA//4AA//gAAAAAAAAAAAAAAAf/+AB//4AD//gAOAAABwAAAHAAAAcAAABwAAAHAAAAeAAAA//4AB//gAD/+AAAAAAAAAAAAAAAAD8AAA/8AAH/4AA8DwAHgHgAcAOABwA4AHADgAcAOABwA4AHgHgAPh8AAf/gAA/8AAA/AAAAAAAAAAAAAAAAB///8H///wf///A4BwAHADgAcAOABwA4AHADgAcAOAB4B4ADwPAAP/8AAf/AAAf4AAAAAAAAAAAAPwAAD/wAA//wADwPAAeAeABwA4AHADgAcAOABwA4AHADgAOAcAB///8H///wf///AAAAAAAAAAAAAAAAAAAH//gAf/+AB//4ADwAAAcAAABwAAAHAAAAcAAAAAAAAAAMAAHw4AA/jwAH+HgAcYOABxw4AHHDgAcMOABw44AHjjgAPH+AA8fwAAw+AAAAAABgAAAGAAAAcAAAf//wB///AH//+ABgA4AGADgAYAOABgA4AAAAAAAAAAAAAAAH/AAAf/wAB//wAAB/AAAAeAAAA4AAADgAAAOAAAA4AAADgAAAcAB//4AH//gAf/+AAAAAAAAAAAAAAABwAAAH4AAAf8AAAP8AAAH+AAAD+AAAD4AAA/gAAf8AAP+AAH/AAAfgAABwAAAAAAAAAAAABwAAAH8AAAf+AAAP/gAAD/gAAB+AAAf4AAP8AAP+AAB/AAAH4AAAf8AAAP+AAAD/gAAB+AAAf4AAf/AAP/AAB/gAAHgAAAQAAABAAIAHADgAeAeAA8HwAB8+AAD/gAAD8AAAPwAAD/gAAfPgADwfAAeAeABwA4AEAAgAAAAABAAAAHgAAAfwAAA/wAAAf4BwAP4/AAP/8AAP+AAD/AAB/wAA/4AAP8AAB+AAAHAAAAQAAAAAAIAHADgAcAeABwD4AHA/gAcHuABx84AHPDgAf4OAB/A4AHwDgAeAOABgA4AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAH4Af//////n//AAAA4AAADgAAAAAAAAAAAAAAAAAP//+A///4D///gAAAAAAAAAAAAAAAAAAA4AAADgAAAOAAAA//5/9////wAH4AAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAeAAAD4AAAOAAAA4AAADgAAAHAAAAcAAAA4AAADgAAAOAAAD4AAAPAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"), 32, atob("BgkMGhEZEgYMDAwQCAwICxILEBAREBEOEREJCREVEQ8ZEhEUExAOFBQHDREPGBMUERQSEhEUERsREBIMCwwTEg4QERAREQoREQcHDgcYEREREQoPDBEPFg8PDwwIDBMc"), 28+(scale<<8)+(1<<16)); + this.setFontCustom( + E.toString(require('heatshrink').decompress(atob('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'))), + 32, + atob("BgkMGhEZEgYMDAwQCAwICxILEBAREBEOEREJCREVEQ8ZEhEUExAOFBQHDREPGBMUERQSEhEUERsREBIMCwwTEg4QERAREQoREQcHDgcYEREREQoPDBEPFg8PDwwIDBMcCgoAAAAAAAAAAAAAACERESEAAAAAAAAAAAAAAAAhIQAGCRAQEhAIDw8XCQ8RABIODRELCw4REwcLCQoPHBscDxISEhISEhoUEBAQEAcHBwcTExQUFBQUDhQUFBQUEBEREBAQEBAQGhARERERBwcHBxAREREREREPEREREREPEQ8="), + 28+(scale<<8)+(1<<16) + ); return this; }; @@ -123,25 +128,43 @@ var imgWatch = { /* * INFO ENTRIES + * List of [Data, Icon, left/right, HomeAssistant Trigger] */ var infoArray = [ - function(){ return [ null, null, "left" ] }, - function(){ return [ "Bangle", imgWatch, "right" ] }, - function(){ return [ E.getBattery() + "%", imgBattery, "left" ] }, - function(){ return [ getSteps(), imgSteps, "left" ] }, - function(){ return [ Math.round(Bangle.getHealthStatus("last").bpm) + " bpm", imgBpm, "left"] }, - function(){ return [ getWeather().temp, imgTemperature, "left" ] }, - function(){ return [ getWeather().wind, imgWind, "left" ] }, + function(){ return [ null, null, "left", null ] }, + function(){ return [ "Bangle", imgWatch, "right", null ] }, + function(){ return [ E.getBattery() + "%", imgBattery, "left", null ] }, + function(){ return [ getSteps(), imgSteps, "left", null ] }, + function(){ return [ Math.round(Bangle.getHealthStatus("last").bpm) + " bpm", imgBpm, "left", null] }, + function(){ return [ getWeather().temp, imgTemperature, "left", null ] }, + function(){ return [ getWeather().wind, imgWind, "left", null ] }, ]; + +/* + * We append the HomeAssistant integrations if HomeAssistant is available + */ +try{ + var triggers = require("ha.lib.js").getTriggers(); + triggers.forEach(trigger => { + infoArray.push(function(){ + return [trigger.display, trigger.getIcon(), "left", trigger.trigger] + }); + }) +} catch(ex){ + // Nothing to do if HomeAssistant is not available... +} const NUM_INFO=infoArray.length; function getInfoEntry(){ if(isAlarmEnabled()){ - return [getAlarmMinutes() + " min.", imgTimer, "left"] + return [getAlarmMinutes() + " min.", imgTimer, "left", null] } else if(Bangle.isCharging()){ - return [E.getBattery() + "%", imgCharging, "left"] + return [E.getBattery() + "%", imgCharging, "left", null] } else{ + // In case the user removes HomeAssistant entries, showInfo + // could be larger than infoArray.length... + settings.showInfo = settings.showInfo % infoArray.length; return infoArray[settings.showInfo](); } } @@ -351,12 +374,14 @@ function drawTime(){ g.setSmallFont(); var imgWidth = 0; if(infoImg !== undefined){ - imgWidth = infoImg.width; + imgWidth = 26.0; var strWidth = g.stringWidth(infoStr); + var scale = imgWidth / infoImg.width; g.drawImage( infoImg, - W/2 + (printImgLeft ? -strWidth/2-2 : strWidth/2+2) - infoImg.width/2, - y - infoImg.height/2 + W/2 + (printImgLeft ? -strWidth/2-2 : strWidth/2+2) - parseInt(imgWidth/2), + y - parseInt(imgWidth/2), + { scale: scale } ); } g.drawString(infoStr, printImgLeft ? W/2 + imgWidth/2 + 2 : W/2 - imgWidth/2 - 2, y+3); @@ -429,6 +454,7 @@ Bangle.on('touch', function(btn, e){ var is_right = e.x > right; var is_upper = e.y < upper; var is_lower = e.y > lower; + var is_center = !is_upper && !is_lower && !is_left && !is_right; if(is_upper){ Bangle.buzz(40, 0.6); @@ -454,6 +480,25 @@ Bangle.on('touch', function(btn, e){ settings.showInfo = settings.showInfo < 0 ? NUM_INFO-1 : settings.showInfo; drawTime(); } + + if(is_center){ + var infoEntry = getInfoEntry(); + var trigger = infoEntry[3]; + if(trigger != null){ + try{ + require("ha.lib.js").sendTrigger("TRIGGER_BW"); + Bangle.buzz(80, 0.6).then(()=>{ + require("ha.lib.js").sendTrigger(trigger); + setTimeout(()=>{ + Bangle.buzz(80, 0.6); + }, 250); + }); + }catch(ex){ + print(ex); + // Without ha -> nop. + } + } + } }); diff --git a/apps/bwclk/metadata.json b/apps/bwclk/metadata.json index eba1449a6..95fb7e608 100644 --- a/apps/bwclk/metadata.json +++ b/apps/bwclk/metadata.json @@ -1,11 +1,11 @@ { "id": "bwclk", "name": "BW Clock", - "version": "0.09", + "version": "0.10", "description": "BW Clock.", "readme": "README.md", "icon": "app.png", - "screenshots": [{"url":"screenshot.png"}, {"url":"screenshot_2.png"}, {"url":"screenshot_3.png"}], + "screenshots": [{"url":"screenshot.png"}, {"url":"screenshot_2.png"}, {"url":"screenshot_3.png"}, {"url":"screenshot_4.png"}], "type": "clock", "tags": "clock", "supports": ["BANGLEJS2"], diff --git a/apps/bwclk/screenshot_4.png b/apps/bwclk/screenshot_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3807d47ada1c1ba4019334828a2212f03dfc0ccf GIT binary patch literal 3389 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 T`UAS(00000NkvXXu0mjfqzXj@ literal 0 HcmV?d00001 From 0a3222eae34b229b79e25bba0a8bad7cfa21c65b Mon Sep 17 00:00:00 2001 From: David Peer Date: Mon, 27 Jun 2022 17:45:42 +0200 Subject: [PATCH 234/251] Improved stability --- apps/bwclk/app.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/bwclk/app.js b/apps/bwclk/app.js index 73cd6c35f..60898dbe0 100644 --- a/apps/bwclk/app.js +++ b/apps/bwclk/app.js @@ -503,7 +503,11 @@ Bangle.on('touch', function(btn, e){ E.on("kill", function(){ - storage.write(SETTINGS_FILE, settings); + try{ + storage.write(SETTINGS_FILE, settings); + } catch(ex){ + // If this fails, we still kill the app... + } }); From 86af82dd068404ab2094bdfc90537c4f442cc548 Mon Sep 17 00:00:00 2001 From: David Peer Date: Mon, 27 Jun 2022 17:59:15 +0200 Subject: [PATCH 235/251] Lazy load images to improve memory consumption. --- apps/bwclk/app.js | 126 ++++++++++++++++++++++++++-------------------- 1 file changed, 72 insertions(+), 54 deletions(-) diff --git a/apps/bwclk/app.js b/apps/bwclk/app.js index 60898dbe0..4b7deb21e 100644 --- a/apps/bwclk/app.js +++ b/apps/bwclk/app.js @@ -71,59 +71,77 @@ Graphics.prototype.setSmallFont = function(scale) { return this; }; -var imgLock = { - width : 16, height : 16, bpp : 1, - transparent : 0, - buffer : E.toArrayBuffer(atob("A8AH4A5wDDAYGBgYP/w//D/8Pnw+fD58Pnw//D/8P/w=")) -}; +function imgLock(){ + return { + width : 16, height : 16, bpp : 1, + transparent : 0, + buffer : E.toArrayBuffer(atob("A8AH4A5wDDAYGBgYP/w//D/8Pnw+fD58Pnw//D/8P/w=")) + } +} -var imgSteps = { - width : 24, height : 24, bpp : 1, - transparent : 1, - buffer : require("heatshrink").decompress(atob("/H///wv4CBn4CD8ACCj4IBj8f+Eeh/wjgCBngCCg/4nEH//4h/+jEP/gRBAQX+jkf/wgB//8GwP4FoICDHgICCBwIA==")) -}; +function imgSteps(){ + return { + width : 24, height : 24, bpp : 1, + transparent : 1, + buffer : require("heatshrink").decompress(atob("/H///wv4CBn4CD8ACCj4IBj8f+Eeh/wjgCBngCCg/4nEH//4h/+jEP/gRBAQX+jkf/wgB//8GwP4FoICDHgICCBwIA==")) + } +} -var imgBattery = { - width : 24, height : 24, bpp : 1, - transparent : 1, - buffer : require("heatshrink").decompress(atob("/4AN4EAg4TBgd///9oEAAQv8ARQRDDQQgCEwQ4OA")) -}; +function imgBattery(){ + return { + width : 24, height : 24, bpp : 1, + transparent : 1, + buffer : require("heatshrink").decompress(atob("/4AN4EAg4TBgd///9oEAAQv8ARQRDDQQgCEwQ4OA")) + } +} -var imgBpm = { - width : 24, height : 24, bpp : 1, - transparent : 1, - buffer : require("heatshrink").decompress(atob("/4AOn4CD/wCCjgCCv/8jF/wGYgOA5MB//BC4PDAQnjAQPnAQgANA")) -}; +function imgBpm() { + return { + width : 24, height : 24, bpp : 1, + transparent : 1, + buffer : require("heatshrink").decompress(atob("/4AOn4CD/wCCjgCCv/8jF/wGYgOA5MB//BC4PDAQnjAQPnAQgANA")) + } +} -var imgTemperature = { - width : 24, height : 24, bpp : 1, - transparent : 1, - buffer : require("heatshrink").decompress(atob("//D///wICBjACBngCNkgCP/0kv/+s1//nDn/8wICEBAIOC/08v//IYJECA==")) -}; +function imgTemperature() { + return { + width : 24, height : 24, bpp : 1, + transparent : 1, + buffer : require("heatshrink").decompress(atob("//D///wICBjACBngCNkgCP/0kv/+s1//nDn/8wICEBAIOC/08v//IYJECA==")) + } +} -var imgWind = { - width : 24, height : 24, bpp : 1, - transparent : 1, - buffer : require("heatshrink").decompress(atob("/0f//8h///Pn//zAQXzwf/88B//mvGAh18gEevn/DIICB/PwgEBAQMHBAIADFwM/wEAGAP/54CD84CE+eP//wIQU/A==")) -}; +function imgWind () { + return { + width : 24, height : 24, bpp : 1, + transparent : 1, + buffer : require("heatshrink").decompress(atob("/0f//8h///Pn//zAQXzwf/88B//mvGAh18gEevn/DIICB/PwgEBAQMHBAIADFwM/wEAGAP/54CD84CE+eP//wIQU/A==")) + } +} -var imgTimer = { - width : 24, height : 24, bpp : 1, - transparent : 1, - buffer : require("heatshrink").decompress(atob("/+B/4CD84CEBAPygFP+F+h/x/+P+fz5/n+HnAQNn5/wuYCBmYCC5kAAQfOgFz80As/ngHn+fD54mC/F+j/+gF/HAQA==")) -}; +function imgTimer() { + return { + width : 24, height : 24, bpp : 1, + transparent : 1, + buffer : require("heatshrink").decompress(atob("/+B/4CD84CEBAPygFP+F+h/x/+P+fz5/n+HnAQNn5/wuYCBmYCC5kAAQfOgFz80As/ngHn+fD54mC/F+j/+gF/HAQA==")) + } +} -var imgCharging = { - width : 24, height : 24, bpp : 1, - transparent : 1, - buffer : require("heatshrink").decompress(atob("//+v///k///4AQPwBANgBoMxBoMb/P+h/w/kH8H4gfB+EBwfggHH4EAt4CBn4CBj4CBh4FCCIO/8EB//Agf/wEH/8Gh//x////fAQIA=")) -}; +function imgCharging() { + return { + width : 24, height : 24, bpp : 1, + transparent : 1, + buffer : require("heatshrink").decompress(atob("//+v///k///4AQPwBANgBoMxBoMb/P+h/w/kH8H4gfB+EBwfggHH4EAt4CBn4CBj4CBh4FCCIO/8EB//Agf/wEH/8Gh//x////fAQIA=")) + } +} -var imgWatch = { - width : 24, height : 24, bpp : 1, - transparent : 1, - buffer : require("heatshrink").decompress(atob("/8B//+ARANB/l4//5/1/+f/n/n5+fAQnf9/P44CC8/n7/n+YOB/+fDQQgCEwQsCHBBEC")) -}; +function imgWatch() { + return { + width : 24, height : 24, bpp : 1, + transparent : 1, + buffer : require("heatshrink").decompress(atob("/8B//+ARANB/l4//5/1/+f/n/n5+fAQnf9/P44CC8/n7/n+YOB/+fDQQgCEwQsCHBBEC")) + } +} /* @@ -132,12 +150,12 @@ var imgWatch = { */ var infoArray = [ function(){ return [ null, null, "left", null ] }, - function(){ return [ "Bangle", imgWatch, "right", null ] }, - function(){ return [ E.getBattery() + "%", imgBattery, "left", null ] }, - function(){ return [ getSteps(), imgSteps, "left", null ] }, - function(){ return [ Math.round(Bangle.getHealthStatus("last").bpm) + " bpm", imgBpm, "left", null] }, - function(){ return [ getWeather().temp, imgTemperature, "left", null ] }, - function(){ return [ getWeather().wind, imgWind, "left", null ] }, + function(){ return [ "Bangle", imgWatch(), "right", null ] }, + function(){ return [ E.getBattery() + "%", imgBattery(), "left", null ] }, + function(){ return [ getSteps(), imgSteps(), "left", null ] }, + function(){ return [ Math.round(Bangle.getHealthStatus("last").bpm) + " bpm", imgBpm(), "left", null] }, + function(){ return [ getWeather().temp, imgTemperature(), "left", null ] }, + function(){ return [ getWeather().wind, imgWind(), "left", null ] }, ]; /* @@ -158,9 +176,9 @@ const NUM_INFO=infoArray.length; function getInfoEntry(){ if(isAlarmEnabled()){ - return [getAlarmMinutes() + " min.", imgTimer, "left", null] + return [getAlarmMinutes() + " min.", imgTimer(), "left", null] } else if(Bangle.isCharging()){ - return [E.getBattery() + "%", imgCharging, "left", null] + return [E.getBattery() + "%", imgCharging(), "left", null] } else{ // In case the user removes HomeAssistant entries, showInfo // could be larger than infoArray.length... @@ -391,7 +409,7 @@ function drawTime(){ function drawLock(){ if(settings.showLock && Bangle.isLocked()){ g.setColor(g.theme.fg); - g.drawImage(imgLock, W-16, 2); + g.drawImage(imgLock(), W-16, 2); } } From ff216c5e787ee5fe18cc7c5b979ff942472ba0e2 Mon Sep 17 00:00:00 2001 From: Giles Booth Date: Mon, 27 Jun 2022 20:53:03 +0100 Subject: [PATCH 236/251] Update README.md --- apps/macwatch2/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/macwatch2/README.md b/apps/macwatch2/README.md index 217807e9b..c32b01655 100644 --- a/apps/macwatch2/README.md +++ b/apps/macwatch2/README.md @@ -4,10 +4,10 @@ A clock inspired by Susan Kare's original 1984 Macintosh desktop design. Ideas for development: - [x] fix dark mode either by forcing black on white or doing proper inverse display and text -- [] date in text format -- [] tap to load different info in window -- [] unlock to show seconds, perhaps flip time and date? -- [] incorporate widgets somehow either by leaving space or adding Chicago font widgets of my own in top bar +[] date in text format +[] tap to load different info in window +[] unlock to show seconds, perhaps flip time and date? +[] incorporate widgets somehow either by leaving space or adding Chicago font widgets of my own in top bar ![](screenshot.png) From 19d14e7a7eb882fd8863816693aa25fd7cf5b0eb Mon Sep 17 00:00:00 2001 From: Giles Booth Date: Mon, 27 Jun 2022 20:53:28 +0100 Subject: [PATCH 237/251] Update README.md --- apps/macwatch2/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/macwatch2/README.md b/apps/macwatch2/README.md index c32b01655..217807e9b 100644 --- a/apps/macwatch2/README.md +++ b/apps/macwatch2/README.md @@ -4,10 +4,10 @@ A clock inspired by Susan Kare's original 1984 Macintosh desktop design. Ideas for development: - [x] fix dark mode either by forcing black on white or doing proper inverse display and text -[] date in text format -[] tap to load different info in window -[] unlock to show seconds, perhaps flip time and date? -[] incorporate widgets somehow either by leaving space or adding Chicago font widgets of my own in top bar +- [] date in text format +- [] tap to load different info in window +- [] unlock to show seconds, perhaps flip time and date? +- [] incorporate widgets somehow either by leaving space or adding Chicago font widgets of my own in top bar ![](screenshot.png) From 7471e48c822ea3ab8382f917a2284b1fe42dbe57 Mon Sep 17 00:00:00 2001 From: Giles Booth Date: Mon, 27 Jun 2022 20:54:13 +0100 Subject: [PATCH 238/251] Update README.md --- apps/macwatch2/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/macwatch2/README.md b/apps/macwatch2/README.md index 217807e9b..4fdb9b6e9 100644 --- a/apps/macwatch2/README.md +++ b/apps/macwatch2/README.md @@ -4,10 +4,10 @@ A clock inspired by Susan Kare's original 1984 Macintosh desktop design. Ideas for development: - [x] fix dark mode either by forcing black on white or doing proper inverse display and text -- [] date in text format -- [] tap to load different info in window -- [] unlock to show seconds, perhaps flip time and date? -- [] incorporate widgets somehow either by leaving space or adding Chicago font widgets of my own in top bar +- [ ] date in text format +- [ ] tap to load different info in window +- [ ] unlock to show seconds, perhaps flip time and date? +- [ ] incorporate widgets somehow either by leaving space or adding Chicago font widgets of my own in top bar ![](screenshot.png) From c060e5edb8c21c1b856d570aa15a1b7fa81cf5bf Mon Sep 17 00:00:00 2001 From: pancake Date: Sat, 18 Jun 2022 12:39:44 +0200 Subject: [PATCH 239/251] Release tabanchi 0.03, reduce source size and fix a js error in the clock screen --- apps/tabanchi/ChangeLog | 1 + apps/tabanchi/app.js | 108 +++++++++++++++--------------------- apps/tabanchi/metadata.json | 2 +- 3 files changed, 47 insertions(+), 64 deletions(-) diff --git a/apps/tabanchi/ChangeLog b/apps/tabanchi/ChangeLog index 3889ade8e..4e2facf6f 100644 --- a/apps/tabanchi/ChangeLog +++ b/apps/tabanchi/ChangeLog @@ -1,2 +1,3 @@ 0.01: Initial implementation 0.02: Fix app icon +0.03: Fix clock animation issue and reduce source size diff --git a/apps/tabanchi/app.js b/apps/tabanchi/app.js index c87a08817..f159052b7 100644 --- a/apps/tabanchi/app.js +++ b/apps/tabanchi/app.js @@ -2,14 +2,18 @@ // TABANCHI -- たばんち const scale = 6; -let tool = -1; const w = g.getWidth(); const h = g.getHeight(); +const yy = 34; +const y = 40 - scale; +let tool = -1; let hd = 1; let vd = 1; let x = 20; let sx = 0; // screen scroll x position -const y = 40 - scale; +let cacaLevel = 0; +let cacaBirth = null; +let angryState = 0; let animated = true; let transition = false; let caca = null; @@ -22,9 +26,38 @@ let oldMode = ''; let gameChoice = 0; let gameTries = 0; let gameWins = 0; +let statusMode = 0; +let lightSelect = 0; +let lightMode = 0; // on is zero +let frame = 0; + +const tama = { + age: 0, + weight: 1, + aspect: 6, + discipline: 0, + happy: 3, + sick: false, + hungry: 3, + cacas: 0, + // hidden + sickness: 0, + defenses: 100, + tummy: 100, + awake: 3 +}; + g.setBgColor(0); +const sun = { + width: 8, + height: 8, + bpp: 1, + transparent: 1, + buffer: atob('773nW9rnvfc=') +}; + const tama06eat0 = { width: 16, height: 16, @@ -387,7 +420,6 @@ const caca01 = { buffer: atob('////v/33v7+3+f4v0HwH////') }; -// var img = hs.decompress(atob("sFggP/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A/AH4A+A")); const tama00 = { width: 16, height: 16, @@ -574,23 +606,6 @@ g.drawString('Loading...', 10, 10); egg = egg00; n = tama00; -const tama = { - // visible - age: 0, - weight: 1, - aspect: 6, - discipline: 0, - happy: 3, - sick: false, - hungry: 3, - cacas: 0, // move from cacas - // hidden - sickness: 0, - defenses: 100, - tummy: 100, - awake: 3 -}; - function drawHearts (n) { for (i = 0; i < 4; i++) { const himg = (i < n) ? heart1 : heart0; @@ -599,7 +614,6 @@ function drawHearts (n) { } function drawLinebar (n, arrow) { // 0-100 - const yy = 34; g.drawImage(linebar, 0, yy + (scale * 8), { scale: scale }); let wop = scale * 2; // (frame++%2)? scale*3:scale*2; @@ -631,7 +645,6 @@ function drawLinebar (n, arrow) { // 0-100 } function drawStatus () { - const yy = 34; switch (statusMode) { case 0: g.drawImage(face, scale, yy, { scale: scale }); @@ -774,11 +787,6 @@ function drawScene () { } } -var statusMode = 0; -var lightSelect = 0; -var lightMode = 0; // on is zero -let frame = 0; - function drawAngry () { const one = angryState % 2; g.drawImage(one ? tama06no0 : tama06no1, (scale * 5), 40, { scale: scale }); @@ -833,14 +841,6 @@ function drawMedicine () { // food eating animation g.drawImage(tama06no0, (scale * 10), 40, { scale: scale }); } -var sun = { - width: 8, - height: 8, - bpp: 1, - transparent: 1, - buffer: atob('773nW9rnvfc=') -}; - function drawEating () { // food eating animation const one = angryState % 2; const snack = [snack0, snack1, snack2]; @@ -953,6 +953,7 @@ function nextItem () { tool++; if (tool > 6) tool = 0; } + function prevItem () { tool--; if (tool < 0) tool = 7; @@ -1099,7 +1100,6 @@ function drawCaca () { } } } -var angryState = 0; function animateHappy () { if (transition || mode == 'happy') { @@ -1208,7 +1208,7 @@ function animateShower () { } function animateToGame () { - if (transition || mode == 'game') { + if (transition || mode === 'game') { return; } mode = 'game'; @@ -1298,14 +1298,6 @@ function button (n) { } if (mode == 'game') { - /* - if (gameTries > 3) { - mode = ""; - gameWins = 0; - gameTries = 0; - //tama.tired++; - } - */ switch (n) { case 1: // pick left @@ -1345,8 +1337,7 @@ function button (n) { drawScene(); break; case 'status': - if (oldMode == 'clock') { - } else { + if (oldMode != 'clock') { statusMode++; drawScene(); } @@ -1363,8 +1354,7 @@ function button (n) { animateFromClock(); break; case 'status': - if (oldMode == 'clock') { - } else { + if (oldMode != 'clock') { statusMode++; drawScene(); } @@ -1433,7 +1423,6 @@ function drawGame () { } mode = oldMode; oldMode = ''; - // g.drawImage(); } else { g.drawImage(one ? tama06no1 : tama06no0, (scale * 7) + sx, 40, { scale: scale }); } @@ -1467,7 +1456,6 @@ function drawClock () { const s1 = numbers[ts[1] - '0']; const s2 = numbers[ts[3] - '0']; const s3 = numbers[ts[4] - '0']; - const yy = 34; // hours if (s0) { g.drawImage(s0, wsx, yy, { scale: scale }); @@ -1515,17 +1503,11 @@ function drawClock () { } setInterval(function () { - // if (animated) { updateAnimation(); drawScene(); - // } }, 1000); -let cacaLevel = 0; -let cacaBirth = null; - -setInterval(function () { - // poo maker +function pooMaker() { if (tama.hungry > 0 && !tama.sleep) { const a = 0 | (cacaLevel / tama.tummy); const b = 0 | ((cacaLevel + tama.hungry) / tama.tummy); @@ -1545,9 +1527,8 @@ setInterval(function () { tama.awake--; tama.sleep = false; } -}, 5000); - -setInterval(function () { +} +function sickMaker() { if (tama.sleep) { return; } @@ -1569,8 +1550,10 @@ setInterval(function () { if (tama.sick > 0) { callForAttention = true; } -}, 2000); +} +setInterval(pooMaker, 5e3); +setInterval(sickMaker, 2e3); updateAnimation(); Bangle.on('touch', function (r, s) { @@ -1600,4 +1583,3 @@ Bangle.on('touch', function (r, s) { button(2); } }); - diff --git a/apps/tabanchi/metadata.json b/apps/tabanchi/metadata.json index 335dd0326..f72147162 100644 --- a/apps/tabanchi/metadata.json +++ b/apps/tabanchi/metadata.json @@ -2,7 +2,7 @@ "id": "tabanchi", "name": "Tabanchi", "shortName": "Tabanchi", - "version": "0.02", + "version": "0.03", "type": "app", "description": "Tamagotchi WatchApp", "icon": "app.png", From 4059d4c42cea41054bd2051e05c491fafaad2864 Mon Sep 17 00:00:00 2001 From: pancake Date: Sat, 18 Jun 2022 00:47:41 +0200 Subject: [PATCH 240/251] Release kanawatch 0.03 * Fix ui button issue, reduce source size, improved graphics * Add the program to generate all the katakana/hiragana images * Improve battery life reducing fullscreen refresh * Show month and day numbers --- apps/kanawatch/ChangeLog | 2 + apps/kanawatch/app.js | 849 ++++++----------------------------- apps/kanawatch/fontmaker.zip | Bin 0 -> 65124 bytes apps/kanawatch/metadata.json | 2 +- 4 files changed, 144 insertions(+), 709 deletions(-) create mode 100644 apps/kanawatch/fontmaker.zip diff --git a/apps/kanawatch/ChangeLog b/apps/kanawatch/ChangeLog index 7b83706bf..ce7cac123 100644 --- a/apps/kanawatch/ChangeLog +++ b/apps/kanawatch/ChangeLog @@ -1 +1,3 @@ 0.01: First release +0.02: Improve battery life, sprite resolution, fix launcher issue and unaligned text bug +0.03: Reduce code size, refresh once a minute and faster refresh diff --git a/apps/kanawatch/app.js b/apps/kanawatch/app.js index ada6aa6df..26123378d 100644 --- a/apps/kanawatch/app.js +++ b/apps/kanawatch/app.js @@ -7,641 +7,107 @@ const w = g.getWidth(); /// ///////////////////////////////////////// const katakana = {}; const hiragana = {}; -katakana.A = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAjAEBfv4B/+yeAXwAOgBAAPAAAEHAAABzAAAAPgAAADgAAAAwAAAAMAAAAGAAAABgAAAAYAAAAMAAAADAAAABgAAAAYAAAAMAAAAGAAAADAAAABgAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.A = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAAIAAAACAAAABgAAAAZ4AAGf4AAA/gAAAAQAAAAEAAAABBAAAAQwAAAN/wAADiGAADxAwABswEAAhYBgAQUAYAMHAEACBgDABh4AwAZ2AYAD4gcAAQAcAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.I = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAwAAAAGAAAADwAAAA0AAAAYAAAAUgAAAGAAAAFAAAADgAAAA8AAAA2AAAAZgAAAYYAAAMGAAAMFgAAGAYAAGAGAACABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.I = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAgAEAAEABAAAgAQAAMAGAABAAgAAYAIAAGACAAAwAQAAMAEAADABiAAQAIgAAADQAAAAcAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.U = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAQAAAAHAAAAAwAAAAICAAACIAAAAgIABQa3AAP7q4ADQANAAwADAAMABgADAAYAAwAGAAMADAADAAwAAwAYAAMAGAABADAAAABgAAAAwAAAAMAAAAGAAAACQAAADAAAABgAAAAwAAAAoAAAAAAAAAAAAAAAgAAA=') -}; -hiragana.U = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAIAAAABwAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAA4YAAA4CAAAAAgAAAAIAAAACAAAAAgAAAAYAAAAGAAAABAAAAAQAAAAIAAAACAAAABAAAAAQAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.E = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAJXAAe+20ADRQAAAAOAAAABgAAAAQAAAAMAAAABAAAAAwAAAAEAACABAEAgJbvgP9qSsByAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.E = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAADgAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAdwAAAcYAAB8MAAAIGAAAADAAAABgAAAAwAAAAYAAAAMAAAAGAAAADIAAAB4gAAA4EAAAMAgAACAOGAAAB/wAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.O = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAADwAAAAOAAAADAAAAAwAAAAMAAAAjAABAAydAbff/wH/XAUAwDwAAAB0AAAA7AAAAMwAAAHMAAADjAAABkwAAA4MAAAZDAAAMEwAAGEMAAGQzAADAHwABAA8AAAAHAAAABAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.O = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAADACAAAwAYAAMADAADIAQAA/AGAF+AAAAyAAAAAgAAAAIAAAACAAAAAg/gAAJwOAADgBgABgAMAAoADAAyAAwAIgAMAEIAGABCADAAJgBgAD4AgAAMAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.HA = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAcGAAADgwAAB4HAAA4A4AAMgHAAHAA4ADAAXAAwAA4AYAAHAMAABwGAAAMGAAACDAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.HA = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAABAACAAYAAwAGAAMABgACAAYAAgAHwAIAD4AGAfYABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAAGAAQABgAEAAYABAOGAAQEfgAFCA8ABggPwAYG+GAGAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.HI = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAXAAAABwAAAAYAgAAGAMAABgDgABYD0AAWF4gABvwAAAfAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAgAAal8AAD//gAAJQAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.HI = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwEAAA8BAAB2AYAABACAAAwAQAAIAEAAGAJgABACIAAwAjAAIAIYACACGABABAwAQAQEAEAEAABADAAAAAgAAEAYAABAEAAAYDAAADDgAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.HU = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAALwAYt/vAD/0DwAcABwAACAcAAAAGAAAADIAAAAwAAAAYAAAAOAAAAGAAAADgAAAAwAAAA0AAAAaAAAAOAAAAHAAAAHAAAAHAAAAGgAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.HU = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAGAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAACAAAAAQAAAACAgAAAgEAAAMBgAABAYAgAwDAMAMAgBgCAAAYHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.HE = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAANwAAAGHAAADA4AABwDgAIwBOADcABwQeAAHgDAAA8AIAADwAAAAeAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.HE = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAIMAAAMAgAAGAGAADAAwAAAADAAAAAYAAAADgAAAAMAAAABwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.HO = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAEAAAADQAAAAYAAAASAAAABgAAAAIAACAGK4A273dAHoYAAAAGAAAAAgAAAIIQAAECGAABAgwAAgYGAAIGAwAGAgGADAIBwBiCAaAYRgDAMDIAgAAeAAAADgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.HO = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAQB+AAEAgAABAAQAAQAGAAIABgACAAQAAgAHwAIAD4ACAfQABAAEAAQABAAEAAQABAAGAAQABgAEAAYABAAGAAQBdgAHAg4ABwAHgAIB+OACAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.KA = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAUAAAADwAAAAcAAAAGAAAABgAAAAYFABAOvwAfv9eAD6wHAAQMBwAADAYAABwGAAAYBgAAGAYAADAOAAAwDAAAYgwAAMgcAADEmAAFgzgAAwHwAA4B4ABYAcAAMABAAEAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.KA = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAwAAAAIAAAACAAAABAAAAAQAgAAMAEAAD8AwAHggGAHQIBgAECAMADAgDAAgIAQAIGAEAEBAAABAwAAAwIAAAYGAAAGBgAAADwAAAAcAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.KI = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAACwAAAAeAAAADgAAAAYAAAATBgAAAz8AAAP5AAxfQAAH8YAAA4GAAAABgHAAAYf4AAD+pAAF8AAMPsAAC/hgAAPAYAABAGAAAABwAAAAYAAAAHAAAAAwAAAAOAAAADAAAAAYAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.KI = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAQAAAAGAAAAAgAAAAIAAAADDAAAAfwAAAeAAAA4gAAAwIAAAABAAAAAZwAAADwAAAHwAAAOGAAAAAgAAAAMAAAADAAAAAQAAAAAAAAAAAAAAAAAAEAAAABgAAAAPmAAAAfwAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.KU = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAQAAAAHAAAAA4AAAAMAAAAHBwAAB/+AAA0XAAAaBkAAGA4AADAOAABgHAAAwBwAAYA4AAMAMAAGAHAAAADgAAABwAAAA0AAAAaAAAAOAAAAHAAAADIAAADgAAACgAAABgAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.KU = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAADAAAABgAAAAQAAAAIAAAAGAAAABAAAAAgAAAAQAAAAEAAAACAAAAAQAAAAEAAAAAgAAAAEAAAABgAAAAIAAAADAAAAAYAAAAGAAAAAwAAAAMAAAABgAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.KE = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAABwAAAAOAAAADgAAABwAAAAYAQAAGAAgABgF8AA79/gAb7gAAGQcQADAHgABgBgAAYAwAAZAMAAMAHAADABgAAgAwAAAAMAAAAGAAAALAAAABwAAAAYAAAAYAAAAMgAAAGAAAACAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.KE = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAABAAAAAYAAIAGAAGABgABgAYAAYAGAAEAB+ABAB/gAQHmAAEABgADAAYAAgAGAAIABgACAAYAAgAGAAIABAACAAQAAgAEAAKABAADgAwAAYAIAAGACAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.KO = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwCtwAH//8AA+oGAAEABgAAAAYAAAAGAAAABgAAAAQAAAAsAAAADAAIAFwADv//AAf1CQACAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.KO = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/8AAAADwAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAYAAAAD8EAAAH/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.MA = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAFcAIG/3ga/0h4H6gA4AcAAcACAAOAAAAHAAAYDAAAFjgAAAPgAAAB4AAAAOAAAABwAAAAMAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.MA = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABBAAAAf8AAD+AAAOBAAAAAQAAAAGAAAABgAAAAZwAAAHwAAB/gAAAAYAAAAGAAAABgAAAAYAAAAGAAAARgAAAR4AAAIHgAACDPAAARg4AABAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.MI = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAegAAAC+gAAAB8AAAAHgAAAAYAAAAQAAAAgAAAegAAAB+AAAAD4AAAAPAAAABwAAAAMAAAAAAAAAAAAAAAAAAAUAAAAF8AAAAHwAAAAPgAAAA8AAAAHwAAAAeAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.MI = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPgAAA+YAAAEMAAAADAAAABgAAAAQAAAAMAAAACAAAABgAAAAQAAAAIAIAAGAGAADgBgAO/wQAEIH8ACEAH4AiABnAJgAQQBgAIAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.MU = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAACgAAAAcAAAADgAAAA4AAAAcAAAAHAAAABkAAAAYAAAAMQAAADEAAABwwAAAYGAAAGAwAADAHAAAwA4AAIAOAAWBfwBBX9OAf/oDgH+gAYA6AAGAAEAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.MU = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAgAwAAIAGAACIAwAA/gEAB+ABAB2AAAAAgAAAAYAAAAGAAAABgAAAAYAAAAGAEAABgBAAGQAQAA0AEAAFABAAAwAQAAEAMAARgCAAGWHgAA8fgAAGAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.ME = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAcAAAABgAAAAcAAAAHAAAADgAAAAwAAABcAABgGAAAfDgAAAewAAAB8AAAAPAAAAD8AAABzgAAA44AAAcHAAAGAwAADAAAACgAAABwAAAAoAAAAcAAAAMAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.ME = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABgAAAAYAABAGAAAIBAAACAwAAAgP4AAMeDgABZgMAAYQBgAOMAYAGiACADJgAgAjQAIAQcACAEGABgBBgAQARsAIAHwAEAAQAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.MO = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAABAAUAASXfgAD7EQAAQwAAAAOAAAABAAAAAwAAAAEAUBADd/wNfaRID1EAAAIDAAAAAwAAAAEAAAADAAAAAQAAAAMAAAABiQAAAf+AAABKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.MO = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAIAAAACAAAAB+AAAA/wAAB0AAAABAAAAAQAAAAEAAAABAAAAAQAAAAEYAAAf+AAABwAAAAMAAAACAIAAAgCAAAIAgAACAIAAAgCAAAEBAAABgwAAAP4AAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.NA = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAPAAAAA4AAAAOAAAADAAAAAwBAAAMQAAADAaBAT9/wf/vbcD6DAAAQAxAAAAMAAAADAAAAAwAAAAMAAAAGAAAABgAAAAYAAAAMAAAAGAAAABgAAAAwAAAAYAAAAMAAAAEAAAABAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.NA = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAgAAAAJgAAAH4AAA/gAAAMQAIAAIABAACAAYABgACAAQAAAAMAAAACAIAAAgCAAAAAgAAAAIAAAACAAAAAgAAAPIAAAEOAAABB4AAAQTgAAD4MAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.NI = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgALAANb/8AB/6pAAMAAAAAACAAAAAAAAAAAAAAAAAAAAAAABAAAIAAAJvAKN//4D/1EGAdAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.NI = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAGAAAABgA/AAYBwAAEAAAABAAAAAQAAAAMAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAEAAAIAgAADAH/gAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.NU = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFgAML38AB/9OAAOgHAAAQBgABAA4AAAAMAADoHAAAPRgAAAfYAAAB4gAAAPQAAADeAAABjwAABwcAAI4DgAA4AcAAcADAAcAAQAaAAAAWAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.NU = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAABAwAAAIMAAACDf4AAg4DAAIYAYACeACAAZAAgAMQAIAFMACACSAAgBDgAIAwwOGAIMEbACHBDgAjYPsAPCABgBggAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.NE = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAGAAAAA4AAAAHAAAAA4AAAAGAAAABgAAAAJYABAv/AAf+nwAD4DoAAQB4AAAA8AAAB8AAAAeAAAAPQAAAHzgAAHMeAAHDB4ADgwOAHgMBwHADAMKgAwAgAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAEAAAAAAAAAAAAA=') -}; -hiragana.NE = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAADAAAAAwAAAAIAAAADAHgAA8GIAA+CCAAzBAwAAhAMAAIgDAAGQAwABoAMAAsADAASAAwAFgAMAC4ACAAyAugAcgIYAGYCHABGAecABgABgAYAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.NO = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAGAAAABwAAAAeAAAAOAAAADgAAAAwAAAAcAAAANAAAADAAAABwAAAAYAAAAOAAAAHAAAABgAAAAwAAAAYAAAAMAAAAGAAAAGQAAADAAAADgAAAAkAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.NO = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAD44AADEBAABBAIABgQBAAwMAYAICACAEBgAgAAQAIAgMACAICAAgCBgAYAwwAGAEIADABmAAgAPAAQADgAYAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.RA = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAEAAQAIAANTvgAD/u0AAOAAAAAACAAAAAAABAACAAgAt4APf/vAB/UDQAIAJwAAAA4AAAAOAAAAHAAAABgAAAA4AAAAcAAAAOAAAAGgAAADQAAABoAAAA4AAAAcAAAAaAAAAMgAAAEIAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.RA = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAQAAAACAAAAAwAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAYAAAAEAAAABAAAAAQAAAAEA+AADBwQAA3gCAAPgAgADAAIAAAAGAAAADAAAABgAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.RI = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAQBwAAHgOAAAsDgAAGAwAABgMAAAYDAAAGAwAABgMAAAYDAAAGAwAABgMAAAYDAAAGAwAABgMAAAYDAAACAwAAAAYAAAAGAAAADAAAAEwAAAA0AAAAcAAAAOAAAAOAAAAOAAAAGAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.RI = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAABAAAAAYAAAAGAAAABAQAAAQGAAAEAgAABAIAAAwCAAAIAgAACAIAAAoCAAAOAgAADAIAAAQCAAAEAgAAAAYAAAAGAAAABAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.RU = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAABAAAAAeAAAADgAAAA4AAAcGAAADhgAAA4YAAAMGABAGDAAwBkYAYAYGAMAMDAOADAYHAAwGDgAYBjgAMgbwADAHyABgD4AAwA4AAYAEAAMAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.RU = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAO4AAA8MAAAAGAAAADAAAAAgAAAAQAAAAIAAAAGAAAABAAAAAgAAAAQAAAAIYMAAE4BgAB4AIAA4ACAAMAAgAAAAYAAAAEAAATCAAAEZAAAB/AAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.RE = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAACgAAAAeAAAADgAAAAwAAAAMAAAADAAAAAwAAYAMAAMADAAGAAwAGAAsADgADABgAAwBwAAMBwAADA4AAAw8AAAM8AAAD8AAAA+AAAAGAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.RE = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAGAAAYDgAAfBIAANgiAAMQwgAAMYIAAHMCAAB2AgAAnAIAAJgCAAEwAgAAcAIAAvACAAewAggHMAIwBDADwAAwAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.RO = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAYABk3/AAP/a4ADQAYAAwAGAAMABgABAAwAAwAMAAMADAABAAwAAQEMAAEASAADEt4AA/++QAGgAAADAAQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.RO = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAF8wAAAwYAAAAMAAAACAAAABAAAAAwAAAAYAAAAEAAAACAAAABAAAAAg/gAARgGAAPgAgAHgAMADgADAAQAAwAAAAYAAAAOAAAAGAAAAGAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.SA = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAFAAAAA4AABAHAAAdBgAABwYAAAYGAAAGBgAABgYABAYGrAYu//4H/aomA4YGAAAGBgAABgYAAAYGAAAGBgAABgwAAAYMAAACGAAAABgAAAAwAAAAYAAAAOAAAAGAAAADgAAABgAAAAgAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.SA = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAGAAAABgAAAAIAAAADAAAAAQgAAAG8AAAB4AAAB8AAAPhgAAAAIAAAABAAAAAYAAAADAAAABwAAAAGAAAAAgAAAAAAAAAAAAAAAAAAAAAAAEAAAAAwAAAAH/AAAAHwAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.SI = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAHgAAAAcAAAAjgAAAAYABAAAAAwEAAAYB4AAMAHgAGAA4ADAAWABgAAgAyAAAAYAAAAcAAAAOAAAAOAAAIHAAAUHgAABnwAAAPwAAAB4AAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.SI = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAQAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAIAQAADA4AAAf4AAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.SU = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAEAAGC/gAE/9cAAOgOAAAgHAAAABwAAAA4AAAAcAAAAGAAAAHgAAAB2AAAA44AAAYHAAAcA4AAOAHAALAA4AHAAOAGgABgDAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.SU = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAADAAAAAQAAAAEAAAABAAAAAQAAAAE/gAAf/4AH4QAAHAEAAAABAAAAAQAAAGkAAABFAAAARQAAAEcAAABDAAAAYwAAAB8AAAAGAAAABgAAAAQAAAAMAAAAGAAAABAAAABgAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.SE = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAA4AAAAHgAAAA4AAAAMAAAADABAAAwG4CAN/vAw36DgH+wDgA6MBwACDA4AAAwZAAAMUAAADMAAAAyAAAAMAAAADAAAAAwAAAAMAAAADAGAAA//gAAL94AAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.SE = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAgCAAAMAgAADAIAAAwCAAAMAgAADAf8AAx+AAAPhgAAPAQAA8wEAAMMBAAADAwAAAwcAAAEGAAABAAAAAQAAAACAAAAA8OAAAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.SO = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAQAAAALAAIAA4ADAAeAAcAHAADIBwAAYA4AAHAOAAAwDAAAIBwAAAAYAAAAMgAAAHAAAADAAAABwAAAAYAAAAMAAAAOAAAAHAAAADgAAADgAAADgAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.SO = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAYAAAAzAAAHxgAAAwwAAAAYAAAAEAAAACAAAABAAAAAgAAAAQDwAAIDwAAEGQAACOIAABeEAAAMCAAAAAAAAAAQAAAAEAAAABAAAAAYAAAADAAAAAYAAAADwAAAAMAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.TA = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAOAAAABwAAAAcAAAAGBYAAB/fAAA1DgAAMA4AAGAcAABgHAAA4DAABdwwAAMPcAAGA+AADADkABgB8AAQAzAAAAMAAAAGAAAADAAAADgAAABwAAAA4AAAAYAAAAcAAAAMAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.TA = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAYAAAAEAAAADHgAAA/gAAH8AAAAmAAAABAAAAAQAAAAMAAAACAfgABg4AAAQAAAAEAAAADAAAAAgAAAAYAAAAEAAAADAAAAAwDjgAIAP8ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.TI = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAOAAAAH4AAAPwAAAvgAADe4AAL4OAABADAAABAwAQAAMV4ECv//B7/0IwPQmAAAgDAAAAQwAAAAMAAAADAAAABgAAAAYAAAAMAAAAGAAAACgAAAAwAAAAwAAAAsAAAAMAAAACAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.TI = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAABAAAAAIAAAAGAAAABgAAAAQAAAAEAAAABHAAAB/AAAH4AAAACAAAAAgAAAAQAAAAEAAAABAAAAAQAAAAIPcAACMBgAAsAIAAcACAAGAAgAAAAIAAAAGAAAADAAAABgAAABgAAABgAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.TU = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAACAAAAAyBgAgHAOAGA4DwAwOA8AGBgcABwYHAAcADgADAA4AAQAcAAAAGAAAALgAAABwAAAAYAAAAMAAAAOAAAADAAAADgAAABwAAABwAAABwAAADRAAAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.TU = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/HAAB4AYADwACAPwAAwBgAAMAAAADAAAAAgAAAAYAAAAEAAAADAAAADAAAADgAAADAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.TE = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAACAACAn4AC3/vAAHoAAACQAAAAAAIAAAIAAAgAFfQG3+/8B/YwBAGAOAAAADgAAABgAAAAcAAAAGAAAADAAAABQAAAAYAAAAOAAAADAAAABgAAAAwAAAAwAAAAYAAAAKAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.TE = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAPAAAAbgAAA5gAABwgAADwYAAHgEAAAgCAAAABAAAAAQAAAAAAAAACAAAAAgAAAAIAAAACAAAAAQAAAAEAAAAAgAAAAOAAAABwAAAAHAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.TO = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAA4AAAAHgAAAA4AAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAD6AAAAzwAAAMPAAADA4AAAwHAAAMAwAADAEAAAwAAAAMAAAADAAAAAwAAAAMAAAAGAAAABwAAAAMAAAAAAAAAAAAAAAIAAAAAAAA=') -}; -hiragana.TO = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAGAAAAAgAAAAMAYAABAHAAAQHAAAGDAAAAhgAAAIwAAABwAAAAYAAAAMAAAAEAAAACAAAABAAAAAQAAAAAAAAACAAAAAAAAAAGAAAAAf/wAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.WA = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAACAAANACsAB7//gAPtI4AJgAOAAYADAAMABwABgAYACYAGAAOABgABgA4AAwAcAAGAHAABADgAAAAwAAAAcAAAAOAAAAHAAAADgAAADgAAADgAAAFwAAACgAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.WA = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAADAAAAAwAAAAMAAAADAAAAA8AAAAfAAAAfgAAAIwAAAAIDnAAGCAYACiACAArAAwATAAMAJgADAD4AAgByAAYARgAEAAYACAAGACAABgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.WI = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAQAAAAPAAAAA4AAAAMAAAADAAAAAwAAAAsEABhLvgAP//cAB5MAAAGDAAADAwAAAQMAAAMDAAADAwcBg19/wf/7UsD1AwAAIAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.WI = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAbAAAB4wAAAMIAAAACAAAABgAAAAQAAAAEAAAADAAAAA3+AAAeAwAAeAGAAZAAgAMQAMAEMADACCAAwBBgAMAwQACAIMDxgBCBGwARAQYADgCcAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.WE = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAFBK4AB//+AAPUHgABADgAAARwAAAOwAAABwAAAAMAAAADAAAAAwAAAAMAAAALAAAgAyVgPv//+B/qIrgIAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.WE = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAA8AAAB3AAAHhgAAAAwAAAAYAAAAMAAAAGAAAADAAAABhwAAAzDAAAaAYAAOAGAADADAAACRgAAANgAAAGAAAADAAAABgAAAAgAAAAwAcAAYAxwAfggGAOGwAwDA4AAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.WO = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAABAAAgAAwAO37/AB//bwAMgAwAAABYAAgAHAAAABgAGFb4AA//uAAHQDAAAAQwAAAAYAAAAOAAAADAAAABgAAAAwAAAAsAAAAGAAAADAAAABgAAABoAAAAwAAAA4AAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.WO = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAMAAAACOAAAB/AAAPwAAAAMAAAACAAAABAAAAAwAgAAIAcAAHMMAADBOAAAAeAAAAGAAAADgAAADIAAABCAAAAgAAAAIAAAACAAAAAgAAAAGBwAAAP8AAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.YA = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAEAAAAD4AAAAOAAAADAAAAAwAIAAGADAABgX4AAa/fAAX6OAZfwHAD9MDgAcDBgAEAwwAAAmYAAABogAAAYAAAAGAAAABgAAAAcAAAADAAAAAwAAAAOAAAADgAAAA4AAAAGAAAABgAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.YA = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAgAAAAGAAAAAgAAAAMAAAQAAAAEAAAABAHGAAQOAwAGcAEAA4ADAA4AAwA7AAYA4QA4AAEAAAAAgAAAAIAAAADAAAAAQAAAAGAAAAAgAAAAMAAAADAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.YU = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAABAC4AAd//AAH2hoAAQAyAAAAMAAAALAAAAAwAAAAMAAAADAAABAwQEABe+Bt//9wP+kAIBwAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.YU = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAIAACADAAAwD3AAIDIIACBCDAAgggQAIwIGACICBgBkAgYASAIEAEACBABQBgwAcB4YAGAGcABgB8AAYAQAACAIAAAACAAAABAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -katakana.YO = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAIAlgAD//8AAfUGAACABgAAAAYAAAAMAABABgABBLwAAf/8AAF0DAAAgAwAAAAMAAAADAAAQAwAAgAMAANN3AAD/3wAANAIAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.YO = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAEAAAABgAAAAMAAAACAAAAAgAAAAIAAAACDAAAA3wAAAOAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAPCAAAEPgAABA8AAAQHwAAADPAAA/g8AAAADgAAAAYAAAAAAAAAAAAAAAAA=') -}; -katakana.N = { - width: 32, - height: 32, - bpp: 1, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAEAAAABgAAAAOAAAABwAAIAMgAGADgADAAwABgAAAAwAAAAwAAABYAAABOAAAAHAAAAHAAAADgAAADkAAABwAACB4AAAx4AAAP4QAAB8AAAAOAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; -hiragana.N = { - width: 32, - height: 32, - bpp: 1, - transparent: 0, - buffer: atob('AAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAABgAAAAQAAAAMAAAACAAAABAAAAAQAAAAIAAAAGAAAABAAAAAkAAAALgAAAFIAIADiAAAAwwBAAYMAQAEBAIADAQGAAgGDAAYAzgAEAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAA=') -}; +function image(x,y,b) { + return { + bpp:1, width:x,height:y, + buffer:require('heatshrink').decompress(atob(b)) + }; +} +katakana['A'] = image(56, 51, "v//AAfwAon//AGF/wGT/gGM/A3F/BDEn/wJQoGCj4RB//gAxUB//AAwcDAwsH/+AAwcP/4tCAwMf/wGEn/8Awl/JYYGBKQkf/I9DAwJgBGwQGDGwRlBAwJsE+42DAwPzGwYGB+J7EQIIvDQIIFEAw5DEAwRDDgCIEAxCPBKIcAR4IhER4hnCLAg9BLAgoBAwgoBcQiCBMwj0BHogGBHogGBfoooEQQREFEIgGBAokAhAGFA="); +katakana['I'] = image(54, 55, "AAkEAws+AokB/wGEg//Awk//gTE//gAwcPCYt/CYkDCYsfCYv//A0F4A0ECYg0BCYggBCYn/KwhBBGgl/EAgtBEAgMBEAZOBEAgMBEAYZB/+ABggTDBgQnDAoIaDJoIaDFgIABDQQFC74aBBgX8v4aBEwWBDQQgB/EHDQQ6BwEfGoX/+AJBDQMDWAKMBDQMPAQIaDiBFCPAgaDU4hrDDQiuDDX4acSAIaCA="); +katakana['U'] = image(52, 55, "AAMP/gGE//ABlH/AAnvAon+Bk5EDv/vIgcHBkHPBgZwBBgn/Bi8B/+PBgcf/AMFw/wBgYEDgED/6qEv4MEKYK3F8AFDj7EED4LREv/4CQn/wASEFginBDAgfEDAIfDn67BC4YABH4QXBCQcHZoQkEEoYMCHAYlBFYZEBLwk/MgpQEAAw"); +katakana['E'] = image(58, 45, "h//AAfwgYGE/0AAwn/wE/AwngDgv4DjhDCv/wJQkf/gGEg//AwkB//AA4gc/Dn4cjbAv/34GF94GF/YGF/wcjwA="); +katakana['O'] = image(57, 54, "AAcf+AGEh/8AwkH/wGEgf/AwkB/+AA4n/4AGEv/gAwk/GIsf/A4P/4AE+F/Awn4n4GE/kfAwn+h4cFg4GFwYGF4IGFKwYFBMQpxFAwJxEAwJxEAwJxEAwJxEK4JxEAwKqEMoQGE/o4En/8HAl//iqEAwKqEv/+VQgNBVQgNBcYgNBcYhLBcYhSCHAQKBAwI4CAwY4CD4IGBHASxBAYI4CAwY4CYwIGBHAQGBD4I4CBIJfCHASmDHAV/PYQ4Cj5QCHAUPLwQ4CgQGCOIgABOIgABHAIGEAAY="); +katakana['KA'] = image(54, 54, "AAMP/AGEv/gAocB/+AAwcH/wTEj4arg//AAf+j4GE/F/AwnhAon/w4aZHAMP/hTEn/wKYn/4BTDgf/KYgQCDQYQCBIQQDBIQQCBIc/DQouCDQQuCEghJBEhITBH4RTBLoRTEBIJTGCAUPNwoTCDQQWBDoIuCj4TCJIX/CYQ/BZQInBH4U//0HwBTBGgPwXAXwh4PBXAXAv4PCZIIgBEYTJBn5SBDQXABAIzBCYJcCDQXwgbOCAwIDBQgI4CgEOJwIADkAGFA"); +katakana['KI'] = image(58, 55, "AAU+Awv/4AGEn/wAwkP/gGEgf/Dkk/CAc//4ABwAGBj4GC8ATBAAf4h4GE/woBAAmAAwvgFAYcIwAcD/BFDFARFD/kBIoYACv5FBAAcfRL94DgkfHgf/95EBD4RgDD4MHLwf8AogAd+CPFGwiJCS4XHJgSGB8CJEkCJJUwYABg5pDD4amTNwKmXYbgcDLoY="); +katakana['KU'] = image(55, 55, "AAMHwAGEh/8Awkf/AGEv/wAwn/4AFDgf/EQkH/whF/4ACAwM/AoQQCBgY5BgIGDHIMHAwY5Bh4GD8AhEIAQFDIAIhBBIJACEIJpEj45CNIV/NgRpBDQIrBEoPgDQJlBEoQaDEoV/RwUP/wPBQ4Uf/gPBQ4QsBKAKSD8BvCSQXDDQYYBNYIaCGYIqBDQU//kPXoYYBj5QCEIPgj60DKoMcWga7FKoYABKogaDbojPBbojMDGob/ECYJBCbgYaDE4IaEPoIaDEAI1EbYQZECYgtBCZQGCLol/KwxxEAwJqEgIMFgIZEgA="); +katakana['KE'] = image(60, 54, "AAMcAwsD/4HFn/wBxl/8AGEg/+BxkP/gOF//ABxcB/+AA4kf/BCGAAZOBv4HEIQIOGAwgOBh4OFGYIOFn4OFEgoOBAwvgh52BKgYDBOwJUDv5nBBwY6BAYM/BwIKBJgJjBBQSbCWoQVBRgK1D/4oDBwJJBWos/WIS1CgIVCJoRGBWowCCj61HYgpRCdIjEGLgTLEIwTLEfAv/GYqtBEghyBGYjoCAwwkDAwQVEYwYjEHQt/CopeBQgQOEIIgOBPgxeFgZ7FA"); +katakana['KO'] = image(49, 46, "v//AAYFF34FE74FE94FE+4FE/IFE/gFE/w0Dgf/AocB/+AAwf/4BHE8AFDn/wAocf/AFDh/8AocHGH4w6YZf7Aon9YYoFEejBhEAAIA="); +katakana['SA'] = image(58, 53, "AAcD/wDBg4DC//AgEB/+AgE/+AKBv/ggEP/gGBj/4DgP/DnU//4A34CQ+DAIcEDAIcDDAQDDDAYDCDAYDD/4cDIgJADAAUfIAQACh4jCAAUHD4QACJwIfBAAQtBEYgGBI4QUDFQkP/4qEVYQvEAAIxCEIK5CBwV/AwsfAwocCAwYcCJogcBNIp3F"); +katakana['SI'] = image(56, 52, "gFwAwt+Awv/8AGF/gFDgP//4GGCocDAwIVDBoX/wAHCn4VFg4GB4AxEAwsfAworBEQYABv4GFj4DCjgrCBQYRFn/4JQfAIgIGD+F/JQcD/gGBMARQCOwcH/wNBCoUP/0PAwIrBj/8OwQGBn4fBGIIGCAQIlB+BcBAQKvDBIQRB8AfBIQUH4AXBP4RXBGgJmERoJsFAwv//yaFbYghBQIYaCeAi9FPQTZGdxKFCFASECFAZPBEIgNCJQaZEAwhDDAwRJDTAYGEQAiQBPIgAGA"); +katakana['SU'] = image(60, 51, "gH/AAYGBh4GD/AOG4AOF/gONDo+ABxAACgY7CAAd/+AGEg4OG//gAwkP/wGEgJCCAAcfKIQzEIQIzEIQozOj4zFEgIzFn4kHGYv/M4okIGYt/IQqXBFghuBHYs/bAY6DCwrJECod/HgYVB8ZLEcoMfLQYECCwYVB+BTBCwT7CCwYrBAYIKCCoQDC8BXBEIQSBNoQVBBYP4EAIoCOQPHCoYTB/xdBIwQ8B+6SET4N/dYn/4aCFFgKRFgC+EgPghivEAoI"); +katakana['SE'] = image(57, 53, "gEH/wGEgf/AwkB/+AA4n/4AGEv/gAwk/+AGEj/4AwkP/g4JjA4EBQQ4D/4DD4E/AwIuBv/vAoP/FwILCAAIuBv4GEBgn//wFEAwITEh//CgfwAwMfCIRGB/4BB/5xBAgJTBIQQGBwP/75CBAwOAD4JCBAwRmDDIKYBOIQGDOIQGDOIQbBAwSqBAwiqBAwiqBDYg4Cv4GCHAUfAwQ4Cg4GCHAUBbwbjnHAgADcYYADUYQxEEYq6CVwbDBdQi6CZQYqBAAZcCAwY1BEYi5DAAQ8CegfgA="); +katakana['SO'] = image(52, 52, "gGAAol8AYUD/Ef4AGCn/3/wFCg/+v/wAwV/8//Bgk//AMD8f/FoQMBj/8Bgfg//gBgcPFoYMBFocP/kHFof/4AtDBgMDFoYMBFoYMBgIIBgADBwAtDj4dBHQQMCFoYqCHQQqCFoc/BIIPCCwQtDKYIpBB4IwDIAQwCh45CBIVAFgSmDFIaaDOIYfCVgYfBRYYfCTASTCUoY1BQgZPCD4l/D4kfH4g4BH4YYBH4gFBGQd//4yDBYIyDn4SEJQIlEBgRXEHAg+BFYZRGZYQADBYgAG"); +katakana['TA'] = image(55, 56, "AAMHwAGEh/8Awkf/AGEv/gAwn/4AFDgf/EQkH/4oF/4ACAwM/AoX+FAQGCHIMBCYY5BEIIAC+AhFIAIhDHIQFDF4IhBJQMHF4JDDNIUfHIRpCv5sCn/wDQJsCDwIaBEIIKBwEf/9gOAQaB/gbBFAIPB+YsC/AaB54RBFAIaBAIOAEoJvBOgPh/+DNAJWB+//DQPBQIZyBM4f4LQSQC8EPKAIpBFAMPPgKKCgEcYIZwBiAGDbohwEZ4bdEFILxFf4ghBXwLjEDQhLBCYoaEE4IaDdIQaDBgLBCDIRQENYYTIewRkEAwJCFHYicBOIkAEAhDBS4IAJ"); +katakana['TI'] = image(57, 54, "AAkGAwsfwAGE//gAocP//wBgn//gEBgIFBAAIeBAof/wAYBAwkHAof+gEDAwf4E4YAB4AGBv4TDAAM/AwoxDKQhABLQwiCAAV/MIglBMIglBHwRwDNARbF//3Awv7Awv9Awv+Awv/MQQAD34GF74GFKAUHOIYABSAJxGaYp4Uv54FP40/P4oGHQwQGKKgt/AwrUEMIQGEVYIGLg4bMFII+Fv5TGNAsPQgsHTIoAG"); +katakana['TU'] = image(54, 53, "AAMBwAGEj4FEgf8AYPwgFgn/4BIP/g+Av/ggEP/n/gP/4EAv/v/wQBFQP/z/4CAMAg/+DAMfEIICBDAN/FgN/8YYBBAIaBw4hDDQIVBAYMAn/wDAIhCCwIhDCwIBBwAIBHAIYBEIQYDBAIuBwAjBFQghCJgQhEAIIhDEYQPBh5HBM4IhDQQQhCwYeBCwMBCoSPB/0CIQQhBAQKWDvytBCYTBDv5tBZYYTCAAQTCAAYTFHAITEj4TF/4TEh4TFv4TEg//JgIMDMYIMEO4ImD/53BAAM/AwIsEEAgFBEAZNBIIgTCFocfJwo6BPgpHEgZAEgEOAogAGA=="); +katakana['TE'] = image(57, 51, "h//AAfwg4GE/kDAwn+gIGE/8AAwuAv4GE4E/Awngj4GFNWJNF/gGF/5UF/+/AwvfAwvvAwv3Awv7GJn8IQV/4BJEv59Fn/wAwkf/DJFEAYABg/+AwjJBAxbQBwAGFH4gGBH4gGIIwgGNG4IGEg//LYjyBAwiyBAxc/EQoGGFIJTLdYJvEgF+fIsYAwo="); +katakana['TO'] = image(42, 54, "//AAgU/+AECh/8AgUD/4U/CgYPDn//wAUC/4VCCgIlDAgIKCCgIKCCgP//wUD//gCgQKCn/zBQQ+BDYP8CgMBEAQBBj4KBKYIKC54yBBQP7KYIKCG4QKB35YBBQIUCGQPjNAUD+BXDnB9Dgy8/CicAA="); +katakana['MA'] = image(57, 50, "/4AE/l/A4s/AwvfAwoAN/YGF/oxGHokf/wGLh4GN/4GSg4GChgGDwARBAw3gAwv4Awo7BAwn/4ACBAwIKB+AGDgJtBAwcAUgOPAwYLB94GDgaFCAwTBDAwcfAwoyBAwgyBAwgyCAwgcBAwgyBNgL0ENgIADn6oHDijhFW4wcB4AGDKwPwBwl/fwzUJDgZOFgAGGngGFhADCA"); +katakana['MI'] = image(52, 53, "gPwAwkf/wFDgf///gAwU/AwIVCBgX//AME//8gEHAoQGCBgYGCv4GDFIMPBggoE4A2CCoIuCAweAAwc/BghYBMwswNw0PNwkBGAIbEG4gMCOoYMCOoQMDAwRnE4BYDKYQTEKYRuCKYY8GgCjDAAV+LAtgcTMDbYhTCHobICBwbBDBghZDZwmAZoYGCAogGBCYgiBEIidCBwQ2DS4QMCVYT2CSAb2DBoLpFn72EdJAA=="); +katakana['MU'] = image(59, 54, "AAMDwAHFv/AAwkf/gVF/4VG8AGEh4VHFgoVPFdZBdRogVBgP4CokBFogVBn/wTIkHEwYrCv4ODCoMP/wVDFIP/JYQVCBwgVBGYLICCoTIDCoQCBBwQhCn5RCCoR/DNoZCDDIRRDCoQODg4+CIQYvGCoZCCCoZRDAQV//4SBRAM//4ABwEfAgQAB/ARBAAkPAwvxAwv+Dgv/8YGF/gkD/xCB543DH4P5AoaBBewsAvgGFhgGFAAQ="); +katakana['ME'] = image(55, 54, "AAcB8AGEgf/AwkP/wGEj/8Awk/+AGEv4iF//AFAuAAwcHFAsPFA34AYNwFAQvBgICCFAUHCAIoDDwQoDn4DBKIf/MYIoCDwIGB/5RBAwWDKIYGB456Dv//75RDAwP/JQQmBAwJ6Dj4GBOYYGCOYcP/5zEg//OYgGNDYw3BAwgvBAwaABAwgaBOARZC/wGDOoP8MQI1D+AGDFwPAAwJaBDAQNCJIc/AQJsBTYL3COQc/4ATBXoYdCSgU8J4SNCmCNCNQqoDAwQuBAwgFDFAITEAwK1DAAKZEAAIMFAA4="); +katakana['MO'] = image(55, 49, "j//AAfAv4GFAon/wIGFgYFE/0HAwn8h4GE/AvF8A4Bv4DCAAQzBAocB/+AAwYxBCYkH/wGEh/8MIv4Awk/+AGEGyJfFAFP9AwpOBNuikeAwxfEHoLpFNoZACAwZABIgIACJYYABIAYGCIAYwCHIoABA="); +katakana['NA'] = image(57, 55, "AAV/8AGEn/wAwkf/AGEh/8AwkH/wGEgf/AwkB/+AA4n/4A4rGoIAE/IGF/wGF/9/Awu/AwvfAwvvAwv3AwpQCOOqqEWLV/H4pGGn5GFAw0fJosfJooGGn4GGKgq6BLQoGEg4GFh4GFPoIpEDYIwFv5MFLQ4GFg6EFgaZFAAw"); +katakana['NI'] = image(56, 43, "h//AAf4A25+/AH4AuWggA5A="); +katakana['NU'] = image(55, 51, "g//AAcAh4GFj4FD/0An4GD/kAv4GD/EADQnwgIGE8EDAwnAAwuAIIgvBAAcPF4IADn4vBAAd/8AGEFAIDBAQIsBFAMDCAIoDh4eBj4oCj4GBFAd/CIJRBgBZCAQIlD/+HQIIGD54oCNwZKDPQZPDOYRdDOYqmBOYi0BOYjCBBogGGYQSAEAwimDGATdDAwQTBH4JFBLIP8AwYTB+AqBAwITB4AGBE4bADBIJyBUIJ6CVgXgJAQzBg+BAoJkCgxcBCYRIEPArlEH4YGDO4ibBeQs+AokAsAGF"); +katakana['NE'] = image(61, 55, "AAX/4AGEg/+Bws/+AGEgP/wAHEh/8Cwt/8AGEgf/Bwsf/AMEAAYnBj4GDHwQOEDAMHA4hVBn4WFJIIADHwMPA4hgCAwZkFCQKCGBwpHBPQwOFFAJyGBwt/BwozBBwpwDGYiYEEgP+iAkF4IPDCoP8j7WCUAXhbwYVB/4RBU4n4QISfD54vBS4f+FASPD+AEB+AFB/IjBFIPnA4LzCGAfAeYIjBGAP4eYQCBwZuBeYUH/EfIwJRCAoIDBg6ACnCmDR4oqBDIKfEHgKuFS4g5CBwo8CWwqOCAAQ8DcYg8Vn48FAAo="); +katakana['NO'] = image(47, 52, "AAcHAokP/gFDj/4Aod/+AFD//gAgUB//AAoUD/4oE/woJn4oLEQYoBwAoIh4oEj4oFJZ8HERU/EQhFEDgIiDH4JFDh4iEH4t/NAYcFHII/Dj4cEv4/DCwIcDCwIcDCwI5DCwhEBHIYQBKwf/GYYhBCwc/FoYKBFoYEBFoQKCE4RrBE4YFCHwQyBHAYnBJ4YFBcBN/AgcAPgYABA="); +katakana['HA'] = image(62, 52, "AAP/wEH/gGCgf/gE/+AHCh4MB//AA4QMBCIQeD4ARCDwv4Dwt/8AeEgI4BDwkH/weFj4eEAgIeF8AeEAgQeEAgQeEAgQeEAgQeGMggeCMggeCQYiACQYYbCDwgbCIogbCIoZZDIoYTCMggTCEwn/CYJFDBYZFDBYYmDv4LBEwYDDg4aCh5JCDQYiDaIQWBNAQ5CMAYLDcgYmCCwgqCGIYTBFwL7EJIIWEAgPgh4WDNAPACwgMBCwiHB/wWEFwV/CwZVB/YWEDgPHXgYuBDwLbDKQPwh60CGwWAngGDgAFBkAHEsAFEAAQA=="); +katakana['HI'] = image(47, 51, "//AAgUB/+AAoUD/4QDg/+AocP/gFDj/4Aoc/+AFDv/gFw8BwIuDj+DFwf/FwcP/4uD///FwQKB/wuBJwIFBFwM/AoP8//PAgP/+IDCAAJdBAAXwg4FDEoQKCIIIgCLoQFBKYV//5qDB4aMuF1YFDFwIRDUIQAC+YFE8YFE44FEw4FEUgn+Aon8WwhKBXggA="); +katakana['HU'] = image(49, 50, "/4AEv4FE34FE74FE94FE+4FE/YFE/oFE/w0Dg//AocD/+AAoUB//AI4ngAod/+AFDn4FEj/4Aon8AocPAokHHgg2BHhYFDHgJCLJBZCEAopIFAoxIEAoxOEApc/AojSBbwplEAoZxBAocPAojICBQhBCGYIFDBYRZCa4P/NYQuCPoYFBSoZGFZYsPAgYABA="); +katakana['HE'] = image(61, 43, "AAMH8AHF/4HFh//wAOF/wOG/AHEv4eFg//DwoOBDwgOCDwk//YeEgf/x4eEn/8n4eDgP/4AeEj/8DAIeCBwPgLgkfDYIeECYQeDh4LBIwIeC//wDIIeCBYJdCDwV/BwIwBDwIOBCQYeBn4pCDwRIBIAQeCMIJPD/AOB4CED4BhBMwf/MISbD/kHPovwj4ODDwV/UYhYBKQJ2DRoIGDHQINEcARCCWYgGEDwIOFgb+FDwL2EDwQGFIQoeCBw0YA40AA=="); +katakana['HO'] = image(61, 54, "AAV/8AGEgf/Bwsf/AHF//AAwkH/wOFn/wAwkB/+AA4kP/g8Rg//AAngv4HFCYIAE/EfA4vAAwv+Eo3wn4HFwAGFJwZ5UgfAPIJzDn/x/+PEgR/BAoJzDP4N/8JzD//D/6KDFYI8BCwYrCCAItBPQOH/wWDCgIQBCwf/4P/wIWCCQIBDWgYBCZ4KJBE4LPDEYInBh5sBBgKLBNgQ0CJoIWB4ACCBgIiBBwP8EYU/TQLXBHQQECFAI8BCwIqB8DzCDYMPAgQbCMoI3BF4IRB44OBWwQUBv4TBJIV//InBHgQCBw4OBHgUH/EfNgKOCj0A3BsCQwNgeaSdCABA="); +katakana['N'] = image(54, 50, "ggGFngFEgP+AwkPAws/AwkB/4GEh4GFn4Gaj///gNF/AGF4BEJAwITBgOAAwQTBh4GCnwJCCgVwLgRwMHAgTBHAgTGv4TEgYTFMIITEMAsHMBY0B+ClFCYiPFEAITEv//OIQMCTg3gBgggEDIIgDGYIgDMIJVDDAIABIIILCFoYYCJwZ0BHQgsBBgZnBBggnCKgYhBMIi3FgAFFgAA=="); +katakana['WA'] = image(51, 50, "/4Ay4A3E/AFCh4GBAoUBAoPgAwU///8AoUHBgOAD4nwAoUf//+AoUDGRYSBGQYSCGQd/94yDh/9GQZFB34yDn/zGQcPAgYSCG4YSBC4YSNv4SKJYJwDLwISEn5QDS4QSDDAJjDDAJ2DGIJ2DUYQ+DQYKcFFYYXBDASOCGIQFDGIQRCDwTaCG4YFBEgbHHN4hiFg6HEA="); +katakana['WO'] = image(50, 52, "/4AE34FE94FE/YFE/wYYGocB/+AAwd/8AFDn/4AocP/gFDgf/KovADAnwDB43B45EE+IFE/F/KAkfBgmHAonhAonwDAn8h4MEN5X/N4l/N4k/KwkfRwgoBDwcHOohoBOoYFBEgY2BEgYFBEgYFBJIYXBFQYpBFQZ3CAoIWCKoQQCGwQLDHgR8CAoQdCAoQvCOYYFFn5gENgKREbYgAGA"); +katakana['RA'] = image(51, 50, "n//AAcHAongAon8j4GEwYFE+F/Aof+h4ME4IFE/BYr+4FE/wFE//fAon7BgpYE//vAon9CQo3Ev/gAocP/gFDgP/wASX+ASJgYSFXwJ2ECQivBDAoSEWIs//wFDbYIrDAoI+DAoIYDQ4IYCFIIABDALlDGIJhBewS/EJQQYCG4YkED4QFDD4JJF4AFDA"); +katakana['RI'] = image(43, 53, "AAf/7/4AgMf/f/AgMD/9/8AFBv/v/gEBh/9/+AgEB/+/+AKBn/3/wEBg/+//AFX4q3v4qDh/8FQQPBz4PDAYQvBEYQvCEYI/CGYRPBB4cfIYQpBB4cH/5TCDwJjD/4kCn4EBCgN/AgIUBDoP/FIJHBAAIyCDIYjBIYYaBQ4QaBJoZHDAAoA="); +katakana['RU'] = image(61, 53, "AAUH/wHFn/wAgUB/+B/+AA4UP/gBBCgd/8ABBAwUD/4BBBwcf/ABBA4f/4ABBHQg8FHQI8/HksYHgwYBHgkPF4I8EvwlCHwOAg4gBEYI8CCIQjBHgITBCIP+HgU/CwIRBDAIgB4AMCAgMfEAIMBDAIOCBgQYCIwQMCPYJTBAQI8BBwUHEoN/8P/IYN/+AvBj4LBBwOAj/7BwZGB/4ABBwXAAQIODM4QOFHgIOC/4OBh4OCAYJGBv4OCn4OBHgJKBAYJkBIQISBaIYhCCwIOBSoTqBJQISBeYUHd4U+bYUwcAYAKA"); +katakana['RE'] = image(51, 51, "//AAocf/AFDgf/CQl/8AFDh/8AocB/+AAwc/+AFDg/+GX4ECgwyEgPgGQk+GQkP+IyDC4IyE//3GQc//gyDh//GQYYB8YyD//4GQc//wyDDAOBGQUH//gGQRvB/BlD/4DBGQU/CwIyCj4YBMoQkBBIIyBBAIYBGQIkBDAIDBGgIiD+AFBGoIyBv4eCGQIABJwQvBAAJnDEgTLCEgY8CIYLLDEgZVCAoZuBb4iaBfAj+EgE4AokAA"); +katakana['RO'] = image(50, 47, "/4AEn4FE94FE/YFE/wYF34YS4A1BgIYB+A8Cv/v/gFCj4YBAoUHDH4Y/DEbglDBQ8CAAYA=="); +katakana['YU'] = image(59, 46, "gP/AAX+A4M/A4fggEHAwf8BwIGD/4GBj4VFgYVGv4HDwEAh4GD+A+Eg46CAAf/4AGEj/4Coo6CCqJFBCot/KAIADh5QCQAhQBCrM/Myk/M3JQGh5QFMyIRBAH6NB"); +katakana['YO'] = image(50, 49, "v//AAefAonnAon5Aon+DDA1DgP/wA8E8AFDj/4AocHDFZjfDCJjxDD5WE/+/AonvAon7PgoYX/g3DAAQ"); +hiragana['A'] = image(52, 50, "gEB/wGEn/AAocD/gMcg//AAfgv4FD/wMYFIRNa54HDgYyCBgYsEBgX/+AGBHQYpBCQQaCh4JBJQPwgIdBBAP/wASB4H/j/8MIP8j5fBBIP/4P8gf+j/7/hVBj/jA4PH/C/Bn4RBv8Aj/3/Ef55FB/9/wI+D+/wj40BHwIWBL4QJB+BFBwAmB/4MBD4M/94MBD4JAB/4cBNYN/BgM//AsB/n/z4bBQgOHX4QVB/B3B/CQCAQTSC8BFCB4Q4CB4UAgIIBRQOAXojREn/gaIgAC"); +hiragana['I'] = image(58, 50, "v/gAgUggEf/AGCnkAg/+AwU/gEB/+AAwQZBDgcP/gcECQIcFCQIJCCol/4AGBgYLBj/wCokHCAIABFAIQCCon/DgQECn4cDCoItCAAI+BDggVCLoZeB+BgCCocPPQZUBwZdDJAQcEGAIcEGAIcEGQPDDghIBDggyBDggyBx4cBjxIC8aaCCAIyBLAMDM4IyBSARnC//HUIk/+IyBCASdBLAJKCGQOf/kDJQV/GQRKCJ4XgEYRPC/CoCDgOHNwl/8P/84jCDgM//5HCDgMHAwIjBgP8DwIsBQgYVBSQgVBaYZnCTIgtBbQhDCUAYkCfwYOCGIgAHA"); +hiragana['U'] = image(46, 50, "h//Aoc////8AFBAgIABgEDAofACwIAB/wWD//4CwgdBCIeAFQUfCwIADCwIAMj//+AEBv4tDAgQLBHAYFBAgf/8YFE54FECwRTB/wkCAoP7IAd/OgR2CKwcBQ4kH/hMEJYQcC4AWIh4WEn4tJg6EEj6EEVgIQDE4l/CAbABCAZqBBQgQDBQIQCXwIyCYYTIFeIhlCBQjxCLIQWBMgbdFvzYJ"); +hiragana['E'] = image(55, 50, "gF//4GE/4AB+AFBgIGC/+AgEDAwYNBg4FC/wGBh4GC/gGF/ArFFIQAD4BRVn42FLAIGEJQYGBLAhEBLAhEBLAf/8ArDBIIyEj5fCRYZYEEgJYEN4JNFDQouFDQKcBFwYGFMIIGDLQRJFAwgaBOYQuC8Y2DFwODAwcP/0HXAc//EPcQnAj5LCPAU/MwR4Cv5ECPAQ9CLoUBd4auE/guBVwf5PARaC+5qCAwXnJwSXB//HI4QGCw5ACAwUHNIn+gj/HAAg"); +hiragana['O'] = image(54, 50, "gEB/0AggGCg/4gE8AwUf8EA/gGCv+AB4QaDv/wDQn/CwIaCgP/4AaDgf/wAaCgPn/4PBAAXv/0HAwef/kfAoX+n/4v4GCAgPxCYfg/4jBAAWBGwQ1BgEDJoJQCJoJRBLYcPCAJrCgEcKAaGEHgSGDF4QPCJYYxCHoYMBn5YDBgoGBDIP8FQKiBDwabBFoIzCv/gEAJQCMwWfKAIbBh58BDQMH/l/4IaCh/xTgIaCn/P/BrD/8/4CGD/i3BDQfz/gaDv/P+AaCCAIaEHQQaDv/hGoV4h//g4VB8JnBa4ePZYRkBBwKNCbwPwCYR/C44CB4BtBfgSaD8ACBYQQWBAAYA=="); +hiragana['KA'] = image(55, 49, "gEH/AGEh/wAwkf8AGEn/AAwl/wEAhgGC/4CBngCBgP+AQP8AwMDAYIyDAYUPAwQ2CAwY2Cj/4gP/AAP4j/wgYGC/gGBg4GC/0/8EPAwsfCgd/4E/Awt/FIf/LgJmBE4IGCMwMf8JjBHwIPB4IDBgZmBv+DAYMHMwP/BQRfBOwIKCL4J2BOIQvBAgJxCGQIEBHAKPCCwIYDCwQBBQoRGBviIDIQJRC4AdCXAYdCKIcHboQ/CboY4BboghBboZKCFAYhBjAoDh/8nzME+CfBF4V/RgP/EgKVBwYGBFAMH/zIBFAQeBAwIoDboRRD4DrBJQUHAQJsDAAwA="); +hiragana['KI'] = image(48, 50, "AAMB+AFDh4FL/AFDg4FIn//AAX4ArpHC/xNEAov/LQgFCDgYAlF4UfPx8/g/8CoQbBKgQhCAoMDFAkHAoeAh4FEDgQAB4E/FgIUBwE/HwQdBn/gAoM+AoPAAoMMAohFCAqIpCgI7C4BEBI4oICAoZfE4C9BAob2EAoISCaQgACA="); +hiragana['KU'] = image(33, 45, "AAsB4ADC+ADC/wDBgf/wADMg//CYIDDh4DDD4UfAY/8AY34AZRDCh4DCg4DCgYbCgI/CgH/BgU/BgREBBgIQB8AMCFIRNDLoJ2Cv42DJwQdDFQIdDFQQdDFQIdDHYRkDgYhCgADDnwDChyzE"); +hiragana['KE'] = image(50, 49, "AAUB/0Ag/gAwN/wAICgEfBIIIBB4P4BAYPCh/wDAcD/gYE/4FBDAU/4AYEGIgOCDAQOBh//AAP+v+DAoX/7/AAof3+E/AoX9/gYD/9/gYFD/4YE/5QCGIJQDHYRvCJQU/N4JKCKAYYCKAQYWmAYEjwYEx6lDh/zUocDMgIYDv6cBKgUf/4yBBAMH/4eC4EBNQUfAQN/DYMPE4TjCAQQkCYgSJBDYLEBn7QCAQIbCE4UDDYP/PIV/CgLpD4EPP4UH+AkBAoIACCgIADh6LCAAMDAoYA=="); +hiragana['KO'] = image(52, 50, "h//AAX+gAFD//gBgn/BgvwBiWAAon4GwUBDIQACCQQFCn//4AFCg4lBCQc/DwYfBKQJdEDwYAB8CIihAFEgJJDIgQFEg5KEMgITEj/8D4hwED4JqEOIIfEv5eEg4fEFg0PHIwsEBigmFCYkOv65CJYPnbgn+ZgIAD8IMFewvgCYjRBE4IMDegQABIoUfAoK7HA=="); +hiragana['SA'] = image(51, 50, "AAMB/gFE/+AAwcf+AFDgf+DIl/4AFDg4fEgAfLgIfCj//AFQzCn/gLJYMELI5mEh6GGBgUHGAP4CAQ3COYILCBgUDIgYZBAoYmBn5REDwPgQQPgDAIVBj4fBJ4d+CQI1CgeAXhgSDKoYSEQQp1GQQpFBawXwD4IGBg42BaQngBgRlDBgmABgjzBRYZDCPIYvCv//MQoACA=="); +hiragana['SI'] = image(45, 50, "v/AAgUD/wKDj/wAof/wAECg/8BQc/8AbD/4bE/AbEFgcHFgk/FgcBFgkPDYhIgFgIKDFh8eFgn+FgcH/4sDv+/FgUD/osDn/vFgQ2BFgcf+YsD/+fFgUP/gsDv/HFgSKBLId/8IsCHgIXBSod/EIIKBwIhCv/4h4WBAQOAv/+IIP8AQIAC4AYBAAIkBn4KDJQIKDCwYpBCwRWCAoJhDAoK1DAAg="); +hiragana['SU'] = image(52, 50, "AAUf8AFDgP+BjH/AYP/AAnvAon+BjJAUgf9BgZFB/4MDn4kEg4MFGIwMED4QME+E/+AyC/x0DFgPABwIMC/gMGDIn8gYMFv/4EwcP/+AKYf/BgRACBgYRB/4mCgF/AwJ6DBgoTCRohNDTZE/VAkP/gFDE4PAUQhGCI4YeEUIgYBD4gMBEpI4GgIFEAAo"); +hiragana['SE'] = image(56, 50, "AAcP/ADB//AAwP8AwkHA34FBAAn+A1JalmAGFvinFv4GF//PXghEBAwfBAwoNGEQP/+AGDn4GFh//8AGDg5PCgF/AYP/wAGEgj/CAwQADAw4mCAwZCCAAQ8BFQgGBAAQGBj4GFJQIGEJQIGEgYGFGIIGCIQQVDHQgACA"); +hiragana['SO'] = image(53, 50, "gP/AAXggEPAweAgF/AoX+gEDBgfwgEfCYoFD/EAg4MFAAQMCAAQwBBhQpBJQozBAAU/IAIACIYJUBAAV//gsJD4IsEn4sEOAn+NIn/+4FEAA39AwvvAwqQDAAP7UYhmCx5bDuBVB4BCDg5bEJ4JoEgJ1EEQKCESwIFEg5vEEA4TFh4TFv4TGYgiLBCYrFG/5dDd4YHCOQKkBDQjbDDQQwDWgR5DAwSGEEAgAEA=="); +hiragana['TA'] = image(52, 50, "gEP+AGE/4Mjgf/AAXAgE/AoX8BjUAgP+GYkf8AFDBhHnEIQMBEQQhBn/jFAWAgYMD/AMH/gMF4f/F4UH/kQGYd/KIIACg4VBBgmAQ4gMFUJcB/8DDQZgBv6iD/wuEn/gKIJGDEIl/4KCDC4KPE/+BBgYXBBgY5BAIImCj4MBTIKFB/wMBAAKSB8EPAwXnUYIMDCwLYD95RBEAIZCFQN/AwPBKISpBwEGQAgAGA=="); +hiragana['TI'] = image(51, 49, "gED/wGEv/AAocP/AFDgP/CQk/8AFDg/8Bgn/wAFDj/wBQYAqJ4M/LBZrMJYZ+Ch5aDv/f/4bCBQIABCoMDHAYTBv4+Ej4MEg4DB4IMCAoIcCwE/TwU/+ASBEQI8BVQJLCv/gS4cP/kBMgYWBjyoEgLbJEYYSCQQkHCQg2EHASCEv4SBgYOBOQ70BQoYrBEQIABFYR/DJASRED4YFCBgJDDA="); +hiragana['TU'] = image(59, 45, "AAUP/4FFAAIGCAoX//EAg4GD//ACYYAB/kBAwgOBn4OFDgoOBAYX+BYP8j4GBwEAAgPDGwQ+C/F/BgIABCwOMLQl/+AGEg/+NIv/8BwF/gGEKwIqDAAM/HAYzDEhkfEgsDEgxJGh5JFHQPACqQrBCpkfCopXBCogcBCog5BK4jSCAwxtDDYK8EZIQcCAoQcDCYTjCJgQGCEYT0DIAYGGEgQGDEgRcEv5UEA="); +hiragana['TE'] = image(57, 50, "/4AFv4GF34GF74GF94GF+4GF/YGF/oGF/w7Cn//4BCDAwOAAwpQEj4ZDAxP8AyUPAwwiFg4GMgZFFAw0BLQqlBNAkAv4GG8AGEn/wKgv4KhZGGHALeGH4oxNh4xFOJBjGEYt/VQwVFg//BwhOBAAI7Dv4GBHYYcBCwgcB/5CEDgQyFGYgrCUwkPKAwAC"); +hiragana['TO'] = image(46, 49, "gEH/AFDj/wAod/4AECgP/Cwn8C0cICwcDBoIWC/4NBCwMfEgV/4f/BoIWBv//LAMH/4AB8AWBAoWAgE/BQYlBDYUAh4FBHwQPEEIJQDFYJhCgYwCLQQqCDYQKDDYIKDn5xEEAYQB/x8JDYkDCAkPYIk/JoQWTAol/AocZQwR6B8aNCAAOPAgf+TIZqBAongT4QfCBYY9BW4R1BA="); +hiragana['NA'] = image(55, 50, "AAd/wEAn4CBgH/BIXAgEB/wJEgf8AQIJCg/4AQIJBgEP+ACBBIMAj/gAQYsBEoIoCGwf/GwkB/8P/4AC4f+j4GDw/4n4GDj/wv4FC/0/8AMD/l/4IGD/H/wYGD+P/g4vELARtCMQRtDMQQKDL4YKCMQQKDMQQKDR4QKCTIYKCFYQ2bOoI2C4BgCGwWASAQ2BGQKJC8DNBBAIAB+DNBPYf4ZoKrDAgPwT4K7BAwRdBB4K3BVYIqCVYY6BAwKrB/0DVY3+v/hAwf8n4SBdIXwnxEBAwXgnBEBAwShBO4IbBSYSVCOYQAHA"); +hiragana['NI'] = image(57, 50, "AAMPwAGE//gAocf//wgFwgEH////kH/AZBAwP+gf+Bof/wP/gEDAwWAAIMBAwc/FgIGDj4sBv4GBE4P8HAIdBE4IqBAwYgBKAIGCKAYKBAwN/EYIGDn4jBAwZfBDAQfBLIPAAwZZBDgItENYN/CAIfBIAIGCLIRfDLIXwAwc/RQJmCHAPv/0PEoI4B+f/AwcH/P/w50D/l/wZ0CgP+j/BK4Q4Bg/gJoQ4BwIGBIwU/4EwAQI4CIYICCAYY/EJQMHHATcCbAQKEHARGBGgQqBCIc/D4IGDaITCDT4PAAQJfCQQRYDeQQGDSIIGEYYIGEE4IGEDgYFCcAQ+CGQZsCABAA="); +hiragana['NU'] = image(58, 50, "gEP/AGEgf//wHE/4ABAwc/AwIPDh4OC8AGBg4GCEwUBAwX8Dod/EgoHC4AsF+BJFjAGDg4iEFgRfF/+AAwk/IwQjDFIgjDvAjDMYJlCgRHB4ABBFIUf/ABBFIXH/0HCoUf+BcBLwQpBCogpBCYIVDv+ACohNBn/wCoRxBCohNCMoIVBOIQVBAIJNCCAIVCEYIQBCoOAb4QtDCAQtC/gjCdIIXCN4QwBC4SVBDQIXBEYUP/gXBI4QEBHwPD/8ODgR/CwZNCCYN/8P/5/4GQOf+DtBKgXv/jtBKgX5/0PAwJxB/0/DAL8CvkDJYP/IYMMgFgg//fot/VYQACgYGFAAoA=="); +hiragana['NE'] = image(67, 45, "AAXwA43/4AHFn/8A4sPCA0B//+CAt///gA4kfCA0H/4QGA4IyFn4IBGQg5BIYsD//nCAt//F/CAkf/wzBCAYFBwH//BaE8ArBwBzFCAgNBLoQQCHIPADYIQD/6dBCAk/OQIQEHIQQEHIQkCCARaBO4YUCSYQQDHIQQFHIQQERQgQCLQQQEHIKBDCAPAn5fDCAP8gbNECAaJDCAbVECAPgvj+Gg72GdoqYFCAgHFKIoQDDA0AKIjODDA0ARYQAEhwHGAAIA=="); +hiragana['NO'] = image(54, 50, "h4GFn+AAocB/0IAwcH/F//4AB+Ef8IFC//A/+PAwcD/0fAoX8h/wDQk/4ITDAgMDAwcH/hGC/EAj/wIwXggF/4AGB/+AJIIFBGQJJCDQoWBDQf/wZlBDQIWBh41Dx5kE/0/Mgn4IgIGD8f8MgYaBL4IaEPQJrD/6RCGoRkCKAR/BKAgaBKAoaFNYoWCKIIaC8BKCDQWAIYQaCgJCCDQRyDDQRXDEoOBK4ahBW4K+CAgKcBDgLcBMwIwC/1/4JHBCYP5CoQwC4aND/atBRofDAgPgdQaSBHgX4hxXBHQXAhAOBAwKXCAAJlBbIIAH"); +hiragana['HA'] = image(50, 50, "AAMH/gFDgP/Bgl/4AFDj/wDBsH/4AD/oFE/9/AwoARJVXhAon4JQn+j4MEw4YLn4YEJTIfCAooYCAoX4DgQwCwBdEBgMDHoYMB//3Bgd/8AUC4A7BJQP//kHBwQGB4JYBFoX8KgMP/gGBz/+h//AIPjGAXA//wAoXwh/4DgX4gP8IgQnCF4QFBgOAEIKIEv6SCAA4A=="); +hiragana['HI'] = image(59, 50, "gP/AAOAA4U/AwPwAwUHAwP+CwYVC4AGCj4GB/AGCgYOCCod/AwPgGokH/g8GHQY8CHQYVCHQg8CwEfCAYEBgYQDAgV/JYYEBh5LDj/4GoJKEGoJLCAwP4JYZ9C/BLCNwSGDQgSGDOoaGDAwg6BEYQHDh//EomDAIP+ToaQBEIIvCKoJyCJgPH/yDCEIIVB4BNBMwIgB+CZCn/n4f+h5jBAQMw/+BOgKyCCoN/PIICBS4I0BCoQJBJQJqCBIP5NQfgD4KACn5tDGQSDEwADBTIJaBGQKZEDISvCToR8BeAQDBAQLbCb4RSCAAcHcQYACvwGFg45BAAj/DAAw="); +hiragana['HU'] = image(55, 50, "gED/gGEg/4AwkP+EAhwGCj/ggF+AwU/4EB/wGCv+Ag4GD/4kBAwM//4AB84GBv4GC54GBAoX/x/+gIGDh/+gYFC/0P/kHAwX8AwMPAwX4j5cCGwJOBAwJIDj5jBv4QCAwIpBNoU/+AiBNoIGCJYJtBAwPhFwPANQXjAwOAgEEv+P/A2C/H+CoI2BTIIhBwY2Bh/xwH+UgUf+CwBUgSgBBYKkCn/gh/gToI1B4Ef4AvCBIM/4ZmCIAN/44oBSgKdCFAJ3CLAY0BUgQoBGgIGBEIUPAwSID+AGBQIZHBJQRECd4Q9DI4QvBJwQ2Cj4sBGATRBJwLcDFgTcDC4QGEEILqEAwIbDIARoCBgQAGA="); +hiragana['HE'] = image(55, 50, "AAUf+AGEn/gAwl/4AECBQP/wAYC4EB/4YDwED/wYDwEH/gGCCIMP/AFBgIRBGwcDCIN/GwUH/EP/4bCDAP/AAI2C+4GCHwMfAoX/JgM/AwYjBv4GI8YGCFoN/wIGBgYCBFwIiBHYJfBNAPAn/8IwIGBwAaBh/wAwOD//4R4IfBg//+B2BDoJKB+AoBg/+JQPjOwMP/n/z/nQIMf/IOB76BBn/3/gVBMgN/94nBOQX/7/gAwKbBOwSOCHoJMCEIMH/v/CAJxBh/7/hcCF4X4KYLEC5/wj5KBEIOfGwJRCL4PzF4V/JIQvBCYJJCH4JxB4AGB/xCCFQIJDDoIMBBIRNBAQJdCIwKUCeAb5CPgQACSgIFDSgIFEAAg="); +hiragana['HO'] = image(51, 50, "AAN+AokP+AFDgf+Bgl/4ASE/ASVv//AAX8h4FD/+BAonwn4FD/0HBgnAAogoBgP/HAk/8AFDg5LEgASM/gSFwADBFQIAC8E4Iof+/5FE5/wAof5/0fAwc/8YFD8f8PAYEB54MDJ4SRDJ4KRDj/gNYaoCLAYWBLAYWCLAQWCDYJvDgYSCCwV/NYQWBGQc/+AyDg4yBj4MBgYSBAQP4OwPwbIglBQAgpBBgZiBBgYYBBgY1CU4S0DFoIRCAAo="); +hiragana['MA'] = image(55, 49, "gEP+AGEj/gAwk/4EAkAGCv+AgAPD/8AgYdCgP+EgkD/gdB/AGBg4DBv4GCj/w/wGCv////8AwQFB//4AwMBAwXwEQMDAwXgAwMHAwXAAwMPAwWAG4QvBLgQGBL4X/AwRfBKgIGCL4X8n/gLARUBn5YDMwM8NQaLBQYIoCAQSIDAQRZBRYaBDRYQhBFAIJCKIYyCDwKoBToZkBOAIJBPYKLCGwMH/h2CAwMfKoKKCI4PgSIYYB4afDJQMP/gpB+AhBMgIjB/AhC4EfAwIhCEoIGCwJdBaIIZBMgSkCjhMBgakBG4LICUgKDBAwQuBPgRKCjgGE4EQAwgEBAAIbBRAQACQgIDB"); +hiragana['MI'] = image(50, 50, "h+AAocD/gFDgP/CQl/4AFDn/gv//AAOP/E/AoXj/0HAoX4/+BAoX+DAuf+EfAoXn/gYD/P/gYEBG48f+AFDg5QMMYkf8BvE/BvE/wYE/4YEKAIYYgZSCDAMBJgQYCCgYDBFoYDBj4tCDAJlDDAMBGYYYBNYYYBn4xCg/4h6ECPgIHBPgfBDwaVBQgYvBToYYCFYauBaIIwB5/wcAfz/0PAoX8cAn/IgQFC55dBAoXxFILtC/grBGgL5BYIoAGA=="); +hiragana['MU'] = image(58, 50, "AAV/4AGEj/wAwkH/gGEgP/Aod+Dgv/wAcEj/gDgkH/AcEgP+Dgt/Dg3wn4mBHwYGBDAIyCAwP/8AGBAoQODh4GC/4sBgYGD/AcCAAO/IQQcC4IkCDgI7Bj5YBg//w/8EAIjCwIEBv/gMQPgLAMPFYP//h1BgZpC/4LCNwIxB4YoBFoIxB/AjBNIMH/v+n5UB/4qBn/fIoIJBv+PLYUPQwPhOIUD/gvBGYMH/3/BAX/457CBAP/84GBDgIlB/YGBCYJwB/qECDgKREwBCC34YBDgfvLYP+HIM/+YYCIwM/MoIYB/hGBMoQEBz4nBKQfDAwODGQXwKQQMB/P4j4GBAQP+ngtBUgIRBg6aBRwKiBwOAf4TNBAobjCAogAEA"); +hiragana['ME'] = image(57, 50, "gEP+AGEg/4AwkD/gGEgP+Dgv/Awt/wAGEn/Agf/BIUf8EP/40CHAMf/4tBAYP4AQImBCIP8n4GB4EH//+AwXgEwP/v4CB/EBAYIPBg4jBAwX8BYJFBCQRKDFYIGBJQJxBIgUfAQIrBAYMPCAIfBBQR8CAwR8DMAZ8Cv4GCGIQGDGIU/AwR8BAwKqCWoU/FoS1Cj4tCHASEBWogGBUAQKBAwItBHARpB8BlBBQKuCAQIKBO4SqCBQX8AwX4h/9/wGC/kP/n/DYSlCv+P/ArB4K+B4/4SIV+j/jWIX8n0P+JSBDoMOMwJWBAwOCMwM//ZOCMwI4C75nB/5bC45nBv+DAwPhTgXAb4PAoCfCQQifBYoYAHA"); +hiragana['MO'] = image(60, 50, "AAX//4GEv4HFj4GB/wGCg4GB//4AwMBAwX/4AcEDwcPAwYWBgYGDCwQVC54tCCoX8F4PgFYP4CYI+BgE//0P/gaB/ARB4F/4ApBwAVBg4OBj/8EgITB4AiB4InBBwQgBCAIOCPQPjD4MPJ4MH/0/+ALBwARB84kBBwQ0Bv/gBwc/+5bBj5tEHAR8Bn5lBBwInBBxY2CBwcDWIQOEGwIODJwIOFIoRKC4CNCBQP3AgKwCDIIOBKIQKB8/8IQJgBj4OB8E/MAfD/ytBEgX8J4KeBZwWDIgJCBCoP4ZgIzCAYIqBeYRQB8DnCK4gGBGoIDBwAyBF4IKCCQWBAwIVBEoPgF4RFBg/4F4Q2BAAQOBTwIADHoQADbIQAIA"); +hiragana['YA'] = image(54, 50, "gEf+AGEv/AAocB/4MEg/8DUv///Aj//wEDAwIcBAwMP//8BgIGBn//+IFBAwICB54GCDQQAC/0HAgXAn45BD4IDBn45Bv4MBAYPgGYJKCFAIbB8EAgf+DQRbEv/4LYYaBOQU/4EPCwIhCCYJrCgf8CYkP+BlBCYQaBv6GDOwQaECYIaEKwIaD4JWDgP+CYIaCg/4NQYTB8Z+BFwef+4aCMgN/74aCn/z/zXCIAOH/IaCh5CB44aBJoU+a4QyBwFwDQLGBCAOBX4adBGIJMBRIQaBUYI4CDQJnDFYJ7EDQKzCDQYECAA4"); +hiragana['YU'] = image(52, 49, "AAMf+AFDgP+Bgk/8AFDgYMM/gkD/4AC+EBAof/BkA5FhEAg45Cg/AgF/AQMBBIMP/4DB//gE4Xwn5dBn4GB74IBgY0Fv4FD8AfBAoYfB/gbBIAIiBg///A7B/+A/4rBCQIxBBAISB/ghBCQeBEoIMBCQI0BBgQSCDIYSB54MBgIlB+AMCj0H/0PBgIABHQQMBOgP4BgZBBBwTDCMYIMDKIIMRWQQmDAwUMYYqyBAoaxBN4IMEV4QMCcggMBWwbZCAweA"); +hiragana['YO'] = image(55, 50, "AAMHAwsP+AGEn/gAwl/4AFDgP/BgkD/whF/AGEj4oFEIsA/+AEIgoFg/8EIooFJQ3/JRcHJSgoGJQxEEg//FIkfAws/Cgv/AwUGJQX/HwMP8AoB74GBj/gh/+IoU/4BzBBQJBCJQIKBNQRzBv+AWoIIDJAP4SoMBIgIkBOYMDHoKTBAIIRBXgQBBB4IfBEIQYBFALgCCwMP/iVCJAXwJ4QfDcAX/4JRBSoRvBEIZ2DcAQGCFQIhBPoIYBcAQGBDAJqBCgQ6Bg7rIAAY="); +hiragana['RA'] = image(48, 50, "gEP4AFDj//wAFE/gFE/4TCn4FBBgQFCBgQRC//gBgN/BYUP/EBAog3BGIIFCgH/BAIFCh4FEgQFEBoXwAqsfAoIuBAoROBEwIFBIwP+AoPnLIWALwZfBNQf/+AFE/AFBEIM/AoR6Bh/8OoIzBg4FBRgQFCL4UD/wlBAoikCAoM/W4QFBj5dCAoMGAohpDg4FEHYJ1EAog5DDgJWCb4Y/Cg7RDaARFCAoZFBAobiEeoruCAoQtCAoI+DAAgA="); +hiragana['RI'] = image(40, 49, "ngEDn/AAg9/4Ef/AEBwF//4EBwP//4HBw4EB4F/x4EB8F/z4EB+H/n4EDAQIjBCwUPAgUAAgX+gEH/n//gEDHIMDAg3wAgP+AgvgAhBeBAhmAAiJ3BAhf8AgRUBAhBXBAAJtBAgSgCVgRcBAAJXCEwIEDj5SCBoJDCBAKSBBASSBXwKICAgQmCAgIcCv4SCAgI0DeAY="); +hiragana['RU'] = image(51, 50, "gf/AAXAgF/AoX8gEPBgeAgIFD/EAn4MEg4FD8EACQoACn4lBAAUf/4FDDYOAAoQuBHwIACv/wDwgkEh/+DwoFDDw5ECDwRLDMwg5BLIZMBNgh/FGgIeB+AVB4AeBEYJmBBAJQBDgPBOocf/AoCVIU/Kwc/+5WDg/+Kwl/5/wh4mBh/4/A2CFgMOAoJDC8GBMgUHGAJQCCQKpCBgISBgf+SQMPCQN/4H/4YSBGIIwBCgMBDoTMCn/AEIROCLoKFEAIJvBTwZvCTAarFNIQFCXASyCYoYxBAoYAEA="); +hiragana['RE'] = image(56, 50, "gEf8AGF+AGigP/wAGDg//GYQGBh//C4M/AYICB/AGDv///gGC+P/AwQKB+YGB/wNC+//w4GDBYMDAwn4AwQ3BFQIGF8AGF4AGFgAGEAYMDHwIGBAYIGDn5XBAwhlBAwd/Axh6CAwSPBAwMHAxEDAwqdBAwidDAw5IBOoQGDU4QGDUAIGE//fAwufCgrmCh4iCAwk4nwGE/EcAwbSBjAGFegReCUgIGJOYIUEQIYGCIYOAAwPgAwIAIA="); +hiragana['RO'] = image(50, 50, "AAf4gEB/4AC8EAv4FC/kAj4MDwEHAofwDAgSBDAoACn/+AocfAokP/4FDE4OAApED//AAohJBAAI5BAocAIQIFEHghFCD4QFCBoU/KIQMBNQZ9BOAhOCQYYFE/B8CE4QFBM4JGB4YuDj/7AocD/xIE/+fP4c/84FDh/8QoZyBj5mE4aFDn5yEDAIFDGIIFDIgIXDDwKREv4eEv4eBiAFCDwMH+A8BIQLnEEgLnDSooqBQYQFCDgQ2DAoolCJAgAD"); +hiragana['WA'] = image(51, 50, "AAV/4AFDh/4AocB/4DBj/ggE/AQMD/0Ag/8DgWAgH/AQMP+ASB//AgISBAoIDC4Ef///+ASBh4FB/4SBgYFC+E/4IFC/8H/F///9//g/8f/3/x/+j/nAQPwv/j/H/wf+I4N/KAJlBv+P9/4MoMP/f9/xlBAIIqBwAUBn/vFwIdBg40BNIIOBIIR7B+BbC8B7BKoX4uAyCAwM+GQX5//f8IyCn/z/hHCK4N/4/8h/8/4EB/4lBF4P/z5wB8f+RYJjBPoPAFwO/BQP4IQX/wJkCTAUfVYf4gf4BgS4BbQRiCcgbSCAAILEcALkCAAM/DoYeCC4ZLBfoIeD/ASEDAhoBAoYlBDwcAg/ABggAEA="); +hiragana['N'] = image(54, 50, "AAVgAYUP8EHwAGCv/Av4RD/8D/wFCgf8g/8DQf4j/4AwU/8E/+AaDwF//4VBgIfB/4GCD4MPAwcf+YFB/4jBn4FC/4jBAof/4AYC//n/+DBYeD/wZC/f/FgIrCGIQsCKYU/444CKYP/z4xCvxOBv+/8EBQQP4B4KFCCoJeCNIYPBQgQKBj53CAYSbBCYQDBHgJbCTYUDOQZHBM4QTBTYX/GQQxBP4Y8BDQRGBTYY4Eh5MDHgZTDAojdEbAYGEHgIGEv7/DHgIhFfAh1EEIg8GEIg8GTYYhDHhYAF"); /// ///////////////////////////////////////// -let kana = katakana.KI; +let kana = katakana.KA; let scroll = 0; -function drawWheel () { - if (scroll > 20 || scroll < -20) { - scroll = 0; - next(); - } -} let hiramode = false; let curkana = 'KA'; function next () { @@ -658,6 +124,7 @@ function next () { } curkana = 'KA'; kana = hiramode ? hiragana[curkana] : katakana[curkana]; + updateWatch(ohhmm); } function prev () { @@ -669,7 +136,6 @@ function prev () { curkana = oldk; kana = katakana[curkana]; return; - } else { } } oldk = k; @@ -677,37 +143,18 @@ function prev () { } curkana = oldk; kana = katakana[curkana]; + updateWatch(ohhmm); } const kanacolors = { A: [] }; -const clocktop = false; function updateWatch (hhmm) { - if (!hhmm) { - hhmm = ohhmm; - } + g.setFontAlign(-1, -1, 0); g.setBgColor(0, 0, 0); g.setColor(0, 0, 0); - if (false) { - g.fillRect(0, 0, g.getWidth(), g.getHeight()); - g.setColor(0.3, 0.3, 0.3); - g.setColor(1, 0, 0); - - g.fillRect(stripe_pos, 0, stripe_pos + stripe_width, h); - - g.fillRect(stripe2_pos, 0, stripe2_pos + stripe_width, h); - - for (i = 0; i < h; i += 8) { - g.setColor(0.15, 0.15, 0.15); - g.fillRect(0, i, g.getWidth(), i + 3); - g.setColor(0.4, 0.4, 0.4); - g.fillRect(stripe_pos, i, stripe_pos + stripe_width, i + 3); - g.fillRect(stripe2_pos, i, stripe2_pos + stripe_width, i + 3); - } - } else { var whitecolor = false; if (curkana.indexOf('A') != -1) { g.setColor(1, 0, 0); @@ -723,27 +170,15 @@ function updateWatch (hhmm) { g.setColor(0, 1, 1); } g.fillRect(0, 0, w, h); - } - // GOOD FONT SIZE g.setFont("Vector", 62); - g.setFont('Vector', 50); - const bignumbers = false; - if (bignumbers) { - g.setColor(1, 1, 1); - g.drawString(hhmm, 12, 12); - g.setColor(0, 0, 0); - g.drawString(hhmm, 10, 10); - } else { + g.setFont('Vector', 50); if (whitecolor) { g.setColor(0, 0, 0); } else { g.setColor(0.5, 0.5, 0.5); } - if (clocktop) { - x = 26; y = 26; - } else { - x = 26; y = h - 42; - } + x = 26; + y = h - 42; g.drawString(hhmm, x - 3, y - 3); if (whitecolor) { g.setColor(1, 1, 1); @@ -751,63 +186,58 @@ function updateWatch (hhmm) { g.setColor(0, 0, 0); } g.drawString(hhmm, x, y - 1); - } - // drawKana(hira_a, 0, 60); - drawKana(hiragana.KA, g.getWidth() / 6, 60); + + drawKana(4 + (g.getWidth() / 6), 60); + drawMonthDay(); Bangle.drawWidgets(); } -function drawKana (img, x, y) { + +function drawMonthDay() { + g.setFont('Vector', 20); + g.setColor(1,1,1); + g.setFontAlign(-1, -1, 0); + g.drawString(month, 4, y-20); + g.setFontAlign(1, -1, 0); + g.drawString(day, w, y-20); +} + +function getPhoneme(k) { + switch (k) { + case "TU": return "TSU"; + case "TI": return "CHI"; + case "SI": return "SHI"; + } + return k; +} + +function drawKana (x, y) { g.setColor(0, 0, 0); - - // g.fillRect(0,0,g.getWidth(), h); - if (clocktop) { - g.fillRect(0, h / 2.5, g.getWidth(), h); - } else { - g.fillRect(0, 0, g.getWidth(), 6 * (h / 8) + 1); - } - - if (false) { - g.drawImage(hira_a, x, y); - g.setColor(1, 1, 1); - g.setFont('Vector', 30); - g.drawString(curkana, x + 32, y + 4); - } else { - if (clocktop) { - g.setColor(1, 1, 1); - g.drawImage(kana, x + 8, y + 12, { scale: 3.4 }); - g.setColor(1, 1, 1); - g.setFont('Vector', 30); - g.drawString(curkana, 0, y + 16); - g.drawString(hiramode ? 'H' : 'K', w - 20, y + 16); - } else { - g.setColor(1, 1, 1); - g.drawImage(kana, x + 8, 26, { scale: 3.4 }); - g.setColor(1, 1, 1); - g.setFont('Vector', 30); - g.drawString(curkana, 4, 32); - g.drawString(hiramode ? 'H' : 'K', w - 20, 32); - } - } + g.fillRect(0, 0, g.getWidth(), 6 * (h / 8) + 1); + g.setColor(1, 1, 1); + g.drawImage(kana, x + 20, 40, { scale: 1.6 }); + g.setColor(1, 1, 1); + g.setFont('Vector', 24); + g.drawString(getPhoneme(curkana), 4, 32); + g.drawString(hiramode ? 'H' : 'K', w - 20, 32); } var ohhmm = ''; function tickWatch () { const now = Date(); + month = now.getMonth() + 1; + day = now.getDate(); function zpad (n) { return (n < 10) ? '0' + n : n; } const hhmm = zpad(now.getHours()) + ':' + zpad(now.getMinutes()); if (hhmm !== ohhmm) { updateWatch(hhmm); + ohhmm = hhmm; } } Bangle.on('touch', function (tap, top) { - if (top.y < h / 3) { - // clocktop = !clocktop; - return; - } if (top.x < w / 4) { prev(); } else if (top.x > (w - (w / 4))) { @@ -816,10 +246,13 @@ Bangle.on('touch', function (tap, top) { hiramode = !hiramode; } kana = hiramode ? hiragana[curkana] : katakana[curkana]; - tickWatch(); + updateWatch(ohhmm); }); +g.clear(true); Bangle.loadWidgets(); tickWatch(); -setInterval(tickWatch, 1000); +setInterval(tickWatch, 1000 * 60); +// show launcher when button pressed +Bangle.setUI('clock'); diff --git a/apps/kanawatch/fontmaker.zip b/apps/kanawatch/fontmaker.zip new file mode 100644 index 0000000000000000000000000000000000000000..39c7d5d5373d785cf9e543ee4a7e6c04cc81f351 GIT binary patch literal 65124 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 literal 0 HcmV?d00001 diff --git a/apps/kanawatch/metadata.json b/apps/kanawatch/metadata.json index 09bfc2d36..9a145d4d1 100644 --- a/apps/kanawatch/metadata.json +++ b/apps/kanawatch/metadata.json @@ -2,7 +2,7 @@ "id": "kanawatch", "name": "Kanawatch", "shortName": "Kanawatch", - "version": "0.01", + "version": "0.03", "type": "clock", "description": "Learn Hiragana and Katakana", "icon": "app.png", From f4cf75a541d1f5839b695eb5b71955de041193a5 Mon Sep 17 00:00:00 2001 From: pancake Date: Tue, 28 Jun 2022 01:42:12 +0200 Subject: [PATCH 241/251] Update screenshot --- apps/kanawatch/metadata.json | 2 +- apps/kanawatch/screenshot.jpg | Bin 21235 -> 0 bytes apps/kanawatch/screenshot.png | Bin 0 -> 2992 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 apps/kanawatch/screenshot.jpg create mode 100644 apps/kanawatch/screenshot.png diff --git a/apps/kanawatch/metadata.json b/apps/kanawatch/metadata.json index 9a145d4d1..8593c8f82 100644 --- a/apps/kanawatch/metadata.json +++ b/apps/kanawatch/metadata.json @@ -25,7 +25,7 @@ ], "screenshots": [ { - "url": "screenshot.jpg" + "url": "screenshot.png" } ] } diff --git a/apps/kanawatch/screenshot.jpg b/apps/kanawatch/screenshot.jpg deleted file mode 100644 index ac7447ee82e33bca916317ffcb7af8948c0bf990..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21235 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 Dnfa#} diff --git a/apps/kanawatch/screenshot.png b/apps/kanawatch/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ed879aa1a3b8bef32bb80f4c08b1443530a177 GIT binary patch literal 2992 zcmc&$=|7Z>8s=f7LAIGt7;9!IOR|?r7?WMu!@PE3MrpCNJds@nS+fi?vW>*CX7EHv zmQW^ZrV@pWUdt%rc+c;5{(|%2e7NuHcVG8)eY&p?cY=)-Rsenk&cVSUfHO0;+sEhs z6fe(yuW6cd-v`c6JFF4Mvmwdv92|UCamME_hq?bK_#RQE&u{XCeec_*{0WR~V}n+h z(DL?LPc*$=sE4YTT2oWQQrpD>xPzzBA)^Bt%SxPZ3t>A^GF0)dmx)oAGPAr7lv$yo z%b*)FTAc8F{X6`Hz&r3gH#%f-T_X%`ap3h;=g-a$9pghOlAOrfwEM08f>u|Vd@$d;*nlML|D06 zzvZ!C@^|jKlPZD01AZ{~p`!1c4U% zJ!MIk7Cp_n-y4&+iq%eTCfL5t^DgmvhW?>(Y%mYAx-I3llDi-FEx{5ZRq*Qb?@NM5$sz42xp17GRwGy&@8FJevc){AFRq61>BUd7fI-ssr1U zr9y^xS3V-f<4C~vR!ih1Jj&>Q5cRV+-DTQf&Swm*9}s`~NDInPS&I*7(x}d6Ml2Bd z?azjr8)@vz8ukAEV9Vr)XqQDlPo4c2dl5<4*gB0NL(&m6h;u#af(;(k@wJK=YY?LZ zLyTWgd$|b$2BJ|LD-xU85}x%Do$w&VZ125(__D?7SgT(-;lE@rd|5&4T>)UA=ldV> zDF__x3ojin`|-y_dId~5*dC!%1IfRd2_<11s�Pi)X@SJ7PR%+Tce2<*}39l{e#% zPUgwTaWk5=4m^mtSnWUcc$(`dB=*7v&xPIhe*KDxk$vgNG6FyJsjEDf6LY_YE&L;$ z{WT$Sea0y5k>4daO=e#Bul08JA*?^bNtVcH^X^Hq$~f$Rzn|s!z}Yp9CMHEncNB&5 z50^k3RGcMRo#Ug*>cD~Gfm*JLPZ#pJ`&1xWoQ~luTy9(60wSyxSF??363U!5jyGui z{kJS(hOZ{j+xG7v#CU6L?)ELq>&_rwJ-zSjAw6?$))C+C>NK{qOylhQ@U0hDBZ;Gq zLTpt*;Ly^x6>WO<$J2#_f6Jx6kBg8X=+#TGJcT!+T-_6a&E-60{xsbqSX8nQ`4XL`Ew^B^}RW%e1o0%_KnU} zx6vJ!BGRS_s0dLGALp#NquN~~r4!LM@-yH=Xb`Hc(eC(Y#9Iyj$xC>d?Gap-2zLyE zp%4-L4rbUH>?R?9c%?7hF}-kUt!Ms|$c9W}4|xMOwMzk5T zxoxVatOD97sL@kDmxD*DjRKav3el^e5UjDhoFzXq;VSmG9@Y{}6L}_h&plNnXJT}S zqT%O@bN5by*)#1tU48ByIy6Ib3_mwk9g)I_Z}tlhggpkL@9EW=F0Nt0H<1YO6XZ&- z`emeU2VBpQ{PWnd_>ZXM;)8NZzNRzL_Zd%IwkP*G=BnnT6PP*Lz_$_RwSJk6fECbu z;fBNzGB|9aN{18IbLZ|l-Q>>-HdKxBTKv=1t+~KZ*3e|+hMMO;J(&C_ah$j{A}1e;eTz{n+0+wRTAF*Uk1L%W zXc;Nx7i$jJy7!@B;*qr+wQ_Lw^h)mPV)(JL+)&Er_D8d(!Ll@)A-=lAAQAQ+$*zBF z`tCnFS5Tk=QVp+UJM8c*6yCFe-RgDrg!LGP5~}E~9T_}C*Uy^3 zPM`@ckcW5nXzi6(%HaaX6?2_IgUd{vZw+FiZ!U6s1Pv;E`fX}V>wJjHcOZJ8SJmpI zw=bG+q*Zo#JpbxTf$_L==}hcamu!UA4;P$oAtY$1gs|YpeK>Ze-9XN3BxU|sS0c}= z;@oIJNmzU`%PjZ6+=N1`a>c3a>nMWsBf)E(jnuC8!91E{2Se;`awIdAz|f<1bBd*% zdi68ZftieKPXDVs;wtx|Y_0EI$QvFd3l{0{1@Pg8(RSYbI|6B#RT%8BwJ1%5Q;t=J zuvId#6MhPbA)7I^_V|~_zEKszRuBL?;_V?$)T)r!#t$vN{b-txA%D@UpzXqeO9Gc` zlrtUK$^c5QAR~4+KPxW7(ev$eJasTSv#{6S9kj>uXI?h}PefwXlzzfYDe7Sh?(TSF z&vlRf_w<$Ojtw>Wz!bNn8V9Lrq@_s3fwF?0ftE8Ow`YxHfW5!H;zUc8D0 zr(){(qUiPsQ=GW0FAJU7^-WKU*X&t7ds?W<-E&&}DXy}lEp6)zR99Dn@77<)trKWw z${~7u5`5>%9*33vkmf>c#@TOdu=O0EJZ?zzS3G(d>{1Og`FcWiP`>Uq;oO`aa!WFY zCmojP8^z&Li#zd*d=_Kp=*?HgnAGB@ED&Bb#6o+eb<&jw5_xvt0POh~+RU#n(XSDC r+JOgY3HiY|{QHiy^P>vGNswTL^R&j#U}O6J3(kQvu`+&Ugn#gF@6nHi literal 0 HcmV?d00001 From 98bc3bf9bd78c6cbbac1f98782ef312a3dc8cc6d Mon Sep 17 00:00:00 2001 From: pancake Date: Tue, 28 Jun 2022 01:56:11 +0200 Subject: [PATCH 242/251] minor fies --- apps/kanawatch/app.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/kanawatch/app.js b/apps/kanawatch/app.js index 26123378d..d08b644a0 100644 --- a/apps/kanawatch/app.js +++ b/apps/kanawatch/app.js @@ -196,9 +196,9 @@ function drawMonthDay() { g.setFont('Vector', 20); g.setColor(1,1,1); g.setFontAlign(-1, -1, 0); - g.drawString(month, 4, y-20); + g.drawString(month, 4, 112); g.setFontAlign(1, -1, 0); - g.drawString(day, w, y-20); + g.drawString(day, w, 112); } function getPhoneme(k) { @@ -206,6 +206,7 @@ function getPhoneme(k) { case "TU": return "TSU"; case "TI": return "CHI"; case "SI": return "SHI"; + case "HU": return "FU"; } return k; } From 3ead5bbcacd09301ba4442c0f84a4ec679100230 Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Tue, 28 Jun 2022 11:59:08 +1200 Subject: [PATCH 243/251] Add files via upload --- apps/widscrlock/ChangeLog | 1 + apps/widscrlock/widget.js | 10 +++------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/apps/widscrlock/ChangeLog b/apps/widscrlock/ChangeLog index e6d9f3512..94a8dccec 100644 --- a/apps/widscrlock/ChangeLog +++ b/apps/widscrlock/ChangeLog @@ -1,2 +1,3 @@ 0.01: 25/Jun/2022 Added Screenlock widget to depository. 0.02: 26/Jun/2022 Tidied up graphics. Fixed versioning style... +0.03: 28/Jun/2022 Tidied up code. \ No newline at end of file diff --git a/apps/widscrlock/widget.js b/apps/widscrlock/widget.js index 27ba2df07..cbb71e4cc 100644 --- a/apps/widscrlock/widget.js +++ b/apps/widscrlock/widget.js @@ -1,14 +1,10 @@ // Screenlock Widget (() => { - var widX = 0; - var widY = 0; function draw() { // Draw icon. g.reset(); - widX = this.x; - widY = this.y; - g.drawImage(atob("GBiDAkkkkiSSSUkkkkkkiSSSSSUkkkkiSSf/ySSUkkkSSf///ySSkkiST/ySf+SQUkiST+SST+SAUkSSfySSSfwACkSSfySSSewACiSSfySSSWwAASSSfySSSGwAASSSfySSQGwAASST///+222AASST///2222AASST//+A222AASST//wAG22AASST/+AAA22AASST/2wAG22AAUST+22A222ACkiT222A222ACkiSG22A22wAUkkQA22222ACkkkiAG222wAUkkkkSAAAAASkkkkkkSQACSkkkg=="),widX,widY); + g.drawImage(atob("GBiDAkkkkiSSSUkkkkkkiSSSSSUkkkkiSSf/ySSUkkkSSf///ySSkkiST/ySf+SQUkiST+SST+SAUkSSfySSSfwACkSSfySSSewACiSSfySSSWwAASSSfySSSGwAASSSfySSQGwAASST///+222AASST///2222AASST//+A222AASST//wAG22AASST/+AAA22AASST/2wAG22AAUST+22A222ACkiT222A222ACkiSG22A22wAUkkQA22222ACkkkiAG222wAUkkkkSAAAAASkkkkkkSQACSkkkg=="),scrlock.x,scrlock.y); } // add widget. @@ -18,7 +14,7 @@ draw:draw // Draw widget. }; - setInterval(()=>WIDGETS.widscrlock.draw(), 60000); + var scrlock = WIDGETS.widscrlock; function restoreTimeout(){ // Restore LCDTimeout settings. @@ -27,7 +23,7 @@ var options = []; Bangle.on('touch', function(button, xy) { - if(xy.x>=widX && xy.x<=widX+23 && xy.y>=widY && xy.y<=widY+23) { + if(xy.x>=scrlock.x && xy.x<=scrlock.x+23 && xy.y>=scrlock.y && xy.y<=scrlock.y+23) { options = Bangle.getOptions(); // Store current Timeout settings. Bangle.setLCDTimeout(0.1); // Lock screen. setTimeout(restoreTimeout, 1000); From f308ee7802ce2d9f95c2f52742645839b5db3394 Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Tue, 28 Jun 2022 12:06:11 +1200 Subject: [PATCH 244/251] Add files via upload --- apps/widscrlock/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widscrlock/ChangeLog b/apps/widscrlock/ChangeLog index 94a8dccec..84e926362 100644 --- a/apps/widscrlock/ChangeLog +++ b/apps/widscrlock/ChangeLog @@ -1,3 +1,3 @@ 0.01: 25/Jun/2022 Added Screenlock widget to depository. 0.02: 26/Jun/2022 Tidied up graphics. Fixed versioning style... -0.03: 28/Jun/2022 Tidied up code. \ No newline at end of file +0.03: 28/Jun/2022 Tidied up code. From 579e57f82e042f6af4bca47c9b5e6f9e4ef6acc5 Mon Sep 17 00:00:00 2001 From: Marco Heiming Date: Tue, 28 Jun 2022 08:41:12 +0200 Subject: [PATCH 245/251] Do not show widget at wrong position Better readability of IF statement --- apps/widbaroalarm/widget.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/widbaroalarm/widget.js b/apps/widbaroalarm/widget.js index 229bac721..2febd1eb2 100644 --- a/apps/widbaroalarm/widget.js +++ b/apps/widbaroalarm/widget.js @@ -73,7 +73,7 @@ function showAlarm(body, key, type) { */ function doWeNeedToAlarm(key) { const tsNow = Math.round(Date.now() / 1000); // seconds - return setting(key) == undefined || setting(key) == 0 || setting(key) < tsNow; + return setting(key) == undefined || setting(key) == 0 || tsNow > setting(key); } function isValidPressureValue(pressure) { @@ -262,7 +262,7 @@ function draw() { } g.reset(); - if (this.x == undefined) + if (this.x == undefined || this.y != 0) return; // widget not yet there g.clearRect(this.x, this.y, this.x + this.width - 1, this.y + 23); From a7e99ede91880a97ee92bb37d7914e87cb71e1d1 Mon Sep 17 00:00:00 2001 From: David Peer Date: Tue, 28 Jun 2022 09:53:59 +0200 Subject: [PATCH 246/251] Update 0.03 - Show storage stats for free, used and trash --- apps/info/ChangeLog | 3 ++- apps/info/info.app.js | 17 +++++++++++++---- apps/info/metadata.json | 5 +++-- apps/info/screenshot_1.png | Bin 3399 -> 3589 bytes apps/info/screenshot_2.png | Bin 3825 -> 3903 bytes apps/info/screenshot_3.png | Bin 3620 -> 3236 bytes apps/info/screenshot_4.png | Bin 0 -> 3334 bytes 7 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 apps/info/screenshot_4.png diff --git a/apps/info/ChangeLog b/apps/info/ChangeLog index 400e7a119..093dd4606 100644 --- a/apps/info/ChangeLog +++ b/apps/info/ChangeLog @@ -1,2 +1,3 @@ 0.01: Release -0.02: Recfactoring and show weather data. \ No newline at end of file +0.02: Recfactoring and show weather data +0.03: Show sizes for used, free and trash through storage.getStats \ No newline at end of file diff --git a/apps/info/info.app.js b/apps/info/info.app.js index 9de80affc..ade3f3ebb 100644 --- a/apps/info/info.app.js +++ b/apps/info/info.app.js @@ -32,13 +32,22 @@ var screens = [ name: "Software", items: [ {name: "Firmw.", fun: () => ENV.VERSION}, + {name: "Git", fun: () => ENV.GIT_COMMIT}, {name: "Boot.", fun: () => getVersion("boot.info")}, {name: "Settings.", fun: () => getVersion("setting.info")}, - {name: "Storage.", fun: () => ""}, - {name: " Total", fun: () => ENV.STORAGE>>10}, - {name: " Free", fun: () => require("Storage").getFree()>>10}, ] - } + }, + { + name: "Storage [kB]", + items: [ + {name: "Total", fun: () => storage.getStats().totalBytes>>10}, + {name: "Free", fun: () => storage.getStats().freeBytes>>10}, + {name: "Trash", fun: () => storage.getStats().trashBytes>>10}, + {name: "", fun: () => ""}, + {name: "#File", fun: () => storage.getStats().fileCount}, + {name: "#Trash", fun: () => storage.getStats().trashCount}, + ] + }, ]; diff --git a/apps/info/metadata.json b/apps/info/metadata.json index 97aeb687a..ac56cd5c3 100644 --- a/apps/info/metadata.json +++ b/apps/info/metadata.json @@ -1,7 +1,7 @@ { "id": "info", "name": "Info", - "version": "0.02", + "version": "0.03", "description": "An application that displays information such as battery level, steps etc.", "icon": "info.png", "type": "app", @@ -11,7 +11,8 @@ "screenshots": [ {"url":"screenshot_1.png"}, {"url":"screenshot_2.png"}, - {"url":"screenshot_3.png"}], + {"url":"screenshot_3.png"}, + {"url":"screenshot_4.png"}], "storage": [ {"name":"info.app.js","url":"info.app.js"}, {"name":"info.img","url":"info.icon.js","evaluate":true} diff --git a/apps/info/screenshot_1.png b/apps/info/screenshot_1.png index 25f5b0a8bea17a3edd50da81e9196af01a22756b..6661c122c698bd35591f64cbd078c098e4b55ff1 100644 GIT binary patch literal 3589 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 literal 3399 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 BcGmy^ diff --git a/apps/info/screenshot_2.png b/apps/info/screenshot_2.png index 517a83299fe937020cdbd4e427cc4e7de98ae6e0..3d91fcabe9564e39488a1b88ef3b55d387199aca 100644 GIT binary patch literal 3903 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 literal 3825 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 C7%aU2 diff --git a/apps/info/screenshot_3.png b/apps/info/screenshot_3.png index 6802495f5edb75442a3b7e397ddc19bfe8a4710a..86bbb67cfe08f568866c1e352a3dc285f13d50fd 100644 GIT binary patch literal 3236 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 literal 3620 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 Qdiy{&mUb467rj&d5BxC2SO5S3 diff --git a/apps/info/screenshot_4.png b/apps/info/screenshot_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b8b59b1efa0310fc12ff47493d0bc44293afc25c GIT binary patch literal 3334 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 literal 0 HcmV?d00001 From 81aac3b16422f1cfbfe5c4a4ce5e7f23fba74c7b Mon Sep 17 00:00:00 2001 From: David Peer Date: Tue, 28 Jun 2022 10:08:52 +0200 Subject: [PATCH 247/251] Performance improvements BW clock. --- apps/bwclk/ChangeLog | 3 ++- apps/bwclk/app.js | 36 +++++++++++++++++++----------------- apps/bwclk/metadata.json | 2 +- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/apps/bwclk/ChangeLog b/apps/bwclk/ChangeLog index f9bc5e65a..ef4edcff0 100644 --- a/apps/bwclk/ChangeLog +++ b/apps/bwclk/ChangeLog @@ -7,4 +7,5 @@ 0.07: Improved positioning. 0.08: Select the color of widgets correctly. Additional settings to hide colon. 0.09: Larger font size if colon is hidden to improve readability further. -0.10: HomeAssistant integration if HomeAssistant is installed. \ No newline at end of file +0.10: HomeAssistant integration if HomeAssistant is installed. +0.11: Performance improvements. \ No newline at end of file diff --git a/apps/bwclk/app.js b/apps/bwclk/app.js index 4b7deb21e..804c79e4a 100644 --- a/apps/bwclk/app.js +++ b/apps/bwclk/app.js @@ -63,12 +63,11 @@ Graphics.prototype.setMediumFont = function(scale) { Graphics.prototype.setSmallFont = function(scale) { // Actual height 28 (27 - 0) this.setFontCustom( - E.toString(require('heatshrink').decompress(atob('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'))), + atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/+MB//5wH//DAAAAAAAAAAAAAAAAAAAB8AAAHwAAAfAAAAAAAAAAAAAfAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAACDAAAYMAABgwAAGDPAAYP8ABv/AAH/gAH/sAB/gwAHmDBAAYN8ABh/wAH/4AB/8AB/8wAH+DAAcYMAABgwAAGDAAAYAAABgAAAAAAAAAAAAAAAAACAMAB/A8AP8B4A44DgHBgHAcHAcPgMA++AwD74DgPBwOBwHAYHAPBw4AeD/gA4H8AAgPAAAAAAAAAAAfgAAD/AHAcOA8Bg4HgGBg8AYGHgBw48ADnHgAP48AAPHgAAA8AAAHjAAA8/AAHn+AA84cAHjAwA4MDAHAwMA4DhwHAH+AIAPwAAAeAAAAAAAAAAAAA8AAcP8AH9/4A//DgHD4HAcHgcBgPAwGAcDAYA4MBwBxwHADnAOAH4AYD/gAAP8AAA/4AAABwAAACAAAAAB8AAAHwAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gAH//wD+AP4fAAH3wAAHcAAAEgAAAAAAAAAAAAAgAAAHAAABfAAAcfAAHwfwH8Af//AAP/gAAAAAAAAAAAAAAAAAAAAAAAAcAAAAzAAADeAAAPwAAH8AAAf4AAAPwAAAzAAAHAAAAIAAAAAAAAAAAAAAMAAAAwAAADAAAAMAAAAwAAADAAAH/8AAf/wAADAAAAMAAAAwAAADAAAAMAAAAwAAAAAAAAAAAAAAHIAAAdgAAB+AAAAAAAAAAAAAAAAAAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAAAAAAAAAAABwAAAHAAAAcAAAAAAAAAAAAAAAAAAAAAAPAAAP8AAP/AAP/AAP/AAB/AAAHgAAAAAAAAAAAAAAAAAAAAAAP/+AB//8APAB4A4ADgHAAHAYAAMBgAAwGAADAcAAcBwABwDwAeAH//wAP/+AAAAAAAAAAAAAAAAgAAAHAAAA4AAAHAAAAf//8B///wH///AAAAAAAAAAAAAAAAAAAACAAwA8AHAHwA8A4AHwHAA7AcAHMBgA8wGAHjAcA8MBwHgwDg8DAP/gMAP8AwAPADAAAAAAAAAAAAAYAYABwBgAHgGBgHAYOAcBh4AwGPgDAZ2AMBuYBwHxwOAeD/4BwH/AGAHwAAAAAAAAAAAABwAAAfAAAH8AAB+wAA/jAAPwMAD8AwAfADABwAMAAAAwAAD/8AAP/wAAAwAAADAAAAAAAAAAAAAAAAAAEAH/w4Af/D4B8cDgGDgHAYMAcBgwAwGDADAYOAcBg4BwGBwOAYH/wBgH+AAAPgAAAAAAAAAAAAAAAB//AAf//ADw8+AOHA4Bw4BwHDAHAYMAMBgwAwHDgHAcOAcA4cDgDg/8AAB/gAAB4AAAAAAAAAABgAAAGAAAAYAAMBgADwGAB/AYAfgBgP4AGH8AAZ/AAB/gAAH4AAAcAAAAAAAAAAAAAAAEAAPD+AD/f8AP/g4Bw8BwHDwHAYGAMBgYAwHBgDAcPAcA5+DgD//+AH5/wAAB8AAAAAAAAAAAAAAAA/gAAH/AwA8eDgDAcHAcBwcBgDAwGAMDAYAwMBwHBwHAYHAODh4Af//AA//4AAf8AAAAAAAAAAAAAAAAAAAAABwcAAHBwAAYDAAAAAAAAAAAAAAAAAAAAAAAAADgByAOAH4AwAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAB4AAAPwAABzgAAOHAABwOAAOAcAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAIAA4BwABwOAADhwAAHOAAAPwAAAeAAAAwAAAAAAAAAAAAAAAAAAAAAAAAABgAAAeAAAD4AAAcAAABwAAAGAPnAYB+cBgPAAHA4AAePAAA/4AAB/AAAAAAAAAAAAAAAAAAAAAAAH8AAD/8AAfj4ADgBwAcADgDgAHAMD4MBwfw4HDjhgYMGGBgwYYGDBhgYOOGBw/w4DD/jgMAOMA4AYABwBgADwOAAH/wAAH+AAAAAAAAAAAAAAEAAADwAAB/AAA/wAAf4AAP9gAH+GAB/AYAHgBgAfAGAB/gYAA/xgAAf+AAAP8AAAH+AAAD8AAABwAAAAAAAAAAAAAAH///Af//8BgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwHBwHAePgcA//DwB/P+AAgfwAAAYAAAAAAA/+AAH/8AB+D8APAB4A4ADgHAAHAcAAcBgAAwGAADAYAAMBgAAwHAAHAcAAcA4ADgDwAeAHwHwAPAeAAMBgAAAAAAAAAAAAAAAf//8B///wGAADAYAAMBgAAwGAADAYAAMBgAAwGAADAcAAcBwABwDgAOAHgDwAP/+AAf/wAAP4AAAAAAAAAAAAAAAB///wH///AYDAMBgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAwDAYAAMBgAAwAAAAAAAAAAAAAAH///Af//8BgGAAGAYAAYBgABgGAAGAYAAYBgABgGAAGAYAAYAAABgAAAAAAAAA/8AAH/8AB+D8APABwA4ADgHAAHAcAAcBgAAwGAADAYAAMBgAAwHAYHAcBgcA4GDgDwYeAHh/wAGH8AAAfAAAAAAAAAAAAAAAAf//8B///wAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAB///wH///AAAAAAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAAABgAAAHgAAAOAAAAcAAAAwAAADAAAAMAAABwH//+Af//wB//+AAAAAAAAAAAAAAAAAAAAf//8B///wAAwAAAHgAAA/AAAHOAAA4eAAHA8AA4B4AHADwB4AHgHAAPAYAAcBAAAQAAAAAAAAAAAAAAH///Af//8B///wAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAAAAAAAAB///wH///APwAAAPwAAAPwAAAHwAAAH4AAAH4AAAH4AAADwAAA/AAAPwAAD8AAA/AAAPgAAH4AAB+AAAf//8B///wH///AAAAAAAAAAAAAAAAAAAB///wH///AfAAAAeAAAA+AAAA+AAAA8AAAB8AAAB4AAAD4AAADwAAAHwAAAHgH///Af//8AAAAAAAAAAAAAAAD/4AAf/wAH4PwA8AHgDgAOAcAAcBwABwGAADAYAAMBgAAwGAADAcAAcBwABwDgAOAPAB4AfAfAA//4AA/+AAAfAAAAAAAAAAAB///wH///AYAwABgDAAGAMAAYAwABgDAAGAMAAYAwABwHAAHAcAAPHgAAf8AAA/gAAAAAAAAAAAAP/gAB//AAfg/ADwAeAOAA4BwABwHAAHAYAAMBgAAwGAADAYAAMBwAJwHAB3AOAD4A8AHgB8B+AD//8AD/4wAB8AAAAAAAAAAAH///Af//8BgDAAGAMAAYAwABgDAAGAMAAYAwABgDgAHAfgAcB/gA8efgB/wfAD+AcAAAAQAAAAAAAAAACAMAB+A8AP8D4A44DgHBgHAcHAcBgcAwGAwDAYDgMBwOAwHAYHAOBwcA8HjgB4P8ADgfgAAAYAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAf//8B///wH///AYAAABgAAAGAAAAYAAABgAAAGAAAAYAAAAAAAAAAAAAf//AB//+AAAA8AAAA4AAABwAAAHAAAAMAAAAwAAADAAAAcAAABwAAAOAAAB4B///AH//4Af/+AAAAAAAAAAAYAAAB8AAAH+AAAD/AAAB/gAAA/wAAAf4AAAPwAAAPAAAD8AAB/gAA/wAAf4AAP8AAH+AAAfAAABgAAAEAAAAfAAAB/gAAB/4AAAf8AAAH/AAAD/AAAB8AAB/wAB/4AA/4AA/4AAH8AAAfgAAB/4AAAf8AAAH/AAAD/wAAA/AAAH8AAH/gAD/gAD/wAB/wAAHwAAAYAAAAAAAQGAADAcAA8B8AHgB8B8AB4PAAD74AAD+AAAHwAAA/gAAPvgAB4PAAfAfAHwAeAcAA8BgAAwAAABAQAAABwAAAHwAAAHwAAAPwAAAPgAAAPgAAAP/wAB//AAfAAAH4AAA+AAAPgAAB4AAAGAAAAQAAAAAAAAGAABAYAAcBgADwGAA/AYAPsBgB8wGAfDAYHwMBg+AwGPgDAb4AMB+AAwHwADAcAAMBAAAwAAAAAAAAAAAAAAAAAAAAAAAD/////////wAAADAAAAMAAAAAAAAAAAAAAAAAAAAAAB4AAAH+AAAH/gAAB/4AAAf+AAAH8AAADwAAAAAAAAAAAAAAAAAAAwAAADAAAAMAAAA//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADgAAAcAAADgAAAcAAADgAAAcAAAA4AAABwAAADgAAAHAAAAOAAAAQAAAAAAAAAAAAAAAAAAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAADj+AAee8ADxxwAOGDAAwYMADDgwAMODAAwwcADjDgAHt8AAf/8AAf/wAAAAAAAAAAAAAAAAAAAf//8B///wAHgeAAYAYADgBwAMADAAwAMADAAwAOAHAA4AcAB4HgAD/8AAH/gAADwAAAAAAAAAAAAH8AAB/4AAP/4ABwDgAOAHAA4AcADAAwAMADAAwAMADgBwAPAPAAeB4AA4HAABAAAAAAAAAP8AAB/4AAf/4ABwDgAOAHAA4AMADAAwAMADAAwAMADgBwAHAOAf//4B///wH///AAAAAAAAAAAAAAAAB+AAAf+AAD/8AAcw4ADjBwAOMHAAwwMADDAwAMMDAA4wcADjDwAHseAAPxwAAfGAAAAAAAAAAADAAAAMAAAH//8A///wH///AYwAABjAAAGMAAAYwAAAAAAAAB/gAAP/AwD//HgOAcOBwA4cHABhwYAGDBgAYMGABhwcAOHA4Bw8D///gf//8B///AAAAAAAAAAAAAAAAAAAH///Af//8AB8AAAGAAAA4AAADAAAAMAAAAwAAADgAAAPAAAAfgAAA//wAA//AAAAAAAAAAAAAAAAAAABz//wHP//AY//8AAAAAAAAAAAAAAMAAAAwAAAP5////n///gAAAAAAAAAAAAAAAAAAf//8B///wAAGAAAA8AAAH4AAB5wAAPDgAB4HAAPAOAA4AcACAAwAAABAAAAAAAAAAH///Af//8B///wAAAAAAAAAAAAAAAAAAAA//8AD//wAHgAAA4AAADAAAAMAAAAwAAADgAAAPAAAAf/8AA//wAHAAAA4AAADAAAAMAAAAwAAADgAAAPAAAAf/8AA//wAAAAAAAAAAAAAAAAAAAA//8AD//wAHwAAAYAAADgAAAMAAAAwAAADAAAAOAAAA8AAAB+AAAD//AAD/8AAAAAAAAAAAAAAAAH4AAB/4AAP/wABwDgAOAHAA4AcADAAwAMADAAwAMADgBwAOAHAAeB4AA//AAB/4AAA8AAAAAAAAAAAAAAAAH///wf///A8DwADADAAcAOABgAYAGABgAYAGABwA4AHADgAPA8AAf/gAA/8AAAeAAAAAAAAAAAAB/gAAP/AAD//AAOAcABwA4AHABgAYAGABgAYAGABgAcAOAA4BwAD///wf///B///8AAAAAAAAAAAAAAAAAAAP//AA//8AB8AAAOAAAA4AAADAAAAMAAAAwAAAAAAAABgYAAPh4AB/HgAOcHAAwwcADDgwAMGDAAwYMADhwwAOHHAAeP4AA4fgABA4AAAAAADAAAAMAAAAwAAA//+AD//+AP//8ADABwAMADAAwAMADAAwAAAAAAAAAAD/gAAP/4AA//4AAAHgAAAHAAAAcAAAAwAAADAAAAMAAABwAAAOAA//wAD//wAP//AAAAAAAAAAAIAAAA4AAAD8AAAD+AAAB/AAAA/gAAAfAAAB8AAA/wAAf4AAP8AAD+AAAPAAAAgAAACAAAAPAAAA/wAAA/4AAAP8AAAH8AAAHwAAH+AAD/AAD/AAAPgAAA/gAAA/wAAAf4AAAH8AAAHwAAH/AAD/gAD/gAAPwAAAwAAAAAAQAMADAA4AcAB4HgADw8AAHvgAAH4AAAPAAAD+AAAeeAADw8AA8A8ADgBwAMADAAAAAAEAAAAcAAAB+AAAB+AAAB/ADAA/h8AAf/wAAf4AAH8AAD+AAB/AAA/wAAH4AAAcAAAAAAAAAAAQAMADAAwA8ADAHwAMA/AAwPMADB4wAMODAAzwMADeAwAPgDAA8AMADgAwAIAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAP///9//////8P/wAAADAAAAMAAAAAAAAAAAAAAAAAAf//8B///wH///AAAAAAAAAAAAAAAwAAADAAAAOAAAA//5/9////wAH4AAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAB4AAAPgAAA4AAABwAAAHAAAAcAAAA4AAADgAAAOAAAB4AAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAGAAABwAAAOAAABwAAAHAAAAcAAAA4AAABwAAABgAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAOAB4B4ADwPAAHh4AAPPAAAf4AAA/AAAB4AAAPwAAB/gAAPPAAB4eAAPA8AB4B4AHADgAIAEAAAAAAADAAAAMAAAAwAAADAAAAMAAAAwAAHDDgA8MPADww8AGDBgAAMAAAAwAAADAAAAMAAAAwAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH//gOf/+Ax//wAAAAAAAAAAAAAAAAAAAD+AAA/+AAH/8AA8A4ADgBwAMAHAHwAPgfAA+AcADAAwAcADgDgAHgeAAOBwAAQAAAAAAAAAwDAADAMAAMBwA///AH//8A///wHAwDAcDAMBgMAwGAwDAcDAMA4AAwB4ADADAAMAAAAAAAAAADDhgAe/vAA//4AB4PAAGAMAA4A4ADABgAMAGAAwAYADABgAOAOAAcBwAB4PAAP/+AB7+8ADBBgAAAAAEAAAAcAAAB8BmAB8GYAD8ZgAD9mAAD+YAAD/8AAf/wAH+YAA+ZgAPhmAD4GYAeAAABgAAAEAAAAAAAAAAAAAH/x/8f/H/x/8f/AAAAAAAAAAAAAAAAHAAB9+HAP/8eBz5w8GHDBwYcODBhwYMGDBgwcOHHA848cDx//gDH98AAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAP/4AB8HwAPAHgB4AOAHH8cA4/44DnBzgM4DuAzAGYDMAZgMwBmA7gM4DnBzgGMGcAcABwA4AOAB4DwAD/+AAH/wAAD4AAAAAAAE4AAA/wAADbAAANsAAA2wAAD/AAAH8AAAAAAAAAAAAAAAAAAIAAADwAAAfgAADjgAA8HAADGMAAA8AAAH8AAB44AAOBwAAwDAAAAAAAAAAAAAAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAfgAAB+AAAAAAAAAAAAAAAAAAAAA/AAAP/AABwOAAGAYAAz8wADPzAAMkMAAyYwADP7AAOYcAAcDgAA88AAB/gAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAP8AABw4AAGBgAAYGAABgYAAHDgAAOcAAA/wAAA8AAAAAAAAAAAAAAAAAADBgAAMGAAAwYAADBgAAMGAAAwYAA/5gAD/mAAP+YAADBgAAMGAAAwYAADBgAAMGAAAAAAAAAAAAAAAAwMAAHBwAA4HAADA8AAMGwAAw7AADnMAAH4wAAPDAAAAAAAAAAAAgEAADAYAAMwwAA3DAADcMAAPwwAA5/AADD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///8H///wAB8AAAA4AAADgAAAGAAAAYAAABgAAAOAAABwAAAeAAf/+AB//4AAAAAAAAAAAAAAAAAAAA/gAAH/AAA/+AAH/8AAf/wAB//AAH/8AAf///x////H///8AAAAB////H///8f///wAAAAAAAAAAAAAAACAAAAcAAABwAAAGAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMwAAB7AAAH8AAADgAAAAAAAAAAAAAAAAAACAAAAYAAADAAAAP/wAA//AAAAAAAAAAAAAAAAAAAAAAPAAAD+AAAMMAAAwwAADDAAAOcAAAfgAAA8AAAAAAAAAAAAAAAAADAMAAOBwAAeOAAAfwAAA8AAAxjAADwcAADngAAH4AAAPAAAAIAAAAAAAAAAAAAAAAQAAADAAAAYAAAB//AgH/8PAAAB4AAAOAAADwAAAeAAADgAAA8AAAHgAAA4AAAPAAABwBwAeAfADwPsAcD4wBgeDAABgMAAAP8AAA/wAAAMAAAAAAAAAAAAAAAAAAAAQAAADAAAAcAAAB//AgH/8PAAAB4AAAOAAADwAAAeAAADgAAA8AAAHgAAA4AAAPAAABwAAAeGAwDw4HAcHA8BgYHwABgbAAGDMAAcYwAA/DAAB4MAAAAAAAAAAIBgABgHAAGMMAAZwYABvBgAH8ODAefwcBw+HgAAA8AAAHAAAB4AAAPAAADwAAAeAAADgAAA8AAAHgHAA4D8APA+wB4PjACB4MAAGAwAAA/wAAB/AAAAwAAAAAAAAAAAAAPAAAD+AAAf8AADg4AAcDgOPgGA58AYDngBgAAAOAAAB4AAAfAAAB4AAAAAAAAAAAABAAAA8AAAfwAAP8AAH+AAD/YAB/hgAfwGAB4AYAHwBgAf4GAAP8YAAH/gAAD/AAAB/gAAA/AAAAcAAAAAAAABAAAA8AAAfwAAP8AAH+AAD/YAB/hgAfwGAB4AYAHwBgAf4GAAP8YAAH/gAAD/AAAB/gAAA/AAAAcAAAAAAAABAAAA8AAAfwAAP8AAH+AAD/YAB/hgAfwGAB4AYAHwBgAf4GAAP8YAAH/gAAD/AAAB/gAAA/AAAAcAAAAAAAABAAAA8AAAfwAAP8AAH+AAD/YAB/hgAfwGAB4AYAHwBgAf4GAAP8YAAH/gAAD/AAAB/gAAA/AAAAcAAAAAAAABAAAA8AAAfwAAP8AAH+AAD/YAB/hgAfwGAB4AYAHwBgAf4GAAP8YAAH/gAAD/AAAB/gAAA/AAAAcAAAAAAAAAAAAAAcAAAPwAAH+AAD/AAB/sHw/wwfP4DDG8AMMb4AwfP8DA4H+MAAD/wAAB/gAAA/wAAAfAAAAMAAAAAAABAAAA8AAAfwAAP8AAH+AAD/YAB/hgAfwGAB4AYAGABgAYAGAB///wH///Af//8BgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAwDAYDAMBgAAwGAADAAAAAAAAAAAf/AAD/+AA/B+AHgA8AcABwDgADgOAAOAwAAYPAAB88AAH7wAAZ/gADjOAAOAcABwB4APAD4D4AHgPAAGAwAAAAAAAAAAAAAAAH///Af//8BgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAwDAYDAMBgAAwGAADAAAAAAAAAAAAAAAf//8B///wGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAADAYAAMAAAAAAAAAAAAAAB///wH///AYDAMBgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAwDAYAAMBgAAwAAAAAAAAAAAAAAH///Af//8BgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAwDAYDAMBgAAwGAADAAAAAAAAAAAAAAAf//8B///wH///AAAAAAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAAAAAAAAAAH///Af//8B///wAAAAAAAAAAAAAAAAAAAf//8B///wH///AAAAAAAAAAAAYAAABgAB///wH///AYBgMBgGAwGAYDAYBgMBgGAwGAADAYAAMBwABwHAAHAPAB4AfAfAA//4AA/+AAAfAAAAAAAAAAAAAAAAH///Af//8B8AAAB4AAAD4AAAD4AAADwAAAHwAAAHgAAAPgAAAPAAAAfAAAAeAf//8B///wAAAAAAAAAAAAAAAP/gAB//AAfg/ADwAeAOAA4BwABwHAAHAYAAMBgAAwGAADAYAAMBwABwHAAHAOAA4A8AHgB8B8AD//gAD/4AAB8AAAAAAAD/4AAf/wAH4PwA8AHgDgAOAcAAcBwABwGAADAYAAMBgAAwGAADAcAAcBwABwDgAOAPAB4AfAfAA//4AA/+AAAfAAAAAAAA/+AAH/8AB+D8APAB4A4ADgHAAHAcAAcBgAAwGAADAYAAMBgAAwHAAHAcAAcA4ADgDwAeAHwHwAP/+AAP/gAAHwAAAAAAAP/gAB//AAfg/ADwAeAOAA4BwABwHAAHAYAAMBgAAwGAADAYAAMBwABwHAAHAOAA4A8AHgB8B8AD//gAD/4AAB8AAAAAAAD/4AAf/wAH4PwA8AHgDgAOAcAAcBwABwGAADAYAAMBgAAwGAADAcAAcBwABwDgAOAPAB4AfAfAA//4AA/+AAAfAAAAAAAAAAAADgYAAHHgAAO8AAAfgAAA8AAAHwAAA/gAAHHAAA4OAABAQAAAAAAAAAAAAAAAAP/jAB//8Afg/gDwA+AOAH4BwA9wHAHnAYA8MBgHAwGA4DAYHAMBw4BwHPAHAP4A4A/AHgB8B8AP//gBz/4ACB8AAAAAAAAAAAH//wAf//gAAAPAAAAOAAAAcAAABwAAADAAAAMAAAAwAAAHAAAAcAAADgAAAeAf//wB//+AH//gAAAAAAAAAAAAAAAAAAAB//8AH//4AAADwAAADgAAAHAAAAcAAAAwAAADAAAAMAAABwAAAHAAAA4AAAHgH//8Af//gB//4AAAAAAAAAAAAAAAAAAAAf//AB//+AAAA8AAAA4AAABwAAAHAAAAMAAAAwAAADAAAAcAAABwAAAOAAAB4B///AH//4Af/+AAAAAAAAAAAAAAAAAAAAH//wAf//gAAAPAAAAOAAAAcAAABwAAADAAAAMAAAAwAAAHAAAAcAAADgAAAeAf//wB//+AH//gAAAAAAAAAAEAAAAcAAAB8AAAB8AAAD8AAAD4AAAD4AAAD/8AAf/wAHwAAB+AAAPgAAD4AAAeAAABgAAAEAAAAAAAAAAAAAH///Af//8AGAMAAYAwABgDAAGAMAAYAwABgDAAGAMAAcBwAA4OAAD/4AAH/AAAHwAAAAAAAAAAAAAAAAf//wD///APAAABwAAAGAAHAYDAMBgcAwHBwDAePgcA/+BwB/ceAAg/4AAB+AAAAAAAAAAAAAAAAAA+AAHH8AA894AHjjggcMGDhgwYPmHBgGYcGABhg4AHGHAAPb4AA//4AA//gAAAAAAAAAAAAAAAAD4AAcfwADz3gAeOOABwwYAGDBgGYcGD5hwYOGGDggcYcAA9vgAD//gAD/+AAAAAAAAAAAAAAAAAPgABx/AAPPeAZ444DnDBgcYMGDhhwYOGHBgcYYOA5xhwBj2+AAP/+AAP/4AAAAAAAAAAAAAAAAB8AAOP4AB57wHPHHAY4YMBjBgwGMODAcw4MAzDBwDOMOAce3wBB//wAB//AAAAAAAAAAAAAAAAAHwAA4/gAHnvAY8ccBzhgwGMGDAAw4MADDgwGMMHAc4w4Bx7fAAH//AAH/8AAAAAAAAAAAAAAAAAHwAA4/gAHnvAA8ccHzhgw/MGDDGw4MMbDgw/MMHB44w4AB7fAAH//AAH/8AAAAAAAAAAAAAAAAB8AAOP4AB47wAHHHAA4YMADBgwAMGDAAwYcADBhwAOGOAAebwAA/+AAD/8AAfb4ABxjgAOGHAAwYMADBgwAMGDAA4YcADhhwAHmOAAP5wAAPmAAAAAAAAAAAAP4AAD/wAAf/wADgHAAcAOABwA4MGAB8wYAH/BgAZ4HADgAeAeAA8DwABwOAACAAAAAAAAAD8AAA/8AAH/4AA5hwAHGDgwcYODxhgYDmGBgAYYGABxg4AHGHgAPY8AAfjgAA+MAAAAAAAAAAAAPwAAD/wAAf/gADmHAAcYOABxg4AGGBgOYYGDxhgYMHGDgAcYeAA9jwAB+OAAD4wAAAAAAAAAAAA/AAAP/AAB/+ACOYcA5xg4HHGDg4YYGDhhgYHGGBgOcYOAZxh4AD2PAAH44AAPjAAAAAAAAAAAAH4AAB/4AAP/wBhzDgHOMHAY4wcADDAwAMMDAAwwMBzjBwHOMPAAex4AA/HAAB8YAAAAAAAAAAOAAAA+f/+AZ//4AH//gAAAAAAAAAAAAAAAAAAAJ//4Hn//g+f/+DAAAAAAAAAMAAABwAAAOP//Aw//8Dj//wHAAAAMAAABwAAAGAAAAA//8AD//wAP//AcAAABwAAAAAAAAAA/gAAP/gAB+/AAHAcAA4A4DDABgNMAGA+wAYDzABgPOAOB+YAwG/4PAA//4AA//AAAAAAAAAAAAAAAAP//AA//8Bx8AAHGAAAY4AABjAAAHMAAAMwAAAzgAAHPAAAYfgAAA//wAA//AAAAAAAAAAAAAAAAA/AAAP/AAB/+AAOAcABwA4OHADg+YAGA5gAYAGABgAcAOABwA4ADwPAAH/4AAP/AAAHgAAAAAAAAAAAAPwAAD/wAAf/gADgHAAcAOABwA4BGABgeYAGDxgAYMHADgAcAOAA8DwAB/+AAD/wAAB4AAAAAAAAAAAAD8AAA/8AAH/4AI4BwDnADgccAODhgAYOGABgcYAGA5wA4BnADgAPA8AAf/gAA/8AAAeAAAAAAAAAAAAB+AAAf+AAD/8AccA4BzgBwGOAHAYwAMBzAAwDMADAM4AcBzgBwGHgeAAP/wAAf+AAAPAAAAAAAAAAAAAfgAAH/gAA//AGHAOAc4AcBjgBwAMADAAwAMADAAwHOAHAc4AcAB4HgAD/8AAH/gAADwAAAAAAAAAAAAMAAAAwAAADAAAAMAAAAwAAADAAADtwAAO3AAADAAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAH5wAB//AAP/4ABwHgAOA/AA4PcADB4wAMODAAxwMADuBwAPwHAAfB4AB//AAP/4AAY8AAAAAAAAAAAAf8AAB//AAH//AAAA8AAAA4MAADg+AAGA4AAYAAABgAAAOAAABwAH/+AAf/+AB//4AAAAAAAAAAAAAAAH/AAAf/wAB//wAAAPAAAAOAAAA4BgABg+AAGDwAAYIAADgAAAcAB//gAH//gAf/+AAAAAAAAAAAAAAAB/wAAH/8AAf/8AIADwDgADgcAAODgAAYOAABgcAAGA4AA4BgAHAAf/4AB//4AH//gAAAAAAAAAAAAAAA/4AAD/+AAP/+AYAB4BwABwGAAHAAAAMAAAAwGAADAcAAcBwADgAP/8AA//8AD//wAAAAAAAAAABAAAAHAAAAfgAAAfgAAAfwAAAP4cIAH/zgAH++AB/DAA/gAAfwAAP8AAB+AAAHAAAAAAAAAAAAAAAAA/////////wPA8AAwAwAHADgAYAGABgAYAGABgAcAOABwA4ADwPAAH/4AAP/AAAHgAAAAAABAAAAHAAAAfgAAwfgADgfwA+AP4fAAH/8AAH+AAB/A4A/gDgfwAMP8AAB+AAAHAAAAAAAA=='), 32, - atob("BgkMGhEZEgYMDAwQCAwICxILEBAREBEOEREJCREVEQ8ZEhEUExAOFBQHDREPGBMUERQSEhEUERsREBIMCwwTEg4QERAREQoREQcHDgcYEREREQoPDBEPFg8PDwwIDBMcCgoAAAAAAAAAAAAAACERESEAAAAAAAAAAAAAAAAhIQAGCRAQEhAIDw8XCQ8RABIODRELCw4REwcLCQoPHBscDxISEhISEhoUEBAQEAcHBwcTExQUFBQUDhQUFBQUEBEREBAQEBAQGhARERERBwcHBxAREREREREPEREREREPEQ8="), + atob("BgkLGhAZEgYMDAwQBwwHCxELEA8REBEOEBEICREVEQ8ZEhEUExAOFBMHDREOGBMUERQSEREUERoREBELCwsTEg4QEQ8REAoREQcHDgcYEREREQoPCxEOFQ8PDwwHDBMcCgoAAAAAAAAAAAAAACERESEAAAAAAAAAAAAAAAAhIQAGCQ8QEhAHDw4WCQ8RABEODRELCw4REgYLCQoPGxobDxISEhISEhoUEBAQEAcHBwcTExQUFBQUDhQUFBQUEBEREBAQEBAQGg8QEBAQBwcHBxAREREREREPEREREREPEQ8="), 28+(scale<<8)+(1<<16) ); - return this; }; function imgLock(){ @@ -146,7 +145,7 @@ function imgWatch() { /* * INFO ENTRIES - * List of [Data, Icon, left/right, HomeAssistant Trigger] + * List of [Data, Icon, left/right, Function to execute] */ var infoArray = [ function(){ return [ null, null, "left", null ] }, @@ -165,7 +164,11 @@ try{ var triggers = require("ha.lib.js").getTriggers(); triggers.forEach(trigger => { infoArray.push(function(){ - return [trigger.display, trigger.getIcon(), "left", trigger.trigger] + return [trigger.display, trigger.getIcon(), "left", function(){ + var ha = require("ha.lib.js"); + ha.sendTrigger("TRIGGER_BW"); + ha.sendTrigger(trigger.trigger); + }] }); }) } catch(ex){ @@ -463,9 +466,9 @@ Bangle.on('charging',function(charging) { }); Bangle.on('touch', function(btn, e){ - var left = parseInt(g.getWidth() * 0.2); + var left = parseInt(g.getWidth() * 0.3); var right = g.getWidth() - left; - var upper = parseInt(g.getHeight() * 0.2); + var upper = parseInt(g.getHeight() * 0.3); var lower = g.getHeight() - upper; var is_left = e.x < left; @@ -501,20 +504,19 @@ Bangle.on('touch', function(btn, e){ if(is_center){ var infoEntry = getInfoEntry(); - var trigger = infoEntry[3]; - if(trigger != null){ - try{ - require("ha.lib.js").sendTrigger("TRIGGER_BW"); - Bangle.buzz(80, 0.6).then(()=>{ - require("ha.lib.js").sendTrigger(trigger); + var fun = infoEntry[3]; + if(fun != null){ + Bangle.buzz(80, 0.6).then(()=>{ + try{ + fun(); setTimeout(()=>{ Bangle.buzz(80, 0.6); }, 250); - }); - }catch(ex){ - print(ex); - // Without ha -> nop. + } catch(ex){ + // In case it fails, we simply ignore it. + } } + ); } } }); diff --git a/apps/bwclk/metadata.json b/apps/bwclk/metadata.json index 95fb7e608..834712743 100644 --- a/apps/bwclk/metadata.json +++ b/apps/bwclk/metadata.json @@ -1,7 +1,7 @@ { "id": "bwclk", "name": "BW Clock", - "version": "0.10", + "version": "0.11", "description": "BW Clock.", "readme": "README.md", "icon": "app.png", From 72870d6d6c7494f14876403b360e966151574c08 Mon Sep 17 00:00:00 2001 From: David Peer Date: Tue, 28 Jun 2022 10:10:46 +0200 Subject: [PATCH 248/251] Minor design changes --- apps/bwclk/app.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/bwclk/app.js b/apps/bwclk/app.js index 804c79e4a..4c4359a4f 100644 --- a/apps/bwclk/app.js +++ b/apps/bwclk/app.js @@ -63,11 +63,12 @@ Graphics.prototype.setMediumFont = function(scale) { Graphics.prototype.setSmallFont = function(scale) { // Actual height 28 (27 - 0) this.setFontCustom( - atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/+MB//5wH//DAAAAAAAAAAAAAAAAAAAB8AAAHwAAAfAAAAAAAAAAAAAfAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAACDAAAYMAABgwAAGDPAAYP8ABv/AAH/gAH/sAB/gwAHmDBAAYN8ABh/wAH/4AB/8AB/8wAH+DAAcYMAABgwAAGDAAAYAAABgAAAAAAAAAAAAAAAAACAMAB/A8AP8B4A44DgHBgHAcHAcPgMA++AwD74DgPBwOBwHAYHAPBw4AeD/gA4H8AAgPAAAAAAAAAAAfgAAD/AHAcOA8Bg4HgGBg8AYGHgBw48ADnHgAP48AAPHgAAA8AAAHjAAA8/AAHn+AA84cAHjAwA4MDAHAwMA4DhwHAH+AIAPwAAAeAAAAAAAAAAAAA8AAcP8AH9/4A//DgHD4HAcHgcBgPAwGAcDAYA4MBwBxwHADnAOAH4AYD/gAAP8AAA/4AAABwAAACAAAAAB8AAAHwAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/gAH//wD+AP4fAAH3wAAHcAAAEgAAAAAAAAAAAAAgAAAHAAABfAAAcfAAHwfwH8Af//AAP/gAAAAAAAAAAAAAAAAAAAAAAAAcAAAAzAAADeAAAPwAAH8AAAf4AAAPwAAAzAAAHAAAAIAAAAAAAAAAAAAAMAAAAwAAADAAAAMAAAAwAAADAAAH/8AAf/wAADAAAAMAAAAwAAADAAAAMAAAAwAAAAAAAAAAAAAAHIAAAdgAAB+AAAAAAAAAAAAAAAAAAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAAAAAAAAAAABwAAAHAAAAcAAAAAAAAAAAAAAAAAAAAAAPAAAP8AAP/AAP/AAP/AAB/AAAHgAAAAAAAAAAAAAAAAAAAAAAP/+AB//8APAB4A4ADgHAAHAYAAMBgAAwGAADAcAAcBwABwDwAeAH//wAP/+AAAAAAAAAAAAAAAAgAAAHAAAA4AAAHAAAAf//8B///wH///AAAAAAAAAAAAAAAAAAAACAAwA8AHAHwA8A4AHwHAA7AcAHMBgA8wGAHjAcA8MBwHgwDg8DAP/gMAP8AwAPADAAAAAAAAAAAAAYAYABwBgAHgGBgHAYOAcBh4AwGPgDAZ2AMBuYBwHxwOAeD/4BwH/AGAHwAAAAAAAAAAAABwAAAfAAAH8AAB+wAA/jAAPwMAD8AwAfADABwAMAAAAwAAD/8AAP/wAAAwAAADAAAAAAAAAAAAAAAAAAEAH/w4Af/D4B8cDgGDgHAYMAcBgwAwGDADAYOAcBg4BwGBwOAYH/wBgH+AAAPgAAAAAAAAAAAAAAAB//AAf//ADw8+AOHA4Bw4BwHDAHAYMAMBgwAwHDgHAcOAcA4cDgDg/8AAB/gAAB4AAAAAAAAAABgAAAGAAAAYAAMBgADwGAB/AYAfgBgP4AGH8AAZ/AAB/gAAH4AAAcAAAAAAAAAAAAAAAEAAPD+AD/f8AP/g4Bw8BwHDwHAYGAMBgYAwHBgDAcPAcA5+DgD//+AH5/wAAB8AAAAAAAAAAAAAAAA/gAAH/AwA8eDgDAcHAcBwcBgDAwGAMDAYAwMBwHBwHAYHAODh4Af//AA//4AAf8AAAAAAAAAAAAAAAAAAAAABwcAAHBwAAYDAAAAAAAAAAAAAAAAAAAAAAAAADgByAOAH4AwAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAB4AAAPwAABzgAAOHAABwOAAOAcAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAIAA4BwABwOAADhwAAHOAAAPwAAAeAAAAwAAAAAAAAAAAAAAAAAAAAAAAAABgAAAeAAAD4AAAcAAABwAAAGAPnAYB+cBgPAAHA4AAePAAA/4AAB/AAAAAAAAAAAAAAAAAAAAAAAH8AAD/8AAfj4ADgBwAcADgDgAHAMD4MBwfw4HDjhgYMGGBgwYYGDBhgYOOGBw/w4DD/jgMAOMA4AYABwBgADwOAAH/wAAH+AAAAAAAAAAAAAAEAAADwAAB/AAA/wAAf4AAP9gAH+GAB/AYAHgBgAfAGAB/gYAA/xgAAf+AAAP8AAAH+AAAD8AAABwAAAAAAAAAAAAAAH///Af//8BgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwHBwHAePgcA//DwB/P+AAgfwAAAYAAAAAAA/+AAH/8AB+D8APAB4A4ADgHAAHAcAAcBgAAwGAADAYAAMBgAAwHAAHAcAAcA4ADgDwAeAHwHwAPAeAAMBgAAAAAAAAAAAAAAAf//8B///wGAADAYAAMBgAAwGAADAYAAMBgAAwGAADAcAAcBwABwDgAOAHgDwAP/+AAf/wAAP4AAAAAAAAAAAAAAAB///wH///AYDAMBgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAwDAYAAMBgAAwAAAAAAAAAAAAAAH///Af//8BgGAAGAYAAYBgABgGAAGAYAAYBgABgGAAGAYAAYAAABgAAAAAAAAA/8AAH/8AB+D8APABwA4ADgHAAHAcAAcBgAAwGAADAYAAMBgAAwHAYHAcBgcA4GDgDwYeAHh/wAGH8AAAfAAAAAAAAAAAAAAAAf//8B///wAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAB///wH///AAAAAAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAAABgAAAHgAAAOAAAAcAAAAwAAADAAAAMAAABwH//+Af//wB//+AAAAAAAAAAAAAAAAAAAAf//8B///wAAwAAAHgAAA/AAAHOAAA4eAAHA8AA4B4AHADwB4AHgHAAPAYAAcBAAAQAAAAAAAAAAAAAAH///Af//8B///wAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAAAAAAAAB///wH///APwAAAPwAAAPwAAAHwAAAH4AAAH4AAAH4AAADwAAA/AAAPwAAD8AAA/AAAPgAAH4AAB+AAAf//8B///wH///AAAAAAAAAAAAAAAAAAAB///wH///AfAAAAeAAAA+AAAA+AAAA8AAAB8AAAB4AAAD4AAADwAAAHwAAAHgH///Af//8AAAAAAAAAAAAAAAD/4AAf/wAH4PwA8AHgDgAOAcAAcBwABwGAADAYAAMBgAAwGAADAcAAcBwABwDgAOAPAB4AfAfAA//4AA/+AAAfAAAAAAAAAAAB///wH///AYAwABgDAAGAMAAYAwABgDAAGAMAAYAwABwHAAHAcAAPHgAAf8AAA/gAAAAAAAAAAAAP/gAB//AAfg/ADwAeAOAA4BwABwHAAHAYAAMBgAAwGAADAYAAMBwAJwHAB3AOAD4A8AHgB8B+AD//8AD/4wAB8AAAAAAAAAAAH///Af//8BgDAAGAMAAYAwABgDAAGAMAAYAwABgDgAHAfgAcB/gA8efgB/wfAD+AcAAAAQAAAAAAAAAACAMAB+A8AP8D4A44DgHBgHAcHAcBgcAwGAwDAYDgMBwOAwHAYHAOBwcA8HjgB4P8ADgfgAAAYAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAf//8B///wH///AYAAABgAAAGAAAAYAAABgAAAGAAAAYAAAAAAAAAAAAAf//AB//+AAAA8AAAA4AAABwAAAHAAAAMAAAAwAAADAAAAcAAABwAAAOAAAB4B///AH//4Af/+AAAAAAAAAAAYAAAB8AAAH+AAAD/AAAB/gAAA/wAAAf4AAAPwAAAPAAAD8AAB/gAA/wAAf4AAP8AAH+AAAfAAABgAAAEAAAAfAAAB/gAAB/4AAAf8AAAH/AAAD/AAAB8AAB/wAB/4AA/4AA/4AAH8AAAfgAAB/4AAAf8AAAH/AAAD/wAAA/AAAH8AAH/gAD/gAD/wAB/wAAHwAAAYAAAAAAAQGAADAcAA8B8AHgB8B8AB4PAAD74AAD+AAAHwAAA/gAAPvgAB4PAAfAfAHwAeAcAA8BgAAwAAABAQAAABwAAAHwAAAHwAAAPwAAAPgAAAPgAAAP/wAB//AAfAAAH4AAA+AAAPgAAB4AAAGAAAAQAAAAAAAAGAABAYAAcBgADwGAA/AYAPsBgB8wGAfDAYHwMBg+AwGPgDAb4AMB+AAwHwADAcAAMBAAAwAAAAAAAAAAAAAAAAAAAAAAAD/////////wAAADAAAAMAAAAAAAAAAAAAAAAAAAAAAB4AAAH+AAAH/gAAB/4AAAf+AAAH8AAADwAAAAAAAAAAAAAAAAAAAwAAADAAAAMAAAA//////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADgAAAcAAADgAAAcAAADgAAAcAAAA4AAABwAAADgAAAHAAAAOAAAAQAAAAAAAAAAAAAAAAAAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAADj+AAee8ADxxwAOGDAAwYMADDgwAMODAAwwcADjDgAHt8AAf/8AAf/wAAAAAAAAAAAAAAAAAAAf//8B///wAHgeAAYAYADgBwAMADAAwAMADAAwAOAHAA4AcAB4HgAD/8AAH/gAADwAAAAAAAAAAAAH8AAB/4AAP/4ABwDgAOAHAA4AcADAAwAMADAAwAMADgBwAPAPAAeB4AA4HAABAAAAAAAAAP8AAB/4AAf/4ABwDgAOAHAA4AMADAAwAMADAAwAMADgBwAHAOAf//4B///wH///AAAAAAAAAAAAAAAAB+AAAf+AAD/8AAcw4ADjBwAOMHAAwwMADDAwAMMDAA4wcADjDwAHseAAPxwAAfGAAAAAAAAAAADAAAAMAAAH//8A///wH///AYwAABjAAAGMAAAYwAAAAAAAAB/gAAP/AwD//HgOAcOBwA4cHABhwYAGDBgAYMGABhwcAOHA4Bw8D///gf//8B///AAAAAAAAAAAAAAAAAAAH///Af//8AB8AAAGAAAA4AAADAAAAMAAAAwAAADgAAAPAAAAfgAAA//wAA//AAAAAAAAAAAAAAAAAAABz//wHP//AY//8AAAAAAAAAAAAAAMAAAAwAAAP5////n///gAAAAAAAAAAAAAAAAAAf//8B///wAAGAAAA8AAAH4AAB5wAAPDgAB4HAAPAOAA4AcACAAwAAABAAAAAAAAAAH///Af//8B///wAAAAAAAAAAAAAAAAAAAA//8AD//wAHgAAA4AAADAAAAMAAAAwAAADgAAAPAAAAf/8AA//wAHAAAA4AAADAAAAMAAAAwAAADgAAAPAAAAf/8AA//wAAAAAAAAAAAAAAAAAAAA//8AD//wAHwAAAYAAADgAAAMAAAAwAAADAAAAOAAAA8AAAB+AAAD//AAD/8AAAAAAAAAAAAAAAAH4AAB/4AAP/wABwDgAOAHAA4AcADAAwAMADAAwAMADgBwAOAHAAeB4AA//AAB/4AAA8AAAAAAAAAAAAAAAAH///wf///A8DwADADAAcAOABgAYAGABgAYAGABwA4AHADgAPA8AAf/gAA/8AAAeAAAAAAAAAAAAB/gAAP/AAD//AAOAcABwA4AHABgAYAGABgAYAGABgAcAOAA4BwAD///wf///B///8AAAAAAAAAAAAAAAAAAAP//AA//8AB8AAAOAAAA4AAADAAAAMAAAAwAAAAAAAABgYAAPh4AB/HgAOcHAAwwcADDgwAMGDAAwYMADhwwAOHHAAeP4AA4fgABA4AAAAAADAAAAMAAAAwAAA//+AD//+AP//8ADABwAMADAAwAMADAAwAAAAAAAAAAD/gAAP/4AA//4AAAHgAAAHAAAAcAAAAwAAADAAAAMAAABwAAAOAA//wAD//wAP//AAAAAAAAAAAIAAAA4AAAD8AAAD+AAAB/AAAA/gAAAfAAAB8AAA/wAAf4AAP8AAD+AAAPAAAAgAAACAAAAPAAAA/wAAA/4AAAP8AAAH8AAAHwAAH+AAD/AAD/AAAPgAAA/gAAA/wAAAf4AAAH8AAAHwAAH/AAD/gAD/gAAPwAAAwAAAAAAQAMADAA4AcAB4HgADw8AAHvgAAH4AAAPAAAD+AAAeeAADw8AA8A8ADgBwAMADAAAAAAEAAAAcAAAB+AAAB+AAAB/ADAA/h8AAf/wAAf4AAH8AAD+AAB/AAA/wAAH4AAAcAAAAAAAAAAAQAMADAAwA8ADAHwAMA/AAwPMADB4wAMODAAzwMADeAwAPgDAA8AMADgAwAIAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAP///9//////8P/wAAADAAAAMAAAAAAAAAAAAAAAAAAf//8B///wH///AAAAAAAAAAAAAAAwAAADAAAAOAAAA//5/9////wAH4AAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAB4AAAPgAAA4AAABwAAAHAAAAcAAAA4AAADgAAAOAAAB4AAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAGAAABwAAAOAAABwAAAHAAAAcAAAA4AAABwAAABgAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAOAB4B4ADwPAAHh4AAPPAAAf4AAA/AAAB4AAAPwAAB/gAAPPAAB4eAAPA8AB4B4AHADgAIAEAAAAAAADAAAAMAAAAwAAADAAAAMAAAAwAAHDDgA8MPADww8AGDBgAAMAAAAwAAADAAAAMAAAAwAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH//gOf/+Ax//wAAAAAAAAAAAAAAAAAAAD+AAA/+AAH/8AA8A4ADgBwAMAHAHwAPgfAA+AcADAAwAcADgDgAHgeAAOBwAAQAAAAAAAAAwDAADAMAAMBwA///AH//8A///wHAwDAcDAMBgMAwGAwDAcDAMA4AAwB4ADADAAMAAAAAAAAAADDhgAe/vAA//4AB4PAAGAMAA4A4ADABgAMAGAAwAYADABgAOAOAAcBwAB4PAAP/+AB7+8ADBBgAAAAAEAAAAcAAAB8BmAB8GYAD8ZgAD9mAAD+YAAD/8AAf/wAH+YAA+ZgAPhmAD4GYAeAAABgAAAEAAAAAAAAAAAAAH/x/8f/H/x/8f/AAAAAAAAAAAAAAAAHAAB9+HAP/8eBz5w8GHDBwYcODBhwYMGDBgwcOHHA848cDx//gDH98AAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAP/4AB8HwAPAHgB4AOAHH8cA4/44DnBzgM4DuAzAGYDMAZgMwBmA7gM4DnBzgGMGcAcABwA4AOAB4DwAD/+AAH/wAAD4AAAAAAAE4AAA/wAADbAAANsAAA2wAAD/AAAH8AAAAAAAAAAAAAAAAAAIAAADwAAAfgAADjgAA8HAADGMAAA8AAAH8AAB44AAOBwAAwDAAAAAAAAAAAAAAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAfgAAB+AAAAAAAAAAAAAAAAAAAAA/AAAP/AABwOAAGAYAAz8wADPzAAMkMAAyYwADP7AAOYcAAcDgAA88AAB/gAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAP8AABw4AAGBgAAYGAABgYAAHDgAAOcAAA/wAAA8AAAAAAAAAAAAAAAAAADBgAAMGAAAwYAADBgAAMGAAAwYAA/5gAD/mAAP+YAADBgAAMGAAAwYAADBgAAMGAAAAAAAAAAAAAAAAwMAAHBwAA4HAADA8AAMGwAAw7AADnMAAH4wAAPDAAAAAAAAAAAAgEAADAYAAMwwAA3DAADcMAAPwwAA5/AADD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///8H///wAB8AAAA4AAADgAAAGAAAAYAAABgAAAOAAABwAAAeAAf/+AB//4AAAAAAAAAAAAAAAAAAAA/gAAH/AAA/+AAH/8AAf/wAB//AAH/8AAf///x////H///8AAAAB////H///8f///wAAAAAAAAAAAAAAACAAAAcAAABwAAAGAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMwAAB7AAAH8AAADgAAAAAAAAAAAAAAAAAACAAAAYAAADAAAAP/wAA//AAAAAAAAAAAAAAAAAAAAAAPAAAD+AAAMMAAAwwAADDAAAOcAAAfgAAA8AAAAAAAAAAAAAAAAADAMAAOBwAAeOAAAfwAAA8AAAxjAADwcAADngAAH4AAAPAAAAIAAAAAAAAAAAAAAAAQAAADAAAAYAAAB//AgH/8PAAAB4AAAOAAADwAAAeAAADgAAA8AAAHgAAA4AAAPAAABwBwAeAfADwPsAcD4wBgeDAABgMAAAP8AAA/wAAAMAAAAAAAAAAAAAAAAAAAAQAAADAAAAcAAAB//AgH/8PAAAB4AAAOAAADwAAAeAAADgAAA8AAAHgAAA4AAAPAAABwAAAeGAwDw4HAcHA8BgYHwABgbAAGDMAAcYwAA/DAAB4MAAAAAAAAAAIBgABgHAAGMMAAZwYABvBgAH8ODAefwcBw+HgAAA8AAAHAAAB4AAAPAAADwAAAeAAADgAAA8AAAHgHAA4D8APA+wB4PjACB4MAAGAwAAA/wAAB/AAAAwAAAAAAAAAAAAAPAAAD+AAAf8AADg4AAcDgOPgGA58AYDngBgAAAOAAAB4AAAfAAAB4AAAAAAAAAAAABAAAA8AAAfwAAP8AAH+AAD/YAB/hgAfwGAB4AYAHwBgAf4GAAP8YAAH/gAAD/AAAB/gAAA/AAAAcAAAAAAAABAAAA8AAAfwAAP8AAH+AAD/YAB/hgAfwGAB4AYAHwBgAf4GAAP8YAAH/gAAD/AAAB/gAAA/AAAAcAAAAAAAABAAAA8AAAfwAAP8AAH+AAD/YAB/hgAfwGAB4AYAHwBgAf4GAAP8YAAH/gAAD/AAAB/gAAA/AAAAcAAAAAAAABAAAA8AAAfwAAP8AAH+AAD/YAB/hgAfwGAB4AYAHwBgAf4GAAP8YAAH/gAAD/AAAB/gAAA/AAAAcAAAAAAAABAAAA8AAAfwAAP8AAH+AAD/YAB/hgAfwGAB4AYAHwBgAf4GAAP8YAAH/gAAD/AAAB/gAAA/AAAAcAAAAAAAAAAAAAAcAAAPwAAH+AAD/AAB/sHw/wwfP4DDG8AMMb4AwfP8DA4H+MAAD/wAAB/gAAA/wAAAfAAAAMAAAAAAABAAAA8AAAfwAAP8AAH+AAD/YAB/hgAfwGAB4AYAGABgAYAGAB///wH///Af//8BgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAwDAYDAMBgAAwGAADAAAAAAAAAAAf/AAD/+AA/B+AHgA8AcABwDgADgOAAOAwAAYPAAB88AAH7wAAZ/gADjOAAOAcABwB4APAD4D4AHgPAAGAwAAAAAAAAAAAAAAAH///Af//8BgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAwDAYDAMBgAAwGAADAAAAAAAAAAAAAAAf//8B///wGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAADAYAAMAAAAAAAAAAAAAAB///wH///AYDAMBgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAwDAYAAMBgAAwAAAAAAAAAAAAAAH///Af//8BgMAwGAwDAYDAMBgMAwGAwDAYDAMBgMAwGAwDAYDAMBgAAwGAADAAAAAAAAAAAAAAAf//8B///wH///AAAAAAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAAAAAAAAAAH///Af//8B///wAAAAAAAAAAAAAAAAAAAf//8B///wH///AAAAAAAAAAAAYAAABgAB///wH///AYBgMBgGAwGAYDAYBgMBgGAwGAADAYAAMBwABwHAAHAPAB4AfAfAA//4AA/+AAAfAAAAAAAAAAAAAAAAH///Af//8B8AAAB4AAAD4AAAD4AAADwAAAHwAAAHgAAAPgAAAPAAAAfAAAAeAf//8B///wAAAAAAAAAAAAAAAP/gAB//AAfg/ADwAeAOAA4BwABwHAAHAYAAMBgAAwGAADAYAAMBwABwHAAHAOAA4A8AHgB8B8AD//gAD/4AAB8AAAAAAAD/4AAf/wAH4PwA8AHgDgAOAcAAcBwABwGAADAYAAMBgAAwGAADAcAAcBwABwDgAOAPAB4AfAfAA//4AA/+AAAfAAAAAAAA/+AAH/8AB+D8APAB4A4ADgHAAHAcAAcBgAAwGAADAYAAMBgAAwHAAHAcAAcA4ADgDwAeAHwHwAP/+AAP/gAAHwAAAAAAAP/gAB//AAfg/ADwAeAOAA4BwABwHAAHAYAAMBgAAwGAADAYAAMBwABwHAAHAOAA4A8AHgB8B8AD//gAD/4AAB8AAAAAAAD/4AAf/wAH4PwA8AHgDgAOAcAAcBwABwGAADAYAAMBgAAwGAADAcAAcBwABwDgAOAPAB4AfAfAA//4AA/+AAAfAAAAAAAAAAAADgYAAHHgAAO8AAAfgAAA8AAAHwAAA/gAAHHAAA4OAABAQAAAAAAAAAAAAAAAAP/jAB//8Afg/gDwA+AOAH4BwA9wHAHnAYA8MBgHAwGA4DAYHAMBw4BwHPAHAP4A4A/AHgB8B8AP//gBz/4ACB8AAAAAAAAAAAH//wAf//gAAAPAAAAOAAAAcAAABwAAADAAAAMAAAAwAAAHAAAAcAAADgAAAeAf//wB//+AH//gAAAAAAAAAAAAAAAAAAAB//8AH//4AAADwAAADgAAAHAAAAcAAAAwAAADAAAAMAAABwAAAHAAAA4AAAHgH//8Af//gB//4AAAAAAAAAAAAAAAAAAAAf//AB//+AAAA8AAAA4AAABwAAAHAAAAMAAAAwAAADAAAAcAAABwAAAOAAAB4B///AH//4Af/+AAAAAAAAAAAAAAAAAAAAH//wAf//gAAAPAAAAOAAAAcAAABwAAADAAAAMAAAAwAAAHAAAAcAAADgAAAeAf//wB//+AH//gAAAAAAAAAAEAAAAcAAAB8AAAB8AAAD8AAAD4AAAD4AAAD/8AAf/wAHwAAB+AAAPgAAD4AAAeAAABgAAAEAAAAAAAAAAAAAH///Af//8AGAMAAYAwABgDAAGAMAAYAwABgDAAGAMAAcBwAA4OAAD/4AAH/AAAHwAAAAAAAAAAAAAAAAf//wD///APAAABwAAAGAAHAYDAMBgcAwHBwDAePgcA/+BwB/ceAAg/4AAB+AAAAAAAAAAAAAAAAAA+AAHH8AA894AHjjggcMGDhgwYPmHBgGYcGABhg4AHGHAAPb4AA//4AA//gAAAAAAAAAAAAAAAAD4AAcfwADz3gAeOOABwwYAGDBgGYcGD5hwYOGGDggcYcAA9vgAD//gAD/+AAAAAAAAAAAAAAAAAPgABx/AAPPeAZ444DnDBgcYMGDhhwYOGHBgcYYOA5xhwBj2+AAP/+AAP/4AAAAAAAAAAAAAAAAB8AAOP4AB57wHPHHAY4YMBjBgwGMODAcw4MAzDBwDOMOAce3wBB//wAB//AAAAAAAAAAAAAAAAAHwAA4/gAHnvAY8ccBzhgwGMGDAAw4MADDgwGMMHAc4w4Bx7fAAH//AAH/8AAAAAAAAAAAAAAAAAHwAA4/gAHnvAA8ccHzhgw/MGDDGw4MMbDgw/MMHB44w4AB7fAAH//AAH/8AAAAAAAAAAAAAAAAB8AAOP4AB47wAHHHAA4YMADBgwAMGDAAwYcADBhwAOGOAAebwAA/+AAD/8AAfb4ABxjgAOGHAAwYMADBgwAMGDAA4YcADhhwAHmOAAP5wAAPmAAAAAAAAAAAAP4AAD/wAAf/wADgHAAcAOABwA4MGAB8wYAH/BgAZ4HADgAeAeAA8DwABwOAACAAAAAAAAAD8AAA/8AAH/4AA5hwAHGDgwcYODxhgYDmGBgAYYGABxg4AHGHgAPY8AAfjgAA+MAAAAAAAAAAAAPwAAD/wAAf/gADmHAAcYOABxg4AGGBgOYYGDxhgYMHGDgAcYeAA9jwAB+OAAD4wAAAAAAAAAAAA/AAAP/AAB/+ACOYcA5xg4HHGDg4YYGDhhgYHGGBgOcYOAZxh4AD2PAAH44AAPjAAAAAAAAAAAAH4AAB/4AAP/wBhzDgHOMHAY4wcADDAwAMMDAAwwMBzjBwHOMPAAex4AA/HAAB8YAAAAAAAAAAOAAAA+f/+AZ//4AH//gAAAAAAAAAAAAAAAAAAAJ//4Hn//g+f/+DAAAAAAAAAMAAABwAAAOP//Aw//8Dj//wHAAAAMAAABwAAAGAAAAA//8AD//wAP//AcAAABwAAAAAAAAAA/gAAP/gAB+/AAHAcAA4A4DDABgNMAGA+wAYDzABgPOAOB+YAwG/4PAA//4AA//AAAAAAAAAAAAAAAAP//AA//8Bx8AAHGAAAY4AABjAAAHMAAAMwAAAzgAAHPAAAYfgAAA//wAA//AAAAAAAAAAAAAAAAA/AAAP/AAB/+AAOAcABwA4OHADg+YAGA5gAYAGABgAcAOABwA4ADwPAAH/4AAP/AAAHgAAAAAAAAAAAAPwAAD/wAAf/gADgHAAcAOABwA4BGABgeYAGDxgAYMHADgAcAOAA8DwAB/+AAD/wAAB4AAAAAAAAAAAAD8AAA/8AAH/4AI4BwDnADgccAODhgAYOGABgcYAGA5wA4BnADgAPA8AAf/gAA/8AAAeAAAAAAAAAAAAB+AAAf+AAD/8AccA4BzgBwGOAHAYwAMBzAAwDMADAM4AcBzgBwGHgeAAP/wAAf+AAAPAAAAAAAAAAAAAfgAAH/gAA//AGHAOAc4AcBjgBwAMADAAwAMADAAwHOAHAc4AcAB4HgAD/8AAH/gAADwAAAAAAAAAAAAMAAAAwAAADAAAAMAAAAwAAADAAADtwAAO3AAADAAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAH5wAB//AAP/4ABwHgAOA/AA4PcADB4wAMODAAxwMADuBwAPwHAAfB4AB//AAP/4AAY8AAAAAAAAAAAAf8AAB//AAH//AAAA8AAAA4MAADg+AAGA4AAYAAABgAAAOAAABwAH/+AAf/+AB//4AAAAAAAAAAAAAAAH/AAAf/wAB//wAAAPAAAAOAAAA4BgABg+AAGDwAAYIAADgAAAcAB//gAH//gAf/+AAAAAAAAAAAAAAAB/wAAH/8AAf/8AIADwDgADgcAAODgAAYOAABgcAAGA4AA4BgAHAAf/4AB//4AH//gAAAAAAAAAAAAAAA/4AAD/+AAP/+AYAB4BwABwGAAHAAAAMAAAAwGAADAcAAcBwADgAP/8AA//8AD//wAAAAAAAAAABAAAAHAAAAfgAAAfgAAAfwAAAP4cIAH/zgAH++AB/DAA/gAAfwAAP8AAB+AAAHAAAAAAAAAAAAAAAAA/////////wPA8AAwAwAHADgAYAGABgAYAGABgAcAOABwA4ADwPAAH/4AAP/AAAHgAAAAAABAAAAHAAAAfgAAwfgADgfwA+AP4fAAH/8AAH+AAB/A4A/gDgfwAMP8AAB+AAAHAAAAAAAA=='), + atob('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/+cB//5wH//nAAAAAAAAAAAAAAAAAAAB8AAAHwAAAfAAAAAAAAAAAAAfAAAB8AAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAQcAADhwAAOHBAA4c8ADh/wAP/+AB/+AA//wAH+HAAe4cMBDh/wAOP/AA//wAP/wAH/3AAf4cABzhwAAOHAAA4cAADgAAAOAAAAAAAAAAAAAAAAAAAAwAH8HwA/4PgD/geAePA8BwcBw/BwH78DgfvwOB+HA4HAeBwcA8HDgB4f+ADg/wAGB+AAAAAAAAAAAAAAAH4AAA/wBwHngPAcOB4Bw4PAHDh4AcOPAA/x4AD/PAADx4AAAPAAAB5wAAPPwAB5/gAPOPAB4wcAPDBwB4MHAPA4cA4B/gBAH8AAAHAAAAAAAAAAAAAPAAHD/AB/f+AP/x4B4+DwHB4HAcDwcBwHhwHAPHAcAccB4A5wDgB+AGA/4AAH/AAAf+AAAA8AAABgAAAAAfAAAB8AAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/8AD//+A/+/+H4AD98AAB3gAADIAAAAAAAAAAAAAIAAABwAAAXwAAHPwAB8P8D/gP//4AH/8AAAAAAAAAAAAAAAAAAAAAAAAHAAAAcwAAA/gAAb8AAB/gAAH+AAAD+AAAOwAABxAAADAAAAAAAAAAAAAADAAAAMAAAAwAAADAAAAMAAAAwAAB//AAH/8AAAwAAADAAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAABwAAAHIAAAfgAAB8AAAAAAAAAAAAAAAAAAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAAAAAAAAAAABwAAAHAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAA/wAA//AA//AA//AAH/AAAfAAABAAAAAAAAAAAAAAAAAAAf/wAH//wA///gDgAOAcAAcBwABwHAAHAcAAcBwABwHgAPAPAB4Af//AA//4AA/+AAAAAAAAAAAAAAAAMAAABwAAAOAAAB4AAAH///Af//8B///wAAAAAAAAAAAAAAAAAAAAwAcAPADwB8AfAPAB8B4APwHAB/AcAPcBwB5wHAPHAcB4cA8PBwD/4HAH/AcAHwBwAAAAAAAAAAAAGAHAAcAcAB4BwYDwHDwHAceAcBz4BwHfgHAf3AcB+eDwHw/+AeB/wBwD+AAAAAAAAAAAAAAAAABwAAAfAAAP8AAD/wAA/nAAP4cAD+BwAfgHAB4AcAEA//AAD/8AAP/wAABwAAAHAAAAMAAAAAAAAAAAAAEAH/w4Af/D4B/8HgHDgPAcOAcBw4BwHDgHAcOAcBw8DwHB4eAcH/wBgP+AAAPwAAAAAAAAAAAAAAAB//AAf//AD//+AOHB4Bw4BwHDgHAcOAcBw4BwHDgHAcPA8A4eHgDh/8AEB/gAAD4AAAAAAAAAABwAAAHAAAAcAAMBwADwHAB/AcA/4BwP8AHH/AAd/gAB/wAAH8AAAeAAAAAAAAAAAAAAAEAAPD+AB/f8AP//4B4+DwHDwHAcHAcBwcBwHBwHAcPAcB/+DgD//+AH5/wACB8AAAAAAAAAAAAAAAAEAAAD+AAAf+DAD74OAODw8BwHBwHAOHAcA4cBwDBwHAcHAeBw8A+ePgB//8AD//gAB/wAAAAAAAAAAAAAAAAAAAAAHBwAAcHAABwcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AcgDgB+AOAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAeAAAD8AAAf4AADzwAAeHgADwPAAGAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAADGAAAMYAAAxgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABACAAOAcAA8DgAB4cAABzgAAD8AAAHgAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAHgAAA+AAAHgAAAcAAABwD5wHAfnAcD8cBweAAHzwAAP+AAAfwAAAcAAAAAAAAAAAAAAAAAAB/AAA//AAH/+AA8A8AHAA4A4ABwDg+HAcH8OBw444GDBhgYMGGBgwYYHDjjgcP8OBw/44DgDhAOAGAAeAYAA+HgAB/8AAB/gAAAAAAAAAAAAABAAAA8AAAfwAAP/AAH/gAD/4AB/zgAf4OAB8A4AHwDgAf4OAA/84AAP/gAAH/AAAD/gAAB/AAAA8AAAAQAAAAAAAAAB///wH///Af//8BwOBwHA4HAcDgcBwOBwHA4HAcDgcBweBwHj4HAP/58Afz/gAcH8AAAPAAAAAAAH/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAOAA4A8AHgB8B8ADwHgADAYAAAAAAAAAAAAAAAH///Af//8B///wHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAeAA8A8AHgB8B+AD//gAH/8AAD/AAAAAAAAAAAAAAAAf//8B///wH///AcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHAAHAcAAcAAAAAAAAAAAAAAB///wH///Af//8BwOAAHA4AAcDgABwOAAHA4AAcDgABwOAAHAAAAcAAAAAAAAAP/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwGBwHgYPAOBg4A+GPgB4f8ADh/gAAH4AAAAAAAAAAAAAAAH///Af//8B///wAA4AAADgAAAOAAAA4AAADgAAAOAAAA4AAADgAAAOAAAA4AAf//8B///wH///AAAAAAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAAABgAAAHgAAAeAAAA8AAABwAAAHAAAAcAAABwH///Af//4B///AAAAAAAAAAAAAAAAAAAAf//8B///wH///AAHgAAA/AAAH+AAA88AAHh8AA8D4AHgDwA8AHgHgAPAYAAcBAAAwAAABAAAAAAAAAAH///Af//8B///wAAAHAAAAcAAABwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAAAAAAAAAAAAH///Af//8B///wB/AAAB/AAAA/AAAA/gAAA/gAAA/gAAA/AAAD8AAA/AAAfwAAH8AAB/AAAfgAAP4AAB///wH///Af//8AAAAAAAAAAAAAAAAAAAH///Af//8B///wD8AAAD4AAAH4AAAHwAAAPwAAAPgAAAPgAAAfAAAAfAAAA/Af//8B///wH///AAAAAAAAAAAH/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAOAA4A8AHgB+D8AD//gAH/8AAD+AAAAAAAAAAAH///Af//8B///wHAOAAcA4ABwDgAHAOAAcA4ABwDgAHAeAAeBwAA+fAAD/4AAD/AAADgAAAAAAAAf8AAH/8AB//8AHgDwA8AHgHgAPAcAAcBwABwHAAHAcAAcBwABwHAAnAcAHcA4AfgDwA+AH4P4AP//wAf/3AAP4AAAAAAAAAAAf//8B///wH///AcA4ABwDgAHAOAAcA4ABwDgAHAOAAcB+AB4H+AD59/AP/h8AP8BwAOABAAAAAAAAAAAAAwAD4HwA/4fAD/geAePA8BwcBwHBwHAcDgcBwOBwHA4HAcDgcA4HDwD4eeAHw/4AOD/AAIDwAAAAABwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAH///Af//8B///wHAAAAcAAABwAAAHAAAAcAAABwAAAGAAAAAAAAAAAAAH//wAf//gB///AAAAeAAAA8AAABwAAAHAAAAcAAABwAAAHAAAAcAAADgAAAeAf//wB//+AH//gAAAAAAAAAAGAAAAfAAAB/gAAB/wAAA/4AAAf8AAAP/AAAH8AAADwAAA/AAAf8AAP+AAP/AAH/gAB/wAAH4AAAcAAABAAAAHwAAAf4AAA/+AAAP/gAAH/wAAB/wAAA/AAAf8AAf/AAP/gAP/gAB/gAAH4AAAf+AAAf/AAAH/wAAB/8AAAfwAAB/AAB/8AA/+AA/+AAf+AAB/AAAHAAAAAAAAAAAAQGAADAeAA8B8AHwD8B+AD4PgAH74AAH/AAAPwAAA/gAAP/gAD8fAAfA/AH4A+AeAA8BwABwEAABAQAAABwAAAHwAAAPwAAAfwAAAfgAAAfgAAAf/wAB//AAf/8AH8AAA/AAAPwAAB8AAAHAAAAQAAAAAAAAAAABAcAAcBwADwHAA/AcAP8BwD/wHAfnAcH4cBx+BwHPwHAf8AcB/ABwH4AHAeAAcBgABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/////////gAAAOAAAA4AAADAAAAAAAAAAAAAAAAAAAAAAAeAAAB/gAAH/4AAB/+AAAf/gAAH/AAAB8AAAAQAAAAAAAAAAAAAAOAAAA4AAADgAAAP/////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADgAAAcAAADgAAAcAAADgAAAcAAAB4AAADwAAADgAAAHAAAAOAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAADj+AAef8AD5xwAOGHAA44MADjgwAOOHAA44YADjDgAH/8AAf/8AAf/wAAAAAAAAAAAAAAAAAAAf//8B///wH//+AAcA4ADgBwAOAHAA4AcADgBwAOAHAA8A8AB8PgAD/8AAH/gAAH4AAAAAAAAAAAAH4AAB/4AAP/wAB4HgAPAPAA4AcADgBwAOAHAA4AcADgBwAPAPAAeB4AA4HAABgYAAAAAAAAAAAAfgAAH/gAB//gAHgeAA8A8ADgBwAOAHAA4AcADgBwAOAHAAcA4B///wH///Af//8AAAAAAAAAAAAAAAAH4AAB/4AAP/wAB7HgAPMPAA4wcADjBwAOMHAA4wcADjBwAPMPAAfx4AA/HAAB8YAAAwAAAAAAAAAAAAwAAADAAAB///AP//8B///wHMAAAYwAABjAAAGMAAAAAAAAAPwAAD/wMA//w4DwPHgeAePBwA4cHADhwcAOHBwA4cHADhwOAcPB///4H///Af//wAAAAAAAAAAAAAAAAAAB///wH///AAf/8ABwAAAOAAAA4AAADgAAAOAAAA4AAADwAAAH//AAP/8AAf/wAAAAAAAAAAAAAAAAAAAc//8Bz//wHP//AAAAAAAAAAAAAAHAAAAcAAAH+f///5///7H//8AAAAAAAAAAAAAAH///Af//8B///wAAPAAAB+AAAP8AAB54AAfDwAD4HgAOAPAAwAcACAAwAAAAAAAAAB///wH///Af//8AAAAAAAAAAAAAAAAAAAAP//AA//8AB//wAHAAAA4AAADgAAAOAAAA4AAAD4AAAH//AAP/8AB//wAHAAAA4AAADgAAAOAAAA4AAADwAAAH//AAP/8AAf/wAAAAAAAAAAAAAAAP//AA//8AB//wAHAAAA4AAADgAAAOAAAA4AAADgAAAPAAAAf/8AA//wAB//AAAAAAAAAAAAAAAAB+AAAf+AAD/8AAeB4ADwDwAOAHAA4AcADgBwAOAHAA4AcADwDwAHw+AAP/wAAf+AAAfgAAAAAAAAAAAAAAAB///8H///wP///A4BwAHADgAcAOABwA4AHADgAcAOAB4B4AD4fAAH/4AAP/AAAPwAAAAAAAAAAAAPwAAD/wAA//wADwPAAeAeABwA4AHADgAcAOABwA4AHADgAOAcAB///8H///wf///AAAAAAAAAAAAAAAAAAAD//wAP//AAf/8ABwAAAOAAAA4AAADgAAAOAAAAAAAAAYGAAD4cAAfx4AD3DwAOOHAA44cADjhwAOGHAA4ccADxzwAHj+AAOP4AAYOAAAAAAAwAAADAAAAMAAAP//wA///gD///AAwAcADABwAMAHAAwAcADAAwAAAAAAAAAAD/gAAP/4AA//4AAA/gAAAPAAAAcAAABwAAAHAAAAcAAABwAAAOAA//8AD//wAP//AAAAAAAAAAAIAAAA4AAAD8AAAH+AAAH/AAAD/gAAB/AAAB8AAA/wAAf8AAP+AAD/AAAPgAAAwAAAAAAAAIAAAA8AAAD/AAAH/gAAD/wAAA/wAAA/AAAf8AAP+AAP+AAA/AAAD+AAAH/AAAD/gAAA/wAAA/AAAf8AAP/AAP/AAA/gAADgAAAAAAAAAAEADAAwAOAHAA+B8AB8PgAB74AAD/AAAH4AAA/wAAHvgAB8PgAPgfAA4AcADAAwAAABABAAAAHAAAAfgAAA/wAAA/wAwAf4fAAP/8AAP/AAB/gAA/wAAf4AAP+AAB/AAAHgAAAQAAAAAAEADAAwAOAPAA4B8ADgPwAOD/AA4ecADnxwAO8HAA/gcAD8BwAPAHAA4AcACAAwAAAAAAAAAAAAAAAAAAAAAAAAAA8AB////f//////n/+AAAA4AAADgAAAAAAAAAAAAAAAAAH///Af//8B///wAAAAAAAAAAAAAAAAAAA4AAADgAAAOAAAA//5/9////z////AAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAB8AAAHwAAAcAAABwAAAHgAAAOAAAA8AAABwAAAHAAAB8AAAHwAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAGAAABwAAAOAAABwAAAHAAAAcAAAA4AAABwAAABgAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAOAB4B4ADwPAAHh4AAPPAAAf4AAA/AAAB4AAAPwAAB/gAAPPAAB4eAAPA8AB4B4AHADgAIAEAAAAAAADAAAAMAAAAwAAADAAAAMAAAAwAAHDDgA8MPADww8AGDBgAAMAAAAwAAADAAAAMAAAAwAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADn//gOf/+A5//4AAAAAAAAAAAAAAAAAAAD/AAA//AAH/+AA+B8ADgBwAOAHAHwAPgfAA+B8AD4A4AcADwDwAHgeAAOBwAAQCAAAAAAAAAAAADgcAAOBwAA4HAD//8A///wD///AeDgcBwOBwHA4HAcDgcB4GBwD4AHAHgAcAOAAAAAAAAAAAAAMAGAB7+8AD//gAHx8AAcBwADgDgAOAOAA4A4ADgDgAOAOAA4A4ABwHAAHg8AA//4AH//wAMOGAAAAAAQAAABwAAAHwMYAPwxgAfjGAAfsYAAf7gAAf/wAB//AAf/8AH7GAA/MYAPwxgB8DGAHAAAAQAAAAAAAAAAAAAf/D/5/8P/n/w/+AAAAAAAAAAAAAAAAAAAABwAAffhwD//Hgf+cfBzwwcGHDhwYcOHBxw4cHDhxwfOPvA8//4Bx//AADwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAP/wAB//gAPAPAB4AOAPDw8A4/xwHH/jgc4HOBzgc4HMAzgcwDOBzgc4HPDjgOcOeA4whwBwAOAHwD4APw/AAf/4AAf+AAAPAAAAAAAATgAAD/AAANsAAA2wAADTAAAP8AAAfwAAAAAAAAAAAAAAAAAAgAAAPAAAB+AAAOeAADw8AAOIwAADxAAAfgAADngAA8PAADgMAAEAQAAAAAAAAAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAABgAAAGAAAAYAAAB+AAAH4AAAAAAAAAAAAAAAAAAAAD8AAA/8AAHh4AAYDgAD/3AAN/MAA0QwADRjAAN/MAA7hwABwOAADhwAAH+AAAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAD/AAAeeAABw4AAGDgAAYOAABw4AAH/AAAP8AAAfAAAAAAAAAAAAAAAAAAAwYAADBgAAMGAAAwYAADBgAAMGAAP+YAA/5gAD/mAAAwYAADBgAAMGAAAwYAADBgAAAAAAAAAAAAAAAMDAABwcAAPDwAAwPAADB8AAMOwAA5zAAB+MAADwwAAAAAAAAAAAIBAAAwGAADMcAANwwAA/DAAD8MAAO/wAAx+AAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///B///8H//AAAAeAAAA4AAADgAAAOAAAA4AAADgAAAcAB//gAH//gAf/+AAAAAAAAAAAAAAAAAAAAP4AAB/4AAP/gAB//AAH/8AAf/wAB//AAH///8f///x////AAAAAAAAAB////H///8f///wAAAAAAAAAAAAAAABAAAAOAAAB4AAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzAAAPMAAA/wAAAeAAAAAAAAAAAAAAAAAAAIAAABgAAAMAAAA//AAD/8AAAAAAAAAAAAAAAAAAAAAA8AAAP4AAAwwAADDAAAMMAAA5wAAB+AAADwAAAAAAAAAAAAAAAAAMAwAA8HAAB44AAD/AAAD4AADGMAAOBwAAeOAAA/wAAA+AAABgAAAAAAAAAAAAAAABAAAAMAAABwAAAH/8CAf/wcAAAHgAAA8AAAHgAAB4AAAPAAAB4AAAeAAADwAAA+AAAHgCAA8A8APAfwB4H7AHB+MAAHAwAAQ/wAAD/AAAAwAAADAAAAAAAAAAAAAAAAAAAAEAAAAwAAAHAAAAf/wIB//BwAAAeAAADwAAAeAAAHgAAA8AAAHgAAB4AAAPAAAD4AAAeAAADwAAA8GAwHg4HAcHA8AAYHwABg7AAGHMAAf4wAA/DAAA4MAAAAAAAAAAYBgABgHAAGMOAAZwYABvBgAH8OCAe/wcBx+HgABg8AAAHgAAB4AAAPAAAB4AAAeAAADwAAA+AAAHgHAA8B8APAfwB4HzADB8MAAHAwAAQ/wAAD/AAAAwAAAAAAAAAAAAAAAAAA4AAAP4AAB/wAAPHgABwOA4/A4Dn4DgOfAOAAAA4AAAHgAAB8AAAHgAAAYAAAAAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAfAOAB/g4AD/zgAA/+AAAf8AAAP+AAAH8AAADwAAABAAAAAAAAABwAAA/AAAf8AAP/AAH/wfD/nD+/wcMb4BwxvgHD+/wcHx/5wEAf/AAAP+AAAH/AAAD8AAABwAAAAAAAEAAADwAAB/AAA/8AAf+AAP/gAH/OAB/g4AHwDgAcAOABwA4AHADgAf//8B///wHA4HAcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHAAHAYAAMAAAAAAAAAAA/4AAP/4AD//4APAHgB4APAPAAeA4AA4DgADg+AAPz4AA//gAD/+AAOe4AA4BwAHAHgA8APgPgAeA8AAYDAAAAAAAAAAAAAAAAf//8B///wH///AcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHAAHAcAAcAAAAAAAAAAAAAAB///wH///Af//8BwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHA4HAcAAcBwABwAAAAAAAAAAAAAAH///Af//8B///wHA4HAcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwABwHAAHAAAAAAAAAAAAAAAf//8B///wH///AcDgcBwOBwHA4HAcDgcBwOBwHA4HAcDgcBwOBwHAAHAcAAcAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAAAAAAAAAAH///Af//8B///wAAAAAAAAAAAAAAAAAAAf//8B///wH///AAAAAAAAAAAAAAAAAAAB///wH///Af//8AAAAAAAAAAABgAAAGAAH///Af//8B///wHAYHAcBgcBwGBwHAYHAcBgcBwABwHAAHAeAA8A8AHgB+D8AD//gAH/8AAD+AAAAAAAAAAAAAAAAf//8B///wH///APwAAAPgAAAfgAAAfAAAA/AAAA+AAAA+AAAB8AAAB8AAAD8B///wH///Af//8AAAAAAAAAAAf8AAH/8AB//8AHgDwA8AHgHgAPAcAAcBwABwHAAHAcAAcBwABwHAAHAcAAcA4ADgDwAeAH4PwAP/+AAf/wAAP4AAAAAAAH/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAOAA4A8AHgB+D8AD//gAH/8AAD+AAAAAAAB/wAAf/wAH//wAeAPADwAeAeAA8BwABwHAAHAcAAcBwABwHAAHAcAAcBwABwDgAOAPAB4Afg/AA//4AB//AAA/gAAAAAAAf8AAH/8AB//8AHgDwA8AHgHgAPAcAAcBwABwHAAHAcAAcBwABwHAAHAcAAcA4ADgDwAeAH4PwAP/+AAf/wAAP4AAAAAAAH/AAB//AAf//AB4A8APAB4B4ADwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHAOAA4A8AHgB+D8AD//gAH/8AAD+AAAAAAAAAAAAGDgAA8eAAB7wAAD+AAAHwAAAfAAAD+AAAe8AADw4AAGBAAAAAAAAAAAAAAAAAf8MAH//4B///AHgD4A8AfgHgD/AcAecBwDxwHAeHAcDwcBw+BwHHgHAc8AcA/gDgD8AeAH4PwA//+AH//wAMP4AAAAAAAAAAAf//AB//+AH//8AAAB4AAADwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAOAAAB4B///AH//4Af/+AAAAAAAAAAAAAAAAAAAAH//wAf//gB///AAAAeAAAA8AAABwAAAHAAAAcAAABwAAAHAAAAcAAADgAAAeAf//wB//+AH//gAAAAAAAAAAAAAAAAAAAB//8AH//4Af//wAAAHgAAAPAAAAcAAABwAAAHAAAAcAAABwAAAHAAAA4AAAHgH//8Af//gB//4AAAAAAAAAAAAAAAAAAAAf//AB//+AH//8AAAB4AAADwAAAHAAAAcAAABwAAAHAAAAcAAABwAAAOAAAB4B///AH//4Af/+AAAAAAAAAAAQAAABwAAAHwAAAPwAAAfwAAAfgAAAfgAAAf/wAB//AAf/8AH8AAA/AAAPwAAB8AAAHAAAAQAAAAAAAAAAAAAf//8B///wH///ABwHAAHAcAAcBwABwHAAHAcAAcBwABwHAAHg8AAP/gAAf8AAA/gAAAAAAAAAAAAAAAA///AP//8A///wHgAAAcAAcBwABwHBwHAcHAcB4+BwD/4PAH954APn/gAAP8AAAOAAAAAAAAAAAAAD4AAcfwADz/gAfOOCBww4PHHBg+ccGAZxw4AHHDAAcYcAA//gAD//gAD/+AAAAAAAAAAAAAAAAAPgABx/AAPP+AB844AHDDgAccGAZxwYPnHDg8ccMDBxhwAD/+AAP/+AAP/4AAAAAAAAAAAAAAAAA+AAHH8AA8/4BnzjgOcMOBxxwYOHHBg4ccOBxxwwDnGHAGP/4AA//4AA//gAAAAAAAAAAAAAAAAHwAA4/gAHn/A8+ccDzhhwMOODA444MBjjhwHOOGAM4w4Dx//AOH//AAH/8AAAAAAAAAAAAAAAAAfAADj+AAef8Bz5xwHOGHAc44MADjgwAOOHAY44YBzjDgHH/8AAf/8AAf/wAAAAAAAAAAAAAAAAAfAADj+AAef8AD5xweOGHD844MMzjgwzOOHD844YHjjDgAH/8AAf/8AAf/wAAAAAAAAAAAAAAAAHwAAx/gAHn/AAc4cADjhwAOMDAA4wcADjBwAOMHAA4w4AB//AAH/4AAP/wAB/fgAPMPAA4wcADjBwAOMHAA4wcADjBwAPMPAAfx4AA/HAAB8YAAAAAAAAAAAA/AAAP/AAB/+AAPA8AB4B4AHADgwcAPzBwA/8HADngcAOMB4B4ADwPAAHA4AAMDAAAAAAAAAAAAA/AAAP/AAB/+AAPY8AB5h4OHGDg+cYOB5xg4AnGDgAcYOAB5h4AD+PAAH44AAPjAAAGAAAAAAAAAAAAAPwAAD/wAAf/gAD2PAAeYeABxg4AHGDgOcYOD5xg4OHGDggeYeAA/jwAB+OAAD4wAABgAAAAAAAAAAAAD8AAA/8AAH/4AY9jwDnmHgecYODhxg4OHGDg8cYOB5xg4BnmHgCP48AAfjgAA+MAAAYAAAAAAAAAAAAB+AAAf+AAD/8Acex4BzzDwHOMHAA4wcADjBwAOMHAc4wcBzzDwGH8eAAPxwAAfGAAAMAAAAAAAAAAAOAAAA+f/+A5//4An//gAAAAAAAAAAAAAAAAAAAJ//4Dn//g+f/+DgAAAAAAAAMAAABwAAAOP//Aw//8Dj//wHAAAAMAAABwAAAHAAAAA//8AD//wAP//AcAAABwAAAAAAAAAA/gAAP/AAB//AAPA8AA4A4DDgDgPMAOA/wA4D7ADgPOAOB+8B4C/+/AA//4AB//AAAHAAAAAAAAAAAAP//AA//8Bx//wPHAAAw4AADjgAAGOAAAc4AAAzgAAPPAAA4f/8AA//wAB//AAAAAAAAAAAAAAAAA/AAAP/AAB/+AAPA8CB4B4OHADg+cAOA5wA4AHADgAcAOAB4B4AD4fAAH/4AAP/AAAPwAAAAAAAAAAAAPwAAD/wAAf/gADwPAAeAeABwA4AnADgecAOD5wA4OHADgAeAeAA+HwAB/+AAD/wAAD8AAAAAAAAAAAAD8AAA/8AAH/4AY8DwDngHgecAODhwA4OHADg8cAOB5wA4BngHgCPh8AAf/gAA/8AAA/AAAAAAAAAAAAB+AAAf+AAD/8AceB4DzwDwMOAHA44AcBjgBwHOAHAM4AcDzwDwOHw+AAP/wAAf+AAAfgAAAAAAAAAAAAfgAAH/gAA//AHHgeAc8A8BzgBwAOAHAA4AcADgBwHOAHAc8A8Bh8PgAD/8AAH/gAAH4AAAAAAAAAAAAMAAAAwAAADAAAAMAAAAwAAADAAADtwAAO3AAA7cAAAMAAAAwAAADAAAAMAAAAAAAAAAAAAH5gAB//AAP/4AB4PgAPB/AA4PcADh5wAOPHAA54cADvBwAP4PAAfD4AB//AAP/4AAZ+AAAAAAAAAAAAf8AAB//AAH//AAAH8AAAB4OAADg+AAOB4AA4AgADgAAAOAAABwAH//gAf/+AB//4AAAAAAAAAAAAAAAH/AAAf/wAB//wAAB/AAAAeAAAA4BgADgeAAOD4AA4MAADgAAAcAB//4AH//gAf/+AAAAAAAAAAAAAAAB/wAAH/8AAf/8AYAfwDgAHgcAAODgAA4OAADg8AAOB4AA4BgAHACf/+AB//4AH//gAAAAAAAAAAAAAAA/4AAD/+AAP/+AcAP4BwADwHAAHAAAAcAAABwAAAHAcAAcBwADgGP//AA//8AD//wAAAAAAAAAABAAAAHAAAAfgAAA/wAAA/wAAAf4cAAP/zgAP/+AB/jgA/wAAf4AAP+AAB/AAAHgAAAQAAAAAAAAAAAA//////////////A4BwAHADgAcAOABwA4AHADgAcAOAB4B4AD4fAAH/4AAP/AAAPwAAAAAABAAAAHAAAAfgAAw/wADg/wA+Af4fAAP/8AAP/AAB/g4A/wDgf4AOP+AAB/AAAHgAAAQAAA=='), 32, - atob("BgkLGhAZEgYMDAwQBwwHCxELEA8REBEOEBEICREVEQ8ZEhEUExAOFBMHDREOGBMUERQSEREUERoREBELCwsTEg4QEQ8REAoREQcHDgcYEREREQoPCxEOFQ8PDwwHDBMcCgoAAAAAAAAAAAAAACERESEAAAAAAAAAAAAAAAAhIQAGCQ8QEhAHDw4WCQ8RABEODRELCw4REgYLCQoPGxobDxISEhISEhoUEBAQEAcHBwcTExQUFBQUDhQUFBQUEBEREBAQEBAQGg8QEBAQBwcHBxAREREREREPEREREREPEQ8="), + atob("BgkMGhEZEgYMDAwQCAwICxILEBAREBEOEREJCREVEQ8ZEhEUExAOFBQHDREPGBMUERQSEhEUERsREBIMCwwTEg4QERAREQoREQcHDgcYEREREQoPDBEPFg8PDwwIDBMcCgoAAAAAAAAAAAAAACERESEAAAAAAAAAAAAAAAAhIQAGCRAQEhAIDw8XCQ8RABIODRELCw4REwcLCQoPHBscDxISEhISEhoUEBAQEAcHBwcTExQUFBQUDhQUFBQUEBEREBAQEBAQGhARERERBwcHBxAREREREREPEREREREPEQ8="), 28+(scale<<8)+(1<<16) ); + return this; }; function imgLock(){ From 596a8183c0f6643d96778eb2f4719262d639b725 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Tue, 28 Jun 2022 10:19:29 +0100 Subject: [PATCH 249/251] fixing versions/etc o remove lint warnings --- apps/agenda/ChangeLog | 1 + apps/android/ChangeLog | 2 +- apps/circlesclock/app.js | 6 ++---- apps/football/metadata.json | 2 +- apps/invader/ChangeLog | 1 + 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/agenda/ChangeLog b/apps/agenda/ChangeLog index 56dfffa0d..ae650deeb 100644 --- a/apps/agenda/ChangeLog +++ b/apps/agenda/ChangeLog @@ -1 +1,2 @@ 0.01: Basic agenda with events from GB +0.02: Added settings page to force calendar sync diff --git a/apps/android/ChangeLog b/apps/android/ChangeLog index ee927c752..acdeeaaa0 100644 --- a/apps/android/ChangeLog +++ b/apps/android/ChangeLog @@ -9,4 +9,4 @@ 0.08: Handling of alarms 0.09: Alarm vibration, repeat, and auto-snooze now handled by sched 0.10: Fix SMS bug -0.11: Use default Bangle formatter for booleans +0.12: Use default Bangle formatter for booleans diff --git a/apps/circlesclock/app.js b/apps/circlesclock/app.js index 83a0aa027..fc501a5d0 100644 --- a/apps/circlesclock/app.js +++ b/apps/circlesclock/app.js @@ -591,7 +591,6 @@ function getWeatherIconByCode(code) { default: return weatherRainy; } - break; case 6: return weatherSnowy; case 7: @@ -607,9 +606,8 @@ function getWeatherIconByCode(code) { default: return weatherCloudy; } - break; - default: - return undefined; + default: + return undefined; } } diff --git a/apps/football/metadata.json b/apps/football/metadata.json index 253026c39..43e7ac1bf 100644 --- a/apps/football/metadata.json +++ b/apps/football/metadata.json @@ -2,7 +2,7 @@ "id": "football", "name": "football", "shortName": "football", - "version": "1.00", + "version": "1.01", "type": "app", "description": "Classic football game of the CASIO chronometer", "icon": "app.png", diff --git a/apps/invader/ChangeLog b/apps/invader/ChangeLog index 5560f00bc..6c5a33e59 100644 --- a/apps/invader/ChangeLog +++ b/apps/invader/ChangeLog @@ -1 +1,2 @@ 0.01: New App! +0.11: Changes... From 6c6e9b141d3bed52cc189fbc160433f7031182c0 Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Tue, 28 Jun 2022 22:01:54 +1200 Subject: [PATCH 250/251] Add files via upload --- apps/widscrlock/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widscrlock/metadata.json b/apps/widscrlock/metadata.json index 9ff76b910..5110d76c1 100644 --- a/apps/widscrlock/metadata.json +++ b/apps/widscrlock/metadata.json @@ -1,7 +1,7 @@ { "id": "widscrlock", "name": "Screenlock Widget", "shortName":"Screenlock", - "version":"0.02", + "version":"0.03", "description": "Lock a Bangle 2 screen by tapping a widget.", "icon": "widget.png", "type": "widget", From fe707c335e27a101057ccb8be3dee4b8c825ea68 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Tue, 28 Jun 2022 11:51:25 +0100 Subject: [PATCH 251/251] Add (hopefully!) github actions compatible error messages so we get files marked --- bin/sanitycheck.js | 161 ++++++++++++++++++++++++++------------------- 1 file changed, 93 insertions(+), 68 deletions(-) diff --git a/bin/sanitycheck.js b/bin/sanitycheck.js index 81c0f75ac..569f5fa4b 100755 --- a/bin/sanitycheck.js +++ b/bin/sanitycheck.js @@ -17,13 +17,21 @@ try { } var BASEDIR = __dirname+"/../"; -var APPSDIR = BASEDIR+"apps/"; -function ERROR(s) { - console.error("ERROR: "+s); - process.exit(1); +var APPSDIR_RELATIVE = "apps/"; +var APPSDIR = BASEDIR + APPSDIR_RELATIVE; +var warningCount = 0; +var errorCount = 0; +function ERROR(msg, opt) { + // file=app.js,line=1,col=5,endColumn=7 + opt = opt||{}; + console.log(`::error${Object.keys(opt).length?" ":""}${Object.keys(opt).map(k=>k+"="+opt[k]).join(",")}::${msg}`); + errorCount++; } -function WARN(s) { - console.log("Warning: "+s); +function WARN(msg, opt) { + // file=app.js,line=1,col=5,endColumn=7 + opt = opt||{}; + console.log(`::warning${Object.keys(opt).length?" ":""}${Object.keys(opt).map(k=>k+"="+opt[k]).join(",")}::${msg}`); + warningCount++; } var apps = []; @@ -43,16 +51,20 @@ dirs.forEach(dir => { } catch (e) { console.log(e); var m = e.toString().match(/in JSON at position (\d+)/); + var messageInfo = { + file : "apps/"+dir.name+"/metadata.json", + }; if (m) { var char = parseInt(m[1]); + messageInfo.line = appsFile.substr(0,char).split("\n").length; console.log("==============================================="); - console.log("LINE "+appsFile.substr(0,char).split("\n").length); + console.log("LINE "+messageInfo.line); console.log("==============================================="); console.log(appsFile.substr(char-10, 20)); console.log("==============================================="); } console.log(m); - ERROR(dir.name+"/metadata.json not valid JSON"); + ERROR(messageInfo.file+" not valid JSON", messageInfo); } }); @@ -87,87 +99,90 @@ let allFiles = []; let existingApps = []; apps.forEach((app,appIdx) => { if (!app.id) ERROR(`App ${appIdx} has no id`); - if (existingApps.includes(app.id)) ERROR(`Duplicate app '${app.id}'`); + var appDirRelative = APPSDIR_RELATIVE+app.id+"/"; + var appDir = APPSDIR+app.id+"/"; + var metadataFile = appDirRelative+"metadata.json"; + if (existingApps.includes(app.id)) ERROR(`Duplicate app '${app.id}'`, {file:metadataFile}); existingApps.push(app.id); //console.log(`Checking ${app.id}...`); - var appDir = APPSDIR+app.id+"/"; + if (!fs.existsSync(APPSDIR+app.id)) ERROR(`App ${app.id} has no directory`); - if (!app.name) ERROR(`App ${app.id} has no name`); + if (!app.name) ERROR(`App ${app.id} has no name`, {file:metadataFile}); var isApp = !app.type || app.type=="app"; - if (app.name.length>20 && !app.shortName && isApp) ERROR(`App ${app.id} has a long name, but no shortName`); + if (app.name.length>20 && !app.shortName && isApp) ERROR(`App ${app.id} has a long name, but no shortName`, {file:metadataFile}); if (app.type && !METADATA_TYPES.includes(app.type)) - ERROR(`App ${app.id} 'type' is one one of `+METADATA_TYPES); - if (!Array.isArray(app.supports)) ERROR(`App ${app.id} has no 'supports' field or it's not an array`); + ERROR(`App ${app.id} 'type' is one one of `+METADATA_TYPES, {file:metadataFile}); + if (!Array.isArray(app.supports)) ERROR(`App ${app.id} has no 'supports' field or it's not an array`, {file:metadataFile}); else { app.supports.forEach(dev => { if (!SUPPORTS_DEVICES.includes(dev)) - ERROR(`App ${app.id} has unknown device in 'supports' field - ${dev}`); + ERROR(`App ${app.id} has unknown device in 'supports' field - ${dev}`, {file:metadataFile}); }); } - if (!app.version) WARN(`App ${app.id} has no version`); + if (!app.version) ERROR(`App ${app.id} has no version`, {file:metadataFile}); else { if (!fs.existsSync(appDir+"ChangeLog")) { if (app.version != "0.01") - WARN(`App ${app.id} has no ChangeLog`); + WARN(`App ${app.id} has no ChangeLog`, {file:metadataFile}); } else { var changeLog = fs.readFileSync(appDir+"ChangeLog").toString(); var versions = changeLog.match(/\d+\.\d+:/g); - if (!versions) ERROR(`No versions found in ${app.id} ChangeLog (${appDir}ChangeLog)`); + if (!versions) ERROR(`No versions found in ${app.id} ChangeLog (${appDir}ChangeLog)`, {file:metadataFile}); var lastChangeLog = versions.pop().slice(0,-1); if (lastChangeLog != app.version) - WARN(`App ${app.id} app version (${app.version}) and ChangeLog (${lastChangeLog}) don't agree`); + ERROR(`App ${app.id} app version (${app.version}) and ChangeLog (${lastChangeLog}) don't agree`, {file:appDirRelative+"ChangeLog", line:changeLog.split("\n").length-1}); } } - if (!app.description) ERROR(`App ${app.id} has no description`); - if (!app.icon) ERROR(`App ${app.id} has no icon`); - if (!fs.existsSync(appDir+app.icon)) ERROR(`App ${app.id} icon doesn't exist`); + if (!app.description) ERROR(`App ${app.id} has no description`, {file:metadataFile}); + if (!app.icon) ERROR(`App ${app.id} has no icon`, {file:metadataFile}); + if (!fs.existsSync(appDir+app.icon)) ERROR(`App ${app.id} icon doesn't exist`, {file:metadataFile}); if (app.screenshots) { - if (!Array.isArray(app.screenshots)) ERROR(`App ${app.id} screenshots is not an array`); + if (!Array.isArray(app.screenshots)) ERROR(`App ${app.id} screenshots is not an array`, {file:metadataFile}); app.screenshots.forEach(screenshot => { if (!fs.existsSync(appDir+screenshot.url)) - ERROR(`App ${app.id} screenshot file ${screenshot.url} not found`); + ERROR(`App ${app.id} screenshot file ${screenshot.url} not found`, {file:metadataFile}); }); } - if (app.readme && !fs.existsSync(appDir+app.readme)) ERROR(`App ${app.id} README file doesn't exist`); - if (app.custom && !fs.existsSync(appDir+app.custom)) ERROR(`App ${app.id} custom HTML doesn't exist`); - if (app.customConnect && !app.custom) ERROR(`App ${app.id} has customConnect but no customn HTML`); - if (app.interface && !fs.existsSync(appDir+app.interface)) ERROR(`App ${app.id} interface HTML doesn't exist`); + if (app.readme && !fs.existsSync(appDir+app.readme)) ERROR(`App ${app.id} README file doesn't exist`, {file:metadataFile}); + if (app.custom && !fs.existsSync(appDir+app.custom)) ERROR(`App ${app.id} custom HTML doesn't exist`, {file:metadataFile}); + if (app.customConnect && !app.custom) ERROR(`App ${app.id} has customConnect but no customn HTML`, {file:metadataFile}); + if (app.interface && !fs.existsSync(appDir+app.interface)) ERROR(`App ${app.id} interface HTML doesn't exist`, {file:metadataFile}); if (app.dependencies) { if (("object"==typeof app.dependencies) && !Array.isArray(app.dependencies)) { Object.keys(app.dependencies).forEach(dependency => { if (!["type","app"].includes(app.dependencies[dependency])) - ERROR(`App ${app.id} 'dependencies' must all be tagged 'type' or 'app' right now`); + ERROR(`App ${app.id} 'dependencies' must all be tagged 'type' or 'app' right now`, {file:metadataFile}); if (app.dependencies[dependency]=="type" && !METADATA_TYPES.includes(dependency)) - ERROR(`App ${app.id} 'type' dependency must be one of `+METADATA_TYPES); + ERROR(`App ${app.id} 'type' dependency must be one of `+METADATA_TYPES, {file:metadataFile}); }); } else - ERROR(`App ${app.id} 'dependencies' must be an object`); + ERROR(`App ${app.id} 'dependencies' must be an object`, {file:metadataFile}); } var fileNames = []; app.storage.forEach((file) => { - if (!file.name) ERROR(`App ${app.id} has a file with no name`); - if (isGlob(file.name)) ERROR(`App ${app.id} storage file ${file.name} contains wildcards`); + if (!file.name) ERROR(`App ${app.id} has a file with no name`, {file:metadataFile}); + if (isGlob(file.name)) ERROR(`App ${app.id} storage file ${file.name} contains wildcards`, {file:metadataFile}); let char = file.name.match(FORBIDDEN_FILE_NAME_CHARS) - if (char) ERROR(`App ${app.id} storage file ${file.name} contains invalid character "${char[0]}"`) + if (char) ERROR(`App ${app.id} storage file ${file.name} contains invalid character "${char[0]}"`, {file:metadataFile}) if (fileNames.includes(file.name) && !file.supports) // assume that there aren't duplicates if 'supports' is set - ERROR(`App ${app.id} file ${file.name} is a duplicate`); + ERROR(`App ${app.id} file ${file.name} is a duplicate`, {file:metadataFile}); if (file.supports && !Array.isArray(file.supports)) - ERROR(`App ${app.id} file ${file.name} supports field must be an array`); + ERROR(`App ${app.id} file ${file.name} supports field must be an array`, {file:metadataFile}); if (file.supports) file.supports.forEach(dev => { if (!SUPPORTS_DEVICES.includes(dev)) - ERROR(`App ${app.id} file ${file.name} has unknown device in 'supports' field - ${dev}`); + ERROR(`App ${app.id} file ${file.name} has unknown device in 'supports' field - ${dev}`, {file:metadataFile}); }); fileNames.push(file.name); allFiles.push({app: app.id, file: file.name}); - if (file.url) if (!fs.existsSync(appDir+file.url)) ERROR(`App ${app.id} file ${file.url} doesn't exist`); - if (!file.url && !file.content && !app.custom) ERROR(`App ${app.id} file ${file.name} has no contents`); + if (file.url) if (!fs.existsSync(appDir+file.url)) ERROR(`App ${app.id} file ${file.url} doesn't exist`, {file:metadataFile}); + if (!file.url && !file.content && !app.custom) ERROR(`App ${app.id} file ${file.name} has no contents`, {file:metadataFile}); var fileContents = ""; if (file.content) fileContents = file.content; if (file.url) fileContents = fs.readFileSync(appDir+file.url).toString(); - if (file.supports && !Array.isArray(file.supports)) ERROR(`App ${app.id} file ${file.name} supports field is not an array`); + if (file.supports && !Array.isArray(file.supports)) ERROR(`App ${app.id} file ${file.name} supports field is not an array`, {file:metadataFile}); if (file.evaluate) { try { acorn.parse("("+fileContents+")"); @@ -179,7 +194,7 @@ apps.forEach((app,appIdx) => { console.log("====================================================="); console.log(fileContents); console.log("====================================================="); - ERROR(`App ${app.id}'s ${file.name} has evaluate:true but is not valid JS expression`); + ERROR(`App ${app.id}'s ${file.name} has evaluate:true but is not valid JS expression`, {file:appDirRelative+file.url}); } } if (file.name.endsWith(".js")) { @@ -194,11 +209,11 @@ apps.forEach((app,appIdx) => { console.log("====================================================="); console.log(fileContents); console.log("====================================================="); - ERROR(`App ${app.id}'s ${file.name} is a JS file but isn't valid JS`); + ERROR(`App ${app.id}'s ${file.name} is a JS file but isn't valid JS`, {file:appDirRelative+file.url}); } } for (const key in file) { - if (!STORAGE_KEYS.includes(key)) ERROR(`App ${app.id} file ${file.name} has unknown key ${key}`); + if (!STORAGE_KEYS.includes(key)) ERROR(`App ${app.id} file ${file.name} has unknown key ${key}`, {file:appDirRelative+file.url}); } // warn if JS icon is the wrong size if (file.name == app.id+".img") { @@ -209,44 +224,44 @@ apps.forEach((app,appIdx) => { else { match = fileContents.match(/^\s*require\(\"heatshrink\"\)\.decompress\(\s*atob\(\s*\"([^"]*)\"\s*\)\s*\)\s*$/); if (match) icon = heatshrink.decompress(Buffer.from(match[1], 'base64')); - else ERROR(`JS icon ${file.name} does not match the pattern 'require("heatshrink").decompress(atob("..."))'`); + else ERROR(`JS icon ${file.name} does not match the pattern 'require("heatshrink").decompress(atob("..."))'`, {file:appDirRelative+file.url}); } if (match) { if (icon[0] > 48 || icon[0] < 24 || icon[1] > 48 || icon[1] < 24) { - if (GRANDFATHERED_ICONS.includes(app.id)) WARN(`JS icon ${file.name} should be 48x48px (or slightly under) but is instead ${icon[0]}x${icon[1]}px`); - else ERROR(`JS icon ${file.name} should be 48x48px (or slightly under) but is instead ${icon[0]}x${icon[1]}px`); + if (GRANDFATHERED_ICONS.includes(app.id)) WARN(`JS icon ${file.name} should be 48x48px (or slightly under) but is instead ${icon[0]}x${icon[1]}px`, {file:appDirRelative+file.url}); + else ERROR(`JS icon ${file.name} should be 48x48px (or slightly under) but is instead ${icon[0]}x${icon[1]}px`, {file:appDirRelative+file.url}); } } } }); let dataNames = []; (app.data||[]).forEach((data)=>{ - if (!data.name && !data.wildcard) ERROR(`App ${app.id} has a data file with no name`); + if (!data.name && !data.wildcard) ERROR(`App ${app.id} has a data file with no name`, {file:metadataFile}); if (dataNames.includes(data.name||data.wildcard)) - ERROR(`App ${app.id} data file ${data.name||data.wildcard} is a duplicate`); + ERROR(`App ${app.id} data file ${data.name||data.wildcard} is a duplicate`, {file:metadataFile}); dataNames.push(data.name||data.wildcard) allFiles.push({app: app.id, data: (data.name||data.wildcard)}); if ('name' in data && 'wildcard' in data) - ERROR(`App ${app.id} data file ${data.name} has both name and wildcard`); + ERROR(`App ${app.id} data file ${data.name} has both name and wildcard`, {file:metadataFile}); if (isGlob(data.name)) - ERROR(`App ${app.id} data file name ${data.name} contains wildcards`); + ERROR(`App ${app.id} data file name ${data.name} contains wildcards`, {file:metadataFile}); if (data.wildcard) { if (!isGlob(data.wildcard)) - ERROR(`App ${app.id} data file wildcard ${data.wildcard} does not actually contains wildcard`); + ERROR(`App ${app.id} data file wildcard ${data.wildcard} does not actually contains wildcard`, {file:metadataFile}); if (data.wildcard.replace(/\?|\*/g,'') === '') - ERROR(`App ${app.id} data file wildcard ${data.wildcard} does not contain regular characters`); + ERROR(`App ${app.id} data file wildcard ${data.wildcard} does not contain regular characters`, {file:metadataFile}); else if (data.wildcard.replace(/\?|\*/g,'').length < 3) - WARN(`App ${app.id} data file wildcard ${data.wildcard} is very broad`); + WARN(`App ${app.id} data file wildcard ${data.wildcard} is very broad`, {file:metadataFile}); else if (!data.wildcard.includes(app.id)) - WARN(`App ${app.id} data file wildcard ${data.wildcard} does not include app ID`); + WARN(`App ${app.id} data file wildcard ${data.wildcard} does not include app ID`, {file:metadataFile}); } let char = (data.name||data.wildcard).match(FORBIDDEN_FILE_NAME_CHARS) - if (char) ERROR(`App ${app.id} data file ${data.name||data.wildcard} contains invalid character "${char[0]}"`) + if (char) ERROR(`App ${app.id} data file ${data.name||data.wildcard} contains invalid character "${char[0]}"`, {file:metadataFile}) if ('storageFile' in data && typeof data.storageFile !== 'boolean') - ERROR(`App ${app.id} data file ${data.name||data.wildcard} has non-boolean value for "storageFile"`); + ERROR(`App ${app.id} data file ${data.name||data.wildcard} has non-boolean value for "storageFile"`, {file:metadataFile}); for (const key in data) { if (!DATA_KEYS.includes(key)) - ERROR(`App ${app.id} data file ${data.name||data.wildcard} has unknown property "${key}"`); + ERROR(`App ${app.id} data file ${data.name||data.wildcard} has unknown property "${key}"`, {file:metadataFile}); } }); // prefer "appid.json" over "appid.settings.json" (TODO: change to ERROR once all apps comply?) @@ -256,32 +271,35 @@ apps.forEach((app,appIdx) => { WARN(`App ${app.id} uses data file ${app.id+'.settings.json'}`)*/ // settings files should be listed under data, not storage (TODO: change to ERROR once all apps comply?) if (fileNames.includes(app.id+".settings.json")) - WARN(`App ${app.id} uses storage file ${app.id+'.settings.json'} instead of data file`) + WARN(`App ${app.id} uses storage file ${app.id+'.settings.json'} instead of data file`, {file:metadataFile}) if (fileNames.includes(app.id+".json")) - WARN(`App ${app.id} uses storage file ${app.id+'.json'} instead of data file`) + WARN(`App ${app.id} uses storage file ${app.id+'.json'} instead of data file`, {file:metadataFile}) // warn if storage file matches data file of same app dataNames.forEach(dataName=>{ const glob = globToRegex(dataName) fileNames.forEach(fileName=>{ if (glob.test(fileName)) { - if (isGlob(dataName)) WARN(`App ${app.id} storage file ${fileName} matches data wildcard ${dataName}`) - else WARN(`App ${app.id} storage file ${fileName} is also listed in data`) + if (isGlob(dataName)) WARN(`App ${app.id} storage file ${fileName} matches data wildcard ${dataName}`, {file:metadataFile}) + else WARN(`App ${app.id} storage file ${fileName} is also listed in data`, {file:metadataFile}) } }) }) //console.log(fileNames); - if (isApp && !fileNames.includes(app.id+".app.js")) ERROR(`App ${app.id} has no entrypoint`); - if (isApp && !fileNames.includes(app.id+".img")) ERROR(`App ${app.id} has no JS icon`); - if (app.type=="widget" && !fileNames.includes(app.id+".wid.js")) ERROR(`Widget ${app.id} has no entrypoint`); + if (isApp && !fileNames.includes(app.id+".app.js")) ERROR(`App ${app.id} has no entrypoint`, {file:metadataFile}); + if (isApp && !fileNames.includes(app.id+".img")) ERROR(`App ${app.id} has no JS icon`, {file:metadataFile}); + if (app.type=="widget" && !fileNames.includes(app.id+".wid.js")) ERROR(`Widget ${app.id} has no entrypoint`, {file:metadataFile}); for (const key in app) { - if (!APP_KEYS.includes(key)) ERROR(`App ${app.id} has unknown key ${key}`); + if (!APP_KEYS.includes(key)) ERROR(`App ${app.id} has unknown key ${key}`, {file:metadataFile}); } }); + + // Do not allow files from different apps to collide let fileA + while(fileA=allFiles.pop()) { if (VALID_DUPLICATES.includes(fileA.file)) - return; + break; const nameA = (fileA.file||fileA.data), globA = globToRegex(nameA), typeA = fileA.file?'storage':'data' @@ -291,9 +309,16 @@ while(fileA=allFiles.pop()) { typeB = fileB.file?'storage':'data' if (globA.test(nameB)||globB.test(nameA)) { if (isGlob(nameA)||isGlob(nameB)) - ERROR(`App ${fileB.app} ${typeB} file ${nameB} matches app ${fileA.app} ${typeB} file ${nameA}`) + ERROR(`App ${fileB.app} ${typeB} file ${nameB} matches app ${fileA.app} ${typeB} file ${nameA}`); else if (fileA.app != fileB.app) - WARN(`App ${fileB.app} ${typeB} file ${nameB} is also listed as ${typeA} file for app ${fileA.app}`) + WARN(`App ${fileB.app} ${typeB} file ${nameB} is also listed as ${typeA} file for app ${fileA.app}`); } }) } + +console.log("=================================="); +console.log(`${errorCount} errors, ${warningCount} warnings`); +console.log("=================================="); +if (errorCount) { + process.exit(1); +}