{{!
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}}
  <h1>Tablet {{tablet_id}} ({{state}}/{{role}})</h1>
  <h3>Table {{table_name}}</h3>

  <table class='table'>
    <tr><td>Partition</td><td>{{partition}}</td></tr>
    <tr><td>Live Row Count</td><td>{{tablet_live_row_count}}</td></tr>
    <tr><td>On-disk Size</td><td>{{on_disk_size}}</td></tr>
  </table>

  <h2>Schema</h2>
  <table class='table table-striped'>
    <thead><tr>
      <th>Column</th>
      <th>ID</th>
      <th>Type</th>
      <th>Encoding</th>
      <th>Compression</th>
      <th>Read default</th>
      <th>Write default</th>
      <th>Comment</th>
    </tr></thead>
    <tbody>
    {{#columns}}
      <tr>
        <th>
          {{#is_key}}<img src="{{base_url}}/key.png" width=12 height=6 />&nbsp;&nbsp;{{/is_key}}{{name}}
        </th>
        <td>{{id}}</a></td>
        <td>{{type}}</td>
        <td>{{encoding}}</td>
        <td>{{compression}}</td>
        <td>{{read_default}}</td>
        <td>{{write_default}}</td>
        <td>{{comment}}</td>
      </tr>
    {{/columns}}
    </tbody>
  </table>

  <h2>Other Tablet Info Pages</h2>
  <ul>
    <li>
      <a href="{{base_url}}/tablet-rowsetlayout-svg?id={{tablet_id}}">Rowset Layout Diagram</a>
    </li>
    <li>
      <a href="{{base_url}}/tablet-consensus-status?id={{tablet_id}}">Consensus Status</a>
    </li>
    <li>
      <a href="{{base_url}}/log-anchors?id={{tablet_id}}">Tablet Log Anchors</a>
    </li>
  </ul>
{{/error}}
