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} plotCanvas The canvas on which the line graph is | 8 * @param {HTMLCanvasElement} plotCanvas The canvas on which the line graph is |
9 * drawn. | 9 * drawn. |
10 * @param {HTMLCanvasElement} legendCanvas The canvas on which the legend for | 10 * @param {HTMLCanvasElement} legendCanvas The canvas on which the legend for |
11 * the line graph is drawn. | 11 * the line graph is drawn. |
12 * @param {Array.<number>} tData The time (in seconds) in the past when the | 12 * @param {Array<number>} tData The time (in seconds) in the past when the |
13 * corresponding data in plots was sampled. | 13 * corresponding data in plots was sampled. |
14 * @param {Array.<{data: Array.<number>, color: string}>} plots An | 14 * @param {Array<{data: Array<number>, color: string}>} plots An |
15 * array of plots to plot on the canvas. The field 'data' of a plot is an | 15 * array of plots to plot on the canvas. The field 'data' of a plot is an |
16 * array of samples to be plotted as a line graph with color speficied by | 16 * array of samples to be plotted as a line graph with color speficied by |
17 * the field 'color'. The elements in the 'data' array are ordered | 17 * the field 'color'. The elements in the 'data' array are ordered |
18 * corresponding to their sampling time in the argument 'tData'. Also, the | 18 * corresponding to their sampling time in the argument 'tData'. Also, the |
19 * number of elements in the 'data' array should be the same as in the time | 19 * number of elements in the 'data' array should be the same as in the time |
20 * array 'tData' above. | 20 * array 'tData' above. |
21 * @param {number} yMin Minimum bound of y-axis | 21 * @param {number} yMin Minimum bound of y-axis |
22 * @param {number} yMax Maximum bound of y-axis. | 22 * @param {number} yMax Maximum bound of y-axis. |
23 * @param {integer} yPrecision An integer value representing the number of | 23 * @param {integer} yPrecision An integer value representing the number of |
24 * digits of precision the y-axis data should be printed with. | 24 * digits of precision the y-axis data should be printed with. |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 var invalidDataText = loadTimeData.getString('invalidData'); | 390 var invalidDataText = loadTimeData.getString('invalidData'); |
391 var offlineText = loadTimeData.getString('offlineText'); | 391 var offlineText = loadTimeData.getString('offlineText'); |
392 | 392 |
393 var plotColors = ['Red', 'Blue', 'Green', 'Gold', 'CadetBlue', 'LightCoral', | 393 var plotColors = ['Red', 'Blue', 'Green', 'Gold', 'CadetBlue', 'LightCoral', |
394 'LightSlateGray', 'Peru', 'DarkRed', 'LawnGreen', 'Tan']; | 394 'LightSlateGray', 'Peru', 'DarkRed', 'LawnGreen', 'Tan']; |
395 | 395 |
396 /** | 396 /** |
397 * Add canvases for plotting to |plotsDiv|. For every header in |headerArray|, | 397 * Add canvases for plotting to |plotsDiv|. For every header in |headerArray|, |
398 * one canvas for the plot and one for its legend are added. | 398 * one canvas for the plot and one for its legend are added. |
399 * | 399 * |
400 * @param {Array.<string>} headerArray Headers for the different plots to be | 400 * @param {Array<string>} headerArray Headers for the different plots to be |
401 * added to |plotsDiv|. | 401 * added to |plotsDiv|. |
402 * @param {HTMLDivElement} plotsDiv The div element into which the canvases | 402 * @param {HTMLDivElement} plotsDiv The div element into which the canvases |
403 * are added. | 403 * are added. |
404 * @return {<string>: {plotCanvas: <HTMLCanvasElement>, | 404 * @return {<string>: {plotCanvas: <HTMLCanvasElement>, |
405 * legendCanvas: <HTMLCanvasElement>} Returns an object | 405 * legendCanvas: <HTMLCanvasElement>} Returns an object |
406 * with the headers as 'keys'. Each element is an object containing the | 406 * with the headers as 'keys'. Each element is an object containing the |
407 * legend canvas and the plot canvas that have been added to |plotsDiv|. | 407 * legend canvas and the plot canvas that have been added to |plotsDiv|. |
408 */ | 408 */ |
409 function addCanvases(headerArray, plotsDiv) { | 409 function addCanvases(headerArray, plotsDiv) { |
410 // Remove the contents before adding new ones. | 410 // Remove the contents before adding new ones. |
(...skipping 25 matching lines...) Expand all Loading... |
436 canvases[headerArray[i]] = {plot: plotCanvas, legend: legendCanvas}; | 436 canvases[headerArray[i]] = {plot: plotCanvas, legend: legendCanvas}; |
437 } | 437 } |
438 return canvases; | 438 return canvases; |
439 } | 439 } |
440 | 440 |
441 /** | 441 /** |
442 * Add samples in |sampleArray| to individual plots in |plots|. If the system | 442 * Add samples in |sampleArray| to individual plots in |plots|. If the system |
443 * resumed from a sleep/suspend, then "suspended" sleep samples are added to | 443 * resumed from a sleep/suspend, then "suspended" sleep samples are added to |
444 * the plot for the sleep duration. | 444 * the plot for the sleep duration. |
445 * | 445 * |
446 * @param {Array.<{data: Array.<number>, color: string}>} plots An | 446 * @param {Array<{data: Array<number>, color: string}>} plots An |
447 * array of plots to plot on the canvas. The field 'data' of a plot is an | 447 * array of plots to plot on the canvas. The field 'data' of a plot is an |
448 * array of samples to be plotted as a line graph with color speficied by | 448 * array of samples to be plotted as a line graph with color speficied by |
449 * the field 'color'. The elements in the 'data' array are ordered | 449 * the field 'color'. The elements in the 'data' array are ordered |
450 * corresponding to their sampling time in the argument 'tData'. Also, the | 450 * corresponding to their sampling time in the argument 'tData'. Also, the |
451 * number of elements in the 'data' array should be the same as in the time | 451 * number of elements in the 'data' array should be the same as in the time |
452 * array 'tData' below. | 452 * array 'tData' below. |
453 * @param {Array.<number>} tData The time (in seconds) in the past when the | 453 * @param {Array<number>} tData The time (in seconds) in the past when the |
454 * corresponding data in plots was sampled. | 454 * corresponding data in plots was sampled. |
455 * @param {Array.<number>} sampleArray The array of samples wherein each | 455 * @param {Array<number>} absTime |
| 456 * @param {Array<number>} sampleArray The array of samples wherein each |
456 * element corresponds to the individual plot in |plots|. | 457 * element corresponds to the individual plot in |plots|. |
457 * @param {number} sampleTime Time in milliseconds since the epoch when the | 458 * @param {number} sampleTime Time in milliseconds since the epoch when the |
458 * samples in |sampleArray| were captured. | 459 * samples in |sampleArray| were captured. |
459 * @param {number} previousSampleTime Time in milliseconds since the epoch | 460 * @param {number} previousSampleTime Time in milliseconds since the epoch |
460 * when the sample prior to the current sample was captured. | 461 * when the sample prior to the current sample was captured. |
461 * @param {Array.<{time: number, sleepDuration: number}>} systemResumedArray An | 462 * @param {Array<{time: number, sleepDuration: number}>} systemResumedArray An |
462 * array objects corresponding to system resume events. The 'time' field is | 463 * array objects corresponding to system resume events. The 'time' field is |
463 * for the time in milliseconds since the epoch when the system resumed. The | 464 * for the time in milliseconds since the epoch when the system resumed. The |
464 * 'sleepDuration' field is for the time in milliseconds the system spent | 465 * 'sleepDuration' field is for the time in milliseconds the system spent |
465 * in sleep/suspend state. | 466 * in sleep/suspend state. |
466 */ | 467 */ |
467 function addTimeDataSample(plots, tData, absTime, sampleArray, | 468 function addTimeDataSample(plots, tData, absTime, sampleArray, |
468 sampleTime, previousSampleTime, | 469 sampleTime, previousSampleTime, |
469 systemResumedArray) { | 470 systemResumedArray) { |
470 for (var i = 0; i < plots.length; i++) { | 471 for (var i = 0; i < plots.length; i++) { |
471 if (plots[i].data.length != tData.length) { | 472 if (plots[i].data.length != tData.length) { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 absTime.push(sampleTime); | 513 absTime.push(sampleTime); |
513 tData.push(time.toLocaleTimeString()); | 514 tData.push(time.toLocaleTimeString()); |
514 for (var i = 0; i < plots.length; i++) { | 515 for (var i = 0; i < plots.length; i++) { |
515 plots[i].data.push(sampleArray[i]); | 516 plots[i].data.push(sampleArray[i]); |
516 } | 517 } |
517 } | 518 } |
518 | 519 |
519 /** | 520 /** |
520 * Display the battery charge vs time on a line graph. | 521 * Display the battery charge vs time on a line graph. |
521 * | 522 * |
522 * @param {Array.<{time: number, | 523 * @param {Array<{time: number, |
523 * batteryPercent: number, | 524 * batteryPercent: number, |
524 * batteryDischargeRate: number, | 525 * batteryDischargeRate: number, |
525 * externalPower: number}>} powerSupplyArray An array of objects | 526 * externalPower: number}>} powerSupplyArray An array of objects |
526 * with fields representing the battery charge, time when the charge | 527 * with fields representing the battery charge, time when the charge |
527 * measurement was taken, and whether there was external power connected at | 528 * measurement was taken, and whether there was external power connected at |
528 * that time. | 529 * that time. |
529 * @param {Array.<{time: ?, sleepDuration: ?}>} systemResumedArray An array | 530 * @param {Array<{time: ?, sleepDuration: ?}>} systemResumedArray An array |
530 * objects with fields 'time' and 'sleepDuration'. Each object corresponds | 531 * objects with fields 'time' and 'sleepDuration'. Each object corresponds |
531 * to a system resume event. The 'time' field is for the time in | 532 * to a system resume event. The 'time' field is for the time in |
532 * milliseconds since the epoch when the system resumed. The 'sleepDuration' | 533 * milliseconds since the epoch when the system resumed. The 'sleepDuration' |
533 * field is for the time in milliseconds the system spent in sleep/suspend | 534 * field is for the time in milliseconds the system spent in sleep/suspend |
534 * state. | 535 * state. |
535 */ | 536 */ |
536 function showBatteryChargeData(powerSupplyArray, systemResumedArray) { | 537 function showBatteryChargeData(powerSupplyArray, systemResumedArray) { |
537 var chargeTimeData = []; | 538 var chargeTimeData = []; |
538 var chargeAbsTime = []; | 539 var chargeAbsTime = []; |
539 var chargePlot = [ | 540 var chargePlot = [ |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
642 dischargeRatePlot, | 643 dischargeRatePlot, |
643 minDischargeRate, | 644 minDischargeRate, |
644 maxDischargeRate, | 645 maxDischargeRate, |
645 3); | 646 3); |
646 } | 647 } |
647 | 648 |
648 /** | 649 /** |
649 * Shows state occupancy data (CPU idle or CPU freq state occupancy) on a set of | 650 * Shows state occupancy data (CPU idle or CPU freq state occupancy) on a set of |
650 * plots on the about:power UI. | 651 * plots on the about:power UI. |
651 * | 652 * |
652 * @param {Array.<{Array.<{ | 653 * @param {Array<Array<{ |
653 * time: number, | 654 * time: number, |
654 * cpuOnline:boolean, | 655 * cpuOnline: boolean, |
655 * timeInState: {<string>: number}>}>} timeInStateData Array of arrays | 656 * timeInState: Object<number>}>} timeInStateData Array of arrays |
656 * where each array corresponds to a CPU on the system. The elements of the | 657 * where each array corresponds to a CPU on the system. The elements of the |
657 * individual arrays contain state occupancy samples. | 658 * individual arrays contain state occupancy samples. |
658 * @param {Array.<{time: ?, sleepDuration: ?}>} systemResumedArray An array | 659 * @param {Array<{time: ?, sleepDuration: ?}>} systemResumedArray An array |
659 * objects with fields 'time' and 'sleepDuration'. Each object corresponds | 660 * objects with fields 'time' and 'sleepDuration'. Each object corresponds |
660 * to a system resume event. The 'time' field is for the time in | 661 * to a system resume event. The 'time' field is for the time in |
661 * milliseconds since the epoch when the system resumed. The 'sleepDuration' | 662 * milliseconds since the epoch when the system resumed. The 'sleepDuration' |
662 * field is for the time in milliseconds the system spent in sleep/suspend | 663 * field is for the time in milliseconds the system spent in sleep/suspend |
663 * state. | 664 * state. |
664 * @param {string} i18nHeaderString The header string to be displayed with each | 665 * @param {string} i18nHeaderString The header string to be displayed with each |
665 * plot. For example, CPU idle data will have its own header format, and CPU | 666 * plot. For example, CPU idle data will have its own header format, and CPU |
666 * freq data will have its header format. | 667 * freq data will have its header format. |
667 * @param {string} unitString This is the string capturing the unit, if any, | 668 * @param {string} unitString This is the string capturing the unit, if any, |
668 * for the different states. Note that this is not the unit of the data | 669 * for the different states. Note that this is not the unit of the data |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
856 $('cpu-idle-section').hidden = true; | 857 $('cpu-idle-section').hidden = true; |
857 $('cpu-idle-show-button').onclick = showHideCallback( | 858 $('cpu-idle-show-button').onclick = showHideCallback( |
858 'cpu-idle-section', 'cpu-idle-show-button', requestCpuIdleData); | 859 'cpu-idle-section', 'cpu-idle-show-button', requestCpuIdleData); |
859 $('cpu-idle-reload-button').onclick = requestCpuIdleData; | 860 $('cpu-idle-reload-button').onclick = requestCpuIdleData; |
860 | 861 |
861 $('cpu-freq-section').hidden = true; | 862 $('cpu-freq-section').hidden = true; |
862 $('cpu-freq-show-button').onclick = showHideCallback( | 863 $('cpu-freq-show-button').onclick = showHideCallback( |
863 'cpu-freq-section', 'cpu-freq-show-button', requestCpuFreqData); | 864 'cpu-freq-section', 'cpu-freq-show-button', requestCpuFreqData); |
864 $('cpu-freq-reload-button').onclick = requestCpuFreqData; | 865 $('cpu-freq-reload-button').onclick = requestCpuFreqData; |
865 }); | 866 }); |
OLD | NEW |