<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>Dashboard for D:\work\log4php-trunk\src\main\php/configurators</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="configurators.html">configurators</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="configurators_LoggerConfiguratorDefault.php.html#31">LoggerConfiguratorDefault</a> (71)</li>
              <li><a href="configurators_LoggerConfigurationAdapterXML.php.html#30">LoggerConfigurationAdapterXML</a> (41)</li>
              <li><a href="configurators_LoggerConfigurationAdapterINI.php.html#33">LoggerConfigurationAdapterINI</a> (26)</li>
              <li><a href="configurators_LoggerConfigurationAdapterPHP.php.html#52">LoggerConfigurationAdapterPHP</a> (6)</li>

     </ul>
    </div>
    <div class="span6">
     <h2>Least Tested Methods</h2>
     <ul>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#244">LoggerConfiguratorDefault::configureDefaultRenderer</a> (60%)</li>
              <li><a href="configurators_LoggerConfigurationAdapterXML.php.html#255">LoggerConfigurationAdapterXML::parseDefaultRenderer</a> (66%)</li>
              <li><a href="configurators_LoggerConfigurationAdapterXML.php.html#156">LoggerConfigurationAdapterXML::parseParameters</a> (71%)</li>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#229">LoggerConfiguratorDefault::configureRenderer</a> (75%)</li>
              <li><a href="configurators_LoggerConfigurationAdapterXML.php.html#188">LoggerConfigurationAdapterXML::parseLogger</a> (81%)</li>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#162">LoggerConfiguratorDefault::getConfigType</a> (83%)</li>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#324">LoggerConfiguratorDefault::createAppenderLayout</a> (83%)</li>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#356">LoggerConfiguratorDefault::createAppenderFilter</a> (86%)</li>
              <li><a href="configurators_LoggerConfigurationAdapterPHP.php.html#54">LoggerConfigurationAdapterPHP::convert</a> (86%)</li>
              <li><a href="configurators_LoggerConfiguratorDefault.php.html#260">LoggerConfiguratorDefault::configureAppender</a> (88%)</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,1,3,0]
          }],
        });

      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: [[97.435897435897,26,"<a href=\"configurators_LoggerConfigurationAdapterINI.php.html#33\">LoggerConfigurationAdapterINI<\/a>"],[86.666666666667,6,"<a href=\"configurators_LoggerConfigurationAdapterPHP.php.html#52\">LoggerConfigurationAdapterPHP<\/a>"],[93.069306930693,41,"<a href=\"configurators_LoggerConfigurationAdapterXML.php.html#30\">LoggerConfigurationAdapterXML<\/a>"],[91.489361702128,69,"<a href=\"configurators_LoggerConfiguratorDefault.php.html#31\">LoggerConfiguratorDefault<\/a>"]],
            marker: {
                symbol: 'diamond'
            }
          }],
      });
  });
  </script>
 </body>
</html>
