diff options
Diffstat (limited to 'modules/luci-mod-battstatus/htdocs')
-rwxr-xr-x | modules/luci-mod-battstatus/htdocs/luci-static/resources/preload/battstatus.js | 55 |
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)); + } +}); |