{{!
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.
}}{{#raw}}{{{.}}}{{/raw}}{{^raw}}

<h1>Scans</h1>
<p class="lead">This page lists all running scans and last {{scan_history_count}} completed scans.
The number of historical scans is configurable with the <samp>--scan_history_count</samp> flag.</p>
<table class="table table-striped">
  <thead>
    <tr>
      <th>Tablet id</th>
      <th>Scanner id</th>
      <th>State</th>
      <th title="pseudo-SQL query description">Query</th>
      <th>Requestor</th>
      <th title="amount of time that the scanner was/has been open on the server">Duration</th>
      <th title="number of round trips">Round trips</th>
      <th title="elapsed time since the scan started">Time since start</th>
      <th title="{{timing_title}}">Timing</th>
      <th>Column Stats</th>
    </tr>
  </thead>
  <tbody>
    {{#scans}}
    <tr>
      <td><a href="{{base_url}}/tablet?id={{tablet_id}}"><samp>{{tablet_id}}</samp></a></td>
      <td><samp>{{scanner_id}}</samp></td>
      <td>{{state}}</td>
      {{! The query string is pre-formatted HTML, so don't escape it (triple-brace). }}
      <td><pre>{{{query}}}</pre></td>
      <td><samp>{{requestor}}</samp></td>
      <td title="{{duration_title}}">{{duration}}</td>
      <td>{{num_round_trips}}</td>
      <td title="{{time_since_start_title}}">{{time_since_start}}</td>
      <td>real: {{wall_secs}} user: {{user_secs}} sys: {{sys_secs}}</td>

      <td>
        <table class="table table-striped">
          <thead>
            <tr>
              <th>column</th>
              <th title="cells read from the column (disk or cache), exclusive of the MRS">cells read</th>
              <th title="bytes read from the column (disk or cache), exclusive of the MRS">bytes read</th>
              <th title="CFile data blocks read from the column (disk or cache)">blocks read</th>
            </tr>
          </thead>
          <tbody>
            {{#stats}}
            <tr>
              <td>{{column}}</td>
              <td title="{{cells_read_title}}">{{cells_read}}</td>
              <td title="{{bytes_read_title}}">{{bytes_read}}</td>
              <td title="{{blocks_read_title}}">{{blocks_read}}</td>
            </tr>
            {{/stats}}
          </tbody>
        </table>
      </td>
    </tr>
    {{/scans}}
  </tbody>
</table>
{{/raw}}
