1 // Display the battery status
3 // dragorn@kismetwireless.net
4 // MIT/GPL License (pick one); the web ui code is licensed more
5 // freely than GPL to reflect the generally MIT-licensed nature
6 // of the web/jquery environment
10 var local_uri_prefix = "";
11 if (typeof(KISMET_URI_PREFIX) !== 'undefined')
12 local_uri_prefix = KISMET_URI_PREFIX;
18 var options = base_options;
28 var batinfo_refresh = function(data) {
29 data = kismet.sanitizeObject(data);
31 baticon.removeClass("fa-refresh");
32 baticon.removeClass("fa-spin");
33 baticon.removeClass("fa-battery-0");
34 baticon.removeClass("fa-battery-1");
35 baticon.removeClass("fa-battery-2");
36 baticon.removeClass("fa-battery-3");
37 baticon.removeClass("fa-battery-4");
38 baticon.removeClass("fa-plug");
40 var p = data['kismet.system.battery.percentage'];
41 var c = data['kismet.system.battery.charging'];
42 var a = data['kismet.system.battery.ac'];
44 if (c === 'charging') {
45 timetext.text("Charging " + p + "% ");
49 batoverlay.addClass("battery-blink");
52 baticon.addClass("fa-battery-0");
54 baticon.addClass("fa-battery-1");
56 baticon.addClass("fa-battery-2");
58 baticon.addClass("fa-battery-3");
60 baticon.addClass("fa-battery-4");
61 } else if (c === 'discharging') {
65 baticon.addClass("fa-battery-0");
67 baticon.addClass("fa-battery-1");
69 baticon.addClass("fa-battery-2");
71 baticon.addClass("fa-battery-3");
73 baticon.addClass("fa-battery-4");
75 var s = data['kismet.system.battery.remaining'];
78 var h = Math.floor(s / 3600);
80 var m = Math.floor(s / 60);
86 timetext.text(p + "% " + h + "h " + m + "m");
88 timetext.text(p + "%");
92 } else if (a == 1 && p == 0) {
94 baticon.addClass("fa-plug");
96 } else if (c === 'charged') {
98 batoverlay.removeClass("battery-blink")
99 baticon.addClass("fa-battery-4");
100 timetext.text("Charged");
103 timetext.text("Unknown");
105 baticon.addClass("fa-battery-0");
111 $.fn.battery = function(data, inopt) {
114 options = $.extend(base_options, inopt);
116 // Build the text and hide it
117 timetext = $('span.battime', this);
118 if (timetext.length == 0) {
119 timetext = $('<span>', {
123 element.append(timetext);
127 // Build the icon, set as a spinner first
128 var batholder = $('span.batholder-stack', this);
130 if (batholder.length == 0) {
131 batholder = $('<span>', {
132 class: "fa-stack batholder-stack"
136 class: "batpower fa fa-stack-1x fa-refresh fa-spin",
139 batholder.append(baticon);
141 batoverlay = $('<i>', {
142 class: "batpoweroverlay fa fa-stack-1x fa-bolt fa-inverse"
144 batholder.append(batoverlay);
147 element.append(batholder);
150 $.get(local_uri_prefix + "system/status.json")
151 .done(function(data) {
152 batinfo_refresh(data);
155 kismet_ui_base.SubscribeEventbus("BATTERY", [], function(data) {
156 batinfo_refresh(data);