1
0
Fork 0

Merge pull request #2288 from Rarder44/rebble-fix

[rebble] - convert var/function to let
master
Gordon Williams 2022-11-18 11:48:55 +00:00 committed by GitHub
commit 35668fd853
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 331 additions and 311 deletions

View File

@ -10,3 +10,4 @@
0.10: Tell clock widgets to hide. 0.10: Tell clock widgets to hide.
0.11: fix issue https://github.com/espruino/BangleApps/issues/2128 (#2128) ( settings undefined ) 0.11: fix issue https://github.com/espruino/BangleApps/issues/2128 (#2128) ( settings undefined )
0.12: implemented widget_utils 0.12: implemented widget_utils
0.13: convert var/function into let

View File

@ -2,7 +2,7 @@
"id": "rebble", "id": "rebble",
"name": "Rebble Clock", "name": "Rebble Clock",
"shortName": "Rebble", "shortName": "Rebble",
"version": "0.12", "version": "0.13",
"description": "A Pebble style clock, with configurable background, three sidebars including steps, day, date, sunrise, sunset, long live the rebellion", "description": "A Pebble style clock, with configurable background, three sidebars including steps, day, date, sunrise, sunset, long live the rebellion",
"readme": "README.md", "readme": "README.md",
"icon": "rebble.png", "icon": "rebble.png",

View File

@ -1,11 +1,3 @@
var SunCalc = require("suncalc");
const SETTINGS_FILE = "rebble.json";
const LOCATION_FILE = "mylocation.json";
const GLOBAL_SETTINGS = "setting.json";
let settings;
let location;
let is12Hour;
Graphics.prototype.setFontKdamThmor = function(scale) { Graphics.prototype.setFontKdamThmor = function(scale) {
// Actual height 70 (69 - 0) // Actual height 70 (69 - 0)
this.setFontCustom( this.setFontCustom(
@ -17,26 +9,37 @@ Graphics.prototype.setFontKdamThmor = function(scale) {
return this; return this;
} }
var boot_img = require("heatshrink").decompress(atob("oFAwkEogA/AH4A/AH4A/AH4A/AE8AAAoeXoAfeDQUBmcyD7A+Dh///8QD649CiAfaHwUvD4sEHy0DDYIfEICg+Cn4fHICY+DD4nxcgojOHwgfEIAYfRCIQaDD4ZAFD5r7DH4//kAfRCIZ/GAAnwD5p9DX44fTHgYSBf4ofVDAQEBl4fFUAgfOXoQzBgIfFBAIfPP4RAEAoYAB+cRiK/SG4h/WIBAfXIA7CBAAswD55AHn6fUIBMCD65AHl4gCmcziAfQQJqfQQJpiDgk0IDXxQLRAEECaBM+QgRYRYgUIA0CD4ggSQJiDCiAKBICszAAswD55AHABKBVD7BAFABIqBD5pAFABPxD55AOD6BADiIAJQAyxLABwf/gaAPAH4A/AH4ARA=="));
var sunrise_img = require("heatshrink").decompress(atob("oFAwkEogA/AH4A/AH4A/AH4ACp5A/AH4A/AH4AIoEAggfcgAABD/4f/D/4f/CiNPmgfUoYIHoEAggfSoEQgYJGmAUJD5QJBgQ/IIBBKJChiVSCYR1LBZAzTICQyNICAxOICAwPD40xA4UTc5xAFiAuDiAWCAAMBc5hgHDxAgFeCKEDh//AAPwdiKDHh9PD4X0EAX0DyQ+BHoYgFh4+UDwofB/68OAAlBHw6CEQKITBDxAABMCReHUQhgSLxRgDDx9CD4g8DD4sUbqEUH5SABUB4fBDxYfKkQAFkEAiQJGAAcjgECBQ6qBAH4A9Y5wA/AH4Aw"));
var sunset_img = require("heatshrink").decompress(atob("oFAwkEogA/AH4A/AH4A/AH4A/AH4A/AH4AMoEAggfcgAABD/4f/D/4f/CqU0D6lDBA9AgEED6VAiEDBI0wChIfKBIMCH5BAIJRIUMSqQTCOpYLIGaZASGRpAQGJxAQGB4fGmIHCibnOIAsQFwcQCwQABgLnMMA4eIEArwRQgY0DAwwARC44gC+geSORJ8PHw4KTABFBGhRAT+AzLgEPLzZgUKRhgBDx9CD50UbqARMUCBROD5MiAAsggESBIwADkcAgQKHVQIA/AHrHOAH4A/AGA"));
var drawCount = 0; {
var sideBar = 0; let SunCalc = require("suncalc");
var sunRise = "00:00"; const SETTINGS_FILE = "rebble.json";
var sunSet = "00:00"; const LOCATION_FILE = "mylocation.json";
const GLOBAL_SETTINGS = "setting.json";
let settings;
let location;
let is12Hour;
function log_debug(o) {
let boot_img = require("heatshrink").decompress(atob("oFAwkEogA/AH4A/AH4A/AH4A/AE8AAAoeXoAfeDQUBmcyD7A+Dh///8QD649CiAfaHwUvD4sEHy0DDYIfEICg+Cn4fHICY+DD4nxcgojOHwgfEIAYfRCIQaDD4ZAFD5r7DH4//kAfRCIZ/GAAnwD5p9DX44fTHgYSBf4ofVDAQEBl4fFUAgfOXoQzBgIfFBAIfPP4RAEAoYAB+cRiK/SG4h/WIBAfXIA7CBAAswD55AHn6fUIBMCD65AHl4gCmcziAfQQJqfQQJpiDgk0IDXxQLRAEECaBM+QgRYRYgUIA0CD4ggSQJiDCiAKBICszAAswD55AHABKBVD7BAFABIqBD5pAFABPxD55AOD6BADiIAJQAyxLABwf/gaAPAH4A/AH4ARA=="));
let sunrise_img = require("heatshrink").decompress(atob("oFAwkEogA/AH4A/AH4A/AH4ACp5A/AH4A/AH4AIoEAggfcgAABD/4f/D/4f/CiNPmgfUoYIHoEAggfSoEQgYJGmAUJD5QJBgQ/IIBBKJChiVSCYR1LBZAzTICQyNICAxOICAwPD40xA4UTc5xAFiAuDiAWCAAMBc5hgHDxAgFeCKEDh//AAPwdiKDHh9PD4X0EAX0DyQ+BHoYgFh4+UDwofB/68OAAlBHw6CEQKITBDxAABMCReHUQhgSLxRgDDx9CD4g8DD4sUbqEUH5SABUB4fBDxYfKkQAFkEAiQJGAAcjgECBQ6qBAH4A9Y5wA/AH4Aw"));
let sunset_img = require("heatshrink").decompress(atob("oFAwkEogA/AH4A/AH4A/AH4A/AH4A/AH4AMoEAggfcgAABD/4f/D/4f/CqU0D6lDBA9AgEED6VAiEDBI0wChIfKBIMCH5BAIJRIUMSqQTCOpYLIGaZASGRpAQGJxAQGB4fGmIHCibnOIAsQFwcQCwQABgLnMMA4eIEArwRQgY0DAwwARC44gC+geSORJ8PHw4KTABFBGhRAT+AzLgEPLzZgUKRhgBDx9CD50UbqARMUCBROD5MiAAsggESBIwADkcAgQKHVQIA/AHrHOAH4A/AGA"));
let drawCount = 0;
let sideBar = 0;
let sunRise = "00:00";
let sunSet = "00:00";
let log_debug= function(o) {
//console.log(o); //console.log(o);
}
} // requires the myLocation app
let loadLocation= function() {
// requires the myLocation app
function loadLocation() {
location = require("Storage").readJSON(LOCATION_FILE,1)||{"lat":51.5072,"lon":0.1276,"location":"London"}; location = require("Storage").readJSON(LOCATION_FILE,1)||{"lat":51.5072,"lon":0.1276,"location":"London"};
} }
function loadSettings() { let loadSettings=function() {
settings = {'bg': '#0f0', 'color': 'Green', 'autoCycle': true,'sideTap':0}; settings = {'bg': '#0f0', 'color': 'Green', 'autoCycle': true,'sideTap':0};
//sideTap 0 = on | 1 = sidebar1... //sideTap 0 = on | 1 = sidebar1...
@ -46,13 +49,13 @@ function loadSettings() {
} }
if(settings.sideTap!=0) if(settings.sideTap!=0)
sideBar=parseInt(settings.sideTap)-1; //tab to show sideBar=parseInt(settings.sideTap)-1; //tab to
is12Hour = (require("Storage").readJSON(GLOBAL_SETTINGS, 1) || {})["12hour"] || false; is12Hour = (require("Storage").readJSON(GLOBAL_SETTINGS, 1) || {})["12hour"] || false;
} }
const zeroPad = (num, places) => String(num).padStart(places, '0') const zeroPad = (num, places) => String(num).padStart(places, '0')
function formatHours(h) { let formatHours=function(h) {
if (is12Hour) { if (is12Hour) {
if (h == 0) { if (h == 0) {
h = 12; h = 12;
@ -61,48 +64,48 @@ function formatHours(h) {
} }
} }
return zeroPad(h, 2); return zeroPad(h, 2);
} }
function extractTime(d){ let extractTime=function(d){
var h = d.getHours(), m = d.getMinutes(); let h = d.getHours(), m = d.getMinutes();
return(formatHours(h) + ":" + zeroPad(m, 2)); return(formatHours(h) + ":" + zeroPad(m, 2));
} }
function updateSunRiseSunSet(lat, lon){ let updateSunRiseSunSet=function(lat, lon){
// get today's sunlight times for lat/lon // get today's sunlight times for lat/lon
var times = SunCalc.getTimes(new Date(), lat, lon); let times = SunCalc.getTimes(new Date(), lat, lon);
// format sunrise time from the Date object // format sunrise time from the Date object
sunRise = extractTime(times.sunrise); sunRise = extractTime(times.sunrise);
sunSet = extractTime(times.sunset); sunSet = extractTime(times.sunset);
} }
// wrapper, makes it easier if we want to switch to a different font later // wrapper, makes it easier if we want to switch to a different font later
function setSmallFont() { let setSmallFont=function() {
g.setFont('Vector', 20); g.setFont('Vector', 20);
} }
// set the text color of the sidebar elements that dont change with the Theme // set the text color of the sidebar elements that dont change with the Theme
function setTextColor() { let setTextColor=function() {
// day and steps // day and steps
if (settings.color == 'Blue' || settings.color == 'Red') { if (settings.color == 'Blue' || settings.color == 'Red') {
g.setColor('#fff'); // white on blue or red best contrast g.setColor('#fff'); // white on blue or red best contrast
} else { } else {
g.setColor('#000'); // otherwise black regardless of theme g.setColor('#000'); // otherwise black regardless of theme
} }
} }
const h = g.getHeight(); const h = g.getHeight();
const w = g.getWidth(); const w = g.getWidth();
const ha = 2*h/5 - 8; /*const ha = 2*h/5 - 8;
const h2 = 3*h/5 - 10; const h2 = 3*h/5 - 10;
const h3 = 7*h/8; const h3 = 7*h/8;*/
const w2 = 9*w/14; const w2 = 9*w/14;
const w3 = w2 + ((w - w2)/2); // centre line of the sidebar const w3 = w2 + ((w - w2)/2); // centre line of the sidebar
const ws = w - w2; // sidebar width const ws = w - w2; // sidebar width
const wb = 40; // battery width const wb = 40; // battery width
function draw() { let draw=function() {
log_debug("draw()"); log_debug("draw()");
let date = new Date(); let date = new Date();
let hh = date.getHours(); let hh = date.getHours();
@ -143,9 +146,9 @@ function draw() {
drawCount++; drawCount++;
queueDraw(); queueDraw();
} }
function drawSideBar1() { let drawSideBar1=function() {
let date = new Date(); let date = new Date();
let dy=require("date_utils").dow(date.getDay(),1).toUpperCase(); let dy=require("date_utils").dow(date.getDay(),1).toUpperCase();
let dd=date.getDate(); let dd=date.getDate();
@ -160,9 +163,9 @@ function drawSideBar1() {
g.drawString(E.getBattery() + '%', w3, (h/10) + 17 + 7); g.drawString(E.getBattery() + '%', w3, (h/10) + 17 + 7);
drawDateAndCalendar(w3, h/2, dy, dd, mm); drawDateAndCalendar(w3, h/2, dy, dd, mm);
} }
function drawSideBar2() { let drawSideBar2=function() {
drawBattery(w2 + (w-w2-wb)/2, h/10, wb, 17); drawBattery(w2 + (w-w2-wb)/2, h/10, wb, 17);
setTextColor(); setTextColor();
@ -175,10 +178,10 @@ function drawSideBar2() {
setSmallFont(); setSmallFont();
g.setFontAlign(0, -1); g.setFontAlign(0, -1);
g.drawString(formatSteps(), w3, 7*h/8); g.drawString(formatSteps(), w3, 7*h/8);
} }
// sunrise, sunset times // sunrise, sunset times
function drawSideBar3() { let drawSideBar3=function() {
g.setColor('#fff'); // sunrise white g.setColor('#fff'); // sunrise white
g.drawImage(sunrise_img, w2 + (ws - 64)/2, 0, { scale: 1 }); g.drawImage(sunrise_img, w2 + (ws - 64)/2, 0, { scale: 1 });
setTextColor(); setTextColor();
@ -192,9 +195,9 @@ function drawSideBar3() {
setSmallFont(); setSmallFont();
g.setFontAlign(0, -1); g.setFontAlign(0, -1);
g.drawString(sunSet, w3, (h/2) + 64); g.drawString(sunSet, w3, (h/2) + 64);
} }
function drawDateAndCalendar(x,y,dy,dd,mm) { let drawDateAndCalendar=function(x,y,dy,dd,mm) {
// day // day
setTextColor(); setTextColor();
setSmallFont(); setSmallFont();
@ -208,10 +211,10 @@ function drawDateAndCalendar(x,y,dy,dd,mm) {
setSmallFont(); setSmallFont();
g.setFontAlign(0, -1); g.setFontAlign(0, -1);
g.drawString(mm.toUpperCase(), x, y + 70); g.drawString(mm.toUpperCase(), x, y + 70);
} }
// at x,y width:wi thicknes:th // at x,y width:wi thicknes:th
function drawCalendar(x,y,wi,th,str) { let drawCalendar=function(x,y,wi,th,str) {
g.setColor(g.theme.fg); g.setColor(g.theme.fg);
g.fillRect(x, y, x + wi, y + wi); g.fillRect(x, y, x + wi, y + wi);
g.setColor(g.theme.bg); g.setColor(g.theme.bg);
@ -227,9 +230,9 @@ function drawCalendar(x,y,wi,th,str) {
setSmallFont(); setSmallFont();
g.setFontAlign(0, 0); g.setFontAlign(0, 0);
g.drawString(str, x + wi/2 + th/2, y + wi/2 + th/2); g.drawString(str, x + wi/2 + th/2, y + wi/2 + th/2);
} }
function drawBattery(x,y,wi,hi) { let drawBattery=function(x,y,wi,hi) {
g.reset(); g.reset();
g.setColor(g.theme.fg); g.setColor(g.theme.fg);
g.fillRect(x,y+2,x+wi-4,y+2+hi); // outer g.fillRect(x,y+2,x+wi-4,y+2+hi); // outer
@ -238,6 +241,7 @@ function drawBattery(x,y,wi,hi) {
g.fillRect(x+wi-3,y+2+(((hi - 1)/2)-1),x+wi-2,y+2+(((hi - 1)/2)-1)+4); // contact g.fillRect(x+wi-3,y+2+(((hi - 1)/2)-1),x+wi-2,y+2+(((hi - 1)/2)-1)+4); // contact
g.fillRect(x+3, y+5, x +3 + E.getBattery()*(wi-10)/100, y+hi-1); // the level g.fillRect(x+3, y+5, x +3 + E.getBattery()*(wi-10)/100, y+hi-1); // the level
log_debug("Charging "+Bangle.isCharging());
if( Bangle.isCharging() ) if( Bangle.isCharging() )
{ {
g.setBgColor(settings.bg); g.setBgColor(settings.bg);
@ -245,11 +249,11 @@ function drawBattery(x,y,wi,hi) {
g.drawImage(image(),x+3,y+4); g.drawImage(image(),x+3,y+4);
} }
} }
// format steps so they fit in the place // format steps so they fit in the place
function formatSteps() { let formatSteps=function() {
var s = Bangle.getHealthStatus("day").steps; let s = Bangle.getHealthStatus("day").steps;
if (s < 1000) { if (s < 1000) {
return s + ''; return s + '';
@ -257,29 +261,25 @@ function formatSteps() {
return '' + (s/1000).toFixed(1) + 'K'; return '' + (s/1000).toFixed(1) + 'K';
} }
return Math.floor(s / 1000) + 'K'; return Math.floor(s / 1000) + 'K';
} }
function nextSidebar() {
let nextSidebar=function() {
if (++sideBar > 2) sideBar = 0; if (++sideBar > 2) sideBar = 0;
log_debug("next: " + sideBar); log_debug("next: " + sideBar);
}
} let prevSidebar=function() {
function prevSidebar() {
if (--sideBar < 0) sideBar = 2; if (--sideBar < 0) sideBar = 2;
log_debug("prev: " + sideBar); log_debug("prev: " + sideBar);
}
}
// timeout used to update every minute // timeout used to update every minute
var drawTimeout; let drawTimeout;
// schedule a draw for the next minute // schedule a draw for the next minute
function queueDraw() { let queueDraw=function() {
if (drawTimeout) clearTimeout(drawTimeout); if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = setTimeout(function() { drawTimeout = setTimeout(function() {
drawTimeout = undefined; drawTimeout = undefined;
@ -288,34 +288,52 @@ function queueDraw() {
} }
draw(); draw();
}, 60000 - (Date.now() % 60000)); }, 60000 - (Date.now() % 60000));
} }
log_debug("starting.."); log_debug("starting..");
loadSettings(); loadSettings();
loadLocation(); loadLocation();
if(settings.autoCycle || settings.sideTap==0) if(settings.autoCycle || settings.sideTap==0)
{ {
Bangle.setUI("clockupdown", btn=> { Bangle.setUI({
mode : "clockupdown",
remove : function() {
// Called to unload all of the clock app
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
delete Graphics.prototype.setFontKdamThmor;
}},
btn=> {
if (btn<0) prevSidebar(); if (btn<0) prevSidebar();
if (btn>0) nextSidebar(); if (btn>0) nextSidebar();
draw(); draw();
}); });
}
else{ }
Bangle.setUI("clock"); else{
} Bangle.setUI({
mode : "clock",
remove : function() {
// Called to unload all of the clock app
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
delete Graphics.prototype.setFontKdamThmor;
}});
}
Bangle.loadWidgets(); Bangle.loadWidgets();
require("widget_utils").hide(); draw();
require("widget_utils").hide();
draw(); // queues the next draw for a minutes time
Bangle.on('charging', function(charging) { Bangle.on('charging', function(charging) {
//redraw the sidebar ( with the battery ) //redraw the sidebar ( with the battery )
switch(sideBar) { switch(sideBar) {
case 0: case 0:
@ -325,4 +343,5 @@ Bangle.on('charging', function(charging) {
drawSideBar2(); drawSideBar2();
break; break;
} }
}); });
}

View File

@ -15,13 +15,13 @@
localSettings[key] = saved[key] localSettings[key] = saved[key]
} }
function save() { let save=function() {
settings = localSettings settings = localSettings
storage.write(SETTINGS_FILE, settings) storage.write(SETTINGS_FILE, settings)
} }
var color_options = ['Green','Orange','Cyan','Purple','Red','Blue']; let color_options = ['Green','Orange','Cyan','Purple','Red','Blue'];
var bg_code = ['#0f0','#ff0','#0ff','#f0f','#f00','#00f']; let bg_code = ['#0f0','#ff0','#0ff','#f0f','#f00','#00f'];
function showMenu() function showMenu()
{ {
@ -66,7 +66,7 @@
E.showMenu(menu); E.showMenu(menu);
} }
function NumberToSideTap(Number) let NumberToSideTap=function(Number)
{ {
if(Number==0) if(Number==0)
return 'on'; return 'on';