BangleApps/apps/dane/app.js

141 lines
3.3 KiB
JavaScript

var d = require("dane_arwes");
var Arwes = d.default();
const font = "6x8";
const timeFontSize = 4;
const unixTimeFontSize = 2;
const dateFontSize = 3;
const smallFontSize = 2;
const yOffset = 23;
const width = g.getWidth();
const height = g.getHeight();
const xyCenter = width / 2 + 4;
const yposTime = 27 + yOffset;
const yposDate = 65 + yOffset + 12;
const yposCounter = 58 + yOffset + 35 + 40;
let count = 100;
function drawTimeText(d) {
const da = d.toString().split(" ");
// var dutc = getUTCTime(d);
const time = da[4].split(":");
const hours = time[0],
minutes = time[1],
seconds = time[2];
g.setColor(Arwes.C.color.primary.base);
g.setFont(font, timeFontSize);
g.drawString(`${hours}:${minutes}:${seconds}`, xyCenter, yposTime, true);
const unix = Math.round(d.getTime());
g.setFont(font, unixTimeFontSize);
g.setColor(Arwes.C.color.secondary.base);
g.drawString(`${unix}`, xyCenter, yposTime + 22, true);
g.setFont(font, smallFontSize);
}
function drawDateText(d) {
g.setColor(Arwes.C.color.primary.base);
g.setFont(font, dateFontSize);
g.drawString(`${d.getDate()}.${d.getMonth() + 1}.${d.getFullYear()}`, xyCenter, yposDate, true);
}
function drawCounterText() {
if (count > 255) count = 255;
if (count < 0) count = 0;
g.setColor("#000000");
g.fillRect(37, 58 + yOffset + 36, 203, 58 + 80 + yOffset + 34);
g.setFontAlign(0, 0);
g.setColor(Arwes.C.color.alert.base);
g.setFont(font, 8);
g.drawString(`${count}`, xyCenter, yposCounter, true);
}
function levelColor(l) {
// no icon -> brightest green to indicate charging, even when showing percentage
if (Bangle.isCharging()) return Arwes.C.color.success.base;
if (l >= 50) return Arwes.C.color.success.base;
if (l >= 15) return Arwes.C.color.secondary.dark;
return Arwes.C.color.alert.base;
}
function drawBattery() {
const l = E.getBattery(), c = levelColor(l);
count = l;
const xl = 45 + l * (194 - 46) / 100;
g.clearRect(46, 58 + 80 + yOffset + 37, 193, height - 5);
g.setColor(c).fillRect(46, 58 + 80 + yOffset + 37, xl, height - 5);
}
function updateCounter() {
drawBattery();
drawCounterText();
}
function drawClock() {
// main frame
Arwes.drawFrame(3, 10 + yOffset, width - 3, height - 3);
// time frame
Arwes.drawFrameBottomCorners(20, 10 + yOffset, 220, 58 + yOffset);
// date frame
Arwes.drawFrameBottomCorners(28, 58 + yOffset, 212, 58 + yOffset + 35);
// counter frame
Arwes.drawFrameBottomCorners(36, 58 + yOffset + 35, 204, 58 + 80 + yOffset + 35);
// battery frame
Arwes.drawFrameNoCorners(44, 58 + 80 + yOffset + 35, 196, height - 3);
updateCounter();
updateClock();
// const img = makeImg();
// g.drawImage(img,width/2-(img.width/2),height/2);
}
function updateClock() {
g.setFontAlign(0, 0);
const date = new Date();
drawTimeText(date);
drawDateText(date);
}
Bangle.on('lcdPower', function (on) {
if (on) drawClock();
});
g.clear();
Bangle.loadWidgets();
Bangle.drawWidgets();
drawClock();
setWatch(Bangle.showLauncher, BTN2, {repeat: false, edge: "falling"});
// setWatch(function () {
// count++;
// drawCounterText();
// }, BTN1, {repeat: true, edge: "falling"});
// setWatch(function () {
// count--;
// drawCounterText();
// }, BTN3, {repeat: true, edge: "falling"});
// refesh every 100 milliseconds
setInterval(updateClock, 500);
setInterval(updateCounter, 1000);