mirror of https://github.com/espruino/BangleApps
Merge branch 'master'
Conflicts: apps/regattatimer/ChangeLog apps/regattatimer/metadata.jsonpull/3239/head
commit
f5bab107f5
|
@ -11,10 +11,10 @@ jobs:
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
- name: Use Node.js 16.x
|
- name: Use Node.js 18.x
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 16.x
|
node-version: 18.x
|
||||||
- name: Install testing dependencies
|
- name: Install testing dependencies
|
||||||
run: npm ci
|
run: npm ci
|
||||||
- name: Test all apps and widgets
|
- name: Test all apps and widgets
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
{
|
const lintExemptions = require("./lint_exemptions.js");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
"env": {
|
"env": {
|
||||||
// TODO: "espruino": false
|
// TODO: "espruino": false
|
||||||
// TODO: "banglejs": false
|
// TODO: "banglejs": false
|
||||||
|
@ -154,8 +156,14 @@
|
||||||
"no-useless-catch": "warn",
|
"no-useless-catch": "warn",
|
||||||
// TODO: "no-undef": "warn",
|
// TODO: "no-undef": "warn",
|
||||||
"no-undef": "off",
|
"no-undef": "off",
|
||||||
"no-unused-vars": "off",
|
"no-unused-vars": ["warn", { "args": "none" } ],
|
||||||
"no-useless-escape": "off",
|
"no-useless-escape": "off",
|
||||||
"no-control-regex" : "off"
|
"no-control-regex" : "off"
|
||||||
}
|
},
|
||||||
|
overrides: [
|
||||||
|
...Object.entries(lintExemptions).map(([filePath, {rules}]) => ({
|
||||||
|
files: [filePath],
|
||||||
|
rules: Object.fromEntries(rules.map(rule => [rule, "off"])),
|
||||||
|
})),
|
||||||
|
],
|
||||||
}
|
}
|
|
@ -122,13 +122,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function swipeHandler() {
|
/*function swipeHandler() {
|
||||||
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
function buttonHandler() {
|
/*function buttonHandler() {
|
||||||
|
|
||||||
}
|
}*/
|
||||||
|
|
||||||
var twok = new TwoK();
|
var twok = new TwoK();
|
||||||
twok.addDigit(); twok.addDigit();
|
twok.addDigit(); twok.addDigit();
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
0.01: New app!
|
0.01: New app!
|
||||||
0.02: Better support for watch themes
|
0.02: Better support for watch themes
|
||||||
0.03: Workaround minifier bug
|
0.03: Workaround minifier bug
|
||||||
|
0.04: Minor code improvements
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"name": "2047pp",
|
"name": "2047pp",
|
||||||
"shortName":"2047pp",
|
"shortName":"2047pp",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"version":"0.03",
|
"version": "0.04",
|
||||||
"description": "Bangle version of a tile shifting game",
|
"description": "Bangle version of a tile shifting game",
|
||||||
"supports" : ["BANGLEJS","BANGLEJS2"],
|
"supports" : ["BANGLEJS","BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
|
0.02: Minor code improvements
|
||||||
|
|
|
@ -80,7 +80,7 @@ function refreshBattery() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only update displayed battery level every minute as it fluctuates a lot
|
// Only update displayed battery level every minute as it fluctuates a lot
|
||||||
var batteryInterval = setInterval(refreshBattery, 60000);
|
setInterval(refreshBattery, 60000);
|
||||||
|
|
||||||
Bangle.setUI("clock");
|
Bangle.setUI("clock");
|
||||||
Bangle.setLocked(false);
|
Bangle.setLocked(false);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "2ofthemclk",
|
"id": "2ofthemclk",
|
||||||
"name": "two of them clock",
|
"name": "two of them clock",
|
||||||
"version": "0.01",
|
"version": "0.02",
|
||||||
"description": "You can now wear teh memez on your wrist.",
|
"description": "You can now wear teh memez on your wrist.",
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
|
|
|
@ -282,7 +282,7 @@ function drawWidgeds() {
|
||||||
//print(BluetoothDevice.connected);
|
//print(BluetoothDevice.connected);
|
||||||
var x1Bt = 160;
|
var x1Bt = 160;
|
||||||
var y1Bt = 0;
|
var y1Bt = 0;
|
||||||
var x2Bt = x1Bt + 30;
|
//var x2Bt = x1Bt + 30;
|
||||||
var y2Bt = y2Bt;
|
var y2Bt = y2Bt;
|
||||||
|
|
||||||
if (NRF.getSecurityStatus().connected)
|
if (NRF.getSecurityStatus().connected)
|
||||||
|
@ -391,4 +391,4 @@ Bangle.on('lock', function(on) {
|
||||||
|
|
||||||
SetFull(Bangle.isLocked());
|
SetFull(Bangle.isLocked());
|
||||||
|
|
||||||
var secondInterval = setInterval(draw, 1000);
|
/*var secondInterval =*/ setInterval(draw, 1000);
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
0.01: Initial version for upload
|
0.01: Initial version for upload
|
||||||
0.02: Better theme support, configurable colors, small improvements
|
0.02: Better theme support, configurable colors, small improvements
|
||||||
0.03: Use `messages` library to check for new messages
|
0.03: Use `messages` library to check for new messages
|
||||||
|
0.04: Minor code improvements
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ "id": "7x7dotsclock",
|
{ "id": "7x7dotsclock",
|
||||||
"name": "7x7 Dots Clock",
|
"name": "7x7 Dots Clock",
|
||||||
"shortName":"7x7 Dots Clock",
|
"shortName":"7x7 Dots Clock",
|
||||||
"version":"0.03",
|
"version": "0.04",
|
||||||
"description": "A clock with a big 7x7 dots Font",
|
"description": "A clock with a big 7x7 dots Font",
|
||||||
"icon": "dotsfontclock.png",
|
"icon": "dotsfontclock.png",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
|
|
|
@ -4,3 +4,4 @@
|
||||||
0.04: Set 00:00 to 12:00 for 12 hour time
|
0.04: Set 00:00 to 12:00 for 12 hour time
|
||||||
0.05: Display time, even on Thursday
|
0.05: Display time, even on Thursday
|
||||||
0.06: Fix light theme issue, where widgets would end up on a light strip
|
0.06: Fix light theme issue, where widgets would end up on a light strip
|
||||||
|
0.07: Minor code improvements
|
||||||
|
|
|
@ -8,7 +8,7 @@ var imgBg = require("heatshrink").decompress(atob("2GwgJC/AH4A/AH4A/AH4A/AH4A/AC
|
||||||
// reg number first char 48 28 by 41
|
// reg number first char 48 28 by 41
|
||||||
var fontNum = atob("AAAAAAAAAAAAAA//8D//g//8P/+I//8//44//w//j4//A/+P4/8A/4/4AAAAD/4AAAAP/wAAAAf/gAAAA//AAAAB/+AAAAD/8AAAAH/4AAAAP/wAAAAf/gAAAA//AAAAB/+AAAAD/8AAAAH/wAAAAH/H/gH/H8f/gf/Hx//h//HH//n//Ef/+H//B//4H//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wB/4AP/4H/4A//4f/4D//5//4P//h//4//+B//4AAAAAAAAAAAAAAAAAf/+AAAB//4gAAD//jgAAD/+PgABj/4/gAHj/j/gAfgAP/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/AA/AAf8f88AAfx/8wAAfH/8AAAcf/8AAAR//4AAAH//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAA4AAAAAD4AAYAAP4AD8AA/4AH4AD/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/wAHgAH/H/GH/H8f/gf/Hx//h//HH//n//Ef/+H//B//4H//AAAAAAAAAAAAAAP//AAAAP//AAAAP//AAAAP/8AAAAP/2AAAAP/eAAAAAB+AAAAAD8AAAAAH4AAAAAPwAAAAAfgAAAAA/AAAAAB+AAAAAD8AAAAAH4AAAAAPwAAAAAfgAAAAA/AAAAAB+AAAAAD8AAAB/7x/4AH/7H/4Af/4f/4B//5//4H//h//4f/+B//4AAAAAAAAAAAAAD//wAAAD//wAAAj//gAADj/+AAAPj/5gAA/j/ngAD/gAfgAP/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/AA/AAf8AA8f8fwAAx/8fAAAH/8cAAAf/8QAAA//8AAAA//8AAAAAAAAAAAAAA//8D//g//8P/+I//8//44//0//j4//Y/+P4/94/4/4AH4AD/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/wAPwAH/AAPH/H8AAMf/HwAAB//HAAAH//EAAAH//AAAAH//AAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAGAAAAAAOAAAAAAeAAAAAA+AAAAAB+AAAAAD8AAAAAH4AAAAAPwAAAAAfgAAAAA/AAAAAB+AAAAAD8AAAAAH4AAAAAPwAAAAAfgAAAAA/AAAAAB8AAAAADx/4B/4HH/4H/4Mf/4f/4R//5//4H//h//4f/+B//4AAAAAAAAAAAAAD//wP/+D//w//4j//z//jj//T/+Pj/9j/4/j/3j/j/gAfgAP/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/AA/AAf8f+8f8fx/+x/8fH/+H/8cf/+f/8R//4f/8H//gf/8AAAAAAAAAAAAAA//8AAAA//8AAAI//8AAA4//0AAD4//YAAP4/94AA/4AH4AD/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/wAPwAH/H/vH/H8f/sf/Hx//h//HH//n//Ef/+H//B//4H//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
var fontNum = atob("AAAAAAAAAAAAAA//8D//g//8P/+I//8//44//w//j4//A/+P4/8A/4/4AAAAD/4AAAAP/wAAAAf/gAAAA//AAAAB/+AAAAD/8AAAAH/4AAAAP/wAAAAf/gAAAA//AAAAB/+AAAAD/8AAAAH/wAAAAH/H/gH/H8f/gf/Hx//h//HH//n//Ef/+H//B//4H//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wB/4AP/4H/4A//4f/4D//5//4P//h//4//+B//4AAAAAAAAAAAAAAAAAf/+AAAB//4gAAD//jgAAD/+PgABj/4/gAHj/j/gAfgAP/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/AA/AAf8f88AAfx/8wAAfH/8AAAcf/8AAAR//4AAAH//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAA4AAAAAD4AAYAAP4AD8AA/4AH4AD/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/wAHgAH/H/GH/H8f/gf/Hx//h//HH//n//Ef/+H//B//4H//AAAAAAAAAAAAAAP//AAAAP//AAAAP//AAAAP/8AAAAP/2AAAAP/eAAAAAB+AAAAAD8AAAAAH4AAAAAPwAAAAAfgAAAAA/AAAAAB+AAAAAD8AAAAAH4AAAAAPwAAAAAfgAAAAA/AAAAAB+AAAAAD8AAAB/7x/4AH/7H/4Af/4f/4B//5//4H//h//4f/+B//4AAAAAAAAAAAAAD//wAAAD//wAAAj//gAADj/+AAAPj/5gAA/j/ngAD/gAfgAP/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/AA/AAf8AA8f8fwAAx/8fAAAH/8cAAAf/8QAAA//8AAAA//8AAAAAAAAAAAAAA//8D//g//8P/+I//8//44//0//j4//Y/+P4/94/4/4AH4AD/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/wAPwAH/AAPH/H8AAMf/HwAAB//HAAAH//EAAAH//AAAAH//AAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAGAAAAAAOAAAAAAeAAAAAA+AAAAAB+AAAAAD8AAAAAH4AAAAAPwAAAAAfgAAAAA/AAAAAB+AAAAAD8AAAAAH4AAAAAPwAAAAAfgAAAAA/AAAAAB8AAAAADx/4B/4HH/4H/4Mf/4f/4R//5//4H//h//4f/+B//4AAAAAAAAAAAAAD//wP/+D//w//4j//z//jj//T/+Pj/9j/4/j/3j/j/gAfgAP/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/AA/AAf8f+8f8fx/+x/8fH/+H/8cf/+f/8R//4f/8H//gf/8AAAAAAAAAAAAAA//8AAAA//8AAAI//8AAA4//0AAD4//YAAP4/94AA/4AH4AD/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/4APwAP/wAfgAf/gA/AA//AB+AB/+AD8AD/8AH4AH/wAPwAH/H/vH/H8f/sf/Hx//h//HH//n//Ef/+H//B//4H//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||||
// tiny font for percentage first char 48 6 by 8
|
// tiny font for percentage first char 48 6 by 8
|
||||||
var fontTiny = atob("AH6BgYF+ACFB/wEBAGGDhYlxAEKBkZFuAAx0hP8EAPqRkZGOAH6RkZFOAICHmKDAAG6RkZFuAHKJiYl+AAAAAAAAAAAAAAAA");
|
//var fontTiny = atob("AH6BgYF+ACFB/wEBAGGDhYlxAEKBkZFuAAx0hP8EAPqRkZGOAH6RkZFOAICHmKDAAG6RkZFuAHKJiYl+AAAAAAAAAAAAAAAA");
|
||||||
// date font first char 48 12 by 15
|
// date font first char 48 12 by 15
|
||||||
var fontDate = atob("AAAAAfv149wAeADwAeADwAeADvHr9+AAAAAAAAAAAAAAAAAAAAAAAAAPHn9/AAAAAAP0A9wweGDwweGDwweGDvAL8AAAAAAAAAAAgwOGDwweGDwweGDvHp98AAAAA/gB6AAwAGAAwAGAAwAGAPHj9/AAAAAfgF6BwweGDwweGDwweGDgHoB+AAAAAfv169wweGDwweGDwweGDgHoB+AAAAAAAAAAgAGAAwAGAAwAGAAvHh9/AAAAAfv169wweGDwweGDwweGDvHr9+AAAAAfgF6BwweGDwweGDwweGDvHr9+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
var fontDate = atob("AAAAAfv149wAeADwAeADwAeADvHr9+AAAAAAAAAAAAAAAAAAAAAAAAAPHn9/AAAAAAP0A9wweGDwweGDwweGDvAL8AAAAAAAAAAAgwOGDwweGDwweGDvHp98AAAAA/gB6AAwAGAAwAGAAwAGAPHj9/AAAAAfgF6BwweGDwweGDwweGDgHoB+AAAAAfv169wweGDwweGDwweGDgHoB+AAAAAAAAAAgAGAAwAGAAwAGAAvHh9/AAAAAfv169wweGDwweGDwweGDvHr9+AAAAAfgF6BwweGDwweGDwweGDvHr9+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ var imgSun = E.toArrayBuffer(atob("Ig8BwHf7D7Ac/MHD/z8wMP/PzMQ/8/M/D/z8z8QPf7f6A
|
||||||
|
|
||||||
// define icons
|
// define icons
|
||||||
var imgSep = E.toArrayBuffer(atob("BhsBAAAAAA///////////////AAAAAAA"));
|
var imgSep = E.toArrayBuffer(atob("BhsBAAAAAA///////////////AAAAAAA"));
|
||||||
var imgPercent = E.toArrayBuffer(atob("BwcBuq7ffbqugA=="));
|
//var imgPercent = E.toArrayBuffer(atob("BwcBuq7ffbqugA=="));
|
||||||
var img24hr = E.toArrayBuffer(atob("EwgBj7vO53na73tcDtu9uDev7vA93g=="));
|
var img24hr = E.toArrayBuffer(atob("EwgBj7vO53na73tcDtu9uDev7vA93g=="));
|
||||||
var imgPM = E.toArrayBuffer(atob("EwgB+HOfdnPu1X3ar4dV9+q+/bfftg=="));
|
var imgPM = E.toArrayBuffer(atob("EwgB+HOfdnPu1X3ar4dV9+q+/bfftg=="));
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"shortName":"93 Dub",
|
"shortName":"93 Dub",
|
||||||
"icon": "93dub.png",
|
"icon": "93dub.png",
|
||||||
"screenshots": [{"url":"screenshot.png"}],
|
"screenshots": [{"url":"screenshot.png"}],
|
||||||
"version":"0.06",
|
"version": "0.07",
|
||||||
"description": "Fan recreation of orviwan's 91 Dub app for the Pebble smartwatch. Uses assets from his 91-Dub-v2.0 repo",
|
"description": "Fan recreation of orviwan's 91 Dub app for the Pebble smartwatch. Uses assets from his 91-Dub-v2.0 repo",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
|
0.02: Minor code improvements
|
||||||
|
|
|
@ -25,7 +25,7 @@ declare global variables for the toggle button
|
||||||
statuses; if you add an additional toggle button
|
statuses; if you add an additional toggle button
|
||||||
you should declare it and initiase it here */
|
you should declare it and initiase it here */
|
||||||
|
|
||||||
var status_spk = {value: true};
|
//var status_spk = {value: true};
|
||||||
var status_face = {value: true};
|
var status_face = {value: true};
|
||||||
var status_iris_light = {value: false};
|
var status_iris_light = {value: false};
|
||||||
var status_iris = {value: false};
|
var status_iris = {value: false};
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "BLEcontroller",
|
"id": "BLEcontroller",
|
||||||
"name": "BLE Customisable Controller with Joystick",
|
"name": "BLE Customisable Controller with Joystick",
|
||||||
"shortName": "BLE Controller",
|
"shortName": "BLE Controller",
|
||||||
"version": "0.01",
|
"version": "0.02",
|
||||||
"description": "A configurable controller for BLE devices and robots, with a basic four direction joystick. Designed to be easy to customise so you can add your own menus.",
|
"description": "A configurable controller for BLE devices and robots, with a basic four direction joystick. Designed to be easy to customise so you can add your own menus.",
|
||||||
"icon": "BLEcontroller.png",
|
"icon": "BLEcontroller.png",
|
||||||
"tags": "tool,bluetooth",
|
"tags": "tool,bluetooth",
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
0.01: 1st ver, defining a common UI/UX
|
0.01: 1st ver, defining a common UI/UX
|
||||||
|
0.02: Minor code improvements
|
||||||
|
|
|
@ -5,7 +5,7 @@ identify device and dimensions
|
||||||
max printable position max_x-1 i.e 239
|
max printable position max_x-1 i.e 239
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var colbackg='#111111';//black
|
//var colbackg='#111111';//black
|
||||||
var colorange='#e56e06'; //RGB format rrggbb
|
var colorange='#e56e06'; //RGB format rrggbb
|
||||||
var v_color_lines=0xFFFF; //White hex format
|
var v_color_lines=0xFFFF; //White hex format
|
||||||
var v_color_b_area='#111111';
|
var v_color_b_area='#111111';
|
||||||
|
@ -13,13 +13,13 @@ max printable position max_x-1 i.e 239
|
||||||
var v_font1size=10; //out of quotes
|
var v_font1size=10; //out of quotes
|
||||||
var v_font2size=12;
|
var v_font2size=12;
|
||||||
var v_font_banner_size=30;
|
var v_font_banner_size=30;
|
||||||
var v_clicks=0;
|
//var v_clicks=0;
|
||||||
//pend identify widget area dinamically
|
//pend identify widget area dinamically
|
||||||
var v_model=process.env.BOARD;
|
var v_model=process.env.BOARD;
|
||||||
console.log("device="+v_model);
|
console.log("device="+v_model);
|
||||||
|
|
||||||
var x_max_screen=g.getWidth();//240;
|
var x_max_screen=g.getWidth();//240;
|
||||||
var y_max_screen=g.getHeight(); //240;
|
//var y_max_screen=g.getHeight(); //240;
|
||||||
var y_wg_bottom=g.getHeight()-25;
|
var y_wg_bottom=g.getHeight()-25;
|
||||||
var y_wg_top=25;
|
var y_wg_top=25;
|
||||||
if (v_model=='BANGLEJS') {
|
if (v_model=='BANGLEJS') {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "UI4swatch",
|
"id": "UI4swatch",
|
||||||
"name": "UI 4 swatch",
|
"name": "UI 4 swatch",
|
||||||
"shortName": "UI 4 swatch",
|
"shortName": "UI 4 swatch",
|
||||||
"version": "0.01",
|
"version": "0.02",
|
||||||
"description": "A UI/UX for espruino smartwatches, displays dinamically calc. x,y coordinates.",
|
"description": "A UI/UX for espruino smartwatches, displays dinamically calc. x,y coordinates.",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "Color,input,buttons,touch,UI",
|
"tags": "Color,input,buttons,touch,UI",
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
0.02: Increased Legibility, GUI rework
|
0.02: Increased Legibility, GUI rework
|
||||||
0.03: 13 new chords
|
0.03: 13 new chords
|
||||||
|
0.04: Minor code improvements
|
||||||
|
|
|
@ -176,8 +176,6 @@ const b7 = [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var index = 0;
|
|
||||||
var chords = [];
|
|
||||||
var menu = {
|
var menu = {
|
||||||
"" : { "title" : "Uke Chords" },
|
"" : { "title" : "Uke Chords" },
|
||||||
"C" : function() { draw(cc); },
|
"C" : function() { draw(cc); },
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ "id": "Uke",
|
{ "id": "Uke",
|
||||||
"name": "Uke Chords",
|
"name": "Uke Chords",
|
||||||
"shortName":"Uke",
|
"shortName":"Uke",
|
||||||
"version":"0.03",
|
"version": "0.04",
|
||||||
"description": "Wrist mounted ukulele chords",
|
"description": "Wrist mounted ukulele chords",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "uke, chords",
|
"tags": "uke, chords",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
0.01: Beta version for Bangle 2 (2021/11/28)
|
0.01: Beta version for Bangle 2 (2021/11/28)
|
||||||
0.02: Shows night time on the map (2022/12/28)
|
0.02: Shows night time on the map (2022/12/28)
|
||||||
0.03: Add 1 minute timer with upper taps (2023/01/05)
|
0.03: Add 1 minute timer with upper taps (2023/01/05)
|
||||||
1.00: Page to set up custom time zones (2023/01/06)
|
1.00: Page to set up custom time zones (2023/01/06)
|
||||||
|
1.01: Minor code improvements
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
function getImg() {
|
function getImg() {
|
||||||
return require("heatshrink").decompress(atob("2FRgP/ABnxBRP5BJH+gEfBZHghnAv4JFmA+Bj0PBIn3//4h3An4oDAQJWEEIf8AwMEuFOCofAh/QjAWEg4VEwEAnw2DDoKEHEYPwAoUBmgrDhgUHS4XgAwUD/gVC/g+FAAZgEwEf4YqC/EQFQ4NDFgV/4Z3C/EcCo1974VCLAV/V4d7Co9/Co0PCoX+vk4Ko/HCosCRYX5nwTFkEAr/nCokICoL+B/aCGCoMHCoq3EdoraGCosPz4HBcILEJCocBwEHOwQrIgQrHgoHCFYMEgwVJYoMBsEnCofAnkMNQJXH4D4EbQMPkF/xwrEj+/HIkAoAVDj8QueHCoorDCoUDLwd96J0BKwgrHh4VDv+9CosDx6QCCo4HB//8VwvvXgQVDJIYSBCo/sBwaZBgF/NoYVHgH8V4qYDAwUYlAVFEYbFDDgwAGConogf9Zg8DCpP4cIh0Dg0BGAgVE+gVIgUA+AVI+wVE/xAEh5HDEgn+CpEAbgJCCHQoVBn4VJ/ED4ANDAAQVJ4EPPQPAt4VF4BeDColgj/8h/gFYwJBCpF//k//ANDCAYVIcgP+CpH/54VHCAIVB/4VIwYECCocIAwIVBx4VG9+AMITbCYAYJB34VG/UAj4VI7/9Cgw9CJYXAmBtDMAQsIfYhvCCofyvywGB4QFFgYGC/d+agYVLSgf8+ArG/APBD4QVBgh0CAwNwv/fCo4PCCo94s7VDCohnDAoI7Enlv8BZECoRCDAggAB3/3/gzDMAIVFY4IVE4IPBOoZ9DCpXwCoMvCqKxB//3bYywD4BtFAAPfDooVFFYIVGw4VFB4KZFngNE/uPCovgFYgEBuK+Fg4zFCoIrFCovwgQVF+AVFgPxEYzFEbgQVD4EDCoozBYogVCgYVE8bpGCo4HDCoPzBgoVIL4fAg4MGgAIHCofgCszND8BOHK4x2BCofwXgv4h6vGCps/Co6uDAA/7RgIjDDwTaDABPA//9FaAtDCop0FC5YVDLwoAH8//94GD/wVNCYKNECpwPBQggVPNggVBNp4VFFZwAGCquHCqnzCB4"));
|
return require("heatshrink").decompress(atob("2FRgP/ABnxBRP5BJH+gEfBZHghnAv4JFmA+Bj0PBIn3//4h3An4oDAQJWEEIf8AwMEuFOCofAh/QjAWEg4VEwEAnw2DDoKEHEYPwAoUBmgrDhgUHS4XgAwUD/gVC/g+FAAZgEwEf4YqC/EQFQ4NDFgV/4Z3C/EcCo1974VCLAV/V4d7Co9/Co0PCoX+vk4Ko/HCosCRYX5nwTFkEAr/nCokICoL+B/aCGCoMHCoq3EdoraGCosPz4HBcILEJCocBwEHOwQrIgQrHgoHCFYMEgwVJYoMBsEnCofAnkMNQJXH4D4EbQMPkF/xwrEj+/HIkAoAVDj8QueHCoorDCoUDLwd96J0BKwgrHh4VDv+9CosDx6QCCo4HB//8VwvvXgQVDJIYSBCo/sBwaZBgF/NoYVHgH8V4qYDAwUYlAVFEYbFDDgwAGConogf9Zg8DCpP4cIh0Dg0BGAgVE+gVIgUA+AVI+wVE/xAEh5HDEgn+CpEAbgJCCHQoVBn4VJ/ED4ANDAAQVJ4EPPQPAt4VF4BeDColgj/8h/gFYwJBCpF//k//ANDCAYVIcgP+CpH/54VHCAIVB/4VIwYECCocIAwIVBx4VG9+AMITbCYAYJB34VG/UAj4VI7/9Cgw9CJYXAmBtDMAQsIfYhvCCofyvywGB4QFFgYGC/d+agYVLSgf8+ArG/APBD4QVBgh0CAwNwv/fCo4PCCo94s7VDCohnDAoI7Enlv8BZECoRCDAggAB3/3/gzDMAIVFY4IVE4IPBOoZ9DCpXwCoMvCqKxB//3bYywD4BtFAAPfDooVFFYIVGw4VFB4KZFngNE/uPCovgFYgEBuK+Fg4zFCoIrFCovwgQVF+AVFgPxEYzFEbgQVD4EDCoozBYogVCgYVE8bpGCo4HDCoPzBgoVIL4fAg4MGgAIHCofgCszND8BOHK4x2BCofwXgv4h6vGCps/Co6uDAA/7RgIjDDwTaDABPA//9FaAtDCop0FC5YVDLwoAH8//94GD/wVNCYKNECpwPBQggVPNggVBNp4VFFZwAGCquHCqnzCB4"));
|
||||||
}
|
}
|
||||||
var IMAGEWIDTH = 176;
|
//var IMAGEWIDTH = 176;
|
||||||
var IMAGEHEIGHT = 81;
|
var IMAGEHEIGHT = 81;
|
||||||
|
|
||||||
Graphics.prototype.setFontMichroma36 = function() {
|
Graphics.prototype.setFontMichroma36 = function() {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "a_clock_timer",
|
"id": "a_clock_timer",
|
||||||
"name": "A Clock with Timer",
|
"name": "A Clock with Timer",
|
||||||
"version": "1.00",
|
"version": "1.01",
|
||||||
"description": "A Clock with Timer, Map and Time Zones",
|
"description": "A Clock with Timer, Map and Time Zones",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"screenshots": [{"url":"screenshot.png"},{"url":"screenshot-1.png"}],
|
"screenshots": [{"url":"screenshot.png"},{"url":"screenshot-1.png"}],
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
1.00: Release (2021/12/01)
|
1.00: Release (2021/12/01)
|
||||||
1.01: Grey font when timer is frozen (2021/12/04)
|
1.01: Grey font when timer is frozen (2021/12/04)
|
||||||
1.02: Force light theme, since the app is not designed for dark theme (2022/12/28)
|
1.02: Force light theme, since the app is not designed for dark theme (2022/12/28)
|
||||||
|
1.03: Minor code improvements
|
||||||
|
|
|
@ -124,7 +124,6 @@ Bangle.on('swipe',(swiperight, swipedown)=>{
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var drawTimeout;
|
|
||||||
var showInstructions = true;
|
var showInstructions = true;
|
||||||
|
|
||||||
function draw() {
|
function draw() {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id":"a_speech_timer",
|
"id":"a_speech_timer",
|
||||||
"name":"Speech Timer",
|
"name":"Speech Timer",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"version":"1.02",
|
"version": "1.03",
|
||||||
"description": "A timer designed to help keeping your speeches and presentations to time.",
|
"description": "A timer designed to help keeping your speeches and presentations to time.",
|
||||||
"tags": "tool,timer",
|
"tags": "tool,timer",
|
||||||
"readme":"README.md",
|
"readme":"README.md",
|
||||||
|
|
|
@ -12,3 +12,4 @@
|
||||||
0.12: Actual pixels as of 29th Nov 2021
|
0.12: Actual pixels as of 29th Nov 2021
|
||||||
0.13: Bangle.js 2: Use setUI to add software back button
|
0.13: Bangle.js 2: Use setUI to add software back button
|
||||||
0.14: Add automatic translation of more strings
|
0.14: Add automatic translation of more strings
|
||||||
|
0.15: Minor code improvements
|
||||||
|
|
|
@ -20,11 +20,11 @@ function getVersion(name,file) {
|
||||||
return v?(name+" "+(v?"v"+v:"Unknown")):"NO "+name;
|
return v?(name+" "+(v?"v"+v:"Unknown")):"NO "+name;
|
||||||
}
|
}
|
||||||
|
|
||||||
var versions = [
|
/*var versions = [
|
||||||
getVersion("Bootloader","boot.info"),
|
getVersion("Bootloader","boot.info"),
|
||||||
getVersion("Launcher","launch.info"),
|
getVersion("Launcher","launch.info"),
|
||||||
getVersion("Settings","setting.info")
|
getVersion("Settings","setting.info")
|
||||||
];
|
];*/
|
||||||
var logo = E.toArrayBuffer(atob("PBwBAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAD/w+AAAAQAHA4hAAAAQAMAMhAAAAQAYBmhAAAAQAYBGiAAAAQAQCD/H74+R4wGDhoKJCSEwEDgoKJCT8wFDgoKJCSAwHDhoKJCSEQHj/H6I+R4YHmAAAACAAYEGAAABCAAMEMAAAA8AAHA4AAAAAAAD/wAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/g"));
|
var logo = E.toArrayBuffer(atob("PBwBAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAD/w+AAAAQAHA4hAAAAQAMAMhAAAAQAYBmhAAAAQAYBGiAAAAQAQCD/H74+R4wGDhoKJCSEwEDgoKJCT8wFDgoKJCSAwHDhoKJCSEQHj/H6I+R4YHmAAAACAAYEGAAABCAAMEMAAAA8AAHA4AAAAAAAD/wAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/gAAAAAAAB/g"));
|
||||||
|
|
||||||
var imageTop = 24;
|
var imageTop = 24;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "about",
|
"id": "about",
|
||||||
"name": "About",
|
"name": "About",
|
||||||
"version": "0.14",
|
"version": "0.15",
|
||||||
"description": "Bangle.js About page - showing software version, stats, and a collaborative mural from the Bangle.js KickStarter backers",
|
"description": "Bangle.js About page - showing software version, stats, and a collaborative mural from the Bangle.js KickStarter backers",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "tool,system",
|
"tags": "tool,system",
|
||||||
|
|
|
@ -2,4 +2,5 @@
|
||||||
0.02: Increase record time to 5 second
|
0.02: Increase record time to 5 second
|
||||||
Calculate the time moving in graph display
|
Calculate the time moving in graph display
|
||||||
Trigger on 1.04g now, and record 10 samples before trigger
|
Trigger on 1.04g now, and record 10 samples before trigger
|
||||||
0.03: Bangle.js 2 compatibility
|
0.03: Bangle.js 2 compatibility
|
||||||
|
0.04: Minor code improvements
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
var acc;
|
//var acc;
|
||||||
var HZ = 100;
|
var HZ = 100;
|
||||||
var SAMPLES = 5*HZ; // 5 seconds
|
var SAMPLES = 5*HZ; // 5 seconds
|
||||||
var SCALE = 5000;
|
var SCALE = 5000;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "accelrec",
|
"id": "accelrec",
|
||||||
"name": "Acceleration Recorder",
|
"name": "Acceleration Recorder",
|
||||||
"shortName": "Accel Rec",
|
"shortName": "Accel Rec",
|
||||||
"version": "0.03",
|
"version": "0.04",
|
||||||
"description": "This app puts the Bangle's accelerometer into 100Hz mode and reads 2 seconds worth of data after movement starts. The data can then be exported back to the PC.",
|
"description": "This app puts the Bangle's accelerometer into 100Hz mode and reads 2 seconds worth of data after movement starts. The data can then be exported back to the PC.",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "",
|
"tags": "",
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
0.02: Faster maze generation
|
0.02: Faster maze generation
|
||||||
0.03: Avoid clearing bottom widgets
|
0.03: Avoid clearing bottom widgets
|
||||||
|
0.04: Minor code improvements
|
||||||
|
|
|
@ -54,7 +54,7 @@ function Maze(n) {
|
||||||
// Abort if BTN1 pressed [grace period for menu]
|
// Abort if BTN1 pressed [grace period for menu]
|
||||||
// (for some reason setWatch() fails inside constructor)
|
// (for some reason setWatch() fails inside constructor)
|
||||||
if (ngroups<n*n-16 && digitalRead(BTN1)) {
|
if (ngroups<n*n-16 && digitalRead(BTN1)) {
|
||||||
aborting = true;
|
//aborting = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
from_group = to_group = -1;
|
from_group = to_group = -1;
|
||||||
|
@ -243,7 +243,7 @@ function timeToText(t) { // Courtesy of stopwatch app
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
let aborting = false;
|
//let aborting = false;
|
||||||
let start_time = 0;
|
let start_time = 0;
|
||||||
let duration = 0;
|
let duration = 0;
|
||||||
let maze=null;
|
let maze=null;
|
||||||
|
@ -261,13 +261,13 @@ Bangle.drawWidgets();
|
||||||
Bangle.setLocked(false);
|
Bangle.setLocked(false);
|
||||||
Bangle.setLCDTimeout(0);
|
Bangle.setLCDTimeout(0);
|
||||||
E.showMenu(mazeMenu);
|
E.showMenu(mazeMenu);
|
||||||
let maze_interval = setInterval(
|
/*let maze_interval =*/ setInterval(
|
||||||
function() {
|
function() {
|
||||||
if (maze) {
|
if (maze) {
|
||||||
if (digitalRead(BTN1) || maze.status==STATUS_ABORTED) {
|
if (digitalRead(BTN1) || maze.status==STATUS_ABORTED) {
|
||||||
maze = null;
|
maze = null;
|
||||||
start_time = duration = 0;
|
start_time = duration = 0;
|
||||||
aborting = false;
|
//aborting = false;
|
||||||
setTimeout(function() {E.showMenu(mazeMenu); }, 100);
|
setTimeout(function() {E.showMenu(mazeMenu); }, 100);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ "id": "acmaze",
|
{ "id": "acmaze",
|
||||||
"name": "AccelaMaze",
|
"name": "AccelaMaze",
|
||||||
"shortName":"AccelaMaze",
|
"shortName":"AccelaMaze",
|
||||||
"version":"0.03",
|
"version": "0.04",
|
||||||
"description": "Tilt the watch to roll a ball through a maze.",
|
"description": "Tilt the watch to roll a ball through a maze.",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "game",
|
"tags": "game",
|
||||||
|
|
|
@ -7,3 +7,4 @@
|
||||||
0.07: Added settings to be able to hide line1 and line2 so there is no visible widget
|
0.07: Added settings to be able to hide line1 and line2 so there is no visible widget
|
||||||
0.08: Fixed zero steps issue caused by 0.07
|
0.08: Fixed zero steps issue caused by 0.07
|
||||||
0.09: Prettied up user interface, decluttered graphs
|
0.09: Prettied up user interface, decluttered graphs
|
||||||
|
0.10: Minor code improvements
|
||||||
|
|
|
@ -136,7 +136,7 @@
|
||||||
function drawMenu() {
|
function drawMenu() {
|
||||||
var x = 100;
|
var x = 100;
|
||||||
var y = 24;
|
var y = 24;
|
||||||
var stps ="-";
|
//var stps ="-";
|
||||||
var y_inc = 25;
|
var y_inc = 25;
|
||||||
|
|
||||||
g.clear();
|
g.clear();
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "activepedom",
|
"id": "activepedom",
|
||||||
"name": "Active Pedometer",
|
"name": "Active Pedometer",
|
||||||
"shortName": "Active Pedometer",
|
"shortName": "Active Pedometer",
|
||||||
"version": "0.09",
|
"version": "0.10",
|
||||||
"description": "(NOT RECOMMENDED) Pedometer that filters out arm movement and displays a step goal progress. Steps are saved to a daily file and can be viewed as graph. The `Health` app now provides step logging and graphs.",
|
"description": "(NOT RECOMMENDED) Pedometer that filters out arm movement and displays a step goal progress. Steps are saved to a daily file and can be viewed as graph. The `Health` app now provides step logging and graphs.",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "outdoors,widget",
|
"tags": "outdoors,widget",
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
var startTimeStep = new Date(); //set start time
|
var startTimeStep = new Date(); //set start time
|
||||||
var stopTimeStep = 0; //Time after one step
|
var stopTimeStep = 0; //Time after one step
|
||||||
var timerResetActive = 0; //timer to reset active
|
var timerResetActive = 0; //timer to reset active
|
||||||
var timerStoreData = 0; //timer to store data
|
//var timerStoreData = 0; //timer to store data
|
||||||
var steps = 0; //steps taken
|
var steps = 0; //steps taken
|
||||||
var stepsCounted = 0; //active steps counted
|
var stepsCounted = 0; //active steps counted
|
||||||
var active = 0; //x steps in y seconds achieved
|
var active = 0; //x steps in y seconds achieved
|
||||||
|
@ -234,7 +234,7 @@
|
||||||
pedomdata = 0; //reset pedomdata to save memory
|
pedomdata = 0; //reset pedomdata to save memory
|
||||||
|
|
||||||
setStepSensitivity(setting('stepSensitivity')); //set step sensitivity (80 is standard, 400 is muss less sensitive)
|
setStepSensitivity(setting('stepSensitivity')); //set step sensitivity (80 is standard, 400 is muss less sensitive)
|
||||||
timerStoreData = setInterval(storeData, storeDataInterval); //store data regularly
|
/*timerStoreData =*/ setInterval(storeData, storeDataInterval); //store data regularly
|
||||||
//Add widget, use: WIDGETS.activepedom.getSteps() inside another App to return todays step count
|
//Add widget, use: WIDGETS.activepedom.getSteps() inside another App to return todays step count
|
||||||
WIDGETS["activepedom"]={area:"tl",width:width,draw:draw, getSteps:()=>stepsCounted};
|
WIDGETS["activepedom"]={area:"tl",width:width,draw:draw, getSteps:()=>stepsCounted};
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -14,3 +14,4 @@
|
||||||
0.12: Added color field and updating clkinfo periodically (running events)
|
0.12: Added color field and updating clkinfo periodically (running events)
|
||||||
0.13: Show day of the week in date
|
0.13: Show day of the week in date
|
||||||
0.14: Fixed "Today" and "Yesterday" wrongly displayed for allDay events on some time zones
|
0.14: Fixed "Today" and "Yesterday" wrongly displayed for allDay events on some time zones
|
||||||
|
0.15: Minor code improvements
|
||||||
|
|
|
@ -15,14 +15,14 @@
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
Bangle.drawWidgets();
|
Bangle.drawWidgets();
|
||||||
|
|
||||||
var FILE = "android.calendar.json";
|
//var FILE = "android.calendar.json";
|
||||||
|
|
||||||
var Locale = require("locale");
|
var Locale = require("locale");
|
||||||
|
|
||||||
var fontSmall = "6x8";
|
//var fontSmall = "6x8";
|
||||||
var fontMedium = g.getFonts().includes("6x15")?"6x15":"6x8:2";
|
var fontMedium = g.getFonts().includes("6x15")?"6x15":"6x8:2";
|
||||||
var fontBig = g.getFonts().includes("12x20")?"12x20":"6x8:2";
|
var fontBig = g.getFonts().includes("12x20")?"12x20":"6x8:2";
|
||||||
var fontLarge = g.getFonts().includes("6x15")?"6x15:2":"6x8:4";
|
//var fontLarge = g.getFonts().includes("6x15")?"6x15:2":"6x8:4";
|
||||||
|
|
||||||
//FIXME maybe write the end from GB already? Not durationInSeconds here (or do while receiving?)
|
//FIXME maybe write the end from GB already? Not durationInSeconds here (or do while receiving?)
|
||||||
var CALENDAR = require("Storage").readJSON("android.calendar.json",true)||[];
|
var CALENDAR = require("Storage").readJSON("android.calendar.json",true)||[];
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "agenda",
|
"id": "agenda",
|
||||||
"name": "Agenda",
|
"name": "Agenda",
|
||||||
"version": "0.14",
|
"version": "0.15",
|
||||||
"description": "Simple agenda",
|
"description": "Simple agenda",
|
||||||
"icon": "agenda.png",
|
"icon": "agenda.png",
|
||||||
"screenshots": [{"url":"screenshot_agenda_overview.png"}, {"url":"screenshot_agenda_event1.png"}, {"url":"screenshot_agenda_event2.png"}],
|
"screenshots": [{"url":"screenshot_agenda_overview.png"}, {"url":"screenshot_agenda_event1.png"}, {"url":"screenshot_agenda_event2.png"}],
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
0.02: Added adjustment for Bangle.js magnetometer heading fix
|
0.02: Added adjustment for Bangle.js magnetometer heading fix
|
||||||
|
0.03: Minor code improvements
|
||||||
|
|
|
@ -145,7 +145,7 @@ Bangle.setCompassPower(1);
|
||||||
Bangle.setGPSPower(1);
|
Bangle.setGPSPower(1);
|
||||||
g.clear();
|
g.clear();
|
||||||
process_GPS();
|
process_GPS();
|
||||||
var poll_GPS = setInterval(process_GPS, 9000);
|
/*var poll_GPS =*/ setInterval(process_GPS, 9000);
|
||||||
|
|
||||||
setWatch(function () {
|
setWatch(function () {
|
||||||
if (!button_lock) {
|
if (!button_lock) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "alpinenav",
|
"id": "alpinenav",
|
||||||
"name": "Alpine Nav",
|
"name": "Alpine Nav",
|
||||||
"version": "0.02",
|
"version": "0.03",
|
||||||
"description": "App that performs GPS monitoring to track and display position relative to a given origin in realtime",
|
"description": "App that performs GPS monitoring to track and display position relative to a given origin in realtime",
|
||||||
"icon": "app-icon.png",
|
"icon": "app-icon.png",
|
||||||
"tags": "outdoors,gps",
|
"tags": "outdoors,gps",
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
|
0.02: Minor code improvements
|
||||||
|
|
|
@ -4,8 +4,6 @@ var avrAngle = undefined;
|
||||||
var history = [];
|
var history = [];
|
||||||
|
|
||||||
var R = Bangle.appRect;
|
var R = Bangle.appRect;
|
||||||
var W = g.getWidth();
|
|
||||||
var H = g.getHeight();
|
|
||||||
var relativeTo = undefined;
|
var relativeTo = undefined;
|
||||||
|
|
||||||
function draw(v) {
|
function draw(v) {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "angles",
|
"id": "angles",
|
||||||
"name": "Angles (Spirit Level)",
|
"name": "Angles (Spirit Level)",
|
||||||
"shortName": "Angles",
|
"shortName": "Angles",
|
||||||
"version": "0.01",
|
"version": "0.02",
|
||||||
"description": "Shows Angle or Relative angle in degrees (Digital Protractor/Inclinometer). Place Bangle sideways against a surface with the button facing away for best readings.",
|
"description": "Shows Angle or Relative angle in degrees (Digital Protractor/Inclinometer). Place Bangle sideways against a surface with the button facing away for best readings.",
|
||||||
"icon": "icon.png",
|
"icon": "icon.png",
|
||||||
"screenshots": [{"url":"screenshot.png"}],
|
"screenshots": [{"url":"screenshot.png"}],
|
||||||
|
|
|
@ -3,3 +3,4 @@
|
||||||
0.03: Update to use setUI
|
0.03: Update to use setUI
|
||||||
0.04: Tell clock widgets to hide. Move loadWidgets() so it only runs on
|
0.04: Tell clock widgets to hide. Move loadWidgets() so it only runs on
|
||||||
startup and not on every draw.
|
startup and not on every draw.
|
||||||
|
0.05: Minor code improvements
|
||||||
|
|
|
@ -16,7 +16,6 @@ var is12Hour = (require("Storage").readJSON("setting.json",1)||{})["12hour"];
|
||||||
var IX = 80, IY = 10, IBPP = 1;
|
var IX = 80, IY = 10, IBPP = 1;
|
||||||
var IW = 174, IH = 45, OY = 24;
|
var IW = 174, IH = 45, OY = 24;
|
||||||
var inf = {align:0};
|
var inf = {align:0};
|
||||||
var bgoptions;
|
|
||||||
|
|
||||||
require("Font7x11Numeric7Seg").add(Graphics);
|
require("Font7x11Numeric7Seg").add(Graphics);
|
||||||
var cg = Graphics.createArrayBuffer(IW,IH,IBPP,{msb:true});
|
var cg = Graphics.createArrayBuffer(IW,IH,IBPP,{msb:true});
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "animclk",
|
"id": "animclk",
|
||||||
"name": "Animated Clock",
|
"name": "Animated Clock",
|
||||||
"shortName": "Anim Clock",
|
"shortName": "Anim Clock",
|
||||||
"version": "0.04",
|
"version": "0.05",
|
||||||
"description": "An animated clock face using Mark Ferrari's amazing 8 bit game art and palette cycling: http://www.markferrari.com/art/8bit-game-art",
|
"description": "An animated clock face using Mark Ferrari's amazing 8 bit game art and palette cycling: http://www.markferrari.com/art/8bit-game-art",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
0.1: Initial release
|
0.1: Initial release
|
||||||
0.2: Added more descriptive approximations
|
0.2: Added more descriptive approximations
|
||||||
0.2f: Bug fixes: Incorrect hour drawn after 50 mins, incorrect quarter minute drawn after 50 mins
|
0.2f: Bug fixes: Incorrect hour drawn after 50 mins, incorrect quarter minute drawn after 50 mins
|
||||||
0.3: Added touch interaction to display exact time and date.
|
0.3: Added touch interaction to display exact time and date.
|
||||||
|
0.04: Minor code improvements
|
||||||
|
|
|
@ -93,7 +93,7 @@ const drawTimeExact = () => {
|
||||||
var dateTime = Date();
|
var dateTime = Date();
|
||||||
var hours = dateTime.getHours();
|
var hours = dateTime.getHours();
|
||||||
var minutes = dateTime.getMinutes().toString().padStart(2,0);
|
var minutes = dateTime.getMinutes().toString().padStart(2,0);
|
||||||
var day = dateTime.getDay();
|
//var day = dateTime.getDay();
|
||||||
var date = dateTime.getDate();
|
var date = dateTime.getDate();
|
||||||
var month = dateTime.getMonth();
|
var month = dateTime.getMonth();
|
||||||
var year = dateTime.getFullYear();
|
var year = dateTime.getFullYear();
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ "id": "approxclock",
|
{ "id": "approxclock",
|
||||||
"name": "Approximate Clock",
|
"name": "Approximate Clock",
|
||||||
"shortName" : "Approx Clock",
|
"shortName" : "Approx Clock",
|
||||||
"version": "0.3",
|
"version": "0.04",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"description": "A really basic spelled out time display for people looking for the vague time at a glance.",
|
"description": "A really basic spelled out time display for people looking for the vague time at a glance.",
|
||||||
"readme": "readme.md",
|
"readme": "readme.md",
|
||||||
|
|
|
@ -4,3 +4,4 @@
|
||||||
0.04: removed LED1.write() as it was keeping LCD on
|
0.04: removed LED1.write() as it was keeping LCD on
|
||||||
0.05: Turn compass off when screen off
|
0.05: Turn compass off when screen off
|
||||||
Calibrate at start if no info
|
Calibrate at start if no info
|
||||||
|
0.06: Minor code improvements
|
||||||
|
|
|
@ -20,9 +20,11 @@ function flip2(x,y) {
|
||||||
buf2.clear();
|
buf2.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
function radians(d) {
|
function radians(d) {
|
||||||
return (d*Math.PI) / 180;
|
return (d*Math.PI) / 180;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// takes 32ms
|
// takes 32ms
|
||||||
function drawCompass(hd) {
|
function drawCompass(hd) {
|
||||||
|
@ -60,7 +62,7 @@ function newHeading(m,h){
|
||||||
|
|
||||||
// takes approx 7ms
|
// takes approx 7ms
|
||||||
function tiltfixread(O,S){
|
function tiltfixread(O,S){
|
||||||
var start = Date.now();
|
//var start = Date.now();
|
||||||
var m = Bangle.getCompass();
|
var m = Bangle.getCompass();
|
||||||
var g = Bangle.getAccel();
|
var g = Bangle.getAccel();
|
||||||
m.dx =(m.x-O.x)*S.x; m.dy=(m.y-O.y)*S.y; m.dz=(m.z-O.z)*S.z;
|
m.dx =(m.x-O.x)*S.x; m.dy=(m.y-O.y)*S.y; m.dz=(m.z-O.z)*S.z;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "arrow",
|
"id": "arrow",
|
||||||
"name": "Arrow Compass",
|
"name": "Arrow Compass",
|
||||||
"version": "0.05",
|
"version": "0.06",
|
||||||
"description": "Moving arrow compass that points North, shows heading, with tilt correction. Based on jeffmer's Navigation Compass",
|
"description": "Moving arrow compass that points North, shows heading, with tilt correction. Based on jeffmer's Navigation Compass",
|
||||||
"icon": "arrow.png",
|
"icon": "arrow.png",
|
||||||
"type": "app",
|
"type": "app",
|
||||||
|
|
|
@ -4,3 +4,4 @@
|
||||||
0.04: Compatibility with Bangle.js 2, get location from My Location
|
0.04: Compatibility with Bangle.js 2, get location from My Location
|
||||||
0.05: Enable widgets
|
0.05: Enable widgets
|
||||||
0.06: Fix azimuth (bug #2651), only show degrees
|
0.06: Fix azimuth (bug #2651), only show degrees
|
||||||
|
0.07: Minor code improvements
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const SunCalc = require("suncalc"); // from modules folder
|
const SunCalc = require("suncalc"); // from modules folder
|
||||||
const storage = require("Storage");
|
|
||||||
|
|
||||||
function drawMoon(phase, x, y) {
|
function drawMoon(phase, x, y) {
|
||||||
const moonImgFiles = [
|
const moonImgFiles = [
|
||||||
|
@ -52,7 +51,7 @@ function drawTitle(key) {
|
||||||
const x = 0;
|
const x = 0;
|
||||||
const x2 = g.getWidth() - 1;
|
const x2 = g.getWidth() - 1;
|
||||||
const y = fontHeight + 26;
|
const y = fontHeight + 26;
|
||||||
const y2 = g.getHeight() - 1;
|
//const y2 = g.getHeight() - 1;
|
||||||
const title = titlizeKey(key);
|
const title = titlizeKey(key);
|
||||||
|
|
||||||
g.setFont("6x8", 2);
|
g.setFont("6x8", 2);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "astrocalc",
|
"id": "astrocalc",
|
||||||
"name": "Astrocalc",
|
"name": "Astrocalc",
|
||||||
"version": "0.06",
|
"version": "0.07",
|
||||||
"description": "Calculates interesting information on the sun like sunset and sunrise and moon cycles for the current day based on your location from MyLocation app",
|
"description": "Calculates interesting information on the sun like sunset and sunrise and moon cycles for the current day based on your location from MyLocation app",
|
||||||
"icon": "astrocalc.png",
|
"icon": "astrocalc.png",
|
||||||
"tags": "app,sun,moon,cycles,tool,outdoors",
|
"tags": "app,sun,moon,cycles,tool,outdoors",
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
0.02: Set LCD timeout for Espruino 2v10 compatibility
|
0.02: Set LCD timeout for Espruino 2v10 compatibility
|
||||||
|
0.03: Minor code improvements
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
10: "Medium", 16: "Small", 20: "Tiny", 40: "Trivial",
|
10: "Medium", 16: "Small", 20: "Tiny", 40: "Trivial",
|
||||||
};
|
};
|
||||||
// even size 1 actually works, but larger mazes take forever to generate
|
// even size 1 actually works, but larger mazes take forever to generate
|
||||||
|
// TODO: should `sizes`, `minSize` and `defaultSize` have been declared outside the if block?
|
||||||
if (!BANGLEJS2) {
|
if (!BANGLEJS2) {
|
||||||
const sizes = [1, 2, 4, 5, 8, 10, 16, 20, 40].reverse(), minSize = 4, defaultSize = 10;
|
const sizes = [1, 2, 4, 5, 8, 10, 16, 20, 40].reverse(), minSize = 4, defaultSize = 10;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "ballmaze",
|
"id": "ballmaze",
|
||||||
"name": "Ball Maze",
|
"name": "Ball Maze",
|
||||||
"version": "0.02",
|
"version": "0.03",
|
||||||
"description": "Navigate a ball through a maze by tilting your watch.",
|
"description": "Navigate a ball through a maze by tilting your watch.",
|
||||||
"icon": "icon.png",
|
"icon": "icon.png",
|
||||||
"type": "app",
|
"type": "app",
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
0.01: New app!
|
||||||
|
0.02: Minor code improvements
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "banglebridge",
|
"id": "banglebridge",
|
||||||
"name": "BangleBridge",
|
"name": "BangleBridge",
|
||||||
"shortName": "BangleBridge",
|
"shortName": "BangleBridge",
|
||||||
"version": "0.01",
|
"version": "0.02",
|
||||||
"description": "Widget that allows Bangle Js to record pair and end data using Bluetooth Low Energy in combination with the BangleBridge Android App",
|
"description": "Widget that allows Bangle Js to record pair and end data using Bluetooth Low Energy in combination with the BangleBridge Android App",
|
||||||
"icon": "widget.png",
|
"icon": "widget.png",
|
||||||
"type": "widget",
|
"type": "widget",
|
||||||
|
|
|
@ -11,13 +11,13 @@
|
||||||
|
|
||||||
g.setFont("Vector", 100);
|
g.setFont("Vector", 100);
|
||||||
//variabangle.Sensorss
|
//variabangle.Sensorss
|
||||||
let acclS, bttS, compssS, gpsS, hrmS, stepS; //Strings
|
//let acclS, bttS, compssS, gpsS, hrmS, stepS; //Strings
|
||||||
let accelN, compssN, gpsN, hrmN, stepN; //Num
|
let accelN, compssN, gpsN, hrmN, stepN; //Num
|
||||||
let prueba = 1;
|
//let prueba = 1;
|
||||||
let data = [0, 0, 0, 0, 0, 0];
|
let data = [0, 0, 0, 0, 0, 0];
|
||||||
//Constants for redabangle.Sensors code
|
//Constants for redabangle.Sensors code
|
||||||
let storage = require('Storage');
|
let storage = require('Storage');
|
||||||
let deCom = require('heatshrink');
|
//let deCom = require('heatshrink');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -129,10 +129,10 @@
|
||||||
finalS = s;
|
finalS = s;
|
||||||
}
|
}
|
||||||
var z = d.getMilliseconds();
|
var z = d.getMilliseconds();
|
||||||
var zFinal = new String(z);
|
//var zFinal = new String(z);
|
||||||
zFinal = zFinal.replace('.', '');
|
//zFinal = zFinal.replace('.', '');
|
||||||
var completeTime = year + "-" + finalMonth + "-" + finalDay + "T" + finalh + ":" + finalM + ":" + finalS + "." + z + "Z";
|
var completeTime = year + "-" + finalMonth + "-" + finalDay + "T" + finalh + ":" + finalM + ":" + finalS + "." + z + "Z";
|
||||||
var time = h + ":" + ("0" + m).substr(-2);
|
//var time = h + ":" + ("0" + m).substr(-2);
|
||||||
gpsN.time = completeTime;
|
gpsN.time = completeTime;
|
||||||
data[5] = gpsN;
|
data[5] = gpsN;
|
||||||
}, 2 * 1000);
|
}, 2 * 1000);
|
||||||
|
|
|
@ -3,3 +3,4 @@
|
||||||
Add more feedback to the user about the exercises
|
Add more feedback to the user about the exercises
|
||||||
Clean up code
|
Clean up code
|
||||||
0.03: Add software back button on main menu
|
0.03: Add software back button on main menu
|
||||||
|
0.04: Minor code improvements
|
||||||
|
|
|
@ -11,7 +11,7 @@ let historySlopeY = [];
|
||||||
let historySlopeZ = [];
|
let historySlopeZ = [];
|
||||||
|
|
||||||
let lastZeroPassCameFromPositive;
|
let lastZeroPassCameFromPositive;
|
||||||
let lastZeroPassTime = 0;
|
//let lastZeroPassTime = 0;
|
||||||
|
|
||||||
let lastExerciseCompletionTime = 0;
|
let lastExerciseCompletionTime = 0;
|
||||||
let lastExerciseHalfCompletionTime = 0;
|
let lastExerciseHalfCompletionTime = 0;
|
||||||
|
@ -198,7 +198,7 @@ function isValidExercise(slope, t) {
|
||||||
}
|
}
|
||||||
|
|
||||||
lastZeroPassCameFromPositive = true;
|
lastZeroPassCameFromPositive = true;
|
||||||
lastZeroPassTime = t;
|
//lastZeroPassTime = t;
|
||||||
}
|
}
|
||||||
if (p2 > 0 && p1 < 0) {
|
if (p2 > 0 && p1 < 0) {
|
||||||
if (lastZeroPassCameFromPositive == true) {
|
if (lastZeroPassCameFromPositive == true) {
|
||||||
|
@ -256,7 +256,7 @@ function isValidExercise(slope, t) {
|
||||||
}
|
}
|
||||||
|
|
||||||
lastZeroPassCameFromPositive = false;
|
lastZeroPassCameFromPositive = false;
|
||||||
lastZeroPassTime = t;
|
//lastZeroPassTime = t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -272,7 +272,7 @@ function reset() {
|
||||||
historySlopeZ = [];
|
historySlopeZ = [];
|
||||||
|
|
||||||
lastZeroPassCameFromPositive = undefined;
|
lastZeroPassCameFromPositive = undefined;
|
||||||
lastZeroPassTime = 0;
|
//lastZeroPassTime = 0;
|
||||||
lastExerciseHalfCompletionTime = 0;
|
lastExerciseHalfCompletionTime = 0;
|
||||||
lastExerciseCompletionTime = 0;
|
lastExerciseCompletionTime = 0;
|
||||||
exerciseCounter = 0;
|
exerciseCounter = 0;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ "id": "banglexercise",
|
{ "id": "banglexercise",
|
||||||
"name": "BanglExercise",
|
"name": "BanglExercise",
|
||||||
"shortName":"BanglExercise",
|
"shortName":"BanglExercise",
|
||||||
"version":"0.03",
|
"version": "0.04",
|
||||||
"description": "Can automatically track exercises while wearing the Bangle.js watch.",
|
"description": "Can automatically track exercises while wearing the Bangle.js watch.",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"screenshots": [{"url":"screenshot.png"}],
|
"screenshots": [{"url":"screenshot.png"}],
|
||||||
|
|
|
@ -8,3 +8,4 @@
|
||||||
0.08: Step count stored in memory to survive reloads. Now shows step count daily and since last reboot.
|
0.08: Step count stored in memory to survive reloads. Now shows step count daily and since last reboot.
|
||||||
0.09: NOW it really should reset daily (instead of every other day...)
|
0.09: NOW it really should reset daily (instead of every other day...)
|
||||||
0.10: Tell clock widgets to hide.
|
0.10: Tell clock widgets to hide.
|
||||||
|
0.11: Minor code improvements
|
||||||
|
|
|
@ -8,8 +8,8 @@ let digitBarHeight = 100;
|
||||||
let textBarWidth = 56;
|
let textBarWidth = 56;
|
||||||
let textBarHeight = 20;
|
let textBarHeight = 20;
|
||||||
|
|
||||||
let textWidth = 14;
|
//let textWidth = 14;
|
||||||
let textHeight = 20;
|
//let textHeight = 20;
|
||||||
|
|
||||||
/* Offsets */
|
/* Offsets */
|
||||||
var startOffsetX = 17;
|
var startOffsetX = 17;
|
||||||
|
@ -39,7 +39,7 @@ let rightBarsStartY = upperTextBarRightOffsetY + textBarHeight;
|
||||||
/* Utilities */
|
/* Utilities */
|
||||||
let stepCount = require("Storage").readJSON("stepCount",1);
|
let stepCount = require("Storage").readJSON("stepCount",1);
|
||||||
if(stepCount === undefined) stepCount = 0;
|
if(stepCount === undefined) stepCount = 0;
|
||||||
let intCaster = num => Number(num);
|
//let intCaster = num => Number(num);
|
||||||
|
|
||||||
var drawTimeout;
|
var drawTimeout;
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ function renderWatch(l) {
|
||||||
|
|
||||||
var d = new Date();
|
var d = new Date();
|
||||||
var h = d.getHours(), m = d.getMinutes();
|
var h = d.getHours(), m = d.getMinutes();
|
||||||
var time = h + ":" + ("0"+m).substr(-2);
|
//var time = h + ":" + ("0"+m).substr(-2);
|
||||||
//var month = ("0" + (d.getMonth()+1)).slice(-2);
|
//var month = ("0" + (d.getMonth()+1)).slice(-2);
|
||||||
var dayOfMonth = ('0' + d.getDate()).slice(-2);
|
var dayOfMonth = ('0' + d.getDate()).slice(-2);
|
||||||
var dayOfWeek = d.getDay() || 7;
|
var dayOfWeek = d.getDay() || 7;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"name": "Barcode clock",
|
"name": "Barcode clock",
|
||||||
"shortName":"Barcode clock",
|
"shortName":"Barcode clock",
|
||||||
"icon": "barcode.icon.png",
|
"icon": "barcode.icon.png",
|
||||||
"version":"0.10",
|
"version": "0.11",
|
||||||
"description": "EAN-8 compatible barcode clock.",
|
"description": "EAN-8 compatible barcode clock.",
|
||||||
"tags": "barcode,ean,ean-8,watchface,clock,clockface",
|
"tags": "barcode,ean,ean-8,watchface,clock,clockface",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
|
|
|
@ -10,3 +10,4 @@
|
||||||
0.10: Remove widget icon and improve listener and setInterval handling for widget (might help with https://github.com/espruino/BangleApps/issues/381)
|
0.10: Remove widget icon and improve listener and setInterval handling for widget (might help with https://github.com/espruino/BangleApps/issues/381)
|
||||||
0.11: Initial port to the BangleJS2
|
0.11: Initial port to the BangleJS2
|
||||||
0.12: Remove debug log
|
0.12: Remove debug log
|
||||||
|
0.13: Minor code improvements
|
||||||
|
|
|
@ -146,7 +146,7 @@ function renderData(dataArray) {
|
||||||
const belowMinIndicatorValue = minTemperature - 1;
|
const belowMinIndicatorValue = minTemperature - 1;
|
||||||
const aboveMaxIndicatorValue = maxTemparature + 1;
|
const aboveMaxIndicatorValue = maxTemparature + 1;
|
||||||
|
|
||||||
var allConsumers = switchableConsumers.none | switchableConsumers.lcd | switchableConsumers.compass | switchableConsumers.bluetooth | switchableConsumers.gps | switchableConsumers.hrm;
|
//var allConsumers = switchableConsumers.none | switchableConsumers.lcd | switchableConsumers.compass | switchableConsumers.bluetooth | switchableConsumers.gps | switchableConsumers.hrm;
|
||||||
|
|
||||||
for (let i = 0; i < dataArray.length; i++) {
|
for (let i = 0; i < dataArray.length; i++) {
|
||||||
const element = dataArray[i];
|
const element = dataArray[i];
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "batchart",
|
"id": "batchart",
|
||||||
"name": "Battery Chart",
|
"name": "Battery Chart",
|
||||||
"shortName": "Battery Chart",
|
"shortName": "Battery Chart",
|
||||||
"version": "0.12",
|
"version": "0.13",
|
||||||
"description": "A widget and an app for recording and visualizing battery percentage over time.",
|
"description": "A widget and an app for recording and visualizing battery percentage over time.",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "app,widget,battery,time,record,chart,tool",
|
"tags": "app,widget,battery,time,record,chart,tool",
|
||||||
|
|
|
@ -11,10 +11,10 @@
|
||||||
hrm: 16
|
hrm: 16
|
||||||
};
|
};
|
||||||
|
|
||||||
var batChartFile; // file for battery percentage recording
|
//var batChartFile; // file for battery percentage recording
|
||||||
const recordingInterval10Min = 60 * 10 * 1000;
|
const recordingInterval10Min = 60 * 10 * 1000;
|
||||||
const recordingInterval1Min = 60 * 1000; //For testing
|
//const recordingInterval1Min = 60 * 1000; //For testing
|
||||||
const recordingInterval10S = 10 * 1000; //For testing
|
//const recordingInterval10S = 10 * 1000; //For testing
|
||||||
|
|
||||||
var compassEventReceived = false;
|
var compassEventReceived = false;
|
||||||
var gpsEventReceived = false;
|
var gpsEventReceived = false;
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
|
0.02: Minor code improvements
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
const FIELD_WIDTH = [11, 11, 15]; // for each phase
|
const FIELD_WIDTH = [11, 11, 15]; // for each phase
|
||||||
const FIELD_HEIGHT = FIELD_WIDTH;
|
const FIELD_HEIGHT = FIELD_WIDTH;
|
||||||
const FIELD_LINE_WIDTH = 2;
|
//const FIELD_LINE_WIDTH = 2;
|
||||||
const FIELD_MARGIN = 2;
|
const FIELD_MARGIN = 2;
|
||||||
const FIELD_COUNT_X = 10;
|
const FIELD_COUNT_X = 10;
|
||||||
const FIELD_COUNT_Y = FIELD_COUNT_X;
|
const FIELD_COUNT_Y = FIELD_COUNT_X;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "battleship",
|
"id": "battleship",
|
||||||
"name": "Battleship",
|
"name": "Battleship",
|
||||||
"version": "0.01",
|
"version": "0.02",
|
||||||
"description": "The classic game of battleship",
|
"description": "The classic game of battleship",
|
||||||
"icon": "battleship-icon.png",
|
"icon": "battleship-icon.png",
|
||||||
"tags": "game",
|
"tags": "game",
|
||||||
|
|
|
@ -4,3 +4,4 @@
|
||||||
0.04: Update to use Bangle.setUI instead of setWatch
|
0.04: Update to use Bangle.setUI instead of setWatch
|
||||||
0.05: Avoid 'loadWidgets' at LCD on, which will cause memory leak
|
0.05: Avoid 'loadWidgets' at LCD on, which will cause memory leak
|
||||||
Avoid clearTimeout() usage, as it may break other widgets
|
Avoid clearTimeout() usage, as it may break other widgets
|
||||||
|
0.06: Minor code improvements
|
||||||
|
|
|
@ -108,10 +108,10 @@ for (let h=1; h<=12; h++) {
|
||||||
// so we buffer once and minute, and draw the second hand dynamically
|
// so we buffer once and minute, and draw the second hand dynamically
|
||||||
// (with a bit of flicker)
|
// (with a bit of flicker)
|
||||||
const drawFace = (G) => {
|
const drawFace = (G) => {
|
||||||
const fw = R1 * 2;
|
//const fw = R1 * 2;
|
||||||
const fh = R1 * 2;
|
//const fh = R1 * 2;
|
||||||
const fw2 = R1;
|
//const fw2 = R1;
|
||||||
const fh2 = R1;
|
//const fh2 = R1;
|
||||||
let hs = [];
|
let hs = [];
|
||||||
|
|
||||||
// Wipe the image and start with white
|
// Wipe the image and start with white
|
||||||
|
@ -182,7 +182,7 @@ const drawAll = (force) => {
|
||||||
if (!faceImg) force = true;
|
if (!faceImg) force = true;
|
||||||
|
|
||||||
let face_changed = force;
|
let face_changed = force;
|
||||||
let date_changed = false;
|
//let date_changed = false;
|
||||||
|
|
||||||
tmp = hours;
|
tmp = hours;
|
||||||
hours = now.getHours();
|
hours = now.getHours();
|
||||||
|
@ -214,7 +214,7 @@ const drawAll = (force) => {
|
||||||
tmp = date;
|
tmp = date;
|
||||||
date = now.getDate();
|
date = now.getDate();
|
||||||
if (tmp !== date) {
|
if (tmp !== date) {
|
||||||
date_changed = true;
|
//date_changed = true;
|
||||||
face_changed = true; // Should have changed anyway with hour/minute rollover
|
face_changed = true; // Should have changed anyway with hour/minute rollover
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "beebclock",
|
"id": "beebclock",
|
||||||
"name": "Beeb Clock",
|
"name": "Beeb Clock",
|
||||||
"version": "0.05",
|
"version": "0.06",
|
||||||
"description": "Clock face that may be coincidentally familiar to BBC viewers",
|
"description": "Clock face that may be coincidentally familiar to BBC viewers",
|
||||||
"icon": "beebclock.png",
|
"icon": "beebclock.png",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
|
|
|
@ -5,4 +5,5 @@
|
||||||
Now show widgets
|
Now show widgets
|
||||||
Make compatible with themes, and Bangle.js 2
|
Make compatible with themes, and Bangle.js 2
|
||||||
0.06: Enable fastloading
|
0.06: Enable fastloading
|
||||||
0.07: Adds fullscreen mode setting
|
0.07: Adds fullscreen mode setting
|
||||||
|
0.08: Minor code improvements
|
||||||
|
|
|
@ -9,7 +9,6 @@ let fullscreen = !!settings.fullscreen;
|
||||||
|
|
||||||
let show_date = false;
|
let show_date = false;
|
||||||
let show_time = false;
|
let show_time = false;
|
||||||
let yy = 0;
|
|
||||||
|
|
||||||
let rowlights = [];
|
let rowlights = [];
|
||||||
let time_digit = [];
|
let time_digit = [];
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "berlinc",
|
"id": "berlinc",
|
||||||
"name": "Berlin Clock",
|
"name": "Berlin Clock",
|
||||||
"version": "0.07",
|
"version": "0.08",
|
||||||
"description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)",
|
"description": "Berlin Clock (see https://en.wikipedia.org/wiki/Mengenlehreuhr)",
|
||||||
"icon": "berlin-clock.png",
|
"icon": "berlin-clock.png",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
|
|
|
@ -2,3 +2,4 @@
|
||||||
0.02: Removed unneeded squares
|
0.02: Removed unneeded squares
|
||||||
0.03: Added setting for fullscreen option
|
0.03: Added setting for fullscreen option
|
||||||
0.04: Added settings to hide unused squares and show date
|
0.04: Added settings to hide unused squares and show date
|
||||||
|
0.05: Minor code improvements
|
||||||
|
|
|
@ -63,7 +63,7 @@ function draw() {
|
||||||
|
|
||||||
g.clear();
|
g.clear();
|
||||||
draw();
|
draw();
|
||||||
var secondInterval = setInterval(draw, 60000);
|
/*var secondInterval =*/ setInterval(draw, 60000);
|
||||||
Bangle.setUI("clock");
|
Bangle.setUI("clock");
|
||||||
if (!settings.fullscreen) {
|
if (!settings.fullscreen) {
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "binaryclk",
|
"id": "binaryclk",
|
||||||
"name": "Bin Clock",
|
"name": "Bin Clock",
|
||||||
"version": "0.04",
|
"version": "0.05",
|
||||||
"description": "Clock face to show binary time in 24 hour format",
|
"description": "Clock face to show binary time in 24 hour format",
|
||||||
"icon": "app-icon.png",
|
"icon": "app-icon.png",
|
||||||
"screenshots": [{"url":"screenshot.png"}],
|
"screenshots": [{"url":"screenshot.png"}],
|
||||||
|
|
|
@ -4,3 +4,4 @@
|
||||||
0.04: corrected format of background image (raw binary)
|
0.04: corrected format of background image (raw binary)
|
||||||
0.05: move setUI() up before draw() as to not have a false positive 'sanity
|
0.05: move setUI() up before draw() as to not have a false positive 'sanity
|
||||||
check' when building on github.
|
check' when building on github.
|
||||||
|
0.06: Minor code improvements
|
||||||
|
|
|
@ -63,8 +63,8 @@ const V2_BAT_SIZE_Y = 2;
|
||||||
const V2_SCREEN_SIZE_X = 176;
|
const V2_SCREEN_SIZE_X = 176;
|
||||||
const V2_SCREEN_SIZE_Y = 176;
|
const V2_SCREEN_SIZE_Y = 176;
|
||||||
const V2_BACKGROUND_IMAGE = "binwatch.bg176.img";
|
const V2_BACKGROUND_IMAGE = "binwatch.bg176.img";
|
||||||
const V2_BG_COLOR = 0;
|
//const V2_BG_COLOR = 0;
|
||||||
const V2_FG_COLOR = 1;
|
//const V2_FG_COLOR = 1;
|
||||||
|
|
||||||
/* Bangle 1: 240 x 240 */
|
/* Bangle 1: 240 x 240 */
|
||||||
|
|
||||||
|
@ -91,15 +91,15 @@ const V1_BAT_SIZE_Y = 5;
|
||||||
const V1_SCREEN_SIZE_X = 240;
|
const V1_SCREEN_SIZE_X = 240;
|
||||||
const V1_SCREEN_SIZE_Y = 240;
|
const V1_SCREEN_SIZE_Y = 240;
|
||||||
const V1_BACKGROUND_IMAGE = "binwatch.bg240.img";
|
const V1_BACKGROUND_IMAGE = "binwatch.bg240.img";
|
||||||
const V1_BG_COLOR = 1;
|
//const V1_BG_COLOR = 1;
|
||||||
const V1_FG_COLOR = 0;
|
//const V1_FG_COLOR = 0;
|
||||||
|
|
||||||
/* runtime settings */
|
/* runtime settings */
|
||||||
|
|
||||||
var x_step = 0;
|
var x_step = 0;
|
||||||
var y_step = 0;
|
var y_step = 0;
|
||||||
|
|
||||||
var time_y_offset = 0;
|
//var time_y_offset = 0;
|
||||||
var hx = 0, hy = 0;
|
var hx = 0, hy = 0;
|
||||||
var mx = 0, my = 0;
|
var mx = 0, my = 0;
|
||||||
var sx = 0, sy = 0;
|
var sx = 0, sy = 0;
|
||||||
|
@ -110,10 +110,9 @@ var bat_pos_x, bat_pos_y, bat_size_x, bat_size_y;
|
||||||
var backgroundImage = "";
|
var backgroundImage = "";
|
||||||
var screen_size_x = 0;
|
var screen_size_x = 0;
|
||||||
var screen_size_y = 0;
|
var screen_size_y = 0;
|
||||||
var bg_color = 0;
|
//var bg_color = 0;
|
||||||
var fg_color = 1;
|
//var fg_color = 1;
|
||||||
|
|
||||||
/* global variables */
|
|
||||||
|
|
||||||
var showDateTime = 2; /* show noting, time or date */
|
var showDateTime = 2; /* show noting, time or date */
|
||||||
var cg;
|
var cg;
|
||||||
|
@ -271,7 +270,7 @@ function setRuntimeValues(resolution) {
|
||||||
x_step = V1_X_STEP;
|
x_step = V1_X_STEP;
|
||||||
y_step = V1_Y_STEP;
|
y_step = V1_Y_STEP;
|
||||||
|
|
||||||
time_y_offset = V1_TIME_Y_OFFSET;
|
//time_y_offset = V1_TIME_Y_OFFSET;
|
||||||
hx = V1_HX;
|
hx = V1_HX;
|
||||||
hy = V1_HY;
|
hy = V1_HY;
|
||||||
mx = V1_MX;
|
mx = V1_MX;
|
||||||
|
@ -298,7 +297,7 @@ function setRuntimeValues(resolution) {
|
||||||
x_step = V2_X_STEP;
|
x_step = V2_X_STEP;
|
||||||
y_step = V2_Y_STEP;
|
y_step = V2_Y_STEP;
|
||||||
|
|
||||||
time_y_offset = V2_TIME_Y_OFFSET;
|
//time_y_offset = V2_TIME_Y_OFFSET;
|
||||||
|
|
||||||
hx = V2_HX;
|
hx = V2_HX;
|
||||||
hy = V2_HY;
|
hy = V2_HY;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"shortName":"BinWatch",
|
"shortName":"BinWatch",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"screenshots": [{"url":"screenshot.png"}],
|
"screenshots": [{"url":"screenshot.png"}],
|
||||||
"version":"0.05",
|
"version": "0.06",
|
||||||
"supports": ["BANGLEJS2"],
|
"supports": ["BANGLEJS2"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator":true,
|
"allow_emulator":true,
|
||||||
|
|
|
@ -68,3 +68,4 @@
|
||||||
0.57: Handle the whitelist being disabled
|
0.57: Handle the whitelist being disabled
|
||||||
0.58: "Make Connectable" temporarily bypasses the whitelist
|
0.58: "Make Connectable" temporarily bypasses the whitelist
|
||||||
0.59: Whitelist: Try to resolve peer addresses using NRF.resolveAddress() - for 2v19 or 2v18 cutting edge builds
|
0.59: Whitelist: Try to resolve peer addresses using NRF.resolveAddress() - for 2v19 or 2v18 cutting edge builds
|
||||||
|
0.60: Minor code improvements
|
||||||
|
|
|
@ -4,7 +4,7 @@ of the time. */
|
||||||
{ // execute in our own scope so we don't have to free variables...
|
{ // execute in our own scope so we don't have to free variables...
|
||||||
E.showMessage(/*LANG*/"Updating boot0...");
|
E.showMessage(/*LANG*/"Updating boot0...");
|
||||||
let s = require('Storage').readJSON('setting.json',1)||{};
|
let s = require('Storage').readJSON('setting.json',1)||{};
|
||||||
const BANGLEJS2 = process.env.HWVERSION==2; // Is Bangle.js 2
|
//const BANGLEJS2 = process.env.HWVERSION==2; // Is Bangle.js 2
|
||||||
const FWVERSION = parseFloat(process.env.VERSION.replace("v","").replace(/\.(\d\d)$/,".0$1"));
|
const FWVERSION = parseFloat(process.env.VERSION.replace("v","").replace(/\.(\d\d)$/,".0$1"));
|
||||||
const DEBUG = s.bootDebug; // we can set this to enable debugging output in boot0
|
const DEBUG = s.bootDebug; // we can set this to enable debugging output in boot0
|
||||||
let boot = "", bootPost = "";
|
let boot = "", bootPost = "";
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "boot",
|
"id": "boot",
|
||||||
"name": "Bootloader",
|
"name": "Bootloader",
|
||||||
"version": "0.59",
|
"version": "0.60",
|
||||||
"description": "This is needed by Bangle.js to automatically load the clock, menu, widgets and settings",
|
"description": "This is needed by Bangle.js to automatically load the clock, menu, widgets and settings",
|
||||||
"icon": "bootloader.png",
|
"icon": "bootloader.png",
|
||||||
"type": "bootloader",
|
"type": "bootloader",
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
0.01: New app!
|
||||||
|
0.02: Minor code improvements
|
|
@ -2,7 +2,7 @@ require("Font7x11Numeric7Seg").add(Graphics);
|
||||||
require("Font5x9Numeric7Seg").add(Graphics);
|
require("Font5x9Numeric7Seg").add(Graphics);
|
||||||
require("Font8x12").add(Graphics);
|
require("Font8x12").add(Graphics);
|
||||||
require("FontDylex7x13").add(Graphics);
|
require("FontDylex7x13").add(Graphics);
|
||||||
const X = 98, Y = 46;
|
//const X = 98, Y = 46;
|
||||||
var wizible = 0;
|
var wizible = 0;
|
||||||
|
|
||||||
function getImg() {
|
function getImg() {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"shortName":"Bradbury",
|
"shortName":"Bradbury",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"screenshots": [{"url":"screenshot.png"}],
|
"screenshots": [{"url":"screenshot.png"}],
|
||||||
"version":"0.01",
|
"version": "0.02",
|
||||||
"description": "A watch face based on the classic Seiko model worn by one of my favorite authors. I didn't follow the original lcd layout exactly, opting for larger font for more easily readable time, and adding date, battery level, and step count; read from the device. Tapping the screen toggles visibility of widgets.",
|
"description": "A watch face based on the classic Seiko model worn by one of my favorite authors. I didn't follow the original lcd layout exactly, opting for larger font for more easily readable time, and adding date, battery level, and step count; read from the device. Tapping the screen toggles visibility of widgets.",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"supports":["BANGLEJS2"],
|
"supports":["BANGLEJS2"],
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue