summaryrefslogtreecommitdiff
path: root/status-battery.js
diff options
context:
space:
mode:
Diffstat (limited to 'status-battery.js')
-rw-r--r--status-battery.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/status-battery.js b/status-battery.js
new file mode 100644
index 0000000..3a209bf
--- /dev/null
+++ b/status-battery.js
@@ -0,0 +1,77 @@
+global.lastKnownBattery = {
+ name: "Unknown",
+ description: "Unknown",
+ time: ""
+}
+
+let getBatteryRemainingTime = async () => {
+ let battery = await navigator.getBattery();
+
+ let time = 0;
+ if (battery.charging) {
+ time = battery.chargingTime;
+ } else {
+ time = battery.dischargingTime;
+ }
+
+ if (time === Infinity) {
+ return "Calculating...";
+ } else {
+ if (time > 60) {
+ if (time > 60**2) {
+ if (time > 60**3) {
+ return "About " + Math.round(time / 60**3) + " day" + (Math.round(time / 60**3) > 1 ? "s" : "") + (battery.charging ? " before charged" : " remaining");
+ } else {
+ return "About " + Math.round(time / 60**2) + " hour" + (Math.round(time / 60**2) > 1 ? "s" : "") + (battery.charging ? " before charged" : " remaining");
+ }
+ } else {
+ return "About " + Math.round(time / 60) + " minute" + (Math.round(time / 60) > 1 ? "s" : "") + (battery.charging ? " before charged" : " remaining");
+ }
+ } else {
+ return "About " + Math.round(time) + " second" + (time > 1 ? "s" : "") + (battery.charging ? " before charged" : " remaining");
+ }
+ }
+}
+
+let updateBattery = async () => {
+ let battery = await navigator.getBattery();
+
+ global.lastKnownBattery.name = "Battery: " + Math.round(battery.level * 100) + "%";
+ global.lastKnownBattery.time = await getBatteryRemainingTime();
+ if (battery.level <= 0.01) {
+ global.lastKnownBattery.description = "Critically low" + (battery.charging ? ", charging" : ", discharging");
+ document.getElementById("statusbar-battery-icon").src = "./icons/battery-000-001" + (battery.charging ? "-charging" : "") + ".svg";
+ } else if (battery.level > 0.01 && battery.level <= 0.1) {
+ global.lastKnownBattery.description = "Very low" + (battery.charging ? ", charging" : ", discharging");
+ document.getElementById("statusbar-battery-icon").src = "./icons/battery-001-010" + (battery.charging ? "-charging" : "") + ".svg";
+ } else if (battery.level > 0.1 && battery.level <= 0.2) {
+ global.lastKnownBattery.description = "Low battery" + (battery.charging ? ", charging" : ", discharging");
+ document.getElementById("statusbar-battery-icon").src = "./icons/battery-010-020" + (battery.charging ? "-charging" : "") + ".svg";
+ } else if (battery.level > 0.2 && battery.level <= 0.35) {
+ global.lastKnownBattery.description = (battery.charging ? "Charging" : "Discharging");
+ document.getElementById("statusbar-battery-icon").src = "./icons/battery-020-035" + (battery.charging ? "-charging" : "") + ".svg";
+ } else if (battery.level > 0.35 && battery.level <= 0.5) {
+ global.lastKnownBattery.description = (battery.charging ? "Charging" : "Discharging");
+ document.getElementById("statusbar-battery-icon").src = "./icons/battery-035-050" + (battery.charging ? "-charging" : "") + ".svg";
+ } else if (battery.level > 0.5 && battery.level <= 0.6) {
+ global.lastKnownBattery.description = (battery.charging ? "Charging" : "Discharging");
+ document.getElementById("statusbar-battery-icon").src = "./icons/battery-050-060" + (battery.charging ? "-charging" : "") + ".svg";
+ } else if (battery.level > 0.6 && battery.level <= 0.8) {
+ global.lastKnownBattery.description = (battery.charging ? "Charging" : "Discharging");
+ document.getElementById("statusbar-battery-icon").src = "./icons/battery-060-080" + (battery.charging ? "-charging" : "") + ".svg";
+ } else if (battery.level > 0.8 && battery.level <= 0.95) {
+ global.lastKnownBattery.description = (battery.charging ? "Charging" : "Discharging");
+ document.getElementById("statusbar-battery-icon").src = "./icons/battery-080-095" + (battery.charging ? "-charging" : "") + ".svg";
+ } else if (battery.level > 0.95 && battery.level <= 1) {
+ global.lastKnownBattery.description = (battery.charging ? "Charged" : "Discharging");
+ document.getElementById("statusbar-battery-icon").src = "./icons/battery-095-100" + (battery.charging ? "-charging" : "") + ".svg";
+ } else {
+ global.lastKnownBattery.description = "Unknown";
+ document.getElementById("statusbar-battery-icon").src = "./icons/battery-unknown.svg";
+ }
+}
+
+(async () => {
+ setInterval(updateBattery, 10000)
+ await updateBattery();
+})() \ No newline at end of file