{{!
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.
}}
{{#error}}
  <div class="text-error">{{.}}</div>
{{/error}}
{{^error}}
  <h2>Tablet Servers</h2>
  <p>There are {{num_ts}} registered tablet servers.</p>
  <h3>Version Summary</h3>
  <table class='table table-striped'>
    <thead><tr>
      <th>Version</th>
      <th>Count (Live)</th>
      <th>Count (Dead)</th>
    </tr></thead>
    <tbody>
    {{#version_counts}}
    <tr>
      <td>{{version}}</td>
      <td>{{live}}</td>
      <td>{{dead}}</td>
    </tr>
    {{/version_counts}}
    </tbody>
  </table>
  <h3>Registrations</h3>
  {{^has_no_ts_states}}
  <h4>Tablet Server States</h4>
  <table class='table table-striped'>
    <thead><tr>
      <th>UUID</th>
      <th>State</th>
      <th>Time entered state</th>
      <th>Status</th>
    </tr></thead>
    <tbody>
    {{#tserver_states}}
    <tr>
      <td>{{#target}}<a href="{{.}}">{{/target}}{{uuid}}{{#target}}</a>{{/target}}</td>
      <td>{{state}}</td>
      <td>{{time_entered_state}}</td>
      <td>{{status}}</td>
    </tr>
    {{/tserver_states}}
    </tbody>
  </table>
  {{/has_no_ts_states}}
  {{^has_no_live_ts}}
  <h4>Live Tablet Servers</h4>
  <table class='table table-striped'>
    <thead><tr>
      <th>UUID</th>
      <th>Location</th>
      <th>Time since heartbeat</th>
      <th>Start time</th>
      <th>Registration</th>
    </tr></thead>
    <tbody>
    {{#live_tservers}}
      <tr>
        <td>{{#target}}<a href="{{.}}">{{/target}}{{uuid}}{{#target}}</a>{{/target}}</td>
        <td>{{location}}</td>
        <td>{{time_since_hb}}</td>
        <td>{{start_time}}</td>
        <td><pre><code>{{registration}}</code></pre></td>
      </tr>
    {{/live_tservers}}
    </tbody>
  </table>
  {{/has_no_live_ts}}
  {{^has_no_dead_ts}}
    <h4>Dead Tablet Servers</h4>
    <table class='table table-striped'>
      <thead><tr>
        <th>UUID</th>
        <th>Time since heartbeat</th>
        <th>Registration</th>
      </tr></thead>
    <tbody>
    {{#dead_tservers}}
      <tr>
        <td>{{#target}}<a href="{{.}}{{base_url}}">{{/target}}{{uuid}}{{#target}}</a>{{/target}}</td>
        <td>{{time_since_hb}}</td>
        <td><pre><code>{{registration}}</code></pre></td>
      </tr>
    {{/dead_tservers}}
    </tbody>
    </table>
  {{/has_no_dead_ts}}
{{/error}}
