mirror of https://github.com/espruino/BangleApps
parent
26114902d4
commit
292d6ab5c9
11
apps.json
11
apps.json
|
@ -216,5 +216,16 @@
|
|||
{"name":"+route"},
|
||||
{"name":"=route"}
|
||||
]
|
||||
},
|
||||
{ "id": "wclock",
|
||||
"name": "Word Clock",
|
||||
"icon": "word-clock.png",
|
||||
"description": "Display Time as Text",
|
||||
"tags": "",
|
||||
"storage": [
|
||||
{"name":"+wclock","url":"word-clock.json"},
|
||||
{"name":"-wclock","url":"word-clock.js"},
|
||||
{"name":"*wclock","url":"word-clock-icon.js","evaluate":true}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("AAsRwEAkFBvE/wFgmHD/kwgFAmGBgAFFn4FBjOB/AFDgOACIUbgIXDh4FDsEOgf8iALBg0B/hBFjwvD/gpBsE5AoMxwFAj4IBnACBh4CBBANAhwFBg4RBBYUhAoMbAoIdCjJoBNYUx4FgHAUgQY8/zHin/BgEuxnmn53BgkM80wMoIFB8gFDhu0CIcF3gLDg8cAokYAoOAAoQvB/A9H4BBDwPwX4P4nEDnAFBEAMGFIPDhk4g0MAoN8n4FD/ARBAoODuAFBjExwYdBEYMZwYOBgPwh8DhhBHACo="))
|
|
@ -0,0 +1,145 @@
|
|||
/* jshint esversion: 6 */
|
||||
(function() {
|
||||
|
||||
var buf = Graphics.createArrayBuffer(240, 240, 2, { msb: true });
|
||||
|
||||
function flip() {
|
||||
g.drawImage({ width: buf.getWidth(), height: buf.getHeight(), bpp: 2, transparent: 0, buffer: buf.buffer }, 0, 0);
|
||||
}
|
||||
|
||||
const allWords = [
|
||||
"ATWENTYD",
|
||||
"QUARTERY",
|
||||
"FIVEHALF",
|
||||
"DPASTORO",
|
||||
"FIVEIGHT",
|
||||
"SIXTHREE",
|
||||
"TWELEVEN",
|
||||
"FOURNINE"
|
||||
];
|
||||
const hours = {
|
||||
0: ["", 0, 0],
|
||||
1: ["ONE", 17, 47, 77],
|
||||
2: ["TWO", 06, 16, 17],
|
||||
3: ["THREE", 35, 45, 55, 65, 75],
|
||||
4: ["FOUR", 07, 17, 27, 37],
|
||||
5: ["FIVE", 04, 14, 24, 34],
|
||||
6: ["SIX", 05, 15, 25],
|
||||
7: ["SEVEN", 05, 46, 56, 66, 67],
|
||||
8: ["EIGHT", 34, 44, 54, 64, 74],
|
||||
9: ["NINE", 47, 57, 67, 77],
|
||||
10: ["TEN", 74, 75, 76],
|
||||
11: ["ELEVEN", 26, 36, 46, 56, 66, 76],
|
||||
12: ["TWELVE", 06, 16, 26, 36, 56, 66]
|
||||
};
|
||||
|
||||
const mins = {
|
||||
0: ["A", 0, 0],
|
||||
1: ["FIVE", 02, 12, 22, 32],
|
||||
2: ["TEN", 10, 30, 40],
|
||||
3: ["QUARTER", 01, 11, 21, 31, 41, 51, 61],
|
||||
4: ["TWENTY", 10, 20, 30, 40, 50, 60],
|
||||
5: ["HALF", 42, 52, 62, 72],
|
||||
6: ["PAST", 13, 23, 33, 43],
|
||||
7: ["TO", 43, 53]
|
||||
};
|
||||
|
||||
// offsets and incerments
|
||||
const xs = 30;
|
||||
const ys = 20;
|
||||
const dy = 22;
|
||||
const dx = 25;
|
||||
|
||||
// font size and color
|
||||
const wordFontSize = 20;
|
||||
const timeFontSize = 30;
|
||||
const passivColor = 1;
|
||||
const activeColor = 2;
|
||||
|
||||
function drawWordClock() {
|
||||
|
||||
// get time
|
||||
var t = new Date();
|
||||
var h = t.getHours();
|
||||
var m = t.getMinutes();
|
||||
var time = ("0" + h).substr(-2) + ":" + ("0" + m).substr(-2);
|
||||
|
||||
var hidx;
|
||||
var midx;
|
||||
var midxA;
|
||||
|
||||
buf.clear();
|
||||
buf.setFontVector(wordFontSize);
|
||||
buf.setColor(passivColor);
|
||||
buf.setFontAlign(0, -1, 0);
|
||||
|
||||
// draw allWords
|
||||
var c;
|
||||
var y = ys;
|
||||
var x = xs;
|
||||
allWords.forEach((line) => {
|
||||
x = xs;
|
||||
for (c in line) {
|
||||
buf.drawString(line[c], x, y);
|
||||
x += dx;
|
||||
}
|
||||
y += dy;
|
||||
});
|
||||
|
||||
|
||||
// calc indexes
|
||||
midx = Math.round(m / 5);
|
||||
hidx = h % 12;
|
||||
if (hidx === 0) { hidx = 12; }
|
||||
if (midx > 6) {
|
||||
if (midx == 12) { midx = 0; }
|
||||
hidx++;
|
||||
}
|
||||
if (midx !== 0) {
|
||||
if (midx <= 6) {
|
||||
midxA = [midx, 6];
|
||||
} else {
|
||||
midxA = [12 - midx, 7];
|
||||
}
|
||||
}
|
||||
|
||||
// write hour in active color
|
||||
buf.setColor(activeColor);
|
||||
buf.setFontVector(wordFontSize);
|
||||
|
||||
hours[hidx][0].split('').forEach((c, pos) => {
|
||||
x = xs + (hours[hidx][pos + 1] / 10 | 0) * dx;
|
||||
y = ys + (hours[hidx][pos + 1] % 10) * dy;
|
||||
buf.drawString(c, x, y);
|
||||
});
|
||||
|
||||
// write min words in active color
|
||||
midxA.forEach(idx => {
|
||||
mins[idx][0].split('').forEach((c, pos) => {
|
||||
x = xs + (mins[idx][pos + 1] / 10 | 0) * dx;
|
||||
y = ys + (mins[idx][pos + 1] % 10) * dy;
|
||||
buf.drawString(c, x, y);
|
||||
});
|
||||
});
|
||||
|
||||
// display digital time
|
||||
buf.setColor(activeColor);
|
||||
buf.setFontVector(timeFontSize);
|
||||
buf.drawString(time, 120, 200);
|
||||
|
||||
// display buf
|
||||
flip();
|
||||
}
|
||||
|
||||
Bangle.on('lcdPower', function(on) {
|
||||
if (on) {
|
||||
drawWordClock();
|
||||
drawWidgets();
|
||||
}
|
||||
});
|
||||
|
||||
g.clear();
|
||||
setInterval(drawWordClock, 1E4);
|
||||
drawWordClock();
|
||||
|
||||
})();
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"name":"Word Clock",
|
||||
"icon":"*wclock",
|
||||
"src":"-wclock"
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 843 B |
Loading…
Reference in New Issue