Index: chrome/common/extensions/docs/examples/extensions/benchmark/options.js |
diff --git a/chrome/common/extensions/docs/examples/extensions/benchmark/options.js b/chrome/common/extensions/docs/examples/extensions/benchmark/options.js |
deleted file mode 100644 |
index 674e1d9a3235fca9cf5cec6ae974955c9ef42306..0000000000000000000000000000000000000000 |
--- a/chrome/common/extensions/docs/examples/extensions/benchmark/options.js |
+++ /dev/null |
@@ -1,751 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-var max_sample = 0; |
- |
-Array.max = function(array) { |
- return Math.max.apply( Math, array ); |
-} |
- |
-Array.min = function(array) { |
- return Math.min.apply( Math, array ); |
-}; |
- |
-// Compute the average of an array, removing the min/max. |
-Array.avg = function(array) { |
- var count = array.length; |
- var sum = 0; |
- var min = array[0]; |
- var max = array[0]; |
- for (var i = 0; i < count; i++) { |
- sum += array[i]; |
- if (array[i] < min) { |
- min = array[i]; |
- } |
- if (array[i] > max) { |
- max = array[i]; |
- } |
- } |
- if (count >= 3) { |
- sum = sum - min - max; |
- count -= 2; |
- } |
- return sum / count; |
-} |
- |
-// Compute the sample standard deviation of an array |
-Array.stddev = function(array) { |
- var count = array.length; |
- var mean = 0; |
- for (var i = 0; i < count; i++) { |
- mean += array[i]; |
- } |
- mean /= count; |
- var variance = 0; |
- for (var i = 0; i < count; i++) { |
- var deviation = mean - array[i]; |
- variance = variance + deviation * deviation; |
- } |
- variance = variance / (count - 1); |
- return Math.sqrt(variance); |
-} |
- |
-function handleFileSelect(evt) { |
- var files = evt.target.files; |
- for (var i = 0, f; f = files[i]; i++) { |
- var reader = new FileReader(); |
- reader.onload = function(evt) { |
- document.getElementById("testurl").value = evt.target.result; |
- } |
- reader.readAsText(f); |
- }; |
-} |
- |
-var THTAG = "th"; |
-var TDTAG = "td"; |
-var NONE_DISPLAY = "none"; |
-var CELL_DISPLAY = "table-cell"; |
-var BRIEF_VIEW = "Show More Details"; |
-var FULL_VIEW = "Hide Details"; |
- |
-// Expand or shrink the result table. |
-// Called when clicking button "Show More Details/Hide Details". |
-function expand() { |
- if (document.getElementById("expand").value == BRIEF_VIEW) { |
- // From biref view to detailed view. |
- var headers = document.getElementsByTagName(THTAG); |
- var cells = document.getElementsByTagName(TDTAG); |
- |
- // Display the hidden metrics (both headers and data cells). |
- for (var i = 0; i < headers.length; i++) { |
- if (headers[i].style.display == NONE_DISPLAY) { |
- headers[i].style.display = CELL_DISPLAY; |
- } |
- } |
- |
- for (i = 0; i < cells.length; i++) { |
- if (cells[i].style.display == NONE_DISPLAY) { |
- cells[i].style.display = CELL_DISPLAY; |
- } |
- } |
- |
- document.getElementById("expand").value = FULL_VIEW; |
- } else { |
- // From detailed view to brief view. |
- var headers = document.getElementsByTagName(THTAG); |
- var cells = document.getElementsByTagName(TDTAG); |
- |
- // Hide some metrics. |
- for (var i = 0; i < headers.length; i++) { |
- if (headers[i].style.display == CELL_DISPLAY) { |
- headers[i].style.display = NONE_DISPLAY; |
- } |
- } |
- |
- for (i = 0; i < cells.length; i++) { |
- if (cells[i].style.display == CELL_DISPLAY) { |
- cells[i].style.display = NONE_DISPLAY; |
- } |
- } |
- |
- document.getElementById("expand").value = BRIEF_VIEW; |
- } |
- |
- // Use cookie to store current expand/hide status. |
- var lastValue = document.getElementById("expand").value; |
- document.cookie = "lastValue=" + lastValue; |
-} |
- |
-// Reloading the page causes table to shrink (default original status). |
-// Cookie remembers last status of table (in terms of expanded or shrunk). |
-function restoreTable() { |
- if (document.cookie == "lastValue=Hide Details") { |
- var headers = document.getElementsByTagName(THTAG); |
- var cells = document.getElementsByTagName(TDTAG); |
- |
- for (var i = 0; i < headers.length; i++) { |
- if (headers[i].style.display == NONE_DISPLAY) { |
- headers[i].style.display = CELL_DISPLAY; |
- } |
- } |
- for (i = 0; i < cells.length; i++) { |
- if (cells[i].style.display == NONE_DISPLAY) { |
- cells[i].style.display = CELL_DISPLAY; |
- } |
- } |
- document.getElementById("expand").value = FULL_VIEW; |
- } |
-} |
- |
-// A class to store the data to plot. |
-function PData() { |
- this.xAxis = "Iteration(s)"; |
- this.yAxis = ""; |
- this.A = []; // Two data sets for comparison. |
- this.B = []; |
- this.avgA = []; // Avg value is plotted as a line. |
- this.avgB = []; |
- this.maxA = 0; |
- this.maxB = 0; |
- this.countA = 0; // Size of the data sets. |
- this.countB = 0; |
- |
- this.setYAxis = function(str) { |
- this.yAxis = str; |
- } |
- |
- this.setAvg = function(arr, cha) { |
- if (cha == 'A') { |
- var avgA = Array.avg(arr); |
- for (var i = 1; i <= this.countA; i++) { |
- this.avgA.push([i, avgA]); |
- } |
- } else if (cha == 'B') { |
- var avgB = Array.avg(arr); |
- for (var i = 1; i <= this.countB; i++) { |
- this.avgB.push([i, avgB]); |
- } |
- } |
- } |
- |
- this.setMax = function(arr, cha) { |
- if (cha == 'A') { |
- this.maxA = Array.max(arr); |
- } else if (cha == 'B') { |
- this.maxB = Array.max(arr); |
- } |
- } |
- |
- // Add an entry to the array. |
- this.addArr = function(val, cha) { |
- if (cha == 'A') { |
- this.countA++; |
- this.A.push([this.countA, val]); |
- } else if (cha == 'B') { |
- this.countB++; |
- this.B.push([this.countB, val]); |
- } |
- } |
- |
- // Plot the graph at the specified place. |
- this.plot = function(placeholder) { |
- $.plot(placeholder, |
- [// Line A |
- { |
- data: this.A, |
- label: "A's " + this.yAxis + " in " + this.countA + " " + this.xAxis, |
- points: { |
- show: true |
- }, |
- lines: { |
- show: true |
- } |
- }, |
- |
- // Line B |
- { |
- data: this.B, |
- label: "B's " + this.yAxis + " in " + this.countB + " " + this.xAxis, |
- points: { |
- show: true |
- }, |
- lines: { |
- show: true |
- } |
- }, |
- |
- // Line avgA |
- { |
- data: this.avgA, |
- label: "A's avg " + this.yAxis, |
- dashes: { |
- show: true |
- } |
- }, |
- |
- // Line avgB |
- { |
- data: this.avgB, |
- label: "B's avg " + this.yAxis, |
- dashes: { |
- show: true |
- } |
- }], |
- |
- // Axis and legend setup. |
- { xaxis: { |
- max: this.countA > this.countB ? this.countA : this.countB, |
- tickSize: 1, |
- tickDecimals: 0 |
- }, |
- yaxis: { |
- // Leave some space for legend. |
- max: this.maxA > this.maxB ? this.maxA * 1.5 : this.maxB * 1.5 |
- }, |
- legend: { |
- backgroundOpacity: 0 |
- } |
- }); |
- } |
-} |
- |
-// Compare the selected metric of the two selected data sets. |
-function compare() { |
- var checkboxArr = document.getElementsByName("checkboxArr"); |
- var radioArr = document.getElementsByName("radioArr"); |
- |
- if (checkAmount(checkboxArr) != 2) { |
- alert("please select two rows to compare"); |
- return; |
- } |
- |
- var rowIndexArr = getSelectedIndex(checkboxArr); |
- var colIndexArr = getSelectedIndex(radioArr); |
- // To this point, it is for sure that rowIndexArr has two elements |
- // while colIndexArr has one. |
- var selectedRowA = rowIndexArr[0]; |
- var selectedRowB = rowIndexArr[1]; |
- var selectedCol = colIndexArr[0]; |
- |
- var extension = chrome.extension.getBackgroundPage(); |
- var data = extension.results.data; |
- var selectedA = getSelectedResults(data,selectedRowA,selectedCol); |
- var selectedB = getSelectedResults(data,selectedRowB,selectedCol); |
- var yAxis = getMetricName(selectedCol); |
- |
- // Indicate A and B on selected rows. |
- checkboxArr[selectedRowA].parentElement.firstChild.data = "A"; |
- checkboxArr[selectedRowB].parentElement.firstChild.data = "B"; |
- |
- plot(selectedA, selectedB, yAxis); |
-} |
- |
-// Show the comparison graph. |
-function plot(A, B, axis) { |
- var plotData = new PData(); |
- |
- plotData.setYAxis(axis); |
- for (var i = 0; i < A.length; i++) { |
- plotData.addArr(A[i],'A'); |
- } |
- for (var i = 0; i < B.length; i++) { |
- plotData.addArr(B[i],'B'); |
- } |
- plotData.setAvg(A,'A'); |
- plotData.setAvg(B,'B'); |
- plotData.setMax(A,'A'); |
- plotData.setMax(B,'B'); |
- |
- var placeholder = document.getElementById("placeholder"); |
- placeholder.style.display = ""; |
- plotData.plot(placeholder); |
-} |
- |
-var METRIC = {"STARTLOAD": 0, "COMMITLOAD": 1, "DOCLOAD": 2, "PAINT": 3, |
- "TOTAL": 4, "REQUESTS": 5, "CONNECTS": 6, "READKB": 7, |
- "WRITEKB": 8, "READKBPS": 9, "WRITEKBPS": 10}; |
- |
-// Retrieve the metric name from index. |
-function getMetricName(index) { |
- switch (index) { |
- case METRIC.STARTLOAD: |
- return "Start Load Time"; |
- case METRIC.COMMITLOAD: |
- return "Commit Load Time"; |
- case METRIC.DOCLOAD: |
- return "Doc Load Time"; |
- case METRIC.PAINT: |
- return "Paint Time"; |
- case METRIC.TOTAL: |
- return "Total Load Time"; |
- case METRIC.REQUESTS: |
- return "# Requests"; |
- case METRIC.CONNECTS: |
- return "# Connects"; |
- case METRIC.READKB: |
- return "Read KB"; |
- case METRIC.WRITEKB: |
- return "Write KB"; |
- case METRIC.READKBPS: |
- return "Read KBps"; |
- case METRIC.WRITEKBPS: |
- return "Write KBps"; |
- default: |
- return ""; |
- } |
-} |
- |
-// Get the results with a specific row (data set) and column (metric). |
-function getSelectedResults(arr, rowIndex, colIndex) { |
- switch (colIndex) { |
- case METRIC.STARTLOAD: |
- return arr[rowIndex].startLoadResults; |
- case METRIC.COMMITLOAD: |
- return arr[rowIndex].commitLoadResults; |
- case METRIC.DOCLOAD: |
- return arr[rowIndex].docLoadResults; |
- case METRIC.PAINT: |
- return arr[rowIndex].paintResults; |
- case METRIC.TOTAL: |
- return arr[rowIndex].totalResults; |
- case METRIC.REQUESTS: |
- return arr[rowIndex].requests; |
- case METRIC.CONNECTS: |
- return arr[rowIndex].connects; |
- case METRIC.READKB: |
- return arr[rowIndex].KbytesRead; |
- case METRIC.WRITEKB: |
- return arr[rowIndex].KbytesWritten; |
- case METRIC.READKBPS: |
- return arr[rowIndex].readbpsResults; |
- case METRIC.WRITEKBPS: |
- return arr[rowIndex].writebpsResults; |
- default: |
- return undefined; |
- } |
-} |
- |
-// Ensure only two data sets (rows) are selected. |
-function checkAmount(arr) { |
- var amount = 0; |
- for (var i = 0; i < arr.length; i++) { |
- if (arr[i].checked) { |
- amount++; |
- } |
- } |
- return amount; |
-} |
- |
-// Get the index of selected row or column. |
-function getSelectedIndex(arr) { |
- var selectedArr = new Array(); |
- for (var i = 0; i < arr.length; i++) { |
- if(arr[i].checked) { |
- selectedArr.push(i); |
- } |
- } |
- return selectedArr; |
-} |
- |
-// Repaint or hide the chart. |
-function updateChart(caller) { |
- var placeholder = document.getElementById("placeholder"); |
- if (caller.type == "radio") { |
- // Other radio button is clicked. |
- if (placeholder.style.display == "") { |
- compare(); |
- } |
- } else { |
- // Other checkbox or clearing results is clicked. |
- if (placeholder.style.display == "") { |
- placeholder.style.display = "none"; |
- } |
- } |
-} |
- |
-// Clear indicators besides checkbox. |
-function clearIndicator() { |
- var checkboxArr = document.getElementsByName("checkboxArr"); |
- for (var i = 0; i < checkboxArr.length; i++) { |
- checkboxArr[i].parentElement.firstChild.data = ""; |
- } |
-} |
- |
-// Enable/Disable buttons according to checkbox change. |
-function checkSelected() { |
- var checkboxArr = document.getElementsByName("checkboxArr"); |
- if (checkAmount(checkboxArr) !=0) { |
- document.getElementById("clearSelected").disabled = false; |
- document.getElementById("compare").disabled = false; |
- } else { |
- document.getElementById("clearSelected").disabled = true; |
- document.getElementById("compare").disabled = true; |
- } |
-} |
- |
-// Object to summarize everything |
-var totals = {}; |
- |
-// Compute the results for a data set. |
-function computeDisplayResults(data) { |
- var count = data.data.length; |
- for (var i = 0; i < count; i++) { |
- var obj = data.data[i]; |
- obj.displayTime = setDisplayTime(obj.timestamp); |
- var resultList = obj.totalResults; |
- obj.mean = Array.avg(resultList); |
- obj.stddev = Array.stddev(resultList); |
- obj.stderr = obj.stddev / Math.sqrt(obj.iterations); |
- var ci = 1.96 * obj.stderr; |
- obj.cihigh = obj.mean + ci; |
- obj.cilow = obj.mean - ci; |
- obj.min = Array.min(resultList); |
- obj.max = Array.max(resultList); |
- obj.readbps = Array.avg(obj.readbpsResults); |
- obj.writebps = Array.avg(obj.writebpsResults); |
- obj.readKB = Array.avg(obj.KbytesRead); |
- obj.writeKB = Array.avg(obj.KbytesWritten); |
- obj.paintMean = Array.avg(obj.paintResults); |
- obj.startLoadMean = Array.avg(obj.startLoadResults); |
- obj.commitLoadMean = Array.avg(obj.commitLoadResults); |
- obj.docLoadMean = Array.avg(obj.docLoadResults); |
- |
- obj.displayRequests = Array.avg(obj.requests); |
- obj.displayConnects = Array.avg(obj.connects); |
- obj.displaySpdySessions = Array.avg(obj.spdySessions); |
- |
- obj.displayDomNum = obj.domNum; |
- obj.displayMaxDepth = obj.maxDepth; |
- obj.displayMinDepth = obj.minDepth; |
- obj.displayAvgDepth = obj.avgDepth; |
- } |
- return count; |
-} |
- |
-// Convert timestamp to readable string. |
-function setDisplayTime(ts) { |
- var year = ts.getFullYear(); |
- var mon = ts.getMonth()+1; |
- var date = ts.getDate(); |
- var hrs = ts.getHours(); |
- var mins = ts.getMinutes(); |
- var secs = ts.getSeconds(); |
- |
- mon = ( mon < 10 ? "0" : "" ) + mon; |
- date = ( date < 10 ? "0" : "" ) + date; |
- mins = ( mins < 10 ? "0" : "" ) + mins; |
- secs = ( secs < 10 ? "0" : "" ) + secs; |
- |
- return (year + "/" + mon + "/" + date + " " + hrs + ":" + mins + ":" + secs); |
-} |
- |
-// Subtract the results from two data sets. |
-// This function could be smarter about what it subtracts, |
-// for now it just subtracts everything. |
-// Returns true if it was able to compare the two data sets. |
-function subtractData(data, baseline) { |
- var count = data.data.length; |
- if (baseline.data.length != count) { |
- return false; |
- } |
- for (var i = 0; i < count; i++) { |
- var obj = data.data[i]; |
- var obj2 = baseline.data[i]; |
- |
- // The data sets are different. |
- if (obj.url != obj2.url || |
- obj.iterations != obj2.iterations) { |
- return false; |
- } |
- |
- obj.mean -= obj2.mean; |
- obj.stddev -= obj2.stddev; |
- obj.min -= obj2.min; |
- obj.max -= obj2.max; |
- obj.readbps -= obj2.readbps; |
- obj.writebps -= obj2.writebps; |
- obj.readKB -= obj2.readKB; |
- obj.writeKB -= obj2.writeKB; |
- obj.paintMean -= obj2.paintMean; |
- obj.startLoadMean -= obj2.startLoadMean; |
- obj.commitLoadMean -= obj2.commitLoadMean; |
- obj.docLoadMean -= obj2.docLoadMean; |
- |
- obj.displayRequests -= obj2.displayRequests; |
- obj.displayConnects -= obj2.displayConnects; |
- obj.displaySpdySessions -= obj2.displaySpdySessions; |
- } |
- return true; |
-} |
- |
-// Compute totals based on a data set. |
-function computeTotals(data) { |
- var count = data.data.length; |
- for (var i = 0; i < count; i++) { |
- var obj = data.data[i]; |
- totals.mean += obj.mean; |
- totals.paintMean += obj.paintMean; |
- totals.startLoadMean += obj.startLoadMean; |
- totals.commitLoadMean += obj.commitLoadMean; |
- totals.docLoadMean += obj.docLoadMean; |
- } |
-} |
- |
-// Compute results for the data with an optional baseline. |
-// If |baseline| is undefined, will compute the results of this |
-// run. Otherwise, computes the diff between this data and the baseline. |
-function computeResults(data, baseline) { |
- totals = {}; |
- totals.mean = 0; |
- totals.paintMean = 0; |
- totals.startLoadMean = 0; |
- totals.commitLoadMean = 0; |
- totals.docLoadMean = 0; |
- |
- var count = computeDisplayResults(data); |
- |
- if (baseline) { |
- computeDisplayResults(baseline); |
- if (!subtractData(data, baseline)) { |
- alert("These data sets are different"); |
- document.getElementById("baseline").value = ""; |
- return; |
- } |
- } |
- |
- computeTotals(data); |
- totals.url = "(" + count + " urls)"; |
- if (count > 0) { |
- totals.mean /= count; |
- totals.paintMean /= count; |
- totals.startLoadMean /= count; |
- totals.commitLoadMean /= count; |
- totals.docLoadMean /= count; |
- } |
- |
- // Find the biggest average for our bar graph. |
- max_sample = 0; |
- for (var i = 0; i < data.data.length; i++) { |
- if (data.data[i].max > max_sample) { |
- max_sample = data.data[i].mean; |
- } |
- } |
-} |
- |
-function jsinit() { |
- var extension = chrome.extension.getBackgroundPage(); |
- |
- // Run the template to show results |
- var data = extension.results; |
- |
- // Get the baseline results |
- var elt = document.getElementById("baseline"); |
- var baseline_json = document.getElementById("baseline").value; |
- var baseline; |
- if (baseline_json) { |
- try { |
- baseline = JSON.parse(baseline_json); |
- } catch (e) { |
- alert("JSON parse error: " + e); |
- } |
- } |
- |
- // Compute |
- computeResults(data, baseline); |
- |
- var context = new JsEvalContext(data); |
- context.setVariable('$width', 0); |
- context.setVariable('$samples', 0); |
- var template = document.getElementById("t"); |
- jstProcess(context, template); |
- |
- // Set the options |
- document.getElementById("iterations").value = extension.iterations; |
- document.getElementById("clearconns").checked = extension.clearConnections; |
- document.getElementById("clearcache").checked = extension.clearCache; |
- document.getElementById("enablespdy").checked = extension.enableSpdy; |
- setUrl(extension.testUrl); |
- |
- if (!baseline) { |
- var json_data = JSON.stringify(data); |
- document.getElementById("json").value = json_data; |
- } |
- |
- // Activate loading Urls from local file. |
- document.getElementById('files').addEventListener('change', |
- handleFileSelect, false); |
-} |
- |
-function getWidth(mean, obj) { |
- var kMinWidth = 200; |
- var max_width = obj.offsetWidth; |
- if (max_width < kMinWidth) { |
- max_width = kMinWidth; |
- } |
- return Math.floor(max_width * (mean / max_sample)); |
-} |
- |
-// Apply configuration back to our extension |
-function config() { |
- var extension = chrome.extension.getBackgroundPage(); |
- var iterations = parseInt(document.getElementById("iterations").value); |
- var clearConnections = document.getElementById("clearconns").checked; |
- var clearCache = document.getElementById("clearcache").checked; |
- var enableSpdy = document.getElementById("enablespdy").checked; |
- if (iterations > 0) { |
- extension.iterations = iterations; |
- extension.clearConnections = clearConnections; |
- extension.clearCache = clearCache; |
- extension.enableSpdy = enableSpdy; |
- } |
-} |
- |
-// Set the url in the benchmark url box. |
-function setUrl(url) { |
- document.getElementById("testurl").value = url; |
-} |
- |
-// Start the benchmark. |
-function run() { |
- if (!chrome.benchmarking) { |
- alert("Warning: Looks like you forgot to run chrome with " + |
- " --enable-benchmarking set."); |
- return; |
- } |
- var extension = chrome.extension.getBackgroundPage(); |
- var testUrl = document.getElementById("testurl").value; |
- extension.testUrl = testUrl; |
- extension.run(); |
-} |
- |
-function showConfirm() { |
- var r = confirm("Are you sure to clear results?"); |
- if (r) { |
- // Find out the event source element. |
- var evtSrc = window.event.srcElement; |
- if (evtSrc.value == "Clear Selected") { |
- clearSelected(); |
- } else if (evtSrc.value == "Clear All") { |
- clearResults(); |
- } |
- } |
-} |
- |
-// Clear the selected results |
-function clearSelected() { |
- var extension = chrome.extension.getBackgroundPage(); |
- var checkboxArr = document.getElementsByName("checkboxArr"); |
- var rowIndexArr = getSelectedIndex(checkboxArr); |
- var currIndex; |
- for (var i = 0; i < rowIndexArr.length; i++) { |
- currIndex = rowIndexArr[i]; |
- // Update the index of the original row in the modified array. |
- currIndex -= i; |
- extension.results.data.splice(currIndex, 1); |
- document.location.reload(true); |
- updateChart(this); |
- jsinit(); |
- } |
-} |
- |
-// Clear all the results |
-function clearResults() { |
- var extension = chrome.extension.getBackgroundPage(); |
- extension.results = {}; |
- extension.results.data = new Array(); |
- document.getElementById("json").value = ""; |
- document.getElementById("baseline").value = ""; |
- updateChart(this); |
- jsinit(); |
-} |
- |
-// Export html table into CSV format. |
-function exportHtml() { |
- var checkboxArr = document.getElementsByName("checkboxArr"); |
- var rowNum = checkboxArr.length + 1; // # of data rows plus total-stats row. |
- $('#t').table2CSV(rowNum); |
-} |
- |
-// Toggle display of an element |
-function toggle(id) { |
- var elt = document.getElementById(id); |
- if (elt.style.display == "none") { |
- elt.style.display = "block"; |
- } else { |
- elt.style.display = "none"; |
- } |
-} |
- |
-document.addEventListener("DOMContentLoaded", function() { |
- jsinit(); |
- restoreTable(); |
- |
- document.querySelector('form').addEventListener('click', function() { |
- config(); |
- run(); |
- }); |
- $('#expand')[0].addEventListener('click', function() { expand(); }); |
- $('#clearSelected')[0].addEventListener('click', |
- function() { showConfirm(); }); |
- $('#clearAll')[0].addEventListener('click', function() { showConfirm(); }); |
- $('#exportCsv')[0].addEventListener('click', function() { exportHtml(); }); |
- var checkboxArrs = document.getElementsByName('checkboxArr'); |
- for (var i = 0; i < checkboxArrs.length; ++i) { |
- checkboxArrs[i].addEventListener('click', function() { |
- updateChart(this); |
- clearIndicator(); |
- checkSelected(); |
- }); |
- } |
- var radioArrs = document.getElementsByName('radioArr'); |
- for (i = 0; i < radioArrs.length; ++i) { |
- radioArrs[i].addEventListener('click', function() { updateChart(this); }); |
- } |
- $('#compare')[0].addEventListener('click', function() { compare(); }); |
- $('#toggle-json')[0].addEventListener('click', |
- function() { toggle('json'); }); |
- $('#toggle-baseline')[0].addEventListener('click', |
- function() { toggle('baseline'); }); |
- $('#baseline')[0].addEventListener('change', function() { jsinit(); }); |
-}); |