From c3f11f90d5ff5acab328b1a88214b1ad2a94c756 Mon Sep 17 00:00:00 2001 From: Erik Andresen Date: Thu, 2 Feb 2023 18:39:08 +0100 Subject: [PATCH 01/17] sched: add interface.html - Edit or delete existing events, add new - Add events from iCalendar file --- apps/sched/interface.html | 223 ++++++++++++++++++++++++++++++++++++++ apps/sched/metadata.json | 1 + 2 files changed, 224 insertions(+) create mode 100644 apps/sched/interface.html diff --git a/apps/sched/interface.html b/apps/sched/interface.html new file mode 100644 index 000000000..366e597a2 --- /dev/null +++ b/apps/sched/interface.html @@ -0,0 +1,223 @@ + + + + + + + + + +

Manage dated events

+ +
+ +
+ + + + + + + + + + + +
DateSummary
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ + + + + diff --git a/apps/sched/metadata.json b/apps/sched/metadata.json index 2a1b0f8ca..42c3aaa12 100644 --- a/apps/sched/metadata.json +++ b/apps/sched/metadata.json @@ -10,6 +10,7 @@ "provides_modules" : ["sched"], "default" : true, "readme": "README.md", + "interface": "interface.html", "storage": [ {"name":"sched.boot.js","url":"boot.js"}, {"name":"sched.js","url":"sched.js"}, From 6b5fee29aff57101bc8ba8997d2274c3ed62d42c Mon Sep 17 00:00:00 2001 From: thyttan <6uuxstm66@mozmail.comā©> Date: Thu, 2 Feb 2023 21:40:34 +0100 Subject: [PATCH 02/17] back button for settings main menu --- apps/powermanager/ChangeLog | 1 + apps/powermanager/metadata.json | 2 +- apps/powermanager/settings.js | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/powermanager/ChangeLog b/apps/powermanager/ChangeLog index a83e8c676..06f38d399 100644 --- a/apps/powermanager/ChangeLog +++ b/apps/powermanager/ChangeLog @@ -3,3 +3,4 @@ 0.03: Use default Bangle formatter for booleans 0.04: Remove calibration with current voltage (Calibrate->Auto) as it is now handled by settings app Allow automatic calibration on every charge longer than 3 hours +0.05: Add back button to settings menu. diff --git a/apps/powermanager/metadata.json b/apps/powermanager/metadata.json index 0777feee3..456831aa9 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.04", + "version": "0.05", "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 9eeb29e00..fe4719275 100644 --- a/apps/powermanager/settings.js +++ b/apps/powermanager/settings.js @@ -23,6 +23,7 @@ '': { 'title': 'Power Manager' }, + "< Back" : back, 'Monotonic percentage': { value: !!settings.forceMonoPercentage, onchange: v => { From 6c8eb8e11d01526974a87fc21eb8228d21d7caf8 Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 10:48:15 +1300 Subject: [PATCH 03/17] Create app.js --- tempgraph/app.js | 395 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 395 insertions(+) create mode 100644 tempgraph/app.js diff --git a/tempgraph/app.js b/tempgraph/app.js new file mode 100644 index 000000000..a0bb3016b --- /dev/null +++ b/tempgraph/app.js @@ -0,0 +1,395 @@ +// Temperature Graph +// BangleJS Script + +Bangle.setBarometerPower(true,"tempgraph"); +Bangle.loadWidgets(); +var wids=WIDGETS; +var widsOn=true; +var rm=null; +var gt=null; +var dg=null; +var Layout=require("Layout"); +var C=true; +var temp,tempMode,readErrCnt,watchButton2; + +var graph=require("Storage").readJSON("tempgraph.json",true); +if(graph==undefined) { + graph=[]; +} + +var timesData=[ + // dur=duration, u=time units, d=divisions on graph, s=seconds per unit. + {dur:10,u:"Mins",d:5,s:60}, + {dur:20,u:"Mins",d:4,s:60}, + {dur:30,u:"Mins",d:3,s:60}, + {dur:40,u:"Mins",d:4,s:60}, + {dur:1,u:"Hr",d:4,s:3600}, + {dur:2,u:"Hrs",d:4,s:3600}, + {dur:3,u:"Hrs",d:3,s:3600}, + {dur:4,u:"Hrs",d:4,s:3600}, + {dur:6,u:"Hrs",d:6,s:3600}, + {dur:8,u:"Hrs",d:4,s:3600}, + {dur:12,u:"Hrs",d:6,s:3600}, + {dur:16,u:"Hrs",d:4,s:3600}, + {dur:20,u:"Hrs",d:5,s:3600}, + {dur:1,u:"Day",d:4,s:3600}, + {dur:2,u:"Days",d:4,s:86400}, + {dur:3,u:"Days",d:3,s:86400}, + {dur:4,u:"Days",d:4,s:86400}, + {dur:5,u:"Days",d:5,s:86400}, + {dur:6,u:"Days",d:6,s:86400}, + {dur:7,u:"Days",d:7,s:86400} +]; +var times=[]; +for(n=0;n{ + temp=p.temperature; + if(tempMode=="drawGraph"&&graph.length>0&&Math.abs(graph[graph.length-1].temp-temp)>10&&readErrCnt<2){ + // A large change in temperature may be a reading error. ie. A 0C or less reading after + // a 20C reading. So if this happens, the reading is repeated up to 2 times to hopefully + // skip such errors. + readErrCnt++; + print("readErrCnt "+readErrCnt); + return; + } + clearInterval(gt); + readErrCnt=0; + switch (tempMode){ + case "showTemp": + showT(); + break; + case "drawGraph": + var date=new Date(); + var dateStr=require("locale").date(date).trim(); + var hrs=date.getHours(); + var mins=date.getMinutes(); + var secs=date.getSeconds(); + graph.push({ + temp:temp, + date:dateStr, + hrs:hrs, + mins:mins, + secs:secs + }); + if(graph.length==1){ + graph[0].dur=durInd; + } + require("Storage").writeJSON("tempgraph.json", graph); + if(graph.length==150){ + clearInterval(dg); + } + drawG(); + } + }); +} + +function getTemp(){ + readErrCnt=0; + gt = setInterval(getT,800); +} + +function setButton(){ + var watchButton=setWatch(function(){ + clearInterval(gt); + clearInterval(dg); + clearWatch(watchButton); + Bangle.removeListener("touch",screenTouch); + openMenu(); + },BTN); + Bangle.on('touch',screenTouch); +} + +function setButton2(){ + watchButton2=setWatch(function(){ + clearWatch(watchButton2); + openMenu(); + },BTN); +} + +function zPad(n){ + return n.toString().padStart(2,0); +} + +function screenTouch(n,ev){ + if(ev.y>23&&ev.y<152){ + C=C==false; + drawG(false); + } +} + +function drawG(){ + function cf(t){ + if(C){ + return t; + } + return getF(t); + } + drawWids(); + var top=1; + var bar=21; + var barBot=175-22; + if(widsOn){ + top=25; + bar=bar+24; + barBot=barBot-24; + } + var low=graph[0].temp; + var hi=low; + for(n=0;nt){ + low=t; + } + if(hi10){ + div=5; + } + if(C){ + g.setColor(1,0,0); + }else{ + g.setColor(0,0,1); + } + var step=(barBot-bar)/((tempHi-tempLow)/div); + for(n=0;nexit()}, + ],lazy:true + }); + drawWids(); + messageLO.render(); +} + +function showT(){ + tempLO.lab1.label=tempLO.lab3.label; + tempLO.lab2.label=tempLO.lab4.label; + tempLO.lab3.label=tempLO.lab5.label; + tempLO.lab4.label=tempLO.lab6.label; + tempLO.lab5.label=temp.toFixed(2)+"C"; + tempLO.lab6.label=getF(temp).toFixed(2)+"F"; + tempLO.render(); +} + +function exit(){ + clearWatch(watchButton2); + openMenu(); +} + +function showTemp(){ + tempMode="showTemp"; + setButton2(); + tempLO=new Layout({ + type:"v",c:[ + {type:"h",c:[ + {type:"txt",pad:5,col:"#f77",font:"6x8:2",label:" ",id:"lab1"}, + {type:"txt",pad:5,col:"#77f",font:"6x8:2",label:" ",id:"lab2"} + ]}, + {type:"h",c:[ + {type:"txt",pad:5,col:"#f77",font:"6x8:2",label:" ",id:"lab3"}, + {type:"txt",pad:5,col:"#77f",font:"6x8:2",label:" ",id:"lab4"} + ]}, + {type:"h",c:[ + {type:"txt",pad:5,col:"#f00",font:"6x8:2",label:" ",id:"lab5"}, + {type:"txt",pad:5,col:"#00f",font:"6x8:2",label:" ",id:"lab6"} + ]}, + {type:"h",c:[ + {type:"btn",pad:2,font:"6x8:2",label:"Temp",cb:l=>getTemp()}, + {type:"btn",pad:2,font:"6x8:2",label:"Exit",cb:l=>exit()} + ]} + ] + },{lazy:true}); + tempLO.render(); + getTemp(); +} + +var menu={ + "":{ + "title":" Temp. Graph" + }, + + "Widgets":{ + value:widsOn, + format:vis=>vis?"Hide":"Show", + onchange:vis=>{ + widsOn=vis; + refreshMenu(); + } + }, + + "Duration":{ + value:times.indexOf(duration), + min:0,max:times.length-1,step:1,wrap:true, + format:tim=>times[tim], + onchange:(dur)=>{ + duration=times[dur]; + } + }, + + "Draw Graph":function(){ + E.showMenu(); + drawGraph(); + }, + + "Show Graph" : function(){ + E.showMenu(); + if(graph.length>0){ + showGraph(); + }else{ + message("No graph to\nshow as no\ngraph has been\ndrawn yet."); + } + }, + + "Save Graph" : function(){ + E.showMenu(); + if(graph.length>0){ + saveGraph(); + }else{ + message("No graph to\nsave as no\ngraph has been\ndrawn yet."); + } + }, + + "Save Data" : function(){ + E.showMenu(); + if(graph.length>0){ + saveData(); + }else{ + message("No data to\nsave as no\ngraph has been\ndrawn yet."); + } + }, + + "Show Temp":function(){ + E.showMenu(); + showTemp(); + } +}; + +openMenu(); From a77b4cf233e4c8f879c005e32efbeaf05263e5db Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 10:54:02 +1300 Subject: [PATCH 04/17] Add files via upload --- tempgraph/ChangeLog | 2 ++ tempgraph/README.md | 35 +++++++++++++++++++++++++++++++++++ tempgraph/metadata.json | 18 ++++++++++++++++++ tempgraph/screenshot_1.png | Bin 0 -> 3320 bytes tempgraph/screenshot_2.png | Bin 0 -> 4186 bytes tempgraph/screenshot_3.png | Bin 0 -> 3480 bytes 6 files changed, 55 insertions(+) create mode 100644 tempgraph/ChangeLog create mode 100644 tempgraph/README.md create mode 100644 tempgraph/metadata.json create mode 100644 tempgraph/screenshot_1.png create mode 100644 tempgraph/screenshot_2.png create mode 100644 tempgraph/screenshot_3.png diff --git a/tempgraph/ChangeLog b/tempgraph/ChangeLog new file mode 100644 index 000000000..58dd75a19 --- /dev/null +++ b/tempgraph/ChangeLog @@ -0,0 +1,2 @@ +0.01: 3/Feb/2023 Added 'Temperature Graph' app to depository. + diff --git a/tempgraph/README.md b/tempgraph/README.md new file mode 100644 index 000000000..e104c41e0 --- /dev/null +++ b/tempgraph/README.md @@ -0,0 +1,35 @@ +# Temperature Graph + +**Temperature Graph** (tempgraph) is a Bangle.js 2 app for recording graphs of the temperature for various time periods from 10 minutes to 7 days long. It samples the watch's temperature sensor 150 times while creating a graph, regardless of the time period selected. + +### Menu Options +* **Widgets** Toggles the watch's widgets on and off. With them off gives you a bigger graph when viewing it. + +* **Duration** Select the time period for drawing the graph, from 10 minutes to 7 days long. + +* **Draw Graph** Draws the graph. + * Tapping the screen toggles the graph between Celsius (red) and Fahrenheit (blue). + * Pressing the watch button takes you back to the menu. **Note:** While the graph can still be viewed after returning to the menu, you can't continue recording it if you had returned to the menu before the time period was up. The graph is saved in the watch though so it's still there the next time you start the app. + +![](screenshot_1.png) +![](screenshot_2.png) +![](screenshot_3.png) + +* **Show Graph** Shows the last drawn graph. + * Tapping the screen toggles the graph between Celsius (red) and Fahrenheit (blue). + * Pressing the watch button takes you back to the menu. + +* **Save Graph** Sends a screengrab of the graph to the Espruino Web IDE from where you can save it as you would any image on a webpage. + +* **Save Data** Sends a CSV file of the graph's temperature data to the Espruino Web IDE where you can save it for further use. I suggest you use the Espruino Web IDE's Terminal Logger (selected in the IDE's Settings/General) to record the data as it's sent. This is the easiest way to save it as a text file. + +* **Show Temp** Shows the current temperature. + +### Note +Using the watch in a normal fashion can raise the temperature it's sensing to quite a few degrees above the surrounding temperature and it may take half an hour or so to drop to close to the surrounding temperature. After that it seems to give quite accurate readings, assuming the thermometer I've been comparing it to is itself reasonably accurate. So best to load the app then not touch the watch for half an hour before starting a recording. This is assuming you're not wearing the app and are just using it to record the temperature where you've put the watch. You could of course wear it and it'll still draw a graph, which might also be useful. + +### Creator +Carl Read ([mail](mailto:cread98@orcon.net.nz), [github](https://github.com/CarlR9)) + +#### License +[MIT License](LICENSE) diff --git a/tempgraph/metadata.json b/tempgraph/metadata.json new file mode 100644 index 000000000..f714c1eef --- /dev/null +++ b/tempgraph/metadata.json @@ -0,0 +1,18 @@ +{ "id": "tempgraph", + "name": "Temperature Graph", + "shortName":"Temp Graph", + "version":"0.01", + "description": "An app for recording the temperature for time periods ranging from 10 minutes to 7 days.", + "icon": "app.png", + "type": "tool", + "tags": "temperature,tempgraph,graph", + "supports" : ["BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"tempgraph.app.js","url":"app.js"} + ], + "data": [ + {"name":"tempgraph.json"} + ], + "screenshots": [{"url":"screenshot_1.png"},{"url":"screenshot_2.png"},{"url":"screenshot_3.png"}] +} diff --git a/tempgraph/screenshot_1.png b/tempgraph/screenshot_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7395f289695fd5be8a03d97b8644f55cc29072db GIT binary patch literal 3320 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 literal 0 HcmV?d00001 diff --git a/tempgraph/screenshot_2.png b/tempgraph/screenshot_2.png new file mode 100644 index 0000000000000000000000000000000000000000..68d0ea236c6a513868c69eae8a5e51f995fad9f4 GIT binary patch literal 4186 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 Di-xj= literal 0 HcmV?d00001 From 7b68a37391be112b364caa3da7f793c283898848 Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:05:06 +1300 Subject: [PATCH 05/17] Update README.md --- tempgraph/README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tempgraph/README.md b/tempgraph/README.md index e104c41e0..de4a0af59 100644 --- a/tempgraph/README.md +++ b/tempgraph/README.md @@ -11,10 +11,6 @@ * Tapping the screen toggles the graph between Celsius (red) and Fahrenheit (blue). * Pressing the watch button takes you back to the menu. **Note:** While the graph can still be viewed after returning to the menu, you can't continue recording it if you had returned to the menu before the time period was up. The graph is saved in the watch though so it's still there the next time you start the app. -![](screenshot_1.png) -![](screenshot_2.png) -![](screenshot_3.png) - * **Show Graph** Shows the last drawn graph. * Tapping the screen toggles the graph between Celsius (red) and Fahrenheit (blue). * Pressing the watch button takes you back to the menu. @@ -25,6 +21,11 @@ * **Show Temp** Shows the current temperature. +### Screenshots +![](screenshot_1.png) +![](screenshot_2.png) +![](screenshot_3.png) + ### Note Using the watch in a normal fashion can raise the temperature it's sensing to quite a few degrees above the surrounding temperature and it may take half an hour or so to drop to close to the surrounding temperature. After that it seems to give quite accurate readings, assuming the thermometer I've been comparing it to is itself reasonably accurate. So best to load the app then not touch the watch for half an hour before starting a recording. This is assuming you're not wearing the app and are just using it to record the temperature where you've put the watch. You could of course wear it and it'll still draw a graph, which might also be useful. From ff40b61747f8894710d85bf41e36e9f29282b74c Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:16:05 +1300 Subject: [PATCH 06/17] Delete tempgraph directory --- tempgraph/ChangeLog | 2 - tempgraph/README.md | 36 ---- tempgraph/app.js | 395 ------------------------------------- tempgraph/metadata.json | 18 -- tempgraph/screenshot_1.png | Bin 3320 -> 0 bytes tempgraph/screenshot_2.png | Bin 4186 -> 0 bytes tempgraph/screenshot_3.png | Bin 3480 -> 0 bytes 7 files changed, 451 deletions(-) delete mode 100644 tempgraph/ChangeLog delete mode 100644 tempgraph/README.md delete mode 100644 tempgraph/app.js delete mode 100644 tempgraph/metadata.json delete mode 100644 tempgraph/screenshot_1.png delete mode 100644 tempgraph/screenshot_2.png delete mode 100644 tempgraph/screenshot_3.png diff --git a/tempgraph/ChangeLog b/tempgraph/ChangeLog deleted file mode 100644 index 58dd75a19..000000000 --- a/tempgraph/ChangeLog +++ /dev/null @@ -1,2 +0,0 @@ -0.01: 3/Feb/2023 Added 'Temperature Graph' app to depository. - diff --git a/tempgraph/README.md b/tempgraph/README.md deleted file mode 100644 index de4a0af59..000000000 --- a/tempgraph/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# Temperature Graph - -**Temperature Graph** (tempgraph) is a Bangle.js 2 app for recording graphs of the temperature for various time periods from 10 minutes to 7 days long. It samples the watch's temperature sensor 150 times while creating a graph, regardless of the time period selected. - -### Menu Options -* **Widgets** Toggles the watch's widgets on and off. With them off gives you a bigger graph when viewing it. - -* **Duration** Select the time period for drawing the graph, from 10 minutes to 7 days long. - -* **Draw Graph** Draws the graph. - * Tapping the screen toggles the graph between Celsius (red) and Fahrenheit (blue). - * Pressing the watch button takes you back to the menu. **Note:** While the graph can still be viewed after returning to the menu, you can't continue recording it if you had returned to the menu before the time period was up. The graph is saved in the watch though so it's still there the next time you start the app. - -* **Show Graph** Shows the last drawn graph. - * Tapping the screen toggles the graph between Celsius (red) and Fahrenheit (blue). - * Pressing the watch button takes you back to the menu. - -* **Save Graph** Sends a screengrab of the graph to the Espruino Web IDE from where you can save it as you would any image on a webpage. - -* **Save Data** Sends a CSV file of the graph's temperature data to the Espruino Web IDE where you can save it for further use. I suggest you use the Espruino Web IDE's Terminal Logger (selected in the IDE's Settings/General) to record the data as it's sent. This is the easiest way to save it as a text file. - -* **Show Temp** Shows the current temperature. - -### Screenshots -![](screenshot_1.png) -![](screenshot_2.png) -![](screenshot_3.png) - -### Note -Using the watch in a normal fashion can raise the temperature it's sensing to quite a few degrees above the surrounding temperature and it may take half an hour or so to drop to close to the surrounding temperature. After that it seems to give quite accurate readings, assuming the thermometer I've been comparing it to is itself reasonably accurate. So best to load the app then not touch the watch for half an hour before starting a recording. This is assuming you're not wearing the app and are just using it to record the temperature where you've put the watch. You could of course wear it and it'll still draw a graph, which might also be useful. - -### Creator -Carl Read ([mail](mailto:cread98@orcon.net.nz), [github](https://github.com/CarlR9)) - -#### License -[MIT License](LICENSE) diff --git a/tempgraph/app.js b/tempgraph/app.js deleted file mode 100644 index a0bb3016b..000000000 --- a/tempgraph/app.js +++ /dev/null @@ -1,395 +0,0 @@ -// Temperature Graph -// BangleJS Script - -Bangle.setBarometerPower(true,"tempgraph"); -Bangle.loadWidgets(); -var wids=WIDGETS; -var widsOn=true; -var rm=null; -var gt=null; -var dg=null; -var Layout=require("Layout"); -var C=true; -var temp,tempMode,readErrCnt,watchButton2; - -var graph=require("Storage").readJSON("tempgraph.json",true); -if(graph==undefined) { - graph=[]; -} - -var timesData=[ - // dur=duration, u=time units, d=divisions on graph, s=seconds per unit. - {dur:10,u:"Mins",d:5,s:60}, - {dur:20,u:"Mins",d:4,s:60}, - {dur:30,u:"Mins",d:3,s:60}, - {dur:40,u:"Mins",d:4,s:60}, - {dur:1,u:"Hr",d:4,s:3600}, - {dur:2,u:"Hrs",d:4,s:3600}, - {dur:3,u:"Hrs",d:3,s:3600}, - {dur:4,u:"Hrs",d:4,s:3600}, - {dur:6,u:"Hrs",d:6,s:3600}, - {dur:8,u:"Hrs",d:4,s:3600}, - {dur:12,u:"Hrs",d:6,s:3600}, - {dur:16,u:"Hrs",d:4,s:3600}, - {dur:20,u:"Hrs",d:5,s:3600}, - {dur:1,u:"Day",d:4,s:3600}, - {dur:2,u:"Days",d:4,s:86400}, - {dur:3,u:"Days",d:3,s:86400}, - {dur:4,u:"Days",d:4,s:86400}, - {dur:5,u:"Days",d:5,s:86400}, - {dur:6,u:"Days",d:6,s:86400}, - {dur:7,u:"Days",d:7,s:86400} -]; -var times=[]; -for(n=0;n{ - temp=p.temperature; - if(tempMode=="drawGraph"&&graph.length>0&&Math.abs(graph[graph.length-1].temp-temp)>10&&readErrCnt<2){ - // A large change in temperature may be a reading error. ie. A 0C or less reading after - // a 20C reading. So if this happens, the reading is repeated up to 2 times to hopefully - // skip such errors. - readErrCnt++; - print("readErrCnt "+readErrCnt); - return; - } - clearInterval(gt); - readErrCnt=0; - switch (tempMode){ - case "showTemp": - showT(); - break; - case "drawGraph": - var date=new Date(); - var dateStr=require("locale").date(date).trim(); - var hrs=date.getHours(); - var mins=date.getMinutes(); - var secs=date.getSeconds(); - graph.push({ - temp:temp, - date:dateStr, - hrs:hrs, - mins:mins, - secs:secs - }); - if(graph.length==1){ - graph[0].dur=durInd; - } - require("Storage").writeJSON("tempgraph.json", graph); - if(graph.length==150){ - clearInterval(dg); - } - drawG(); - } - }); -} - -function getTemp(){ - readErrCnt=0; - gt = setInterval(getT,800); -} - -function setButton(){ - var watchButton=setWatch(function(){ - clearInterval(gt); - clearInterval(dg); - clearWatch(watchButton); - Bangle.removeListener("touch",screenTouch); - openMenu(); - },BTN); - Bangle.on('touch',screenTouch); -} - -function setButton2(){ - watchButton2=setWatch(function(){ - clearWatch(watchButton2); - openMenu(); - },BTN); -} - -function zPad(n){ - return n.toString().padStart(2,0); -} - -function screenTouch(n,ev){ - if(ev.y>23&&ev.y<152){ - C=C==false; - drawG(false); - } -} - -function drawG(){ - function cf(t){ - if(C){ - return t; - } - return getF(t); - } - drawWids(); - var top=1; - var bar=21; - var barBot=175-22; - if(widsOn){ - top=25; - bar=bar+24; - barBot=barBot-24; - } - var low=graph[0].temp; - var hi=low; - for(n=0;nt){ - low=t; - } - if(hi10){ - div=5; - } - if(C){ - g.setColor(1,0,0); - }else{ - g.setColor(0,0,1); - } - var step=(barBot-bar)/((tempHi-tempLow)/div); - for(n=0;nexit()}, - ],lazy:true - }); - drawWids(); - messageLO.render(); -} - -function showT(){ - tempLO.lab1.label=tempLO.lab3.label; - tempLO.lab2.label=tempLO.lab4.label; - tempLO.lab3.label=tempLO.lab5.label; - tempLO.lab4.label=tempLO.lab6.label; - tempLO.lab5.label=temp.toFixed(2)+"C"; - tempLO.lab6.label=getF(temp).toFixed(2)+"F"; - tempLO.render(); -} - -function exit(){ - clearWatch(watchButton2); - openMenu(); -} - -function showTemp(){ - tempMode="showTemp"; - setButton2(); - tempLO=new Layout({ - type:"v",c:[ - {type:"h",c:[ - {type:"txt",pad:5,col:"#f77",font:"6x8:2",label:" ",id:"lab1"}, - {type:"txt",pad:5,col:"#77f",font:"6x8:2",label:" ",id:"lab2"} - ]}, - {type:"h",c:[ - {type:"txt",pad:5,col:"#f77",font:"6x8:2",label:" ",id:"lab3"}, - {type:"txt",pad:5,col:"#77f",font:"6x8:2",label:" ",id:"lab4"} - ]}, - {type:"h",c:[ - {type:"txt",pad:5,col:"#f00",font:"6x8:2",label:" ",id:"lab5"}, - {type:"txt",pad:5,col:"#00f",font:"6x8:2",label:" ",id:"lab6"} - ]}, - {type:"h",c:[ - {type:"btn",pad:2,font:"6x8:2",label:"Temp",cb:l=>getTemp()}, - {type:"btn",pad:2,font:"6x8:2",label:"Exit",cb:l=>exit()} - ]} - ] - },{lazy:true}); - tempLO.render(); - getTemp(); -} - -var menu={ - "":{ - "title":" Temp. Graph" - }, - - "Widgets":{ - value:widsOn, - format:vis=>vis?"Hide":"Show", - onchange:vis=>{ - widsOn=vis; - refreshMenu(); - } - }, - - "Duration":{ - value:times.indexOf(duration), - min:0,max:times.length-1,step:1,wrap:true, - format:tim=>times[tim], - onchange:(dur)=>{ - duration=times[dur]; - } - }, - - "Draw Graph":function(){ - E.showMenu(); - drawGraph(); - }, - - "Show Graph" : function(){ - E.showMenu(); - if(graph.length>0){ - showGraph(); - }else{ - message("No graph to\nshow as no\ngraph has been\ndrawn yet."); - } - }, - - "Save Graph" : function(){ - E.showMenu(); - if(graph.length>0){ - saveGraph(); - }else{ - message("No graph to\nsave as no\ngraph has been\ndrawn yet."); - } - }, - - "Save Data" : function(){ - E.showMenu(); - if(graph.length>0){ - saveData(); - }else{ - message("No data to\nsave as no\ngraph has been\ndrawn yet."); - } - }, - - "Show Temp":function(){ - E.showMenu(); - showTemp(); - } -}; - -openMenu(); diff --git a/tempgraph/metadata.json b/tempgraph/metadata.json deleted file mode 100644 index f714c1eef..000000000 --- a/tempgraph/metadata.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "id": "tempgraph", - "name": "Temperature Graph", - "shortName":"Temp Graph", - "version":"0.01", - "description": "An app for recording the temperature for time periods ranging from 10 minutes to 7 days.", - "icon": "app.png", - "type": "tool", - "tags": "temperature,tempgraph,graph", - "supports" : ["BANGLEJS2"], - "readme": "README.md", - "storage": [ - {"name":"tempgraph.app.js","url":"app.js"} - ], - "data": [ - {"name":"tempgraph.json"} - ], - "screenshots": [{"url":"screenshot_1.png"},{"url":"screenshot_2.png"},{"url":"screenshot_3.png"}] -} diff --git a/tempgraph/screenshot_1.png b/tempgraph/screenshot_1.png deleted file mode 100644 index 7395f289695fd5be8a03d97b8644f55cc29072db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3320 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 diff --git a/tempgraph/screenshot_2.png b/tempgraph/screenshot_2.png deleted file mode 100644 index 68d0ea236c6a513868c69eae8a5e51f995fad9f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4186 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 Di-xj= From 230625ae7830acc595f43f8e6e87b792f59e3e4e Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:18:27 +1300 Subject: [PATCH 07/17] Create app.js --- apps/tempgraph/app.js | 395 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 395 insertions(+) create mode 100644 apps/tempgraph/app.js diff --git a/apps/tempgraph/app.js b/apps/tempgraph/app.js new file mode 100644 index 000000000..a0bb3016b --- /dev/null +++ b/apps/tempgraph/app.js @@ -0,0 +1,395 @@ +// Temperature Graph +// BangleJS Script + +Bangle.setBarometerPower(true,"tempgraph"); +Bangle.loadWidgets(); +var wids=WIDGETS; +var widsOn=true; +var rm=null; +var gt=null; +var dg=null; +var Layout=require("Layout"); +var C=true; +var temp,tempMode,readErrCnt,watchButton2; + +var graph=require("Storage").readJSON("tempgraph.json",true); +if(graph==undefined) { + graph=[]; +} + +var timesData=[ + // dur=duration, u=time units, d=divisions on graph, s=seconds per unit. + {dur:10,u:"Mins",d:5,s:60}, + {dur:20,u:"Mins",d:4,s:60}, + {dur:30,u:"Mins",d:3,s:60}, + {dur:40,u:"Mins",d:4,s:60}, + {dur:1,u:"Hr",d:4,s:3600}, + {dur:2,u:"Hrs",d:4,s:3600}, + {dur:3,u:"Hrs",d:3,s:3600}, + {dur:4,u:"Hrs",d:4,s:3600}, + {dur:6,u:"Hrs",d:6,s:3600}, + {dur:8,u:"Hrs",d:4,s:3600}, + {dur:12,u:"Hrs",d:6,s:3600}, + {dur:16,u:"Hrs",d:4,s:3600}, + {dur:20,u:"Hrs",d:5,s:3600}, + {dur:1,u:"Day",d:4,s:3600}, + {dur:2,u:"Days",d:4,s:86400}, + {dur:3,u:"Days",d:3,s:86400}, + {dur:4,u:"Days",d:4,s:86400}, + {dur:5,u:"Days",d:5,s:86400}, + {dur:6,u:"Days",d:6,s:86400}, + {dur:7,u:"Days",d:7,s:86400} +]; +var times=[]; +for(n=0;n{ + temp=p.temperature; + if(tempMode=="drawGraph"&&graph.length>0&&Math.abs(graph[graph.length-1].temp-temp)>10&&readErrCnt<2){ + // A large change in temperature may be a reading error. ie. A 0C or less reading after + // a 20C reading. So if this happens, the reading is repeated up to 2 times to hopefully + // skip such errors. + readErrCnt++; + print("readErrCnt "+readErrCnt); + return; + } + clearInterval(gt); + readErrCnt=0; + switch (tempMode){ + case "showTemp": + showT(); + break; + case "drawGraph": + var date=new Date(); + var dateStr=require("locale").date(date).trim(); + var hrs=date.getHours(); + var mins=date.getMinutes(); + var secs=date.getSeconds(); + graph.push({ + temp:temp, + date:dateStr, + hrs:hrs, + mins:mins, + secs:secs + }); + if(graph.length==1){ + graph[0].dur=durInd; + } + require("Storage").writeJSON("tempgraph.json", graph); + if(graph.length==150){ + clearInterval(dg); + } + drawG(); + } + }); +} + +function getTemp(){ + readErrCnt=0; + gt = setInterval(getT,800); +} + +function setButton(){ + var watchButton=setWatch(function(){ + clearInterval(gt); + clearInterval(dg); + clearWatch(watchButton); + Bangle.removeListener("touch",screenTouch); + openMenu(); + },BTN); + Bangle.on('touch',screenTouch); +} + +function setButton2(){ + watchButton2=setWatch(function(){ + clearWatch(watchButton2); + openMenu(); + },BTN); +} + +function zPad(n){ + return n.toString().padStart(2,0); +} + +function screenTouch(n,ev){ + if(ev.y>23&&ev.y<152){ + C=C==false; + drawG(false); + } +} + +function drawG(){ + function cf(t){ + if(C){ + return t; + } + return getF(t); + } + drawWids(); + var top=1; + var bar=21; + var barBot=175-22; + if(widsOn){ + top=25; + bar=bar+24; + barBot=barBot-24; + } + var low=graph[0].temp; + var hi=low; + for(n=0;nt){ + low=t; + } + if(hi10){ + div=5; + } + if(C){ + g.setColor(1,0,0); + }else{ + g.setColor(0,0,1); + } + var step=(barBot-bar)/((tempHi-tempLow)/div); + for(n=0;nexit()}, + ],lazy:true + }); + drawWids(); + messageLO.render(); +} + +function showT(){ + tempLO.lab1.label=tempLO.lab3.label; + tempLO.lab2.label=tempLO.lab4.label; + tempLO.lab3.label=tempLO.lab5.label; + tempLO.lab4.label=tempLO.lab6.label; + tempLO.lab5.label=temp.toFixed(2)+"C"; + tempLO.lab6.label=getF(temp).toFixed(2)+"F"; + tempLO.render(); +} + +function exit(){ + clearWatch(watchButton2); + openMenu(); +} + +function showTemp(){ + tempMode="showTemp"; + setButton2(); + tempLO=new Layout({ + type:"v",c:[ + {type:"h",c:[ + {type:"txt",pad:5,col:"#f77",font:"6x8:2",label:" ",id:"lab1"}, + {type:"txt",pad:5,col:"#77f",font:"6x8:2",label:" ",id:"lab2"} + ]}, + {type:"h",c:[ + {type:"txt",pad:5,col:"#f77",font:"6x8:2",label:" ",id:"lab3"}, + {type:"txt",pad:5,col:"#77f",font:"6x8:2",label:" ",id:"lab4"} + ]}, + {type:"h",c:[ + {type:"txt",pad:5,col:"#f00",font:"6x8:2",label:" ",id:"lab5"}, + {type:"txt",pad:5,col:"#00f",font:"6x8:2",label:" ",id:"lab6"} + ]}, + {type:"h",c:[ + {type:"btn",pad:2,font:"6x8:2",label:"Temp",cb:l=>getTemp()}, + {type:"btn",pad:2,font:"6x8:2",label:"Exit",cb:l=>exit()} + ]} + ] + },{lazy:true}); + tempLO.render(); + getTemp(); +} + +var menu={ + "":{ + "title":" Temp. Graph" + }, + + "Widgets":{ + value:widsOn, + format:vis=>vis?"Hide":"Show", + onchange:vis=>{ + widsOn=vis; + refreshMenu(); + } + }, + + "Duration":{ + value:times.indexOf(duration), + min:0,max:times.length-1,step:1,wrap:true, + format:tim=>times[tim], + onchange:(dur)=>{ + duration=times[dur]; + } + }, + + "Draw Graph":function(){ + E.showMenu(); + drawGraph(); + }, + + "Show Graph" : function(){ + E.showMenu(); + if(graph.length>0){ + showGraph(); + }else{ + message("No graph to\nshow as no\ngraph has been\ndrawn yet."); + } + }, + + "Save Graph" : function(){ + E.showMenu(); + if(graph.length>0){ + saveGraph(); + }else{ + message("No graph to\nsave as no\ngraph has been\ndrawn yet."); + } + }, + + "Save Data" : function(){ + E.showMenu(); + if(graph.length>0){ + saveData(); + }else{ + message("No data to\nsave as no\ngraph has been\ndrawn yet."); + } + }, + + "Show Temp":function(){ + E.showMenu(); + showTemp(); + } +}; + +openMenu(); From 862494a0d7d2967643cd59c766c0dbb58d3c9dca Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:19:47 +1300 Subject: [PATCH 08/17] Add files via upload --- apps/tempgraph/ChangeLog | 2 ++ apps/tempgraph/README.md | 36 ++++++++++++++++++++++++++++++++ apps/tempgraph/app.png | Bin 0 -> 6941 bytes apps/tempgraph/metadata.json | 18 ++++++++++++++++ apps/tempgraph/screenshot_1.png | Bin 0 -> 3320 bytes apps/tempgraph/screenshot_2.png | Bin 0 -> 4186 bytes apps/tempgraph/screenshot_3.png | Bin 0 -> 3480 bytes 7 files changed, 56 insertions(+) create mode 100644 apps/tempgraph/ChangeLog create mode 100644 apps/tempgraph/README.md create mode 100644 apps/tempgraph/app.png create mode 100644 apps/tempgraph/metadata.json create mode 100644 apps/tempgraph/screenshot_1.png create mode 100644 apps/tempgraph/screenshot_2.png create mode 100644 apps/tempgraph/screenshot_3.png diff --git a/apps/tempgraph/ChangeLog b/apps/tempgraph/ChangeLog new file mode 100644 index 000000000..58dd75a19 --- /dev/null +++ b/apps/tempgraph/ChangeLog @@ -0,0 +1,2 @@ +0.01: 3/Feb/2023 Added 'Temperature Graph' app to depository. + diff --git a/apps/tempgraph/README.md b/apps/tempgraph/README.md new file mode 100644 index 000000000..de4a0af59 --- /dev/null +++ b/apps/tempgraph/README.md @@ -0,0 +1,36 @@ +# Temperature Graph + +**Temperature Graph** (tempgraph) is a Bangle.js 2 app for recording graphs of the temperature for various time periods from 10 minutes to 7 days long. It samples the watch's temperature sensor 150 times while creating a graph, regardless of the time period selected. + +### Menu Options +* **Widgets** Toggles the watch's widgets on and off. With them off gives you a bigger graph when viewing it. + +* **Duration** Select the time period for drawing the graph, from 10 minutes to 7 days long. + +* **Draw Graph** Draws the graph. + * Tapping the screen toggles the graph between Celsius (red) and Fahrenheit (blue). + * Pressing the watch button takes you back to the menu. **Note:** While the graph can still be viewed after returning to the menu, you can't continue recording it if you had returned to the menu before the time period was up. The graph is saved in the watch though so it's still there the next time you start the app. + +* **Show Graph** Shows the last drawn graph. + * Tapping the screen toggles the graph between Celsius (red) and Fahrenheit (blue). + * Pressing the watch button takes you back to the menu. + +* **Save Graph** Sends a screengrab of the graph to the Espruino Web IDE from where you can save it as you would any image on a webpage. + +* **Save Data** Sends a CSV file of the graph's temperature data to the Espruino Web IDE where you can save it for further use. I suggest you use the Espruino Web IDE's Terminal Logger (selected in the IDE's Settings/General) to record the data as it's sent. This is the easiest way to save it as a text file. + +* **Show Temp** Shows the current temperature. + +### Screenshots +![](screenshot_1.png) +![](screenshot_2.png) +![](screenshot_3.png) + +### Note +Using the watch in a normal fashion can raise the temperature it's sensing to quite a few degrees above the surrounding temperature and it may take half an hour or so to drop to close to the surrounding temperature. After that it seems to give quite accurate readings, assuming the thermometer I've been comparing it to is itself reasonably accurate. So best to load the app then not touch the watch for half an hour before starting a recording. This is assuming you're not wearing the app and are just using it to record the temperature where you've put the watch. You could of course wear it and it'll still draw a graph, which might also be useful. + +### Creator +Carl Read ([mail](mailto:cread98@orcon.net.nz), [github](https://github.com/CarlR9)) + +#### License +[MIT License](LICENSE) diff --git a/apps/tempgraph/app.png b/apps/tempgraph/app.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae347ac837d8366797f532b8d304dc77802fd02 GIT binary patch literal 6941 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 V5(kw?=U-<5P+3(-m9%N_e*t{e8WjKl literal 0 HcmV?d00001 diff --git a/apps/tempgraph/metadata.json b/apps/tempgraph/metadata.json new file mode 100644 index 000000000..f714c1eef --- /dev/null +++ b/apps/tempgraph/metadata.json @@ -0,0 +1,18 @@ +{ "id": "tempgraph", + "name": "Temperature Graph", + "shortName":"Temp Graph", + "version":"0.01", + "description": "An app for recording the temperature for time periods ranging from 10 minutes to 7 days.", + "icon": "app.png", + "type": "tool", + "tags": "temperature,tempgraph,graph", + "supports" : ["BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"tempgraph.app.js","url":"app.js"} + ], + "data": [ + {"name":"tempgraph.json"} + ], + "screenshots": [{"url":"screenshot_1.png"},{"url":"screenshot_2.png"},{"url":"screenshot_3.png"}] +} diff --git a/apps/tempgraph/screenshot_1.png b/apps/tempgraph/screenshot_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7395f289695fd5be8a03d97b8644f55cc29072db GIT binary patch literal 3320 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 literal 0 HcmV?d00001 diff --git a/apps/tempgraph/screenshot_2.png b/apps/tempgraph/screenshot_2.png new file mode 100644 index 0000000000000000000000000000000000000000..68d0ea236c6a513868c69eae8a5e51f995fad9f4 GIT binary patch literal 4186 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 Di-xj= literal 0 HcmV?d00001 From 364c25f26a076c1707e03a7ffe1f07788543c78a Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:29:15 +1300 Subject: [PATCH 09/17] Update README.md --- apps/tempgraph/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/tempgraph/README.md b/apps/tempgraph/README.md index de4a0af59..919c20267 100644 --- a/apps/tempgraph/README.md +++ b/apps/tempgraph/README.md @@ -21,14 +21,14 @@ * **Show Temp** Shows the current temperature. +### Note +Using the watch in a normal fashion can raise the temperature it's sensing to quite a few degrees above the surrounding temperature and it may take half an hour or so to drop to close to the surrounding temperature. After that it seems to give quite accurate readings, assuming the thermometer I've been comparing it to is itself reasonably accurate. So best to load the app then not touch the watch for half an hour before starting a recording. This is assuming you're not wearing the app and are just using it to record the temperature where you've put the watch. You could of course wear it and it'll still draw a graph, which might also be useful. + ### Screenshots ![](screenshot_1.png) ![](screenshot_2.png) ![](screenshot_3.png) -### Note -Using the watch in a normal fashion can raise the temperature it's sensing to quite a few degrees above the surrounding temperature and it may take half an hour or so to drop to close to the surrounding temperature. After that it seems to give quite accurate readings, assuming the thermometer I've been comparing it to is itself reasonably accurate. So best to load the app then not touch the watch for half an hour before starting a recording. This is assuming you're not wearing the app and are just using it to record the temperature where you've put the watch. You could of course wear it and it'll still draw a graph, which might also be useful. - ### Creator Carl Read ([mail](mailto:cread98@orcon.net.nz), [github](https://github.com/CarlR9)) From 25cf6125fe2ea13c7ab4e39e9c8e7aec6a89e592 Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 19:10:09 +1300 Subject: [PATCH 11/17] Delete app.png --- apps/tempgraph/app.png | Bin 6941 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/tempgraph/app.png diff --git a/apps/tempgraph/app.png b/apps/tempgraph/app.png deleted file mode 100644 index 1ae347ac837d8366797f532b8d304dc77802fd02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6941 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 V5(kw?=U-<5P+3(-m9%N_e*t{e8WjKl From 2c479ff715a5fdab7df5cdf2fbbec5c5ac2078ff Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 19:11:26 +1300 Subject: [PATCH 12/17] Add files via upload --- apps/tempgraph/app.png | Bin 0 -> 6941 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/tempgraph/app.png diff --git a/apps/tempgraph/app.png b/apps/tempgraph/app.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae347ac837d8366797f532b8d304dc77802fd02 GIT binary patch literal 6941 zcmZ9RRZtvIv#keba0~7X1PksyFv#G+Eod0rC3t|~4ud-h1b26L4-g3M?j8u?x zJT{>|_-nX!K3m*tw5UTwcLV5{EX(@&#mfN`cHS=i>-zX)%??Q z+B6xZCFe5Y)Rx^la^L6LUm8c$woNwumnB2C@<*(j^jbB`-JjkoHG#lh zoNvTUE*$3B_C-!z@QJQPR9^{H11^YjBJHSNi8=cP(qFjWP`IsgZ#kYc7R#=>bS%dc zsd)?whTOt#k{aD$vW6<7Heli)!9rE|Ajz(F5W%cqAW3VqDB0ks;fMR)N{XnhLsRR% zp>=Ihs-aEej>Ou-jD?!`!;h1ie(b)_1Bvq^-(o~22U5Q0nGI#YaxH&`R=;chgTYqS zaLrmSQR!LvRK74FI_~el?^ek~eDmCO3*(niJ(>-{7Xq5|vco!ix1sETGKRGoQ$xON zsf1Za^Z;UZ9bRw@Z;T!m=97)R-o8z{;JCky;F~}3r!dL-Y=XHLl2lFeHoMl1v-_Y0 zxizvu2P7!bShj65pvlswv30pA$))q;1x@I&UbpD=I{Ne63?-1yu&q5X?WcZr4o`~3 z0Ad}%GOz6$8MeWg8Rv4m=VSio!$%E@=XSpL8MMpSu>-`#A=Ve*PcfoKgG5t5i5KR1 z1)1s|SHF$2{Y<&7nI!x=ciSWGt-UDHvg$KTK~>sGpeeVho-5(fT-zQ0EFfS>%fTbXj0rZ;!s|#GWl~xkMH9xD zZy-$@duK@|{JELz$8n-$&8<7PWu{wAqS;yl1X&YiSXsXJi>lLLG|{j2Qg*%2c&}P) zw|`Cm$HSo5;m*FJ4T$&D0J9)p>roT!eHu)^_YKn&HPI+VHb#4>h!p<8C4o)jrdl4S zeyxZgPxWV%DD-f5ylQbYUH4afoJ`BSb_svzsNa>|y9#rxu!P(8KwlY|7Rca4YZF#k zvSTXb@7M$;8N*1+(K|L&b60yaTP&h8S~(ln7HCL#aA>V${gP33)BSsAqVG)PSkmr4 z!%Su~t1+Bv9p^pKXKe_xe9o%T6Z!+zU(XP&973k8=31 zW4;P|D|Jof0)QcIA;i~aJ1!DbF-WJ9hw{9~2se_}Lgrcb;`*lDt++@bk@irDW#YlU zP#B{W+#;)n`-qevL`;X#Cf5h&i2hL^NM^9qz_mgwB7yjwFs@uHE0c}scuYA-*A_L? z?qUrK3Uc404J{ff?0HcS#PG{;pTV9^1Ic-sqyl^Cd|Ey*9@*NzPJ>0*eq;z*sxtZ? z!LC8%M{G`d1La0mq#xtO+s)2fv3Z(7V<}%BVxrLoYwPsQ8+q$JC8^yELDp*XyzMQT zyt@J)5P&<*2BQJv8C<-)Ts!9;1@x)5FWunJDUDg;91J}Pk=SI>Sl3=kpt|O}?v5_| za}3sAx5fa(9^PAc=f|^hj)D_jkY!E=UM%oo=uK@ zBSrXfN_tdi)vQ+ofco*@sF{x&+Oh{QTBQ4zrYPF4?yvN{cz4ybbkO)#EVZh$Ez6uMiqnEf@IHQxla0Tp&F0#4_VX+ZjWaLc5u{zd)UEX*wY>u3P*xYz@~4@wnCshDuB5h(GL_5i*I@0yo5Y24|zh zhZH4PM5`4_ttK$vP5RgsF-waz+KW4`Q_YXW4^;9E`Ab`o-u3W@Q){BgeHcd`w&1LB z)opw`LZ?{LgIMjUzSoPM6W_08U0(?{MSFFB6rabFkNbfA$h$o`J|Hae=@E96GvAfZ zPt8fJErqv*eaNSPaM5^#ghsZxx_L9Ns1rD}$l}Vg(PxZ8pbk<3n7w5TLQYTtAmnMT zL4qj$5JR|-N?W$VO3|uWtrPd~xhe7>ZJvSXAqIu$r8I3xE%-;pK90mYr+?y$0^icV zfuesYuR+Iiv8jboy@}Qxci%t0%0884q=4z5OX+4@N?#~THc=HS<-33hw)7)9k8ae3==vIuqj=&J!h7^rsREQ)# z!EeR~r#v+L!D*2Qp+R8zqZJ5SE|OG%C&0P_jIenLpyx`(rx5d41}61JO(*4&jL6~1 zxShoLlsp$Afl%q>4^Jj*Lz!G!&q3QNLPU!GKHhx6STTnd3^as6-`>&Sr=1@n=vk06 zye9wtT!sGiBXXiXHC3hnGcWxb#0%ri)E(Te2O1*sQ7Kg^oUl*s(r3|%zFRfcI2CJT z=Ut?bhQcygmoO(;fM)?7ea@(*f>A>W`1%Mrj$GDH5Zh%$uhl(}0sJW)cX-&Vt;Dd) z7Ki8ug<{mYbiz6g!4Qbd1iK9$lGi>%hlrP7*dEYs7<(=yee^C~8Hc@-lyi5CjAc-1 ze#knERo@Gp-XhX-rqH0&C=hymIRT_a-(j03Rk&5_=)HfBaRxoCxgHA0vIA$&veJ_@FZ-fK{NL~@Be|}e}j*i3cLVbvC70l@ssNN zOuvNb8ps7};jY(1pB!V?q1S^2`FmaD#FTY97CpSkbeBR(Udy2myFaC9K$*f>VM8$? z231C3mx+Z9=rpJ5WvI}%a_O!?&hs5Ys@}XlJ*sV_-NPyj#%+wGShBXX4QZybSC&0g zuxhxK({KPuH^hI;PAcH%rnTHp2%ZHs`e-z<+cW0lFo8LidFk{OE+0_8Yw@5fZ#Wul zn-ipHmZ^g0-%D?@;4z{kMGc7MEF0T;$}{!$@G;YhK*Od(AH6*_QwGRfOGYnz5=?q~ z({vDfQQy;o>1FYQ$3ch!R6t({lRFN@{5zgE2!xi@eeW~)%$mn2b^E&JhUKXw8*2GF z7T7{w8tj)LUB(WSJI0)=%PoY7h7|GfjaTo7M$DHY!h}9TpDTe9h%eSMMnoD&6rPtN zrC4FBbQ(ZdHgZHrMW9`+o}Z(aMT+A#STpqyodA=!p^rJKzK_m;1}$P8{VDV-n&fA6 zArJJYps#JfCrl!TV2%J40#oFqvN#h$=0}#e+LyLBpCSSx0X+D?nZK_}P%?qI4 zd~Ep|R!W8UQ=c?Kf)-1VB~)KCxG&bd%TwDdHDf>%bH?N+(Qcof7Y4!@AFl`JpTB8h zB_O4MM3CWtqlTI55x)}sWq1uaFs!ZzTphAEQufl_`Mu!!@vFk42asDOVIBRPd~EZ&U^2xDd>r{M%h12zvY`Fp#WS=ea)SS;bleYT^tre)mQ zwrctgwyu}>)pqH>b2j>urK-n`SZ{vSzK}^D{g}YOi#lX2&^31DGC5?ceI!AWD1bhs zoDv0wctu;gti6QA1bb!=KiVdZLkBJ0KfxuAGXkWbjou`WuNvsQ%h4Qf!{`%^GS`za zTe0aecgQxgE11tw&^kQgjS4D5Ky8M2Sp|?13*wM26mHVpaD;>n1qHd}ATlbqrc;kdMRNwug9CHwgrybg;K#2ZH+01A^-6 z3b85}kY{7+lHZjJ%I;_cN@mX_I8kRiBMiPvlV_|)h*ct`|DCI4BDZ z&_5liUR*#E)cVwD@h8<&j6nUR-BaxPKT33@r=H*w!Fsbxe~UNbp+%PK!H$|a2gh`8inxoO6w1A4klW23_e2@z*d_s!8JCSWcsqRm)QK@lK(XOJj zLTWY2;{Zu!MMS?z1H3L%{e{+&Ge^>$}^6WqCR*4iBQjRPRA(lvox&^dhQ#o)o)pKp2bAC}jZ&ZdqVN45M=gc@_ha z5Vej?ZExjr6U51m-lOj@yf4))-2XFl7=rs?h*a*hLp<}|YIB-(iOh=x^^bZ@olG&hwR6aEN9tY6WoOj$cro2?y_OsN~UF;5x?=sM^!dvDD$8= zcbbz|#;!(O_QzVY9OM$^)+E?!Zzd`E#ANxv{YYWO5lkIgBVmZz)C2QIO)g$XmK0fO zNhTro`PK(ej1jHiStEhrI=N=s)Ps)&6N31j^O zD^3GaALe6ZS%pRwEVZia6n;NiO2?Lmi5J!_nh;cdJ}AzxMyBt<1Uck@#wg_Yk5eNE z>f=Ue446%TaP-9@nne@pG0;-Zr?zDzi%v*!)?s?8ZlI$8-RB?Kbw)Hy4c5#Eq|^bI zoZn};tiwT@opV2Nrkr8GJex)N`w;N@|JSNf;cJxa5i+_ zKsVydW)X}fFIy%vOU)Lk&iA78W@Y5k@_hwqzFV{c-6>G@WIpaAq+>3_g|k-Et1*mg;<$h9OKOxCzY!7N>uAxhjnJ3rkDaM=f;Q`$>f;bC5F`I?w*~q4BI!XKg@qiP|wVyGO+;6Ynh-!_Ubq*M^&{4yeCecEDKH zyw$)_@&AXvuM4&`|AYV6=X|$)xYwS_v8Lm#%z7b*%e7VGeWK90?HPlMn2w#=worMa zXZd-%!O4i-TPsEFabxI1iR}lduB!G4bDQRZ&wKawve5V1-Rh4M86+5LV-slq#Luu; zf<^P#yZP2GSOlfhPpP{&|C3U8dw!bQ5sCJ);>LnzcWV;>MPbgf1Hp?`Ra%_hZd9j_ z=r85#RuzTfpYQ_?ZpOaRaYWg*E2q&t(Z6Sc+cch9PLWgwaQoCw|gc%@l@BQ@C1E8Lr&VQT+oW3cdP6ZJ^nnlO3y=VHKy!U_rCu8l_L zr9W)hMDpB#2*FE2JC8sre%NMA8Zk-1?Z9uIx+ds)|sJk+aE2 z9Xn4~xdSE}s&bXVD9;_t0mJ$FEJi%~aCfCFUAa_E?F4?EfXoT3*Je2xh9gNIgh~^= ze~oti2Izjl!fQrW1rv+|5$X`RM6KnK5jwt-^PPQA#z?fztGgNz!zj115zh_{e!#rA zs4n;Ihfa;BeUt6l3c4^}F!9}N&snzhHAqxMATlVcMB;&D#<(I|jPw$(G!V8br{i!A zyQJFlVp++w+2g_AIe`&ud>Kz1gEtN+(P0)AF7ykw^e75lJa1Mjzmo`4L;I3Z;0`T( zw$ZY}zqWIm%;^Nwhjnn=MXurwACBvVAR85K%1F@^eHo#B`X+Kq!#3FVkf}@JI{o#^ ze&S7U>s{898xI*PBs~%`K;YO?myi+vIJlbi4r{k?+9IjW`(VFjG_7veJuDlGq4c6_ zgoBvNGO!MTe8N`d?Ulm@N!N#v<)mHTQ%!8c-1y+;Q+b4Ux^a(`wMzZ1j6=%HQu*HJ zbJz1Q&sP3>Q_~zeHrf_swTZE7DmWFt+1TqYhm{haDv7=#r;>n+C{M9(b`R;H^}*en zzT=xWsKVXO0tBaXbanX55~|@KrqZAOLJ(Jiz@mIuPaNB`5Kff}$BA2V`PbgH@~>`v zrGG(j-JPdgrtz*3f|Jq^?NaMc!a+J6nqqFBh$CxoQAfSPE3(?tVKLiYy}b=wvDFL^ z{ar&V8Oz+dF5*x%gfcLGRGlx-6xl8&?bgbZswcA%2-hDy)*k_+*S>bA_o zJ}o#YB}M63OC1l08|j~m;mXyCKF<5KItTU91qCza&6Wl=7mMMWrpdhnjRa_z3VLwH z3uRTGge$QMj;^q9X~z8)YhDs%m59}Be$_*Ro>1{%R5o#Y@eFB?z#D=~C!A&KoH zcS|nZS{>t;essR5DlLWm4NG$A%AL2%oO?vygDkTXq4QjX$*K-(;`8QSc^;f8h(I`XRyiE3X)YYdeSj zeL^NkMt>^DdyBV@k(Ao$UKmPaImZW;!}%u1)1@wM%0C_?9i3g{DnOix>5GL|*{g}) zwZzXM>?m;VEx+^NGU5zI(xdr{iBfXA2`z@yE?l|G%pXs=1Op z1n~Nwm)}_o|K|Xm74+Qz01k%#1cFzQq~|{q%^j*Di*|s32IR!YGpYXq03e7$Az&@* z^)rL5v3@S}4mRI|+pTNI0Ldl|UE=G?O!i=D=FkSO+~Oa}f#`@UVVkJ{9JV59gtVZ zKu)R`x^KN{`VoM%!iC)s7;=h49>W_UOpdPkZ+F)9U86+;uL`5_Nh+N+xqhaMd_cP)mQb=HxEs*r#B=GwKQdCYjthwR2G9@(^Bl6{1% V5(kw?=U-<5P+3(-m9%N_e*t{e8WjKl literal 0 HcmV?d00001 From c7209882eed0c65bafb654614bf98a066ca070d5 Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 19:38:06 +1300 Subject: [PATCH 13/17] Delete metadata.json --- apps/tempgraph/metadata.json | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 apps/tempgraph/metadata.json diff --git a/apps/tempgraph/metadata.json b/apps/tempgraph/metadata.json deleted file mode 100644 index f714c1eef..000000000 --- a/apps/tempgraph/metadata.json +++ /dev/null @@ -1,18 +0,0 @@ -{ "id": "tempgraph", - "name": "Temperature Graph", - "shortName":"Temp Graph", - "version":"0.01", - "description": "An app for recording the temperature for time periods ranging from 10 minutes to 7 days.", - "icon": "app.png", - "type": "tool", - "tags": "temperature,tempgraph,graph", - "supports" : ["BANGLEJS2"], - "readme": "README.md", - "storage": [ - {"name":"tempgraph.app.js","url":"app.js"} - ], - "data": [ - {"name":"tempgraph.json"} - ], - "screenshots": [{"url":"screenshot_1.png"},{"url":"screenshot_2.png"},{"url":"screenshot_3.png"}] -} From cfde5ea465080948271b1e0e6d58ca968a164a62 Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 19:39:07 +1300 Subject: [PATCH 14/17] Add files via upload --- apps/tempgraph/app-icon.js | 1 + apps/tempgraph/metadata.json | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 apps/tempgraph/app-icon.js create mode 100644 apps/tempgraph/metadata.json diff --git a/apps/tempgraph/app-icon.js b/apps/tempgraph/app-icon.js new file mode 100644 index 000000000..50aae4c01 --- /dev/null +++ b/apps/tempgraph/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+goA/AH4AgrHXABFYF0XXkYAK64utGENYFxoABSTxeHXYJglF+UAAIQvEBApfhE4UAF4IDBFwZf/X7hfsR4K/tL96/vRwpf/X/5fJGYK/tL9u02i/tF4KOFL/6/XF4ZftR4K/tL96/vRwpf/X/5fJGYK/tL96/vRwpf/X7gADF8ouBGA4v/F/6/urAmGABFYF7pgIL0owPF0KSC64AIRj4A/AH4ACA=")) \ No newline at end of file diff --git a/apps/tempgraph/metadata.json b/apps/tempgraph/metadata.json new file mode 100644 index 000000000..ea41d67ae --- /dev/null +++ b/apps/tempgraph/metadata.json @@ -0,0 +1,19 @@ +{ "id": "tempgraph", + "name": "Temperature Graph", + "shortName":"Temp Graph", + "version":"0.01", + "description": "An app for recording the temperature for time periods ranging from 10 minutes to 7 days.", + "icon": "app.png", + "type": "tool", + "tags": "temperature,tempgraph,graph", + "supports" : ["BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"tempgraph.app.js","url":"app.js"}, + {"name":"tempgraph.img","url":"app-icon.js","evaluate":true} + ], + "data": [ + {"name":"tempgraph.json"} + ], + "screenshots": [{"url":"screenshot_1.png"},{"url":"screenshot_2.png"},{"url":"screenshot_3.png"}] +} From f050b75e5b4892fbbac23cf836a2c04e0ea6c12d Mon Sep 17 00:00:00 2001 From: Erik Andresen Date: Fri, 3 Feb 2023 07:45:22 +0100 Subject: [PATCH 15/17] widalarmeta: fix #2542 Fix check for active alarm, either remove brackets or add return for filter in map --- apps/widalarmeta/ChangeLog | 1 + apps/widalarmeta/metadata.json | 2 +- apps/widalarmeta/widget.js | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/widalarmeta/ChangeLog b/apps/widalarmeta/ChangeLog index 8bdf1156f..1012ee386 100644 --- a/apps/widalarmeta/ChangeLog +++ b/apps/widalarmeta/ChangeLog @@ -4,3 +4,4 @@ Add option to show seconds 0.03: Fix Bell not appearing on alarms > 24h and redrawing interval Update to match the default alarm widget, and not show itself when an alarm is hidden. +0.04: Fix check for active alarm diff --git a/apps/widalarmeta/metadata.json b/apps/widalarmeta/metadata.json index 89e35c090..aad3c4321 100644 --- a/apps/widalarmeta/metadata.json +++ b/apps/widalarmeta/metadata.json @@ -2,7 +2,7 @@ "id": "widalarmeta", "name": "Alarm & Timer ETA", "shortName": "Alarm ETA", - "version": "0.03", + "version": "0.04", "description": "A widget that displays the time to the next Alarm or Timer in hours and minutes, maximum 24h (configurable).", "icon": "widget.png", "type": "widget", diff --git a/apps/widalarmeta/widget.js b/apps/widalarmeta/widget.js index 8615aa1d2..3ad2e6ad2 100644 --- a/apps/widalarmeta/widget.js +++ b/apps/widalarmeta/widget.js @@ -9,10 +9,10 @@ function draw() { const times = alarms - .map(alarm => { + .map(alarm => alarm.hidden !== true && require("sched").getTimeToAlarm(alarm) - }) + ) .filter(a => a !== undefined); const next = times.length > 0 ? Math.min.apply(null, times) : 0; let calcWidth = 0; From 4a3e5bb5a3086a4e315c0654778b2937b2957c8f Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 19:52:25 +1300 Subject: [PATCH 16/17] Delete metadata.json --- apps/tempgraph/metadata.json | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 apps/tempgraph/metadata.json diff --git a/apps/tempgraph/metadata.json b/apps/tempgraph/metadata.json deleted file mode 100644 index ea41d67ae..000000000 --- a/apps/tempgraph/metadata.json +++ /dev/null @@ -1,19 +0,0 @@ -{ "id": "tempgraph", - "name": "Temperature Graph", - "shortName":"Temp Graph", - "version":"0.01", - "description": "An app for recording the temperature for time periods ranging from 10 minutes to 7 days.", - "icon": "app.png", - "type": "tool", - "tags": "temperature,tempgraph,graph", - "supports" : ["BANGLEJS2"], - "readme": "README.md", - "storage": [ - {"name":"tempgraph.app.js","url":"app.js"}, - {"name":"tempgraph.img","url":"app-icon.js","evaluate":true} - ], - "data": [ - {"name":"tempgraph.json"} - ], - "screenshots": [{"url":"screenshot_1.png"},{"url":"screenshot_2.png"},{"url":"screenshot_3.png"}] -} From 230baf7b24fa0be212a32e440471b7c14933b639 Mon Sep 17 00:00:00 2001 From: CarlR9 <108166078+CarlR9@users.noreply.github.com> Date: Fri, 3 Feb 2023 19:54:23 +1300 Subject: [PATCH 17/17] Add files via upload --- apps/tempgraph/metadata.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 apps/tempgraph/metadata.json diff --git a/apps/tempgraph/metadata.json b/apps/tempgraph/metadata.json new file mode 100644 index 000000000..6772429a5 --- /dev/null +++ b/apps/tempgraph/metadata.json @@ -0,0 +1,19 @@ +{ "id": "tempgraph", + "name": "Temperature Graph", + "shortName":"Temp Graph", + "version":"0.01", + "description": "An app for recording the temperature for time periods ranging from 10 minutes to 7 days.", + "icon": "app.png", + "type": "app", + "tags": "temperature,tempgraph,graph", + "supports" : ["BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"tempgraph.app.js","url":"app.js"}, + {"name":"tempgraph.img","url":"app-icon.js","evaluate":true} + ], + "data": [ + {"name":"tempgraph.json"} + ], + "screenshots": [{"url":"screenshot_1.png"},{"url":"screenshot_2.png"},{"url":"screenshot_3.png"}] +}