mirror of https://github.com/espruino/BangleApps
Create primetime.js
parent
4aa05ecaf7
commit
c796889b16
|
@ -0,0 +1,89 @@
|
|||
const h = g.getHeight();
|
||||
const w = g.getWidth();
|
||||
|
||||
|
||||
|
||||
// creates a list of prime factors of n and outputs them as a string, if n is prime outputs "Prime Time!"
|
||||
function primeFactors(n) {
|
||||
const factors = [];
|
||||
let divisor = 2;
|
||||
|
||||
while (n >= 2) {
|
||||
if (n % divisor == 0) {
|
||||
factors.push(divisor);
|
||||
n = n / divisor;
|
||||
} else {
|
||||
divisor++;
|
||||
}
|
||||
}
|
||||
if (factors.length === 1) {
|
||||
return "Prime Time!";
|
||||
}
|
||||
else
|
||||
return factors.toString();
|
||||
}
|
||||
|
||||
|
||||
// converts time HR:MIN to integer HRMIN e.g. 15:35 => 1535
|
||||
function timeToInt(t) {
|
||||
var arr = t.split(':');
|
||||
var intTime = parseInt(arr[0])*100+parseInt(arr[1]);
|
||||
|
||||
return intTime;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function draw() {
|
||||
var date = new Date();
|
||||
var timeStr = require("locale").time(date,1);
|
||||
var primeStr = primeFactors(timeToInt(timeStr));
|
||||
|
||||
g.reset();
|
||||
g.setColor(0,0,0);
|
||||
g.fillRect(Bangle.appRect);
|
||||
|
||||
g.setFont("6x8", w/30);
|
||||
g.setFontAlign(0, 0);
|
||||
g.setColor(100,100,100);
|
||||
g.drawString(timeStr, w/2, h/2);
|
||||
g.setFont("6x8", w/60);
|
||||
g.drawString(primStr, w/2, 3*h/4);
|
||||
queueDraw();
|
||||
}
|
||||
|
||||
// timeout used to update every minute
|
||||
var drawTimeout;
|
||||
|
||||
// schedule a draw for the next minute
|
||||
function queueDraw() {
|
||||
if (drawTimeout) clearTimeout(drawTimeout);
|
||||
drawTimeout = setTimeout(function() {
|
||||
drawTimeout = undefined;
|
||||
draw();
|
||||
}, 60000 - (Date.now() % 60000));
|
||||
}
|
||||
|
||||
// Stop updates when LCD is off, restart when on
|
||||
Bangle.on('lcdPower',on=>{
|
||||
if (on) {
|
||||
draw(); // draw immediately, queue redraw
|
||||
} else { // stop draw timer
|
||||
if (drawTimeout) clearTimeout(drawTimeout);
|
||||
drawTimeout = undefined;
|
||||
}
|
||||
});
|
||||
|
||||
g.clear();
|
||||
|
||||
// Show launcher when middle button pressed
|
||||
// Bangle.setUI("clock");
|
||||
// use clockupdown as it tests for issue #1249
|
||||
Bangle.setUI("clockupdown", btn=> {
|
||||
draw();
|
||||
});
|
||||
|
||||
// Load widgets
|
||||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
draw();
|
Loading…
Reference in New Issue