<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Plato - components/Event/EventPager.js</title>

  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="description" content="">
  <meta name="author" content="">

  <!--[if lt IE 9]>
  <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->

  <link href="../../assets/css/vendor/morris.css" rel="stylesheet" type="text/css">
  <link href="../../assets/css/vendor/bootstrap.css" rel="stylesheet" type="text/css">
  <link href="../../assets/css/vendor/font-awesome.css" rel="stylesheet" type="text/css">
  <link href="../../assets/css/vendor/codemirror.css" rel="stylesheet" type="text/css">
  <link href="../../assets/css/plato.css" rel="stylesheet" type="text/css">
  <link href="../../assets/css/plato-file.css" rel="stylesheet" type="text/css">

</head>

<body>

<div class="navbar navbar-fixed-top">
  <div class="container">
    <a class="navbar-brand" href="https://github.com/the-simian/es6-plato">ES6 Plato on Github</a>
    <ul class="nav navbar-nav">
      <li>
        <a href="../../index.html">Report Home</a>
      </li>
      <li class="active">
        <a href="display.html">Summary Display</a>
      </li>
    </ul>
  </div>
</div>

<div class="jumbotron">
  <div class="container">
    <h1>components/Event/EventPager.js</h1>
  </div>
</div>

<div class="container aggregate-stats">
  <div class="row">
    <div class="col-md-6">
      <h2 class="header">Maintainability <a href="http://blogs.msdn.com/b/codeanalysis/archive/2007/11/20/maintainability-index-range-and-meaning.aspx"><i class="icon icon-info-sign" rel="popover" data-placement="top" data-trigger="hover" data-content="A value between 0 and 100 that represents the relative ease of maintaining the code. A high value means better maintainability." data-original-title="Maintainability Index"  data-container="body"></i></a></h2>
      <p class="stat">69.05</p>
    </div>
    <div class="col-md-6">
      <h2 class="header">Lines of code <i class="icon icon-info-sign" rel="popover" data-placement="top" data-trigger="hover" data-content="Source Lines of Code / Logical Lines of Code" data-original-title="SLOC/LSLOC" data-container="body"></i></h2>
      <p class="stat">85</p>
    </div>
  </div>
  <div class="row historical">
    <div class="col-md-6">
      <p id="chart_historical_maint" class="chart"></p>
    </div>
    <div class="col-md-6">
      <p id="chart_historical_sloc" class="chart"></p>
    </div>
  </div>
  <div class="row">
    <div class="col-md-6">
      <h2 class="header">Difficulty  <a href="http://en.wikipedia.org/wiki/Halstead_complexity_measures"><i class="icon icon-info-sign" rel="popover" data-placement="top" data-trigger="hover" data-content="The difficulty measure is related to the difficulty of the program to write or understand." data-original-title="Difficulty" data-container="body"></i></a></h2>
      <p class="stat">26.53</p>
    </div>
    <div class="col-md-6">
      <h2 class="header">Estimated Errors  <a href="http://en.wikipedia.org/wiki/Halstead_complexity_measures"><i class="icon icon-info-sign" rel="popover" data-placement="top" data-trigger="hover" data-content="Halstead's delivered bugs is an estimate for the number of errors in the implementation." data-original-title="Delivered Bugs" data-container="body"></i></a></h2>
      <p class="stat">0.46</p>
    </div>
  </div>
</div>

<div class="container charts">
  <div class="row">
    <h2 class="header">Function weight</h2>
  </div>
  <div class="row">
    <div class="col-md-6">
      <h3 class="chart-header">By Complexity <a href="http://en.wikipedia.org/wiki/Cyclomatic_complexity"><i class="icon icon-info-sign" rel="popover" data-placement="top" data-trigger="hover" data-content="This metric counts the number of distinct paths through a block of code. Lower values are better." data-original-title="Cyclomatic Complexity" data-container="body"></i></a></h3>
      <div id="fn-by-complexity" class="stat"></div>
    </div>
    <div class="col-md-6">
      <h3 class="chart-header">By SLOC  <i class="icon icon-info-sign" rel="popover" data-placement="top" data-trigger="hover" data-content="Source Lines of Code / Logical Lines of Code" data-original-title="SLOC/LSLOC" data-container="body"></i></h3>
      <div id="fn-by-sloc" class="stat"></div>
    </div>
  </div>
</div>

<div class="container">
  <div class="row">
    <textarea id="file-source" class="col-md-12">import React from &quot;react&quot;;
import { Pagination } from &#039;react-bootstrap&#039;
import PropTypes from &#039;prop-types&#039;;
import { GUI_CONFIG } from &quot;../../config/gui.config&quot;;


/* This class creates the page component */
class EventPager extends React.Component {
    constructor(props) {
        super(props);
        this.getTotalPageNumber = this.getTotalPageNumber.bind(this);
    }

    render() {

        function getStyle(isFloatingRight) {
            let style = {};
            if (isFloatingRight &amp;&amp; isFloatingRight === true) {
                style.float = &#039;right&#039;
            } else {
                style.textAlign = &#039;right&#039;
                style.marginBottom = &quot;55px&quot;
            }


            style.marginRight = &#039;40px&#039;;
            return style;
        }


        let paginationItemArray = [];
        let totalPages = this.getTotalPageNumber();
        for (let number = 1; number &lt;= totalPages; number++) {
            paginationItemArray.push(
                &lt;Pagination.Item key={number} id={number} onClick={() =&gt; (this.props.onPageClicked(number))} active={number === this.props.activePage}&gt;{number}&lt;/Pagination.Item&gt;
            );
        }

        if (this.props.eventCount === 0) {
            return null;
        }

        return (
            &lt;div style={getStyle(this.props.isFloatingRight)}&gt;
                &lt;Pagination bsSize=&quot;medium&quot; style={{ marginTop: &#039;5px&#039;, marginBottom: &#039;5px&#039; }}&gt;
                    {/* &lt;Pagination.First id=&quot;0&quot; onClick={onPageNumberClicked} /&gt;
                    &lt;Pagination.Prev id={(this.activePage - 1 &lt; 0 ? 0 : this.activePage - 1)} onClick={onPageNumberClicked} /&gt; */}
                    {paginationItemArray}
                    {/* &lt;Pagination.Next id={(this.activePage + 1 &gt;= totalPages ? totalPages - 1 : this.activePage + 1)} onClick={onPageNumberClicked} /&gt;
                    &lt;Pagination.Last id={totalPages - 1} onClick={onPageNumberClicked} /&gt; */}
                &lt;/Pagination&gt;
            &lt;/div&gt;

        )
    }

    /**
    * Get the number of pages requested to display the data
    */
    getTotalPageNumber() {
        if (GUI_CONFIG().EVENTS_PER_PAGE) {
            if (this.props.eventCount &lt; GUI_CONFIG().EVENTS_PER_PAGE) {
                return 1;
            } else {
                return (Math.ceil(this.props.eventCount / GUI_CONFIG().EVENTS_PER_PAGE));
            }
        }
        // if in case of error, displays all items on the same page
        console.log(&quot;[ERROR] Could not get the number of events per page. CHeck the config file.&quot;)
        return 1;
    }

}

EventPager.proptypes = {
    /* the page which is currently displayed */
    activePage: PropTypes.number.isRequired,
    /* the total number of events found by the server for a given search */
    eventCount: PropTypes.number.isRequired,
    /* whether the page is flaoting on the right side */
    isFloatingRight: PropTypes.bool

}

export default EventPager;</textarea>
  </div>
</div>

<footer class="footer">
  <div class="container">
    <p>.</p>
  </div>
</footer>

<script type="text/html" id="complexity-popover-template">
  <div class="complexity-notice">
    Complexity : {{ complexity.cyclomatic }} <br>
    Length : {{ complexity.halstead.length }} <br>
    Difficulty : {{ complexity.halstead.difficulty.toFixed(2) }} <br>
    Est # bugs : {{ complexity.halstead.bugs.toFixed(2) }}<br>
  </div>
</script>

<script type="text/javascript" src="../../assets/scripts/bundles/core-bundle.js"></script>
<script type="text/javascript" src="../../assets/scripts/bundles/codemirror.js"></script>
<script type="text/javascript" src="../../assets/scripts/codemirror.markpopovertext.js"></script>
<script type="text/javascript" src="report.js"></script>
<script type="text/javascript" src="report.history.js"></script>
<script type="text/javascript" src="../../assets/scripts/plato-file.js"></script>
</body>
</html>
