<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>Dashboard for D:\work\log4php-trunk\src\main\php/renderers</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="css/bootstrap.min.css" rel="stylesheet">
  <link href="css/bootstrap-responsive.min.css" rel="stylesheet">
  <link href="css/style.css" rel="stylesheet">
  <!--[if lt IE 9]>
  <script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
  <![endif]-->
 </head>
 <body>
  <header>
   <div class="container">
    <div class="row">
     <div class="span12">
      <ul class="breadcrumb">
        <li><a href="index.html">D:\work\log4php-trunk\src\main\php</a> <span class="divider">/</span></li>
        <li><a href="renderers.html">renderers</a></li>
        <li class="active">(Dashboard)</li>

      </ul>
     </div>
    </div>
   </div>
  </header>
  <div class="container">
   <div class="row">
    <div class="span6">
     <h2>Class Coverage Distribution</h2>
     <div id="classCoverageDistribution"></div>
    </div>
    <div class="span6">
     <h2>Class Complexity</h2>
     <div id="classComplexity"></div>
    </div>
   </div>
   <div class="row">
    <div class="span6">
     <h2>Top Project Risks</h2>
     <ul>

     </ul>
    </div>
    <div class="span6">
     <h2>Least Tested Methods</h2>
     <ul>

     </ul>
    </div>
   </div>
   <footer>
    <p>
     <small>Generated by <a href="http://github.com/sebastianbergmann/php-code-coverage" target="_top">PHP_CodeCoverage 1.2.3</a> using <a href="http://www.php.net/" target="_top">PHP 5.3.13</a> and <a href="http://phpunit.de/">PHPUnit 3.7.6</a> at Sat Oct 13 8:58:14 BST 2012.</small>
    </p>
   </footer>
  </div>
  <script src="js/bootstrap.min.js" type="text/javascript"></script>
  <script src="js/jquery.min.js" type="text/javascript"></script>
  <script src="js/highcharts.js" type="text/javascript"></script>
  <script type="text/javascript">
  $(document).ready(function() {
        var classCoverageDistribution = new Highcharts.Chart({
           chart: {
              renderTo: 'classCoverageDistribution',
              type: 'column'
           },
           title: {text: ''},
           legend: {enabled: false},
           credits: {enabled: false},
           tooltip: {enabled: false},
           xAxis: {
               labels: {style: {fontSize: '8px'}},
               categories: [
               '0%','0-10%','10-20%','20-30%','30-40%','40-50%','50-60%','60-70%','70-80%','80-90%','90-100%','100%'
               ]
          },
          yAxis: {
              title: '',
              labels: {style: {fontSize: '8px'}},
          },
          series: [{
              data: [0,0,0,0,0,0,0,0,0,0,0,3]
          }],
        });

      var classComplexity = new Highcharts.Chart({
          chart: {
            renderTo: 'classComplexity',
            type: 'scatter'
          },
          title: {text: ''},
          legend: {enabled: false},
          credits: {enabled: false},
          xAxis: {
             title: {text: 'Code Coverage (in percent)'},
             labels: {enabled: true},
          },
          yAxis: {
            title: 'Cyclomatic Complexity',
            labels: {enabled: true},
          },
          tooltip: {
              formatter: function() {
                  return this.point.config[2];
              }
          },
          series: [{
            data: [[100,1,"<a href=\"renderers_LoggerRendererDefault.php.html#30\">LoggerRendererDefault<\/a>"],[100,1,"<a href=\"renderers_LoggerRendererException.php.html#28\">LoggerRendererException<\/a>"],[100,19,"<a href=\"renderers_LoggerRendererMap.php.html#30\">LoggerRendererMap<\/a>"]],
            marker: {
                symbol: 'diamond'
            }
          }],
      });
  });
  </script>
 </body>
</html>
