mirror of https://github.com/espruino/BangleApps
42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
|
|
(() => {
|
|
var days_left;
|
|
var clearCode;
|
|
|
|
function getDaysLeft(day) {
|
|
let year = day.getMonth() == 11 ? day.getFullYear() + 1 : day.getFullYear(); // rollover if december.
|
|
const next_month = new Date(year, (day.getMonth() + 1) % 12, 1, 0, 0, 0);
|
|
let days_left = Math.floor((next_month - day) / 86400000); // ms left in month divided by ms in a day
|
|
return days_left;
|
|
}
|
|
|
|
function getTimeTilMidnight(now) {
|
|
let midnight = new Date(now.getTime());
|
|
midnight.setHours(23);
|
|
midnight.setMinutes(59);
|
|
midnight.setSeconds(59);
|
|
midnight.setMilliseconds(999);
|
|
return (midnight - now) + 1;
|
|
}
|
|
|
|
function update() {
|
|
let now = new Date();
|
|
days_left = getDaysLeft(now);
|
|
let ms_til_midnight = getTimeTilMidnight(now);
|
|
clearCode = setTimeout(update, ms_til_midnight);
|
|
}
|
|
|
|
function draw() {
|
|
g.reset();
|
|
g.setFont("4x6", 3);
|
|
if(!clearCode) update(); // On first run calculate days left and setup interval to update state.
|
|
g.drawString(days_left < 10 ? "0" + days_left : days_left.toString(), this.x + 2, this.y + 4);
|
|
}
|
|
|
|
// add your widget
|
|
WIDGETS.widmonthcountdown={
|
|
area:"tl", // tl (top left), tr (top right), bl (bottom left), br (bottom right)
|
|
width: 24,
|
|
draw:draw
|
|
};
|
|
})(); |