OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * Plot a line graph of data versus time on a HTML canvas element. | 6 * Plot a line graph of data versus time on a HTML canvas element. |
7 * | 7 * |
8 * @param {HTMLCanvasElement} canvas The canvas on which the line graph is | 8 * @param {HTMLCanvasElement} canvas The canvas on which the line graph is |
9 * drawn. | 9 * drawn. |
10 * @param {Array.<number>} tData The time (in seconds) in the past when the | 10 * @param {Array.<number>} tData The time (in seconds) in the past when the |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 } | 229 } |
230 | 230 |
231 /** | 231 /** |
232 * Display the battery charge vs time on a line graph. | 232 * Display the battery charge vs time on a line graph. |
233 * | 233 * |
234 * @param {Array.<Object>} powerSupplyArray An array of objects with fields | 234 * @param {Array.<Object>} powerSupplyArray An array of objects with fields |
235 * representing the battery charge, time when the charge measurement was | 235 * representing the battery charge, time when the charge measurement was |
236 * taken, and whether there was external power connected at that time. | 236 * taken, and whether there was external power connected at that time. |
237 */ | 237 */ |
238 function showBatteryChargeData(powerSupplyArray) { | 238 function showBatteryChargeData(powerSupplyArray) { |
239 var canvas = $('battery-charge-canvas'); | |
240 var tData = []; | 239 var tData = []; |
241 var plot = []; | 240 var chargePlot = [ |
| 241 { |
| 242 color: '#0000FF', |
| 243 data: [] |
| 244 } |
| 245 ]; |
| 246 var dischargeRatePlot = [ |
| 247 { |
| 248 color: '#FF0000', |
| 249 data: [] |
| 250 } |
| 251 ]; |
| 252 var minDischargeRate = 1000; // A high unrealistic number to begin with. |
| 253 var maxDischargeRate = -1000; // A low unrealistic number to begin with. |
242 for (var i = 0; i < powerSupplyArray.length; i++) { | 254 for (var i = 0; i < powerSupplyArray.length; i++) { |
243 var time = new Date(powerSupplyArray[i].time); | 255 var time = new Date(powerSupplyArray[i].time); |
244 tData[i] = time.toLocaleTimeString(); | 256 tData[i] = time.toLocaleTimeString(); |
245 plot[i] = powerSupplyArray[i].battery_percent; | 257 |
| 258 chargePlot[0].data[i] = powerSupplyArray[i].battery_percent; |
| 259 |
| 260 var dischargeRate = powerSupplyArray[i].battery_discharge_rate; |
| 261 dischargeRatePlot[0].data[i] = dischargeRate; |
| 262 minDischargeRate = Math.min(dischargeRate, minDischargeRate); |
| 263 maxDischargeRate = Math.max(dischargeRate, maxDischargeRate); |
| 264 } |
| 265 if (minDischargeRate == maxDischargeRate) { |
| 266 // This means that all the samples had the same value. Hence, offset the |
| 267 // extremes by a bit so that the plot looks good. |
| 268 minDischargeRate -= 1; |
| 269 maxDischargeRate += 1; |
246 } | 270 } |
247 | 271 |
248 var plots = [ | 272 var chargeCanvas = $('battery-charge-percentage-canvas'); |
249 { | 273 var dischargeRateCanvas = $('battery-discharge-rate-canvas'); |
250 color: '#0000FF', | 274 plotLineGraph(chargeCanvas, tData, chargePlot, 0.00, 100.00, 3); |
251 data: plot | 275 plotLineGraph(dischargeRateCanvas, |
252 } | 276 tData, |
253 ]; | 277 dischargeRatePlot, |
254 plotLineGraph(canvas, tData, plots, 0.00, 100.00, 3); | 278 minDischargeRate, |
| 279 maxDischargeRate, |
| 280 3); |
255 } | 281 } |
256 | 282 |
257 function requestBatteryChargeData() { | 283 function requestBatteryChargeData() { |
258 chrome.send('requestBatteryChargeData'); | 284 chrome.send('requestBatteryChargeData'); |
259 } | 285 } |
260 | 286 |
261 var powerUI = { | 287 var powerUI = { |
262 showBatteryChargeData: showBatteryChargeData | 288 showBatteryChargeData: showBatteryChargeData |
263 }; | 289 }; |
264 | 290 |
265 document.addEventListener('DOMContentLoaded', function() { | 291 document.addEventListener('DOMContentLoaded', function() { |
266 requestBatteryChargeData(); | 292 requestBatteryChargeData(); |
267 $('battery-charge-reload-button').onclick = requestBatteryChargeData; | 293 $('battery-charge-reload-button').onclick = requestBatteryChargeData; |
268 }); | 294 }); |
OLD | NEW |