1
0
Fork 0
BangleApps/apps/binaryclk/app.js

114 lines
2.9 KiB
JavaScript
Raw Normal View History

2024-01-18 14:34:29 +00:00
var settings = Object.assign({
fullscreen: true,
hidesq: false,
showdate: true,
showbat: true,
2024-01-18 14:34:29 +00:00
}, require('Storage').readJSON("binaryclk.json", true) || {});
2024-01-17 18:26:28 +00:00
2023-12-08 16:05:57 +00:00
function draw() {
var cnt = 0;
2023-12-08 18:09:42 +00:00
var dt = new Date();
var h = dt.getHours();
var m = dt.getMinutes();
var d = dt.getDate();
var day = dt.toString().substring(0,3);
2023-12-08 18:19:18 +00:00
const t = [];
2023-12-08 18:19:18 +00:00
t[0] = Math.floor(h/10);
t[1] = Math.floor(h%10);
t[2] = Math.floor(m/10);
t[3] = Math.floor(m%10);
2023-12-08 16:05:57 +00:00
2023-12-08 18:19:18 +00:00
g.reset();
g.clearRect(Bangle.appRect);
2023-12-08 16:05:57 +00:00
2023-12-08 18:19:18 +00:00
let i = 0;
var gap = 4;
var mgn = 24;
var sq = 33;
2024-01-18 14:34:29 +00:00
if (settings.fullscreen) {
gap = 8;
2024-01-18 14:34:29 +00:00
mgn = 0;
sq = 34;
2024-01-17 18:26:28 +00:00
}
2024-01-18 14:34:29 +00:00
var pos = sq + gap;
2023-12-08 16:05:57 +00:00
2023-12-08 18:19:18 +00:00
for (let r = 3; r >= 0; r--) {
for (let c = 0; c < 4; c++) {
if (t[c] & Math.pow(2, r)) {
g.fillRect(Math.floor(mgn/2) + gap + c * pos, mgn + gap + i * pos, Math.floor(mgn/2) + gap + c * pos + sq, mgn + gap + i * pos + sq);
2023-12-08 18:19:18 +00:00
} else {
g.drawRect(Math.floor(mgn/2) + gap + c * pos, mgn + gap + i * pos, Math.floor(mgn/2) + gap + c * pos + sq, mgn + gap + i * pos + sq);
2023-12-08 18:19:18 +00:00
}
}
i++;
}
var c1sqhide = 0;
var c3sqhide = 0;
2024-02-26 06:46:57 +00:00
if (settings.hidesq) {
c1sqhide = 2;
2024-02-26 22:11:44 +00:00
c3sqhide = 1;
}
2024-02-26 06:46:57 +00:00
if (settings.hidesq) {
g.clearRect(Math.floor(mgn/2), mgn, Math.floor(mgn/2) + pos, mgn + c1sqhide * pos);
g.clearRect(Math.floor(mgn/2) + 2 * pos + gap, mgn, Math.floor(mgn/2) + 3 * pos, mgn + c3sqhide * pos);
}
2024-02-26 06:46:57 +00:00
if (settings.showdate) {
g.setColor(-1).fillRect(Math.floor(mgn/2) + gap, mgn + gap, Math.floor(mgn/2) + gap + sq, mgn + gap + sq);
g.setColor('#FF0000').fillRect(Math.floor(mgn/2) + gap, mgn + gap, Math.floor(mgn/2) + gap + sq, mgn + gap + 12);
g.setFontAlign(0, -1);
g.setFont("Vector",12);
g.setColor(-1).drawString(day, Math.ceil(mgn/2) + gap + Math.ceil(sq/2) + 1, mgn + gap + 1);
g.setFontAlign(0, 1);
g.setFont("Vector",20);
g.setColor(1).drawString(d, Math.ceil(mgn/2) + gap + Math.ceil(sq/2) + 1, mgn + gap + sq + 2);
if (g.theme.dark) {
g.setColor(-1);
} else {
g.setColor(1);
g.drawLine(Math.floor(mgn/2) + gap, mgn + gap + 13, Math.floor(mgn/2) + gap + sq, mgn + gap + 13);
}
g.drawRect(Math.floor(mgn/2) + gap, mgn + gap, Math.floor(mgn/2) + gap + sq, mgn + gap + sq);
}
if (cnt == 0) {
if (settings.showbat) {
var bat = E.getBattery();
if (bat < 20) {
g.setColor('#FF0000');
} else if (bat < 40) {
g.setColor('#FFA500');
} else {
g.setColor('#00FF00');
}
g.fillRect(Math.floor(mgn/2) + gap + 2 * pos, mgn + gap, Math.floor(mgn/2) + gap + 2 * pos + Math.floor(bat * sq / 100), mgn + gap + sq);
if (g.theme.dark) {
g.setColor(-1);
} else {
g.setColor(1);
}
g.drawRect(Math.floor(mgn/2) + gap + 2 * pos, mgn + gap, Math.floor(mgn/2) + gap + 2 * pos + sq, mgn + gap + sq);
}
2024-03-21 13:25:43 +00:00
cnt++;
if (cnt > 599999) {
cnt = 0;
}
}
2023-12-08 16:05:57 +00:00
}
g.clear();
draw();
2024-03-04 20:34:50 +00:00
/*var secondInterval =*/ setInterval(draw, 60000);
2023-12-08 16:05:57 +00:00
Bangle.setUI("clock");
2024-01-18 14:34:29 +00:00
if (!settings.fullscreen) {
2024-01-17 18:26:28 +00:00
Bangle.loadWidgets();
Bangle.drawWidgets();
}