forked from senthil090/battery-pwa
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
84 lines (73 loc) · 2.16 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
(function(){
document.addEventListener('DOMContentLoaded',function(){
var level = document.getElementById('level');
var charging = document.getElementById('charging');
var discharging = document.getElementById('discharging');
var filler = document.getElementById('filler');
var stopColors = document.getElementsByClassName('stop-color');
var fillColors = document.getElementsByClassName('fill');
var strokeColors = document.getElementsByClassName('stroke');
var safeTheme = ['#27f4b9','#29f4bc'];
var dangerTheme = ['#e7342d','#e05824'];
var initFiller = 150;
function monitorBattery(battery){
console.log(battery);
battery.onchargingchange = batteryUI.bind(null,battery);
battery.onchargingtimechange = batteryUI.bind(null,battery);
battery.ondischargingtimechange = batteryUI.bind(null,battery);
battery.onlevelchange = batteryUI.bind(null,battery);
batteryUI(battery);
}
if(navigator.getBattery){
navigator.getBattery().then(monitorBattery);
}
function batteryUI(battery){
var theme;
var diff;
if(battery.level > .3){
theme = safeTheme;
}else{
theme = dangerTheme;
}
for(var i=0;i<stopColors.length;i++){
stopColors[i].setAttribute("stop-color",theme[0]);
}
for(var i=0;i<fillColors.length;i++){
fillColors[i].setAttribute("fill",theme[1]);
}
for(var i=0;i<strokeColors.length;i++){
strokeColors[i].setAttribute("stroke",theme[1]);
}
diff = (1 - battery.level)*200;
filler.setAttribute('cy',initFiller+diff);
level.innerHTML = ceil(battery.level * 100) ;
charging.innerHTML = timeCalculator(battery.chargingTime);
discharging.innerHTML = timeCalculator(battery.dischargingTime);
}
function timeCalculator(seconds){
if(seconds === Infinity) {
return '∞';
}
var minutes = seconds / 60;
if(minutes > 60){
return floor(minutes/60) + 'hr+'
}else{
return ceil(minutes) + 'm';
}
}
function ceil(num){
return Math.ceil(num);
}
function floor(num){
return Math.floor(num);
}
});
/**
* Service Worker initialization
*/
if(navigator.serviceWorker){
navigator.serviceWorker.register('./service-worker.js').then(function(){
console.log('Service Worker Registered')
});
}
})();