{% extends "skia_telemetry_base.html" %}

{% block content %}

<center>
  <br/><br/>

  <h2>Tasks in the Queue</h2>
  <br/>

  {% if pending_tasks %}
    <table border="1" cellpadding="5">
      <tr bgcolor="#CCCCFF">
        <td><b>Number in Queue</b></td>
        <td><b>Task Type</b></td>
        <td><b>Properties</b></td>
        <td><b>Status</b></td>
      </tr>
      {% for task in pending_tasks %}
        {% for task_type, values in task.items %}
          <tr>
            <td>{{ forloop.parentloop.counter }}</td>
            <td>{{ task_type }}</td>
            <td>
              {% for key, value in values.items %}
                {{ key }} : {{ value }}<br/>
              {% endfor %}
            </td>
            <td>
              {% if forloop.parentloop.first %}
                In Progress
              {% else %}
                Waiting in Queue
              {% endif %}
            </td>
          </tr>
        {% endfor %}
      {% endfor %}
    </table>
  {% else %}
    The Queue is empty.</br>
    The next requested task will be immediately picked up by the framework.<br/>
  {% endif %}

</center>

{% endblock %}
