{{!
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>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>
    </tr></thead>
    <tbody>
    {{#columns}}
      <tr>
        <th>{{#is_key}}<u>{{/is_key}}
          {{name}}
          {{#is_key}}</u>{{/is_key}}</th>
        <td>{{id}}</a></td>
        <td>{{type}}</td>
        <td>{{encoding}}</td>
        <td>{{compression}}</td>
        <td>{{read_default}}</td>
        <td>{{write_default}}</td>
      </tr>
    {{/columns}}
    </tbody>
  </table>

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