<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>Dashboard for D:\work\log4php-trunk\src\main\php/filters</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="filters.html">filters</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>
              <li><a href="filters_LoggerFilterLevelRange.php.html#65">LoggerFilterLevelRange</a> (9)</li>

     </ul>
    </div>
    <div class="span6">
     <h2>Least Tested Methods</h2>
     <ul>
              <li><a href="filters_LoggerFilterLevelRange.php.html#109">LoggerFilterLevelRange::decide</a> (91%)</li>

     </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,1,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=\"filters_LoggerFilterDenyAll.php.html#44\">LoggerFilterDenyAll<\/a>"],[100,6,"<a href=\"filters_LoggerFilterLevelMatch.php.html#48\">LoggerFilterLevelMatch<\/a>"],[94.444444444444,9,"<a href=\"filters_LoggerFilterLevelRange.php.html#65\">LoggerFilterLevelRange<\/a>"],[100,7,"<a href=\"filters_LoggerFilterStringMatch.php.html#48\">LoggerFilterStringMatch<\/a>"]],
            marker: {
                symbol: 'diamond'
            }
          }],
      });
  });
  </script>
 </body>
</html>
