tools/qtestlib/chart/benchmark_template.html
changeset 0 1918ee327afb
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
       
     2 <html>
       
     3 	<head>
       
     4 		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       
     5 		<title>Title</title>
       
     6         <! Javascript Here>
       
     7 	
       
     8         	<script type="text/javascript">
       
     9 
       
    10 function offsetLabels(labels, offset)
       
    11 {
       
    12     var copy = new Array();
       
    13     for (key in labels) {
       
    14         copy[key] = new Array(labels[key][0] + 0.25, labels[key][1]);
       
    15     }
       
    16     return copy;
       
    17 }
       
    18 
       
    19 function createLogDataSet(inDataSet)
       
    20 {
       
    21     var logDataSet  = {};
       
    22     logDataSet.label = inDataSet.label;
       
    23     logDataSet.data = [];
       
    24 
       
    25     if (!inDataSet.data)
       
    26         return logDataSet;
       
    27 
       
    28     var length = inDataSet.data.length;
       
    29     
       
    30     for (var i = 0; i < length; i++) {
       
    31         logDataSet.data[i] = [];
       
    32         logDataSet.data[i][0] = inDataSet.data[i][0];
       
    33         logDataSet.data[i][1] = Math.log(inDataSet.data[i][1]);
       
    34     }
       
    35     return logDataSet;
       
    36 }
       
    37 
       
    38 
       
    39 function createLogData(inData)
       
    40 {
       
    41     var logData  = [];
       
    42 
       
    43     // foreach data set;
       
    44     var length = inData.length;
       
    45     for (var i = 0; i < length; ++i) {
       
    46         logData[i] = createLogDataSet(inData[i]);
       
    47     }
       
    48     return logData;
       
    49 }
       
    50 
       
    51 function createChart() {
       
    52 //    alert("create chart" + this.chartId)
       
    53 
       
    54     var dataSet;
       
    55 
       
    56     if (this.useLinearScale)
       
    57         dataSet = this.selectedDataset;
       
    58     else 
       
    59         dataSet = createLogData(this.selectedDataset);
       
    60 
       
    61     if (this.useLineChart) {
       
    62         var f = Flotr.draw($(this.chartId), 
       
    63             dataSet,
       
    64             { legend:{ backgroundColor: '#D2E8FF' } 
       
    65             , xaxis: { ticks: this.labels, noTicks : 10 }
       
    66              , mouse: { 
       
    67                  track: true,
       
    68                  lineColor: 'purple',
       
    69                  sensibility: 1, 
       
    70                  trackDecimals: 2,
       
    71                  trackFormatter: function(obj){ return 'x = ' + obj.x +', y = ' + obj.y; }
       
    72 	         }
       
    73             });
       
    74         
       
    75     } else {
       
    76         var f = Flotr.draw($(this.chartId), 
       
    77             dataSet,
       
    78             { legend:{ backgroundColor: '#D2E8FF'}
       
    79             ,  bars: { show: true, lineWidth: 1, barWidth: this.barWidth } 
       
    80             , xaxis: { ticks: offsetLabels(this.labels, chartOptions.tickOffset), noTicks : 10 }
       
    81             });
       
    82     }
       
    83 }
       
    84 
       
    85 function checkform()
       
    86 {
       
    87 //    alert("check form " + this.form.id + " " + this.chartId);    
       
    88     var field = this.form.list
       
    89 
       
    90     // Apparently list of lenght one is not a list...
       
    91     // Display the entire chart if there is only one data series.
       
    92     if (!field.length) {
       
    93         this.createChart();    
       
    94         return;
       
    95     }
       
    96 
       
    97     this.selectedDataset = [];
       
    98     var data = [];
       
    99     var index = 0;
       
   100 
       
   101     for (i = 0; i < field.length; i++) {
       
   102         if (field[i].checked == true) {
       
   103             this.selectedDataset[index++] = this.dataset[i];
       
   104         } else {
       
   105             this.selectedDataset[index++] = [];
       
   106         }
       
   107     }
       
   108     this.createChart();
       
   109 }
       
   110 
       
   111 function createElement(nodeName, name) {
       
   112   var node;
       
   113   try {
       
   114     node = document.createElement("<"+nodeName+" name="+name+">");
       
   115   } catch (e) {
       
   116     node = document.createElement(nodeName);
       
   117     node.name = name;
       
   118   }
       
   119   return node;
       
   120 }
       
   121 
       
   122 function createFormSelector(form, value, text, type)
       
   123 {
       
   124   var selector = createElement('input', 'list');
       
   125   selector.type = type;
       
   126   selector.defaultChecked = true;
       
   127   selector.value = value;
       
   128 
       
   129   form.appendChild(selector);
       
   130   form.appendChild(document.createTextNode(text));
       
   131   form.appendChild(document.createElement("BR"));
       
   132 }
       
   133 
       
   134 function createCheckBox(form, value, text)
       
   135 {
       
   136     createFormSelector(form, value, text, "checkbox");
       
   137 }
       
   138 
       
   139 function createRadioButton(form, value, text)
       
   140 {
       
   141     createFormSelector(form, value, text, "radio");
       
   142 }
       
   143 
       
   144 function buildSeriesSelector(form, chartOptions)
       
   145 {
       
   146 //    alert("form" + form.id + " " + chartOptions.chartId);
       
   147     var series = chartOptions.seriesLabels;
       
   148     form.onclick = function() { /*alert("fn " + chartOptions.chartId);*/ chartOptions.checkform() };
       
   149     for (s = 0; s < series.length; ++s) {
       
   150         createCheckBox(form, s, series[s]);
       
   151     }
       
   152 }
       
   153 
       
   154 function buildChartTypeSelector()
       
   155 {
       
   156     createRadioButton(this.chartTypeForm, 0, "Bar Chart");
       
   157     createRadioButton(this.chartTypeForm, 1, "Line Chart");
       
   158     
       
   159     var field = this.chartTypeForm.list;
       
   160     if (this.useLineChart)
       
   161         field[1].checked = true;
       
   162     else
       
   163         field[0].checked = true;
       
   164 
       
   165     var chartOptions = this;
       
   166     this.chartTypeForm.onclick = function() { 
       
   167         var field = chartOptions.chartTypeForm.list;
       
   168 
       
   169         chartOptions.useLineChart = (field[1].checked == true);
       
   170         chartOptions.checkform();
       
   171     };
       
   172 }
       
   173 
       
   174 function buildScaleSelector()
       
   175 {
       
   176     createRadioButton(this.scaleForm, 0, "Linear Scale");
       
   177     createRadioButton(this.scaleForm, 1, "Logarithmic  Scale");
       
   178     
       
   179     var field = this.scaleForm.list;
       
   180     field[0].checked = true;
       
   181     field[1].checked = false;
       
   182 
       
   183     var chartOptions = this;
       
   184     this.scaleForm.onclick = function() { 
       
   185         var field = chartOptions.scaleForm.list;
       
   186 
       
   187         chartOptions.useLinearScale = (field[0].checked == true);
       
   188         chartOptions.checkform();
       
   189     };
       
   190 }
       
   191 
       
   192 
       
   193 		</script>
       
   194 	</head>
       
   195 	<body>
       
   196         <h2>
       
   197         <! Title Here>
       
   198         </h2>
       
   199         <! Description Here>
       
   200         <! Chart Here>
       
   201 	</body>
       
   202 </html>