mirror of https://github.com/espruino/BangleApps
Convert Yes/No On/Off in settings to checkboxes, add /*LANG*/ to some more text strings
parent
8bc9c5de25
commit
0ba8cef33c
|
@ -3,3 +3,4 @@
|
||||||
0.03: Exit as first menu option, dont show decimal places for seconds
|
0.03: Exit as first menu option, dont show decimal places for seconds
|
||||||
0.04: Localisation, change Exit->Back to allow back-arrow to appear on 2v13 firmware
|
0.04: Localisation, change Exit->Back to allow back-arrow to appear on 2v13 firmware
|
||||||
0.05: Add max G values during recording, record actual G values and magnitude to CSV
|
0.05: Add max G values during recording, record actual G values and magnitude to CSV
|
||||||
|
0.06: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -26,8 +26,7 @@ function showMenu() {
|
||||||
viewLogs();
|
viewLogs();
|
||||||
},
|
},
|
||||||
/*LANG*/"Log raw data" : {
|
/*LANG*/"Log raw data" : {
|
||||||
value : logRawData,
|
value : !!logRawData,
|
||||||
format : v => v?/*LANG*/"Yes":/*LANG*/"No",
|
|
||||||
onchange : v => { logRawData=v; }
|
onchange : v => { logRawData=v; }
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "accellog",
|
"id": "accellog",
|
||||||
"name": "Acceleration Logger",
|
"name": "Acceleration Logger",
|
||||||
"shortName": "Accel Log",
|
"shortName": "Accel Log",
|
||||||
"version": "0.05",
|
"version": "0.06",
|
||||||
"description": "Logs XYZ acceleration data to a CSV file that can be downloaded to your PC",
|
"description": "Logs XYZ acceleration data to a CSV file that can be downloaded to your PC",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "outdoor",
|
"tags": "outdoor",
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
var mainmenu = {
|
var mainmenu = {
|
||||||
"" : { "title" : "Android" },
|
"" : { "title" : "Android" },
|
||||||
"< Back" : back,
|
"< Back" : back,
|
||||||
/*LANG*/"Connected" : { value : NRF.getSecurityStatus().connected?"Yes":"No" },
|
/*LANG*/"Connected" : { value : NRF.getSecurityStatus().connected?/*LANG*/"Yes":/*LANG*/"No" },
|
||||||
/*LANG*/"Find Phone" : () => E.showMenu({
|
/*LANG*/"Find Phone" : () => E.showMenu({
|
||||||
"" : { "title" : /*LANG*/"Find Phone" },
|
"" : { "title" : /*LANG*/"Find Phone" },
|
||||||
"< Back" : ()=>E.showMenu(mainmenu),
|
"< Back" : ()=>E.showMenu(mainmenu),
|
||||||
|
|
|
@ -96,7 +96,7 @@ function draw(){
|
||||||
if (!isNaN(bt.battery)) layout.btBattery.label = bt.battery + "%";
|
if (!isNaN(bt.battery)) layout.btBattery.label = bt.battery + "%";
|
||||||
if (bt.rr) layout.btRR.label = bt.rr.join(",");
|
if (bt.rr) layout.btRR.label = bt.rr.join(",");
|
||||||
if (!isNaN(bt.location)) layout.btLocation.label = BODY_LOCS[bt.location];
|
if (!isNaN(bt.location)) layout.btLocation.label = BODY_LOCS[bt.location];
|
||||||
if (bt.contact !== undefined) layout.btContact.label = bt.contact ? "Yes":"No";
|
if (bt.contact !== undefined) layout.btContact.label = bt.contact ? /*LANG*/"Yes":/*LANG*/"No";
|
||||||
if (!isNaN(bt.energy)) layout.btEnergy.label = bt.energy.toFixed(0) + "kJ";
|
if (!isNaN(bt.energy)) layout.btEnergy.label = bt.energy.toFixed(0) + "kJ";
|
||||||
} else {
|
} else {
|
||||||
layout.bt.label = "--";
|
layout.bt.label = "--";
|
||||||
|
|
|
@ -4,3 +4,4 @@
|
||||||
0.04: Use default Bangle formatter for booleans
|
0.04: Use default Bangle formatter for booleans
|
||||||
0.05: Improved colors (connected vs disconnected)
|
0.05: Improved colors (connected vs disconnected)
|
||||||
0.06: Tell clock widgets to hide.
|
0.06: Tell clock widgets to hide.
|
||||||
|
0.07: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "clockcal",
|
"id": "clockcal",
|
||||||
"name": "Clock & Calendar",
|
"name": "Clock & Calendar",
|
||||||
"version": "0.06",
|
"version": "0.07",
|
||||||
"description": "Clock with Calendar",
|
"description": "Clock with Calendar",
|
||||||
"readme":"README.md",
|
"readme":"README.md",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
actions = ["[ignore]","[calend.]","[AI:music]","[AI:messg]"];
|
actions = ["[ignore]","[calend.]","[AI:music]","[AI:messg]"];
|
||||||
require("Storage").list(RegExp(".app.js")).forEach(element => actions.push(element.replace(".app.js","")));
|
require("Storage").list(RegExp(".app.js")).forEach(element => actions.push(element.replace(".app.js","")));
|
||||||
|
|
||||||
function writeSettings() {
|
function writeSettings() {
|
||||||
require('Storage').writeJSON(FILE, settings);
|
require('Storage').writeJSON(FILE, settings);
|
||||||
}
|
}
|
||||||
|
@ -106,18 +106,11 @@
|
||||||
writeSettings();
|
writeSettings();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'Load deafauls?': {
|
'Load defaults': () => {
|
||||||
value: 0,
|
settings = defaults;
|
||||||
min: 0, max: 1,
|
writeSettings();
|
||||||
format: v => ["No", "Yes"][v],
|
load();
|
||||||
onchange: v => {
|
}
|
||||||
if (v == 1) {
|
|
||||||
settings = defaults;
|
|
||||||
writeSettings();
|
|
||||||
load();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
// Show the menu
|
// Show the menu
|
||||||
E.showMenu(menu);
|
E.showMenu(menu);
|
||||||
|
|
|
@ -6,3 +6,4 @@
|
||||||
0.06: Now read wheel rev as well as cadence sensor
|
0.06: Now read wheel rev as well as cadence sensor
|
||||||
Improve connection code
|
Improve connection code
|
||||||
0.07: Make Bangle.js 2 compatible
|
0.07: Make Bangle.js 2 compatible
|
||||||
|
0.08: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "cscsensor",
|
"id": "cscsensor",
|
||||||
"name": "Cycling speed sensor",
|
"name": "Cycling speed sensor",
|
||||||
"shortName": "CSCSensor",
|
"shortName": "CSCSensor",
|
||||||
"version": "0.07",
|
"version": "0.08",
|
||||||
"description": "Read BLE enabled cycling speed and cadence sensor and display readings on watch",
|
"description": "Read BLE enabled cycling speed and cadence sensor and display readings on watch",
|
||||||
"icon": "icons8-cycling-48.png",
|
"icon": "icons8-cycling-48.png",
|
||||||
"tags": "outdoors,exercise,ble,bluetooth",
|
"tags": "outdoors,exercise,ble,bluetooth",
|
||||||
|
|
|
@ -23,17 +23,17 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const menu = {
|
const menu = {
|
||||||
'': { 'title': 'Cycle speed sensor' },
|
'': { 'title': /*LANG*/'Cycle speed sensor' },
|
||||||
'< Back': back,
|
'< Back': back,
|
||||||
'Wheel circ.(mm)': {
|
/*LANG*/'Wheel circ.(mm)': {
|
||||||
value: s.wheelcirc,
|
value: s.wheelcirc,
|
||||||
min: 800,
|
min: 800,
|
||||||
max: 2400,
|
max: 2400,
|
||||||
step: 5,
|
step: 5,
|
||||||
onchange: save('wheelcirc'),
|
onchange: save('wheelcirc'),
|
||||||
},
|
},
|
||||||
'Reset total distance': function() {
|
/*LANG*/'Reset total distance': function() {
|
||||||
E.showPrompt("Zero total distance?", {buttons: {"No":false, "Yes":true}}).then(function(v) {
|
E.showPrompt(/*LANG*/"Zero total distance?", {buttons: {/*LANG*/"No":false, /*LANG*/"Yes":true}}).then(function(v) {
|
||||||
if (v) {
|
if (v) {
|
||||||
s['totaldist'] = 0;
|
s['totaldist'] = 0;
|
||||||
storage.write(SETTINGS_FILE, s);
|
storage.write(SETTINGS_FILE, s);
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
0.02: Add lightning
|
0.02: Add lightning
|
||||||
|
0.03: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{ "id": "f9lander",
|
{ "id": "f9lander",
|
||||||
"name": "Falcon9 Lander",
|
"name": "Falcon9 Lander",
|
||||||
"shortName":"F9lander",
|
"shortName":"F9lander",
|
||||||
"version":"0.02",
|
"version":"0.03",
|
||||||
"description": "Land a rocket booster",
|
"description": "Land a rocket booster",
|
||||||
"icon": "f9lander.png",
|
"icon": "f9lander.png",
|
||||||
"screenshots" : [ { "url":"f9lander_screenshot1.png" }, { "url":"f9lander_screenshot2.png" }, { "url":"f9lander_screenshot3.png" }],
|
"screenshots" : [ { "url":"f9lander_screenshot1.png" }, { "url":"f9lander_screenshot2.png" }, { "url":"f9lander_screenshot3.png" }],
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
/**
|
/**
|
||||||
* @param {function} back Use back() to return to settings menu
|
* @param {function} back Use back() to return to settings menu
|
||||||
*/
|
*/
|
||||||
const boolFormat = v => v ? /*LANG*/"On" : /*LANG*/"Off";
|
|
||||||
(function(back) {
|
(function(back) {
|
||||||
const SETTINGS_FILE = 'f9settings.json'
|
const SETTINGS_FILE = 'f9settings.json'
|
||||||
// initialize with default settings...
|
// initialize with default settings...
|
||||||
|
@ -27,8 +26,7 @@ const boolFormat = v => v ? /*LANG*/"On" : /*LANG*/"Off";
|
||||||
'': { 'title': 'OpenWind' },
|
'': { 'title': 'OpenWind' },
|
||||||
'< Back': back,
|
'< Back': back,
|
||||||
'Lightning': {
|
'Lightning': {
|
||||||
value: settings.lightning,
|
value: !!settings.lightning,
|
||||||
format: boolFormat,
|
|
||||||
onchange: save('lightning'),
|
onchange: save('lightning'),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ var m;
|
||||||
var files;
|
var files;
|
||||||
|
|
||||||
function delete_file(fn) {
|
function delete_file(fn) {
|
||||||
E.showPrompt("Delete\n"+fn+"?", {buttons: {"No":false, "Yes":true}}).then(function(v) {
|
E.showPrompt(/*LANG*/"Delete\n"+fn+"?", {buttons: {/*LANG*/"No":false, /*LANG*/"Yes":true}}).then(function(v) {
|
||||||
if (v) {
|
if (v) {
|
||||||
if (fn.charCodeAt(fn.length-1)==1) {
|
if (fn.charCodeAt(fn.length-1)==1) {
|
||||||
var fh = STOR.open(fn.substr(0, fn.length-1), "r");
|
var fh = STOR.open(fn.substr(0, fn.length-1), "r");
|
||||||
|
|
|
@ -24,22 +24,22 @@
|
||||||
var mainmenu = {
|
var mainmenu = {
|
||||||
"" : { "title" : "Gadgetbridge" },
|
"" : { "title" : "Gadgetbridge" },
|
||||||
"< Back" : back,
|
"< Back" : back,
|
||||||
"Connected" : { value : NRF.getSecurityStatus().connected?"Yes":"No" },
|
/*LANG*/"Connected" : { value : NRF.getSecurityStatus().connected?/*LANG*/"Yes":/*LANG*/"No" },
|
||||||
"Show Icon" : {
|
/*LANG*/"Show Icon" : {
|
||||||
value: settings().showIcon,
|
value: settings().showIcon,
|
||||||
onchange: setIcon
|
onchange: setIcon
|
||||||
},
|
},
|
||||||
"Find Phone" : function() { E.showMenu(findPhone); },
|
/*LANG*/"Find Phone" : function() { E.showMenu(findPhone); },
|
||||||
"Record HRM" : {
|
/*LANG*/"Record HRM" : {
|
||||||
value: !!settings().hrm,
|
value: !!settings().hrm,
|
||||||
onchange: v => updateSetting('hrm', v)
|
onchange: v => updateSetting('hrm', v)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var findPhone = {
|
var findPhone = {
|
||||||
"" : { "title" : "-- Find Phone --" },
|
"" : { "title" : "-- Find Phone --" },
|
||||||
"On" : _=>gb({t:"findPhone",n:true}),
|
/*LANG*/"On" : _=>gb({t:"findPhone",n:true}),
|
||||||
"Off" : _=>gb({t:"findPhone",n:false}),
|
/*LANG*/"Off" : _=>gb({t:"findPhone",n:false}),
|
||||||
"< Back" : function() { E.showMenu(mainmenu); },
|
"< Back" : function() { E.showMenu(mainmenu); },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -73,3 +73,5 @@
|
||||||
* Display current and next segment in red so that you know where to go.
|
* Display current and next segment in red so that you know where to go.
|
||||||
* Avoid angles flickering at low speed at the cost of less refresh.
|
* Avoid angles flickering at low speed at the cost of less refresh.
|
||||||
* Splash screen while waiting for gps signal.
|
* Splash screen while waiting for gps signal.
|
||||||
|
|
||||||
|
0.17: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "gipy",
|
"id": "gipy",
|
||||||
"name": "Gipy",
|
"name": "Gipy",
|
||||||
"shortName": "Gipy",
|
"shortName": "Gipy",
|
||||||
"version": "0.16",
|
"version": "0.17",
|
||||||
"description": "Follow gpx files using the gps. Don't get lost in your bike trips and hikes.",
|
"description": "Follow gpx files using the gps. Don't get lost in your bike trips and hikes.",
|
||||||
"allow_emulator":false,
|
"allow_emulator":false,
|
||||||
"icon": "gipy.png",
|
"icon": "gipy.png",
|
||||||
|
|
|
@ -19,8 +19,7 @@
|
||||||
"< Back": () => back(),
|
"< Back": () => back(),
|
||||||
"keep gps alive": {
|
"keep gps alive": {
|
||||||
value: !!settings.keep_gps_alive, // !! converts undefined to false
|
value: !!settings.keep_gps_alive, // !! converts undefined to false
|
||||||
format: (v) => (v ? "Yes" : "No"),
|
onchange: v => {
|
||||||
onchange: (v) => {
|
|
||||||
settings.keep_gps_alive = v;
|
settings.keep_gps_alive = v;
|
||||||
writeSettings();
|
writeSettings();
|
||||||
},
|
},
|
||||||
|
|
|
@ -46,8 +46,8 @@ var mainMenu = {
|
||||||
"Reset Homework": function() {
|
"Reset Homework": function() {
|
||||||
E.showPrompt("Are you sure you want to delete homework.txt?", {
|
E.showPrompt("Are you sure you want to delete homework.txt?", {
|
||||||
buttons: {
|
buttons: {
|
||||||
"No": false,
|
/*LANG*/"No": false,
|
||||||
"Yes": true
|
/*LANG*/"Yes": true
|
||||||
}
|
}
|
||||||
}).then(function(v) {
|
}).then(function(v) {
|
||||||
if (v) {
|
if (v) {
|
||||||
|
|
|
@ -21,11 +21,11 @@ var screens = [
|
||||||
name: "Hardware",
|
name: "Hardware",
|
||||||
items: [
|
items: [
|
||||||
{name: "Battery", fun: () => E.getBattery() + "%"},
|
{name: "Battery", fun: () => E.getBattery() + "%"},
|
||||||
{name: "Charge?", fun: () => Bangle.isCharging() ? "Yes" : "No"},
|
{name: "Charge?", fun: () => Bangle.isCharging() ? /*LANG*/"Yes" : /*LANG*/"No"},
|
||||||
{name: "TempInt.", fun: () => locale.temp(parseInt(E.getTemperature()))},
|
{name: "TempInt.", fun: () => locale.temp(parseInt(E.getTemperature()))},
|
||||||
{name: "Bluetooth", fun: () => NRF.getSecurityStatus().connected ? "Conn" : "NoConn"},
|
{name: "Bluetooth", fun: () => NRF.getSecurityStatus().connected ? /*LANG*/"Conn" : /*LANG*/"NoConn"},
|
||||||
{name: "GPS", fun: () => Bangle.isGPSOn() ? "On" : "Off"},
|
{name: "GPS", fun: () => Bangle.isGPSOn() ? /*LANG*/"On" : /*LANG*/"Off"},
|
||||||
{name: "Compass", fun: () => Bangle.isCompassOn() ? "On" : "Off"},
|
{name: "Compass", fun: () => Bangle.isCompassOn() ? /*LANG*/"On" : /*LANG*/"Off"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -160,4 +160,4 @@ Bangle.on('lock', function(isLocked) {
|
||||||
});
|
});
|
||||||
|
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
Bangle.drawWidgets();
|
Bangle.drawWidgets();
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
0.02: Introduced settings to customize the layout and functionality of the keyboard.
|
0.02: Introduced settings to customize the layout and functionality of the keyboard.
|
||||||
|
0.03: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ "id": "kbtouch",
|
{ "id": "kbtouch",
|
||||||
"name": "Touch keyboard",
|
"name": "Touch keyboard",
|
||||||
"version":"0.02",
|
"version":"0.03",
|
||||||
"description": "A library for text input via onscreen keyboard",
|
"description": "A library for text input via onscreen keyboard",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"type":"textinput",
|
"type":"textinput",
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
if (settings.speedScaling===undefined) settings.speedScaling=24;
|
if (settings.speedScaling===undefined) settings.speedScaling=24;
|
||||||
return settings;
|
return settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateSetting(setting, value) {
|
function updateSetting(setting, value) {
|
||||||
let settings = require('Storage').readJSON("kbtouch.settings.json", true) || {};
|
let settings = require('Storage').readJSON("kbtouch.settings.json", true) || {};
|
||||||
settings[setting] = value;
|
settings[setting] = value;
|
||||||
require('Storage').writeJSON("kbtouch.settings.json", settings);
|
require('Storage').writeJSON("kbtouch.settings.json", settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
var mainmenu = {
|
var mainmenu = {
|
||||||
"" : { "title" : /*LANG*/"Touch Keyboard" },
|
"" : { "title" : /*LANG*/"Touch Keyboard" },
|
||||||
"< Back" : back,
|
"< Back" : back,
|
||||||
|
@ -25,22 +25,16 @@
|
||||||
onchange: v => updateSetting("textSize", v)
|
onchange: v => updateSetting("textSize", v)
|
||||||
},
|
},
|
||||||
/*LANG*/'Offset keyboard': {
|
/*LANG*/'Offset keyboard': {
|
||||||
value: settings().offsetKeyboard,
|
value: !!settings().offsetKeyboard,
|
||||||
min: 0, max: 1,
|
onchange: v => updateSetting("offsetKeyboard", v?1:0)
|
||||||
format: v => [/*LANG*/"No",/*LANG*/"Yes"][v],
|
|
||||||
onchange: v => updateSetting("offsetKeyboard", v)
|
|
||||||
},
|
},
|
||||||
/*LANG*/'Loop around': {
|
/*LANG*/'Loop around': {
|
||||||
value: settings().loopAround,
|
value: !!settings().loopAround,
|
||||||
min: 0, max: 1,
|
onchange: v => updateSetting("loopAround", v?1:0)
|
||||||
format: v => [/*LANG*/"No",/*LANG*/"Yes"][v],
|
|
||||||
onchange: v => updateSetting("loopAround", v)
|
|
||||||
},
|
},
|
||||||
/*LANG*/'One-to-one input and release to select': {
|
/*LANG*/'One-to-one input and release to select': {
|
||||||
value: settings().oneToOne,
|
value: !!settings().oneToOne,
|
||||||
min: 0, max: 1,
|
onchange: v => updateSetting("oneToOne", v?1:0)
|
||||||
format: v => [/*LANG*/"No",/*LANG*/"Yes"][v],
|
|
||||||
onchange: v => updateSetting("oneToOne", v)
|
|
||||||
},
|
},
|
||||||
/*LANG*/'Speed scaling': {
|
/*LANG*/'Speed scaling': {
|
||||||
value: settings().speedScaling,
|
value: settings().speedScaling,
|
||||||
|
@ -49,10 +43,8 @@
|
||||||
onchange: v => updateSetting("speedScaling", v)
|
onchange: v => updateSetting("speedScaling", v)
|
||||||
}
|
}
|
||||||
///*LANG*/'Release to select': {
|
///*LANG*/'Release to select': {
|
||||||
// value: 1|settings().fontSize,
|
// value: !!(1|settings().fontSize),
|
||||||
// min: 0, max: 1,
|
// onchange: v => updateSetting("releaseToSelect", v?1:0)
|
||||||
// format: v => [/*LANG*/"No",/*LANG*/"Yes"][v],
|
|
||||||
// onchange: v => updateSetting("releaseToSelect", v)
|
|
||||||
//}
|
//}
|
||||||
};
|
};
|
||||||
E.showMenu(mainmenu);
|
E.showMenu(mainmenu);
|
||||||
|
|
|
@ -73,7 +73,7 @@ let lastTemp = 0;
|
||||||
|
|
||||||
const phone = {
|
const phone = {
|
||||||
get status() {
|
get status() {
|
||||||
return NRF.getSecurityStatus().connected ? "Yes" : "No";
|
return NRF.getSecurityStatus().connected ? /*LANG*/"Yes" : /*LANG*/"No";
|
||||||
},
|
},
|
||||||
message: null,
|
message: null,
|
||||||
messageTimeout: null,
|
messageTimeout: null,
|
||||||
|
|
|
@ -3,4 +3,5 @@
|
||||||
0.03: Optional show lock status via color
|
0.03: Optional show lock status via color
|
||||||
0.04: Ensure that widgets are always hidden in fullscreen mode
|
0.04: Ensure that widgets are always hidden in fullscreen mode
|
||||||
0.05: Better lock/unlock animation
|
0.05: Better lock/unlock animation
|
||||||
0.06: Use widget_utils.
|
0.06: Use widget_utils
|
||||||
|
0.07: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "neonx",
|
"id": "neonx",
|
||||||
"name": "Neon X & IO X Clock",
|
"name": "Neon X & IO X Clock",
|
||||||
"shortName": "Neon X Clock",
|
"shortName": "Neon X Clock",
|
||||||
"version": "0.06",
|
"version": "0.07",
|
||||||
"description": "Pebble Neon X & Neon IO X for Bangle.js",
|
"description": "Pebble Neon X & Neon IO X for Bangle.js",
|
||||||
"icon": "neonx.png",
|
"icon": "neonx.png",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
|
|
|
@ -25,11 +25,9 @@
|
||||||
"" : { "title":"Neon X & IO"},
|
"" : { "title":"Neon X & IO"},
|
||||||
"< Back": back,
|
"< Back": back,
|
||||||
"Neon IO X": {
|
"Neon IO X": {
|
||||||
value: 0 | neonXSettings.io,
|
value: !!neonXSettings.io,
|
||||||
min: 0, max: 1,
|
|
||||||
format: v => v ? "On" : "Off",
|
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
neonXSettings.io = v;
|
neonXSettings.io = v?1:0;
|
||||||
updateSettings();
|
updateSettings();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -43,27 +41,23 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Date on touch": {
|
"Date on touch": {
|
||||||
value: 0 | neonXSettings.showDate,
|
value: !!neonXSettings.showDate,
|
||||||
min: 0, max: 1,
|
|
||||||
format: v => v ? "On" : "Off",
|
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
neonXSettings.showDate = v;
|
neonXSettings.showDate = v?1:0;
|
||||||
updateSettings();
|
updateSettings();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'Fullscreen': {
|
'Fullscreen': {
|
||||||
value: false | neonXSettings.fullscreen,
|
value: !!neonXSettings.fullscreen,
|
||||||
format: () => (neonXSettings.fullscreen ? 'Yes' : 'No'),
|
onchange: v => {
|
||||||
onchange: () => {
|
neonXSettings.fullscreen = v;
|
||||||
neonXSettings.fullscreen = !neonXSettings.fullscreen;
|
|
||||||
updateSettings();
|
updateSettings();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'Show lock': {
|
'Show lock': {
|
||||||
value: false | neonXSettings.showLock,
|
value: !!neonXSettings.showLock,
|
||||||
format: () => (neonXSettings.showLock ? 'Yes' : 'No'),
|
onchange: v => {
|
||||||
onchange: () => {
|
neonXSettings.showLock = v;
|
||||||
neonXSettings.showLock = !neonXSettings.showLock;
|
|
||||||
updateSettings();
|
updateSettings();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -7,4 +7,5 @@
|
||||||
0.07: Add date on touch and some improvements (see settings and readme)
|
0.07: Add date on touch and some improvements (see settings and readme)
|
||||||
0.08: Add new draw styles, tidy up draw functionality
|
0.08: Add new draw styles, tidy up draw functionality
|
||||||
0.09: Tweak for faster rendering
|
0.09: Tweak for faster rendering
|
||||||
0.10: Enhance for use with Bangle2, insert new draw mode 'thickfill'
|
0.10: Enhance for use with Bangle2, insert new draw mode 'thickfill'
|
||||||
|
0.11: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "numerals",
|
"id": "numerals",
|
||||||
"name": "Numerals Clock",
|
"name": "Numerals Clock",
|
||||||
"shortName": "Numerals Clock",
|
"shortName": "Numerals Clock",
|
||||||
"version": "0.10",
|
"version": "0.11",
|
||||||
"description": "A simple big numerals clock",
|
"description": "A simple big numerals clock",
|
||||||
"icon": "numerals.png",
|
"icon": "numerals.png",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
|
|
|
@ -30,10 +30,8 @@
|
||||||
onchange: v=> { numeralsSettings.drawMode=dm[v]; updateSettings();}
|
onchange: v=> { numeralsSettings.drawMode=dm[v]; updateSettings();}
|
||||||
},
|
},
|
||||||
"Date on touch": {
|
"Date on touch": {
|
||||||
value: 0|numeralsSettings.showDate,
|
value: !!numeralsSettings.showDate,
|
||||||
min:0,max:1,
|
onchange: v=> { numeralsSettings.showDate=v?1:0; updateSettings();}
|
||||||
format: v=>v?"On":"Off",
|
|
||||||
onchange: v=> { numeralsSettings.showDate=v; updateSettings();}
|
|
||||||
},
|
},
|
||||||
"< back": back
|
"< back": back
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,3 +6,4 @@
|
||||||
0.05: Add back button to settings menu.
|
0.05: Add back button to settings menu.
|
||||||
0.06: Allow logging of some things using power
|
0.06: Allow logging of some things using power
|
||||||
Add widget for live monitoring of power use
|
Add widget for live monitoring of power use
|
||||||
|
0.07: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "powermanager",
|
"id": "powermanager",
|
||||||
"name": "Power Manager",
|
"name": "Power Manager",
|
||||||
"shortName": "Power Manager",
|
"shortName": "Power Manager",
|
||||||
"version": "0.06",
|
"version": "0.07",
|
||||||
"description": "Allow configuration of warnings and thresholds for battery charging and display.",
|
"description": "Allow configuration of warnings and thresholds for battery charging and display.",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"type": "bootloader",
|
"type": "bootloader",
|
||||||
|
|
|
@ -106,7 +106,6 @@
|
||||||
},
|
},
|
||||||
'Enabled': {
|
'Enabled': {
|
||||||
value: !!settings.warnEnabled,
|
value: !!settings.warnEnabled,
|
||||||
format: v => settings.warnEnabled ? "On" : "Off",
|
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
writeSettings("warnEnabled", v);
|
writeSettings("warnEnabled", v);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,3 +25,4 @@
|
||||||
0.19: Fix track plotting code
|
0.19: Fix track plotting code
|
||||||
0.20: Automatic translation of some more strings.
|
0.20: Automatic translation of some more strings.
|
||||||
0.21: Speed report now uses speed units from locale
|
0.21: Speed report now uses speed units from locale
|
||||||
|
0.22: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -56,7 +56,6 @@ function showMainMenu() {
|
||||||
'< Back': ()=>{load();},
|
'< Back': ()=>{load();},
|
||||||
/*LANG*/'RECORD': {
|
/*LANG*/'RECORD': {
|
||||||
value: !!settings.recording,
|
value: !!settings.recording,
|
||||||
format: v=>v?/*LANG*/"On":/*LANG*/"Off",
|
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
E.showMenu();
|
E.showMenu();
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "recorder",
|
"id": "recorder",
|
||||||
"name": "Recorder",
|
"name": "Recorder",
|
||||||
"shortName": "Recorder",
|
"shortName": "Recorder",
|
||||||
"version": "0.21",
|
"version": "0.22",
|
||||||
"description": "Record GPS position, heart rate and more in the background, then download to your PC.",
|
"description": "Record GPS position, heart rate and more in the background, then download to your PC.",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "tool,outdoors,gps,widget",
|
"tags": "tool,outdoors,gps,widget",
|
||||||
|
|
|
@ -63,3 +63,4 @@
|
||||||
0.56: make System menu items shorter and more consistant, Eg 'Clock', intead
|
0.56: make System menu items shorter and more consistant, Eg 'Clock', intead
|
||||||
of 'Select Clock'
|
of 'Select Clock'
|
||||||
0.57: Settings.log = 0,1,2,3 for off,display,log,both
|
0.57: Settings.log = 0,1,2,3 for off,display,log,both
|
||||||
|
0.58: On/Off settings items now use checkboxes
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "setting",
|
"id": "setting",
|
||||||
"name": "Settings",
|
"name": "Settings",
|
||||||
"version": "0.57",
|
"version": "0.58",
|
||||||
"description": "A menu for setting up Bangle.js",
|
"description": "A menu for setting up Bangle.js",
|
||||||
"icon": "settings.png",
|
"icon": "settings.png",
|
||||||
"tags": "tool,system",
|
"tags": "tool,system",
|
||||||
|
|
|
@ -64,8 +64,6 @@ if (("object" != typeof settings) ||
|
||||||
("object" != typeof settings.options))
|
("object" != typeof settings.options))
|
||||||
resetSettings();
|
resetSettings();
|
||||||
|
|
||||||
const boolFormat = v => v ? /*LANG*/"On" : /*LANG*/"Off";
|
|
||||||
|
|
||||||
function showMainMenu() {
|
function showMainMenu() {
|
||||||
|
|
||||||
const mainmenu = {
|
const mainmenu = {
|
||||||
|
@ -102,7 +100,6 @@ function showAlertsMenu() {
|
||||||
if (BANGLEJS2) {
|
if (BANGLEJS2) {
|
||||||
beepMenuItem = {
|
beepMenuItem = {
|
||||||
value: settings.beep!=false,
|
value: settings.beep!=false,
|
||||||
format: boolFormat,
|
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
settings.beep = v;
|
settings.beep = v;
|
||||||
updateSettings();
|
updateSettings();
|
||||||
|
@ -134,7 +131,6 @@ function showAlertsMenu() {
|
||||||
/*LANG*/'Beep': beepMenuItem,
|
/*LANG*/'Beep': beepMenuItem,
|
||||||
/*LANG*/'Vibration': {
|
/*LANG*/'Vibration': {
|
||||||
value: settings.vibrate,
|
value: settings.vibrate,
|
||||||
format: boolFormat,
|
|
||||||
onchange: () => {
|
onchange: () => {
|
||||||
settings.vibrate = !settings.vibrate;
|
settings.vibrate = !settings.vibrate;
|
||||||
updateSettings();
|
updateSettings();
|
||||||
|
@ -169,7 +165,6 @@ function showBLEMenu() {
|
||||||
/*LANG*/'Make Connectable': ()=>makeConnectable(),
|
/*LANG*/'Make Connectable': ()=>makeConnectable(),
|
||||||
/*LANG*/'BLE': {
|
/*LANG*/'BLE': {
|
||||||
value: settings.ble,
|
value: settings.ble,
|
||||||
format: boolFormat,
|
|
||||||
onchange: () => {
|
onchange: () => {
|
||||||
settings.ble = !settings.ble;
|
settings.ble = !settings.ble;
|
||||||
updateSettings();
|
updateSettings();
|
||||||
|
@ -177,7 +172,6 @@ function showBLEMenu() {
|
||||||
},
|
},
|
||||||
/*LANG*/'Programmable': {
|
/*LANG*/'Programmable': {
|
||||||
value: settings.blerepl,
|
value: settings.blerepl,
|
||||||
format: boolFormat,
|
|
||||||
onchange: () => {
|
onchange: () => {
|
||||||
settings.blerepl = !settings.blerepl;
|
settings.blerepl = !settings.blerepl;
|
||||||
updateSettings();
|
updateSettings();
|
||||||
|
@ -428,7 +422,6 @@ function showLCDMenu() {
|
||||||
},
|
},
|
||||||
/*LANG*/'Wake on BTN1': {
|
/*LANG*/'Wake on BTN1': {
|
||||||
value: settings.options.wakeOnBTN1,
|
value: settings.options.wakeOnBTN1,
|
||||||
format: boolFormat,
|
|
||||||
onchange: () => {
|
onchange: () => {
|
||||||
settings.options.wakeOnBTN1 = !settings.options.wakeOnBTN1;
|
settings.options.wakeOnBTN1 = !settings.options.wakeOnBTN1;
|
||||||
updateOptions();
|
updateOptions();
|
||||||
|
@ -439,7 +432,6 @@ function showLCDMenu() {
|
||||||
Object.assign(lcdMenu, {
|
Object.assign(lcdMenu, {
|
||||||
/*LANG*/'Wake on BTN2': {
|
/*LANG*/'Wake on BTN2': {
|
||||||
value: settings.options.wakeOnBTN2,
|
value: settings.options.wakeOnBTN2,
|
||||||
format: boolFormat,
|
|
||||||
onchange: () => {
|
onchange: () => {
|
||||||
settings.options.wakeOnBTN2 = !settings.options.wakeOnBTN2;
|
settings.options.wakeOnBTN2 = !settings.options.wakeOnBTN2;
|
||||||
updateOptions();
|
updateOptions();
|
||||||
|
@ -447,7 +439,6 @@ function showLCDMenu() {
|
||||||
},
|
},
|
||||||
/*LANG*/'Wake on BTN3': {
|
/*LANG*/'Wake on BTN3': {
|
||||||
value: settings.options.wakeOnBTN3,
|
value: settings.options.wakeOnBTN3,
|
||||||
format: boolFormat,
|
|
||||||
onchange: () => {
|
onchange: () => {
|
||||||
settings.options.wakeOnBTN3 = !settings.options.wakeOnBTN3;
|
settings.options.wakeOnBTN3 = !settings.options.wakeOnBTN3;
|
||||||
updateOptions();
|
updateOptions();
|
||||||
|
@ -456,7 +447,6 @@ function showLCDMenu() {
|
||||||
Object.assign(lcdMenu, {
|
Object.assign(lcdMenu, {
|
||||||
/*LANG*/'Wake on FaceUp': {
|
/*LANG*/'Wake on FaceUp': {
|
||||||
value: settings.options.wakeOnFaceUp,
|
value: settings.options.wakeOnFaceUp,
|
||||||
format: boolFormat,
|
|
||||||
onchange: () => {
|
onchange: () => {
|
||||||
settings.options.wakeOnFaceUp = !settings.options.wakeOnFaceUp;
|
settings.options.wakeOnFaceUp = !settings.options.wakeOnFaceUp;
|
||||||
updateOptions();
|
updateOptions();
|
||||||
|
@ -464,7 +454,6 @@ function showLCDMenu() {
|
||||||
},
|
},
|
||||||
/*LANG*/'Wake on Touch': {
|
/*LANG*/'Wake on Touch': {
|
||||||
value: settings.options.wakeOnTouch,
|
value: settings.options.wakeOnTouch,
|
||||||
format: boolFormat,
|
|
||||||
onchange: () => {
|
onchange: () => {
|
||||||
settings.options.wakeOnTouch = !settings.options.wakeOnTouch;
|
settings.options.wakeOnTouch = !settings.options.wakeOnTouch;
|
||||||
updateOptions();
|
updateOptions();
|
||||||
|
@ -472,7 +461,6 @@ function showLCDMenu() {
|
||||||
},
|
},
|
||||||
/*LANG*/'Wake on Twist': {
|
/*LANG*/'Wake on Twist': {
|
||||||
value: settings.options.wakeOnTwist,
|
value: settings.options.wakeOnTwist,
|
||||||
format: boolFormat,
|
|
||||||
onchange: () => {
|
onchange: () => {
|
||||||
settings.options.wakeOnTwist = !settings.options.wakeOnTwist;
|
settings.options.wakeOnTwist = !settings.options.wakeOnTwist;
|
||||||
updateOptions();
|
updateOptions();
|
||||||
|
|
|
@ -17,3 +17,4 @@
|
||||||
0.14: Reduce update interval of current time when seconds are not shown
|
0.14: Reduce update interval of current time when seconds are not shown
|
||||||
Limit logging on Bangle.js 1 to one day due to low memory
|
Limit logging on Bangle.js 1 to one day due to low memory
|
||||||
Add plot logged data to settings
|
Add plot logged data to settings
|
||||||
|
0.15: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "sleepphasealarm",
|
"id": "sleepphasealarm",
|
||||||
"name": "SleepPhaseAlarm",
|
"name": "SleepPhaseAlarm",
|
||||||
"shortName": "SleepPhaseAlarm",
|
"shortName": "SleepPhaseAlarm",
|
||||||
"version": "0.14",
|
"version": "0.15",
|
||||||
"description": "Uses the accelerometer to estimate sleep and wake states with the principle of Estimation of Stationary Sleep-segments (ESS, see https://ubicomp.eti.uni-siegen.de/home/datasets/ichi14/index.html.en). This app will read the next alarm from the alarm application and will wake you up to 30 minutes early at the best guessed time when you are almost already awake.",
|
"description": "Uses the accelerometer to estimate sleep and wake states with the principle of Estimation of Stationary Sleep-segments (ESS, see https://ubicomp.eti.uni-siegen.de/home/datasets/ichi14/index.html.en). This app will read the next alarm from the alarm application and will wake you up to 30 minutes early at the best guessed time when you are almost already awake.",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "tool,alarm",
|
"tags": "tool,alarm",
|
||||||
|
|
|
@ -91,7 +91,6 @@
|
||||||
"" : { "title" : "SleepPhaseAlarm" },
|
"" : { "title" : "SleepPhaseAlarm" },
|
||||||
'Keep alarm enabled': {
|
'Keep alarm enabled': {
|
||||||
value: !!config.settings.disableAlarm,
|
value: !!config.settings.disableAlarm,
|
||||||
format: v => v?"No":"Yes",
|
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
config.settings.disableAlarm = v;
|
config.settings.disableAlarm = v;
|
||||||
writeSettings();
|
writeSettings();
|
||||||
|
|
|
@ -9,3 +9,4 @@
|
||||||
0.09: Added button control toggle and other live controls to new settings screen.
|
0.09: Added button control toggle and other live controls to new settings screen.
|
||||||
0.10: Tell clock widgets to hide.
|
0.10: Tell clock widgets to hide.
|
||||||
0.11: Added new styling and watch faces
|
0.11: Added new styling and watch faces
|
||||||
|
0.12: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "slidingtext",
|
"id": "slidingtext",
|
||||||
"name": "Sliding Clock",
|
"name": "Sliding Clock",
|
||||||
"version": "0.11",
|
"version": "0.12",
|
||||||
"description": "Inspired by the Pebble sliding clock, old times are scrolled off the screen and new times on. You are also able to change language on the fly so you can see the time written in other languages using button 1. Currently English, French, Japanese, Spanish and German are supported",
|
"description": "Inspired by the Pebble sliding clock, old times are scrolled off the screen and new times on. You are also able to change language on the fly so you can see the time written in other languages using button 1. Currently English, French, Japanese, Spanish and German are supported",
|
||||||
"icon": "slidingtext.png",
|
"icon": "slidingtext.png",
|
||||||
"screenshots": [{"url":"slidingtext-screenshot.english.png"},{"url":"slidingtext-screenshot.english2.png"},{"url":"slidingtext-screenshot.hybrid.png"}],
|
"screenshots": [{"url":"slidingtext-screenshot.english.png"},{"url":"slidingtext-screenshot.english2.png"},{"url":"slidingtext-screenshot.hybrid.png"}],
|
||||||
|
|
|
@ -173,12 +173,11 @@
|
||||||
"Colour": stringInSettings("color_scheme", ["black","white", "red","grey","purple","blue"]),
|
"Colour": stringInSettings("color_scheme", ["black","white", "red","grey","purple","blue"]),
|
||||||
"Style": stringInSettings("date_format", locales, (l)=>locale_mappings[l] ),
|
"Style": stringInSettings("date_format", locales, (l)=>locale_mappings[l] ),
|
||||||
"Live Control": {
|
"Live Control": {
|
||||||
value: (settings.enable_live_controls !== undefined ? settings.enable_live_controls : true),
|
value: (settings.enable_live_controls !== undefined ? !!settings.enable_live_controls : true),
|
||||||
format: v => v ? "On" : "Off",
|
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
settings.enable_live_controls = v;
|
settings.enable_live_controls = v;
|
||||||
writeSettings();
|
writeSettings();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
(function(back) {
|
(function(back) {
|
||||||
|
|
||||||
let settings = require('Storage').readJSON('slomoclock.json',1)||{};
|
let settings = require('Storage').readJSON('slomoclock.json',1)||{};
|
||||||
|
|
||||||
function writeSettings() {
|
function writeSettings() {
|
||||||
require('Storage').write('slomoclock.json',settings);
|
require('Storage').write('slomoclock.json',settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setColour(c) {
|
function setColour(c) {
|
||||||
settings.colour = c;
|
settings.colour = c;
|
||||||
writeSettings();
|
writeSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
const appMenu = {
|
const appMenu = {
|
||||||
'': {'title': 'SloMo Clock'},
|
'': {'title': 'SloMo Clock'},
|
||||||
'< Back': back,
|
'< Back': back,
|
||||||
'Colours' : function() { E.showMenu(colMenu); }
|
'Colours' : function() { E.showMenu(colMenu); }
|
||||||
//,'Widget Space Top' : {value : settings.widTop, format : v => v?"On":"Off",onchange : () => { settings.widTop = !settings.widTop; writeSettings(); }
|
//,'Widget Space Top' : {value : settings.widTop, onchange : () => { settings.widTop = !settings.widTop; writeSettings(); }
|
||||||
//,'Widget Space Bottom' : {value : settings.widBot, format : v => v?"On":"Off",onchange : () => { settings.widBot = !settings.widBot; writeSettings(); }
|
//,'Widget Space Bottom' : {value : settings.widBot, onchange : () => { settings.widBot = !settings.widBot; writeSettings(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
const colMenu = {
|
const colMenu = {
|
||||||
'': {'title': 'Colours'},
|
'': {'title': 'Colours'},
|
||||||
'< Back': function() { E.showMenu(appMenu); },
|
'< Back': function() { E.showMenu(appMenu); },
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
'Violet' : function() { setColour(7); },
|
'Violet' : function() { setColour(7); },
|
||||||
'White' : function() { setColour(8); }
|
'White' : function() { setColour(8); }
|
||||||
};
|
};
|
||||||
|
|
||||||
E.showMenu(appMenu);
|
E.showMenu(appMenu);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -6,3 +6,4 @@
|
||||||
0.06: Added adjustment for Bangle.js magnetometer heading fix
|
0.06: Added adjustment for Bangle.js magnetometer heading fix
|
||||||
0.07: Add settings file with the option to disable the slow direction updates
|
0.07: Add settings file with the option to disable the slow direction updates
|
||||||
0.08: Use tilt compensation from new magnav library
|
0.08: Use tilt compensation from new magnav library
|
||||||
|
0.09: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "waypointer",
|
"id": "waypointer",
|
||||||
"name": "Way Pointer",
|
"name": "Way Pointer",
|
||||||
"version": "0.08",
|
"version": "0.09",
|
||||||
"description": "Navigate to a waypoint using the GPS for bearing and compass to point way, uses the same waypoint interface as GPS Navigation",
|
"description": "Navigate to a waypoint using the GPS for bearing and compass to point way, uses the same waypoint interface as GPS Navigation",
|
||||||
"icon": "waypointer.png",
|
"icon": "waypointer.png",
|
||||||
"tags": "tool,outdoors,gps",
|
"tags": "tool,outdoors,gps",
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
"< Back" : () => back(),
|
"< Back" : () => back(),
|
||||||
'Smooth arrow rot': {
|
'Smooth arrow rot': {
|
||||||
value: !!settings.smoothDirection,
|
value: !!settings.smoothDirection,
|
||||||
format: v => v?"Yes":"No",
|
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
settings.smoothDirection = v;
|
settings.smoothDirection = v;
|
||||||
writeSettings();
|
writeSettings();
|
||||||
|
|
|
@ -5,3 +5,4 @@
|
||||||
0.03: Fix Bell not appearing on alarms > 24h and redrawing interval
|
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.
|
Update to match the default alarm widget, and not show itself when an alarm is hidden.
|
||||||
0.04: Fix check for active alarm
|
0.04: Fix check for active alarm
|
||||||
|
0.05: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"id": "widalarmeta",
|
"id": "widalarmeta",
|
||||||
"name": "Alarm & Timer ETA",
|
"name": "Alarm & Timer ETA",
|
||||||
"shortName": "Alarm ETA",
|
"shortName": "Alarm ETA",
|
||||||
"version": "0.04",
|
"version": "0.05",
|
||||||
"description": "A widget that displays the time to the next Alarm or Timer in hours and minutes, maximum 24h (configurable).",
|
"description": "A widget that displays the time to the next Alarm or Timer in hours and minutes, maximum 24h (configurable).",
|
||||||
"icon": "widget.png",
|
"icon": "widget.png",
|
||||||
"type": "widget",
|
"type": "widget",
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
},
|
},
|
||||||
/*LANG*/'Draw bell': {
|
/*LANG*/'Draw bell': {
|
||||||
value: !!settings.drawBell,
|
value: !!settings.drawBell,
|
||||||
format: v => v?/*LANG*/"Yes":/*LANG*/"No",
|
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
settings.drawBell = v;
|
settings.drawBell = v;
|
||||||
writeSettings();
|
writeSettings();
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
0.01: Initial version
|
0.01: Initial version
|
||||||
0.02: Checks for correct firmware; E.setDST(...) moved to boot.js
|
0.02: Checks for correct firmware; E.setDST(...) moved to boot.js
|
||||||
|
0.03: Convert Yes/No On/Off in settings to checkboxes
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{ "id": "widdst",
|
{ "id": "widdst",
|
||||||
"name": "Daylight Saving",
|
"name": "Daylight Saving",
|
||||||
"version":"0.02",
|
"version":"0.03",
|
||||||
"description": "Widget to set daylight saving rules. Requires Espruino 2v14.49 or later - see the instructions below for more information.",
|
"description": "Widget to set daylight saving rules. Requires Espruino 2v14.49 or later - see the instructions below for more information.",
|
||||||
"icon": "icon.png",
|
"icon": "icon.png",
|
||||||
"type": "widget",
|
"type": "widget",
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
at: 2
|
at: 2
|
||||||
}
|
}
|
||||||
}, require("Storage").readJSON("widdst.json", true) || {});
|
}, require("Storage").readJSON("widdst.json", true) || {});
|
||||||
|
|
||||||
var dst_start_end = {
|
var dst_start_end = {
|
||||||
is_start: true,
|
is_start: true,
|
||||||
day_offset: 0,
|
day_offset: 0,
|
||||||
|
@ -32,11 +32,11 @@
|
||||||
month: 0,
|
month: 0,
|
||||||
at: 0
|
at: 0
|
||||||
};
|
};
|
||||||
|
|
||||||
function writeSettings() {
|
function writeSettings() {
|
||||||
require('Storage').writeJSON("widdst.json", settings);
|
require('Storage').writeJSON("widdst.json", settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
function writeSubMenuSettings() {
|
function writeSubMenuSettings() {
|
||||||
if (dst_start_end.is_start) {
|
if (dst_start_end.is_start) {
|
||||||
settings.dst_start.day_offset = dst_start_end.day_offset;
|
settings.dst_start.day_offset = dst_start_end.day_offset;
|
||||||
|
@ -53,11 +53,11 @@
|
||||||
}
|
}
|
||||||
writeSettings();
|
writeSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
function hoursToString(h) {
|
function hoursToString(h) {
|
||||||
return (h|0) + ':' + (((6*h)%6)|0) + (((60*h)%10)|0);
|
return (h|0) + ':' + (((6*h)%6)|0) + (((60*h)%10)|0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDSTStartEndMenu(start) {
|
function getDSTStartEndMenu(start) {
|
||||||
dst_start_end.is_start = start;
|
dst_start_end.is_start = start;
|
||||||
if (start) {
|
if (start) {
|
||||||
|
@ -131,23 +131,21 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var dstMenu = {
|
var dstMenu = {
|
||||||
"": {
|
"": {
|
||||||
"Title": /*LANG*/"Daylight Saving"
|
"Title": /*LANG*/"Daylight Saving"
|
||||||
},
|
},
|
||||||
"< Back": () => back(),
|
"< Back": () => back(),
|
||||||
/*LANG*/"Enabled": {
|
/*LANG*/"Enabled": {
|
||||||
value: settings.has_dst,
|
value: !!settings.has_dst,
|
||||||
format: v => v ? /*LANG*/"Yes" : /*LANG*/"No",
|
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
settings.has_dst = v;
|
settings.has_dst = v;
|
||||||
writeSettings();
|
writeSettings();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/*LANG*/"Icon": {
|
/*LANG*/"Icon": {
|
||||||
value: settings.show_icon,
|
value: !!settings.show_icon,
|
||||||
format: v => v ? /*LANG*/"Yes" : /*LANG*/"No",
|
|
||||||
onchange: v => {
|
onchange: v => {
|
||||||
settings.show_icon = v;
|
settings.show_icon = v;
|
||||||
writeSettings();
|
writeSettings();
|
||||||
|
@ -178,7 +176,7 @@
|
||||||
/*LANG*/"DST Start": () => E.showMenu(getDSTStartEndMenu(true)),
|
/*LANG*/"DST Start": () => E.showMenu(getDSTStartEndMenu(true)),
|
||||||
/*LANG*/"DST End": () => E.showMenu(getDSTStartEndMenu(false))
|
/*LANG*/"DST End": () => E.showMenu(getDSTStartEndMenu(false))
|
||||||
};
|
};
|
||||||
|
|
||||||
E.showMenu(dstMenu);
|
E.showMenu(dstMenu);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue