<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
{{> www/common-header.tmpl }}

<h2>Profile Documentation</h2>

<h3>Counters</h3>
<div class="card">
  <div class="card-body">
    <table id="counters-table" class='table table-hover table-bordered'>
      <thead>
        <tr>
          <th>Name</th>
          <th>Significance</th>
          <th>Unit</th>
          <th>Description</th>
        </tr>
      </thead>
      <tbody>
        {{#profile_docs}}
        <tr>
          <td>
          {{name}}
          </td>
          <td>
          {{significance}}
          </td>
          <td>
          {{unit}}
          </td>
          <td>
          {{description}}
          </td>
        </tr>
        {{/profile_docs}}
      </tbody>
    </table>
  </div>
</div>

<h3>Appendix</h3>
<div class="card">
  <div class="card-body">
    <table id="significance-table" class='table table-hover table-bordered'>
      <thead>
        <tr>
          <th>Significance</th>
          <th>Description</th>
        </tr>
      </thead>
      <tbody>
        {{#significance_docs}}
        <tr>
          <td>
          {{name}}
          </td>
          <td>
          {{description}}
          </td>
        </tr>
        {{/significance_docs}}
      </tbody>
    </table>
  </div>
</div>

<script>
    $(document).ready(function() {
        $('#counters-table').DataTable({
            "pageLength": 20
        });
    });
</script>

{{> www/common-footer.tmpl }}
