<!DOCTYPE html>
<html lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>filters</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script src="jquery.min.js" type="text/javascript"></script>
    <script src="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: {
               labels: {enabled: false},
            },
            yAxis: {
              title: '',
              labels: {enabled: false},
            },
            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>
  </head>

  <body>
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr><td class="title">filters</td></tr>
      <tr><td><div align="center"><p><a href="filters.html">Back to Code Coverage report</a></p></div></td></tr>
      <tr><td class="ruler"><img src="glass.png" width="3" height="3" alt=""></td></tr>
    </table>

    <br />

    <center>
      <table width="90%" cellpadding="2" cellspacing="1" border="0">
        <tr>
          <td valign="top">
            <h2>Class Coverage Distribution</h2>
            <div id="classCoverageDistribution"></div>
          </td>

          <td valign="top">
            <h2>Class Complexity</h2>
            <div id="classComplexity"></div>
          </td>
        </tr>
        <tr>
          <td valign="top">
            <h2>Top Project Risks</h2>
            <ul>
              <li><a href="filters_LoggerFilterLevelRange.php.html#65">LoggerFilterLevelRange</a> (9)</li>

            </ul>
          </td>

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

            </ul>
          </td>
        </tr>
      </table>
    </center>

    <br />

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr><td class="ruler"><img src="glass.png" width="3" height="3" alt=""></td></tr>
      <tr><td class="versionInfo">Generated by <a href="http://github.com/sebastianbergmann/php-code-coverage" target="_top">PHP_CodeCoverage 1.1.1</a> using <a href="http://www.php.net/" target="_top">PHP 5.3.3-7+squeeze3</a> and PHPUnit 3.6.3 at Sat Feb 18 22:32:39 GMT 2012.</td></tr>
    </table>

    <br/>
  </body>
</html>
