1
0
Fork 0

Add Swatch Internet Time widget (widswatchbeats)

master
Nick Breland 2023-06-13 22:02:03 +01:00
parent 57f01d2951
commit 07d8e1078c
3 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,18 @@
{
"id": "widswatchbeats",
"name": "Swatch Internet Time",
"icon": "widget.png",
"version": "0.01",
"description": "Displays the current .beat (Swatch Internet Time)",
"tags": "time,swatch,internet,beat,.beat,clock",
"storage": [{
"name": "widswatchbeats.wid.js",
"url": "widget.js"
},
{
"name": "widswatchbeats.img",
"url": "widget-icon.js",
"evaluate": true
}
]
}

View File

@ -0,0 +1 @@
require("heatshrink").decompress(atob("7FUwcB/4A/AH4A/AH4A/AH4A/AH4A/AAWAgAACj5F/ABP8J4cAgZG/KH4AD+A5Eh5Q/KH5Q/KH5Q/KH5Q/KH5Q/KH5Q/KH5Q/KH5Q/KH5Q18BWNC4p6bKD34AwcBCxAOEAAV/CKAjG4AOGEZhQK/wbFn4VGBwxiKCJEAg4ONKCy/FFgoACwA+NCJkAj5QqgAULCK8DKEaAHPoYAB8AuKCKJQjHxwRRKBZBDKFB9DKBoRRgEPKF/4CRgvDCJpQrDonAKH5QVn//+BQOg4RGKEk/8BQOgI1HHwQROBBBQaGoWAPpoILKBAIJAAKtIABpQGMoRQRHwoIRKEwgIKH5QfdJBQrgYJCI5ApFMQRQ/KDQAIKH5Q/FgpQaEZBQ/AA4aFKGoAIKBXgCJZQ/EA5Q/KBKeGKH4+HTxBQ/Hw+AKH4+OEwpQ/HxSzSKHEAn5QJgPAKH5QG/AKGv5Q6v4lLI4gABBAxQ/KBCqCKH4AGDRBQX5MkyVJAQRQuHYZQ/KH5Q/KCYgCKBI+HKH5QQHZJQrEBBQ/Hw4gIcCJQ/KH4XGwBQWCJYIFKEqqJHxxHLIgpQLBYpQRgEHA4xQCa5BQOgE/YoxQLGQpQSDpRQFHwQyFWZAAIKFcDCYf4MR5Q/KBgRDKHUfFYhiQ4BQSMpBQTjhQZCIhQInBQvFQn/8BQKCAn4KF8fwAbFg5QFCgoRKKA8BBAs/Cgi2HKCnwDYopFAAIOGCJINGh5QLMo5QUX4rLFZxcPCAwmFgZEGMppQC/JQJ/7sEj4pFHw59IIIIAHEwxEFKAxlFKAYAT8AvEABJBDHAwAE4AONAH4A/AH4A/AH4A/AEH4IH5QQA="))

View File

@ -0,0 +1,41 @@
(function() {
const WIDTH = 50;
const SEC_PER_BEAT = 86.4;
let drawTimeout;
function getSecondsSinceMidnight() {
const now = new Date();
return now.getHours() * 3600 + now.getMinutes() * 60 + now.getSeconds();
}
function queueDraw() {
if (drawTimeout) clearTimeout(drawTimeout);
const nextSecond = SEC_PER_BEAT - (getSecondsSinceMidnight() % SEC_PER_BEAT);
drawTimeout = setTimeout(function() {
drawTimeout = undefined;
WIDGETS.widswatchbeats.draw();
}, nextSecond * 1000 + 1); // Add one ms to ensure we're past the beat
}
function draw() {
const now = new Date();
const seconds = now.getHours() * 3600 + now.getMinutes() * 60 + now.getSeconds();
const beats = Math.floor(seconds / SEC_PER_BEAT);
const beatsString = '@' + beats.toString().padStart(3, '0');
g.reset();
g.setFontAlign(0, 0);
g.clearRect(this.x, this.y, this.x + WIDTH, this.y+22);
g.setFont("6x8", 2);
g.drawString(beatsString, this.x+WIDTH/2, this.y+12);
queueDraw();
}
WIDGETS.widswatchbeats = {
area: "tl",
width: WIDTH,
draw
};
})();