<html>
  <head>
    <script type='text/javascript' src='https://www.google.com/jsapi'></script>
    <script type='text/javascript'>
      google.load('visualization', '1', {'packages': ['annotatedtimeline']});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('date', 'Date');
        data.addColumn('number', '#Tests');
        data.addColumn('string', 'title1');
        data.addColumn('string', 'text1');
        data.addColumn('number', '#Skipped tests');
        data.addColumn('string', 'title2');
        data.addColumn('string', 'text2');
        data.addColumn('number', '#Non-skipped tests');
        data.addColumn('string', 'title2');
        data.addColumn('string', 'text2');
        data.addRows([
         // insert 1
        ]);
        var data2 = new google.visualization.DataTable();
        data2.addColumn('date', 'Date');
        data2.addColumn('number', 'Passing Rate ' + 
                                  '(100-(#Non-skipped tests)/' +
                                  '((#Tests)-(#Skipped tests))*100)');
        data2.addColumn('string', 'title1');
        data2.addColumn('string', 'text1');
        data2.addRows([
         // insert 2
        ]);
        var div1 = document.getElementById('chart_div');
        var chart = new google.visualization.AnnotatedTimeLine(div1);
        chart.draw(data, {displayAnnotations: true, allowHtml: true});

        var div2 = document.getElementById('chart_div2');
        var chart2 = new google.visualization.AnnotatedTimeLine(div2);
        chart2.draw(data2, {displayAnnotations: true,
                            allowHtml: true,
                            scaleType: 'maximized'});
      }
    </script>
    <title>Media Layout Test Analyzer Result</title>
  </head>

  <body>
    <h2>Current Statistics</h2>
    <h3 id='numbers'>Numbers</h3>
    <div id='chart_div' style='width: 1400px; height: 480px;'></div>
    <h3>Test passing rate</h3>
    <div id='chart_div2' style='width: 1400px; height: 480px;'></div>
  </body>
</html>
