summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-mod-battstatus/htdocs
diff options
context:
space:
mode:
Diffstat (limited to 'modules/luci-mod-battstatus/htdocs')
-rwxr-xr-xmodules/luci-mod-battstatus/htdocs/luci-static/resources/preload/battstatus.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/modules/luci-mod-battstatus/htdocs/luci-static/resources/preload/battstatus.js b/modules/luci-mod-battstatus/htdocs/luci-static/resources/preload/battstatus.js
new file mode 100755
index 0000000000..d895c36bbd
--- /dev/null
+++ b/modules/luci-mod-battstatus/htdocs/luci-static/resources/preload/battstatus.js
@@ -0,0 +1,55 @@
+'use strict';
+'require ui';
+'require rpc';
+'require poll';
+'require baseclass';
+
+var callBatteryStatus = rpc.declare({
+ object: 'luci.battstatus',
+ method: 'getBatteryStatus',
+ expect: { '': {} }
+});
+
+var devices = {};
+
+return baseclass.extend({
+ __init__: function() {
+ this.updateIndicator();
+ poll.add(L.bind(this.updateIndicator, this), 5);
+ },
+
+ updateIndicator: function() {
+ return callBatteryStatus().then(L.bind(function(devs) {
+ for (var dev in devs) {
+ var info = devs[dev];
+ if (info.valid) {
+ info.status = (info.charging ? _('Charging') : _('Not Charging')) + ": " + info.percentage + "%";
+ info.state = "active";
+ if (info.percentage <= 20)
+ info.color = "Red";
+ else if (info.percentage <= 30)
+ info.color = "GoldenRod";
+ } else {
+ info.status = info.message;
+ info.state = "inactive";
+ }
+
+ info.name = "battery-" + dev.replace(" ", "-");
+ ui.showIndicator(info.name, info.status, null, info.state);
+ if (typeof info.color != 'undefined') {
+ info.element = document.querySelector(`[data-indicator="${info.name}"]`);
+ info.element.innerHTML = `<span style="color:${info.color}">${info.status}</span>`;
+ }
+
+ devices[dev] = info;
+ }
+
+ for (var dev in devices) {
+ if (!devs.hasOwnProperty(dev)) {
+ ui.hideIndicator('battery-%s'.format(dev));
+ delete devices[dev];
+ }
+ }
+ }, this));
+ }
+});