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

{% block title %} Configuration summary - {{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}} - {{build.project.name}} - Toaster {% endblock %}
{% block localbreadcrumb %}
<li>Configuration</li>
{% endblock %}

{% block nav-configuration %}
  <li class="active"><a href="{% url 'configuration' build.pk %}">Configuration</a></li>
{% endblock %}

{% block buildinfomain %}
<!-- page title -->
<div class="row-fluid span10">
 <div class="page-header">
     <h1>Configuration</h1>
 </div>
</div>

<!-- configuration table -->
<div class="row-fluid pull-right span10" id="navTab">
<ul class="nav nav-pills">
    <li class="active"><a href="#">Summary</a></li>
    <li class=""><a href="{% url 'configvars' build.id %}">BitBake variables</a></li>
</ul>

  <!-- summary -->
  <div id="summary" class="tab-pane active">
    <h3>Build configuration</h3>
    <dl class="dl-horizontal">
      {%if BB_VERSION %}<dt>BitBake version</dt><dd>{{BB_VERSION}}</dd> {% endif %}
      {%if BUILD_SYS %}<dt>Build system</dt><dd>{{BUILD_SYS}}</dd> {% endif %}
      {%if NATIVELSBSTRING %}<dt>Host distribution</dt><dd>{{NATIVELSBSTRING}}</dd> {% endif %}
      {%if TARGET_SYS %}<dt>Target system</dt><dd>{{TARGET_SYS}}</dd> {% endif %}
      {%if MACHINE %}<dt>Machine</dt><dd>{{MACHINE}}</dd> {% endif %}
      {%if DISTRO %}<dt>Distro</dt><dd>{{DISTRO}}</dd> {% endif %}
      {%if DISTRO_VERSION %}<dt>Distro version</dt><dd>{{DISTRO_VERSION}}</dd> {% endif %}
      {%if TUNE_FEATURES %}<dt>Tune features</dt><dd>{{TUNE_FEATURES}}</dd> {% endif %}
      {%if TARGET_FPU %}<dt>Target FPU</dt><dd>{{TARGET_FPU}}</dd> {% endif %}
      {%if targets.all %}<dt>Target(s)</dt>
          <dd> <ul> {% for target in targets.all %}
               <li>{{target.target}}{%if forloop.counter > 1 %}<br>{% endif %}</li>
          {% endfor %} </ul> </dd> {% endif %}
    </dl>
    <h3>Layers</h3>
    <div class="span9" style="margin-left:0px;">
    <table class="table table-bordered table-hover">
      <thead>
        <tr>
          <th>Layer</th>
          <th>Layer branch</th>
          <th>Layer commit</th>
        </tr>
      </thead>
      <tbody>{% for lv in build.layer_version_build.all|dictsort:"layer.name" %}
        <tr>
            <td>{{lv.layer.name}}</td>
            <td>{{lv.branch}}</td>
            <td> <a class="btn" data-content="<ul class='unstyled'>
                <li>{{lv.commit}}</li> </ul>">
                    {{lv.commit|truncatechars:13}}
                </a></td>
        </tr>{% endfor %}
      </tbody>
    </table>
    </div>
  </div>


</div>
{% endblock %}
