{{!
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.
}}

{{#requested_thread_group}}
<h2>Thread Group: {{group_name}}</h2>
{{#requested_all}}<h3>All Threads : </h3>{{/requested_all}}
{{#found}}
<table class='table table-hover' data-sort-name='name' data-toggle='table'>
  <thead>
    <tr>
      <th data-field='name' data-sortable='true' data-sorter='stringsSorter'>Thread name</th>
      <th data-sortable='true' data-sorter='floatsSorter'>Cumulative User CPU (s)</th>
      <th data-sortable='true' data-sorter='floatsSorter'>Cumulative Kernel CPU (s)</th>
      <th data-sortable='true' data-sorter='floatsSorter'>Cumulative IO-wait (s)</th>
    </tr>
  </thead>
  <tbody>
    {{#threads}}
    <tr>
      <td>{{thread_name}}</td>
      <td>{{user_sec}}</td>
      <td>{{kernel_sec}}</td>
      <td>{{iowait_sec}}</td>
    </tr>
    {{/threads}}
  </tbody>
</table>
{{/found}}
{{^found}}Thread group {{group_name}} not found{{/found}}
{{/requested_thread_group}}

{{^requested_thread_group}}
<h2>Thread Groups</h2>
<h4>{{total_threads_running}} thread(s) running</h4>
<a href='{{base_url}}/threadz?group=all'><h3>All Threads</h3></a>
<table class='table table-hover' data-sort-name='group' data-toggle='table'>
  <thead>
    <tr>
      <th data-field='group' data-sortable='true' data-sorter='stringsSorter'>Group</th>
      <th data-sortable='true' data-sorter='numericStringsSorter'>Threads running</th>
    </tr>
  </thead>
  <tbody>
    {{#groups}}
    <tr>
      <td><a href='{{base_url}}/threadz?group={{encoded_group_name}}'>{{group_name}}</a></td>
      <td>{{threads_running}}</td>
    </tr>
    {{/groups}}
  </tbody>
</table>
{{/requested_thread_group}}
