{% load static %}
{% load humanize %}
{% load project_url_tag %}
<script src="{% static 'js/mrbsection.js' %}"></script>

{% if mru %}
  {% if mrb_type == 'project' %}
    <h2>
      Latest project builds

      {% if project.is_default %}
        <span class="glyphicon glyphicon-question-sign get-help heading-help" data-original-title="Builds in this project cannot be started from Toaster: they are started from the command line"></span>
        {% endif %}
    </h2>
  {% else %}
    <div class="page-header">
      <h1>Latest builds</h1>
    </div>
  {% endif %}

  <div id="latest-builds">
    {% for build in mru %}
      <div data-latest-build-result="{{build.id}}" class="alert build-result {% if build.outcome == build.SUCCEEDED %}alert-success{% elif build.outcome == build.FAILED %}alert-danger{% else %}alert-info{% endif %}">
        <!-- project title -->
        {% if mrb_type != 'project' %}
          <div class="row project-name">
            <div class="col-md-12">
              <small>
                <a class="alert-link text-uppercase" href="{% project_url build.project %}">
                  {{build.project.name}}
                </a>
              </small>
            </div>
          </div>
        {% endif %}

        <div class="row" data-role="build-status-container">
          <div class="col-md-12">
            Loading...
          </div>
        </div>
      </div>
    {% endfor %}
  </div>
{% endif %}

<!-- build main template -->
<script id="build-template" type="text/x-jsrender">
  <div class="col-md-3">
    <!-- only show link for completed builds -->
    <%if state == 'Succeeded' || state == 'Failed'%>
      <a class="alert-link" href="<%:dashboard_url%>">
        <span data-toggle="tooltip" data-role="targets-text" title="Recipes: <%:targets%>">
          <%:targets_abbreviated%>
        </span>
      </a>
    <%else targets_abbreviated !== ''%>
      <span data-toggle="tooltip" data-role="targets-text" title="Recipes: <%:targets%>">
        <%:targets_abbreviated%>
      </span>
    <%else%>
      Fetching recipe names...
    <%/if%>
  </div>

  <div class="build-state" data-build-state="<%:state%>">
    <%if state == 'Cloning'%>
      <%include tmpl='#cloning-repos-build-template'/%>
    <%else state == 'Parsing'%>
      <%include tmpl='#parsing-recipes-build-template'/%>
    <%else state == 'Queued'%>
      <%include tmpl='#queued-build-template'/%>
    <%else state == 'Succeeded' || state == 'Failed'%>
      <%include tmpl='#succeeded-or-failed-build-template'/%>
    <%else state == 'Cancelling'%>
      <%include tmpl='#cancelling-build-template'/%>
    <%else state == 'Starting'%>
      <%include tmpl='#starting-template'/%>
    <%else state == 'In Progress'%>
      <%include tmpl='#in-progress-build-template'/%>
    <%else state == 'Cancelled'%>
      <%include tmpl='#cancelled-build-template'/%>
    <%/if%>
  </div>
</script>

<!-- queued build -->
<script id="queued-build-template" type="text/x-jsrender">
  <div class="col-md-5">
    <span class="glyphicon glyphicon-question-sign get-help get-help-blue"
          title="This build is waiting for the build directory to become available">
    </span>

    Build queued
  </div>

  <div class="col-md-4">
    <!-- cancel button -->
    <%include tmpl='#cancel-template'/%>
  </div>
</script>

<!-- cloning repos build -->
<script id="cloning-repos-build-template" type="text/x-jsrender">
  <!-- progress bar and parse completion percentage -->
  <div data-role="build-status" class="col-md-4 col-md-offset-1 progress-info">
    <!-- progress bar -->
    <div class="progress">
      <div id="repos-cloned-percentage-bar-<%:id%>"
           style="width: <%:repos_cloned_percentage%>%;"
           class="progress-bar">
      </div>
    </div>
  </div>

  <div class="col-md-4 progress-info">
    <!-- parse completion percentage -->
    <span class="glyphicon glyphicon-question-sign get-help get-help-blue"
          title="Toaster is cloning the repos required for your build">
    </span>

    Cloning <span id="repos-cloned-percentage-<%:id%>"><%:repos_cloned_percentage%></span>% complete <span id="repos-cloned-progressitem-<%:id%>">(<%:progress_item%>)</span>

    <%include tmpl='#cancel-template'/%>
  </div>
</script>

<!-- parsing recipes build -->
<script id="parsing-recipes-build-template" type="text/x-jsrender">
  <!-- progress bar and parse completion percentage -->
  <div data-role="build-status" class="col-md-4 col-md-offset-1 progress-info">
    <!-- progress bar -->
    <div class="progress">
      <div id="recipes-parsed-percentage-bar-<%:id%>"
           style="width: <%:recipes_parsed_percentage%>%;"
           class="progress-bar">
      </div>
    </div>
  </div>

  <div class="col-md-4 progress-info">
    <!-- parse completion percentage -->
    <span class="glyphicon glyphicon-question-sign get-help get-help-blue"
          title="BitBake is parsing the layers required for your build">
    </span>

    Parsing <span id="recipes-parsed-percentage-<%:id%>"><%:recipes_parsed_percentage%></span>% complete

    <%include tmpl='#cancel-template'/%>
  </div>
</script>

<!-- in progress build; tasks still starting -->
<script id="starting-template" type="text/x-jsrender">
  <div class="col-md-5">
    <span class="glyphicon glyphicon-question-sign get-help get-help-blue"
          title="This build is waiting for tasks to start">
    </span>

    Tasks starting...
  </div>

  <div class="col-md-4">
    <!-- cancel button -->
    <%include tmpl='#cancel-template'/%>
  </div>
</script>

<!-- in progress build; at least one task finished -->
<script id="in-progress-build-template" type="text/x-jsrender">
  <!-- progress bar and task completion percentage -->
  <div data-role="build-status" class="col-md-4 col-md-offset-1 progress-info">
    <!-- progress bar -->
    <div class="progress" id="build-pc-done-title-<%:id%>">
      <div id="build-pc-done-bar-<%:id%>"
           style="width: <%:tasks_complete_percentage%>%;"
           class="progress-bar">
      </div>
    </div>
  </div>

  <div class="col-md-4 progress-info">
    <!-- task completion percentage -->
    <span id="build-pc-done-<%:id%>"><%:tasks_complete_percentage%></span>% of
    tasks complete

    <!-- cancel button -->
    <%include tmpl='#cancel-template'/%>
  </div>
</script>

<!-- cancelling build -->
<script id="cancelling-build-template" type="text/x-jsrender">
  <div class="col-md-9">
    Cancelling the build ...
  </div>
</script>

<!-- succeeded or failed build -->
<script id="succeeded-or-failed-build-template" type="text/x-jsrender">
  <!-- completed_on -->
  <div class="col-md-2">
    <%:completed_on%>
  </div>

  <!-- errors -->
  <div class="col-md-2">
    <%if errors%>
      <span class="glyphicon glyphicon-minus-sign"></span>
      <a href="<%:dashboard_errors_url%>" class="alert-link">
        <%:errors%> error<%:errors_pluralise%>
      </a>
    <%/if%>
  </div>

  <!-- warnings -->
  <div class="col-md-2">
    <%if warnings%>
      <span class="glyphicon glyphicon-warning-sign build-warnings"></span>
      <a href="<%:dashboard_warnings_url%>" class="alert-link build-warnings">
        <%:warnings%> warning<%:warnings_pluralise%>
      </a>
    <%/if%>
  </div>

  <!-- build time -->
  <div class="col-md-3">
    Build time:

    <span data-role="data-recent-build-buildtime-field">
      <%if state == 'Succeeded'%>
        <a class="alert-link" href="<%:buildtime_url%>"><%:buildtime%></a>
      <%else%>
        <%:buildtime%>
      <%/if%>
    </span>

    <!-- rebuild button -->
    <%include tmpl='#rebuild-template'/%>
  </div>
</script>

<!-- cancelled build -->
<script id="cancelled-build-template" type="text/x-jsrender">
  <!-- build cancelled message -->
  <div class="col-md-6">
    Build cancelled
  </div>

  <!-- rebuild button -->
  <div class="col-md-3">
    <%include tmpl='#rebuild-template'/%>
  </div>
</script>

<!-- rebuild button or no rebuild icon -->
<script id="rebuild-template" type="text/x-jsrender">
  <%if is_default_project_build%>
    <!-- no rebuild info icon -->
    <span class="pull-right glyphicon glyphicon-question-sign get-help <%if state == 'Succeeded'%>get-help-green<%else state == 'Failed'%>get-help-red<%else%>get-help-blue<%/if%>"
    title="Builds in this project cannot be started from Toaster: they are started from the command line">
    </span>
  <%else%>
    <!-- rebuild button -->
    <span class="rebuild-btn alert-link <%if state == 'Success'%>success<%else state == 'Failed'%>danger<%else%>info<%/if%> pull-right"
    data-request-url="<%:rebuild_url%>" data-target='<%:build_targets_json%>'>
      <span class="glyphicon glyphicon-repeat"></span>
      Rebuild
    </span>
  <%/if%>
</script>

<!-- cancel button or no cancel icon -->
<script id="cancel-template" type="text/x-jsrender">
  <%if is_default_project_build%>
    <!-- no cancel icon -->
    <span class="glyphicon glyphicon-question-sign get-help get-help-blue pull-right" title="Builds in this project cannot be cancelled from Toaster: they can only be cancelled from the command line"></span>
  <%else%>
    <!-- cancel button -->
    <span class="cancel-build-btn pull-right alert-link"
    data-buildrequest-id="<%:buildrequest_id%>" data-request-url="<%:cancel_url%>">
      <span class="glyphicon glyphicon-remove-circle"></span>
      Cancel
    </span>
  <%/if%>
</script>

<script>
  $(document).ready(function () {
    var ctx = {
      mrbType : "{{mrb_type}}",
    }

    try {
      mrbSectionInit(ctx);
    } catch (e) {
      document.write("Sorry, An error has occurred loading this page");
      console.warn(e);
    }
  });
</script>
