{% extends "basebuildpage.html" %}
{% load humanize %}
{% load projecttags %}

{% block parentbreadcrumb %}
{{build.get_sorted_target_list.0.target}} {%if build.target_set.all.count > 1%}(+ {{build.target_set.all.count|add:"-1"}}){%endif%} {{build.machine}} ({{build.completed_on|date:"d/m/y H:i"}})
{% endblock %}

{% block buildinfomain %}
<!-- page title -->
<div class="row-fluid span10">
 <div class="page-header">
     <h1>{{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}}</h1>
 </div>
</div>

<!-- build result bar -->
<div class="row-fluid span10 pull-right">
  <div class="alert {%if build.outcome == build.SUCCEEDED%}alert-success{%elif build.outcome == build.FAILED%}alert-error{%else%}alert-info{%endif%}">
    <div class="row-fluid lead">
            <span class="pull-left"><strong>
                {%if build.outcome == build.SUCCEEDED%}Completed{%elif build.outcome == build.FAILED%}Failed{%else%}{%endif%}
              </strong> on
            {{build.completed_on|date:"d/m/y H:i"}}
</span>
{% if  build.warnings_no or build.errors_no %}
&nbsp;with
{% endif %}
{%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
{% if  build.errors_no %}
     <span > <i class="icon-minus-sign red"></i><strong><a href="#errors" class="error show-errors"> {{build.errors_no}} error{{build.errors_no|pluralize}}</a></strong></span>
{% endif %}
{% if  build.warnings_no %}
{% if  build.errors_no %}
    and
{% endif %}
    <span > <i class="icon-warning-sign yellow"></i><strong><a href="#warnings" class="warning show-warnings"> {{build.warnings_no}} warning{{build.warnings_no|pluralize}}</a></strong></span>
{% endif %}
            <span class="pull-right">Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent|sectohms }}</a></span>
{%endif%}
    </div>
  </div>
</div>

{% if build.errors_no %}
<div class="accordion span10 pull-right" id="errors">
  <div class="accordion-group">
    <div class="accordion-heading">
      <a class="accordion-toggle error toggle-errors">
         <h2 id="error-toggle">
           <i class="icon-minus-sign"></i>
           {{build.errors_no}} error{{build.errors_no|pluralize}}
         </h2>
      </a>
    </div>
    <div class="accordion-body collapse in" id="collapse-errors">
      <div class="accordion-inner">
        <div class="span10">
          {% for error in logmessages %}{% if error.level == 2 %}
            <div class="alert alert-error">
              <pre>{{error.message}}</pre>
            </div>
          {% endif %}{% endfor %}
        </div>
      </div>
    </div>
  </div>
</div>
{% endif %}

{%if build.outcome == build.SUCCEEDED%}
<!-- built images -->
<div class="row-fluid span10 pull-right">
  {% if hasImages %}
	<h2>Images</h2>
	{% for target in targets %}
        {% if target.target.is_image %}
	<div class="well dashboard-section">
		<h3><a href="{% url 'target' build.pk target.target.pk %}">{{target.target}}</a>
                </h3>
		<dl class="dl-horizontal">
			<dt>Packages included</dt>
			<dd><a href="{% url 'target' build.pk target.target.pk %}">{{target.npkg}}</a></dd>
			<dt>Total package size</dt>
			<dd>{{target.pkgsz|filtered_filesizeformat}}</dd>
                        {% if target.targetHasNoImages %}
				</dl>
				<div class="row-fluid">
					<div class="alert alert-info span7">
                    <p>
                                    <b>This build did not create any image files</b>
                                  </p>
                                  <p>
                                    This is probably because valid image and license manifest
                                    files from a previous build already exist in your
                                    <code>.../poky/build/tmp/deploy</code>
                                    directory. You can
                                    also <a href="{% url 'targetpkg' build.pk target.target.pk %}">view the
                                      license manifest information</a> in Toaster.
                                  </p>
                    </div>
				</div>
                        {% else %}
			<dt>
				<i class="icon-question-sign get-help" title="The location in disk of the license manifest, a document listing all packages installed in your image and their licenses"></i>
				<a href="{% url 'targetpkg' build.pk target.target.pk %}">License manifest</a>
			</dt>
			<dd><code>{{target.target.license_manifest_path}}</code></dd>
			<dt>
				<i class="icon-question-sign get-help" title="Image files are stored in <code>/build/tmp/deploy/images/</code>"></i>
				Image files
			</dt>
			<dd>
				<ul>
                                  {% for i in target.imageFiles %}
					<li>{{i.path}}
					({{i.size|filtered_filesizeformat}})</li>
                                  {% endfor %}
				</ul>
			</dd>
		</dl>
                        {% endif %}
	</div>
        {% endif %}
	{% endfor %}

  {% endif %}
</div>

{%else%}
<!-- error dump -->
{%endif%}

<!-- build summary -->
<div class="row-fluid span10 pull-right">
<h2>Build summary</h2>
    <div class="well span4 dashboard-section" style="margin-left:0px;">
        <h4><a href="{%url 'configuration' build.pk%}">Configuration</a></h4>
            <dl>
        <dt>Machine</dt><dd>{{build.machine}}</dd>
        <dt>Distro</dt><dd>{{build.distro}}</dd>
        <dt>Layers</dt>{% for i in build.layer_version_build.all|dictsort:"layer.name" %}<dd>{{i.layer.name}}</dd>{%endfor%}
            </dl>
    </div>
    <div class="well span4 dashboard-section">
        <h4><a href="{%url 'tasks' build.pk%}">Tasks</a></h4>
            <dl>
        <dt>Total number of tasks</dt><dd><a href="{% url 'tasks' build.pk %}">{% query build.task_build order__gt=0 as alltasks %}{{alltasks.count}}</a></dd>
        <dt>
            Tasks executed
            <i class="icon-question-sign get-help" title="'Executed' tasks are those that need to be run in order to generate the task output"></i>
        </dt>
        <dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A1&amp;count=25&amp;search=&amp;page=1&amp;orderby=order%3A%2B">{% query build.task_build task_executed=1 order__gt=0 as exectask%}{{exectask.count}}</a></dd>
        <dt>
            Tasks not executed
            <i class="icon-question-sign get-help" title="'Not executed' tasks don't need to run because their outcome is provided by another task"></i>
        </dt>           
        <dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A0&amp;count=25&amp;search=&amp;page=1&amp;orderby=order%3A%2B">{% query build.task_build task_executed=0 order__gt=0 as noexectask%}{{noexectask.count}}</a></dd>
        <dt>
            Reuse
            <i class="icon-question-sign get-help" title="The percentage of 'not executed' tasks over the total number of tasks, which is a measure of the efficiency of your build"></i>
        </dt>     
        <dd>
{% query build.task_build order__gt=0 as texec %}
{% if noexectask.count|multiply:100|divide:texec.count < 0 %}
0
{% else %}
{{noexectask.count|multiply:100|divide:texec.count}}
{% endif %}
%
        </dd>
            </dl>
    </div>
    <div class="well span4 dashboard-section">
        <h4><a href="{% url 'recipes' build.pk %}">Recipes</a> & <a href="{% url 'packages' build.pk %}">Packages</a></h4>
            <dl>
        <dt>Recipes built</dt><dd><a href="{% url 'recipes' build.pk %}">{{recipecount}}</a></dd>
        <dt>Packages built</dt><dd><a href="{% url 'packages' build.pk %}">{{packagecount}}</a></dd>
            </dl>
    </div>
</div>

{% if build.warnings_no %}
<div class="accordion span10 pull-right" id="warnings">
  <div class="accordion-group">
    <div class="accordion-heading">
      <a class="accordion-toggle warning toggle-warnings">
        <h2 id="warning-toggle">
          <i class="icon-warning-sign"></i>
          {{build.warnings_no}} warning{{build.warnings_no|pluralize}}
        </h2>
      </a>
    </div>
    <div class="accordion-body collapse" id="collapse-warnings">
      <div class="accordion-inner">
        <div class="span10">
          {% for warning in logmessages %}{% if warning.level == 1 %}
            <div class="alert alert-warning">
              <pre>{{warning.message}}</pre>
            </div>
          {% endif %}{% endfor %}
        </div>
      </div>
    </div>
  </div>
</div>
{% endif %}

<script type="text/javascript">
    $(document).ready(function() {
        //show warnings section when requested from the previous page
        if (location.href.search('#warnings') > -1) {
            $('#collapse-warnings').addClass('in');
        }
    });
</script>

{% endblock %}
