BangleApps/apps/widmnth/widget.js

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.
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
};
})();