{# Scripts, for visualization#}
{# Render measurement result charts #}
{% for test in test_data %}
  {% if test.status == 'SUCCESS' %}
    {% for measurement in test.measurements %}
      {% set chart_elem_id = test.name + '_' + measurement.name + '_chart' %}
      {% include 'measurement_chart.html' %}
    {% endfor %}
  {% endif %}
{% endfor %}
{# Styles #}
  {# Test metadata #}
  
General
  
  
  {# Test result summary #}
  
Test result summary
  
  
    {% for test in test_data %}
      {% if loop.index is even %}
        {% set row_style = 'style="background-color: #f2f2f2"' %}
      {% else %}
        {% set row_style = 'style="background-color: #ffffff"' %}
      {% endif %}
      {% if test.status == 'SUCCESS' %}
        {% for measurement in test.measurements %}
          
            {% if loop.index == 1 %}
              | {{ test.name }}: {{ test.description }}{% else %}
              {# add empty cell in place of the test name#} | {% endif %}
            {% if measurement.absdiff > 0 %}
              {% set result_style = "color: red" %}
            {% elif measurement.absdiff == measurement.absdiff %}
              {% set result_style = "color: green" %}
            {% else %}
              {% set result_style = "color: orange" %}
            {%endif %}
            {% if measurement.reldiff|abs > 2 %}
              {% set result_style = result_style + "; font-weight: bold" %}
            {% endif %} | {{ measurement.description }} | {{ measurement.value.mean }} | {{ measurement.absdiff_str }} | {{ measurement.reldiff_str }} | 
        {% endfor %}
      {% else %}
        {{test.status }} |  |  |  | {% endif %}
    {% endfor %} | 
  {# Detailed test results #}
  {% for test in test_data %}
  
{{ test.name }}: {{ test.description }}
  
    {% if test.status == 'SUCCESS' %}
      {% for measurement in test.measurements %}
        
          {{ measurement.description }}
          
            {{ measurement.value.mean }}
            
            {% if measurement.absdiff > 0 %}
            
            {% elif measurement.absdiff == measurement.absdiff %}
            
            {% else %}
            
            {% endif %}
            {{ measurement.absdiff_str }} ({{measurement.reldiff_str}})
            
          
          {# Table for trendchart and the statistics #}
          
            
              | {# Linechart #} | {# Measurement statistics #} 
                  
                    | Test runs | {{ measurement.value.sample_cnt }} |  
                    | -/+ | -{{ measurement.value.minus }} / +{{ measurement.value.plus }} |  
                    | Min | {{ measurement.value.min }} |  
                    | Max | {{ measurement.value.max }} |  
                    | Stdev | {{ measurement.value.stdev }} |  
                    |  |  |  | 
          
          {# Task and recipe summary from buildstats #}
          {% if 'buildstats' in measurement %}
            Task resource usage
            
              
                | Number of tasks | Top consumers of cputime | 
              
                | {{ measurement.buildstats.tasks.count }} ({{ measurement.buildstats.tasks.change }}){# Table of most resource-hungry tasks #} | 
                    {% for diff in measurement.buildstats.top_consumer|reverse %}
                    
                      {% endfor %}| {{ diff.pkg }}.{{ diff.task }} | {{ '%0.0f' % diff.value2 }} s |  | 
              
                | Biggest increase in cputime | Biggest decrease in cputime | 
              
                {# Table biggest increase in resource usage #}
                | {# Table biggest decrease in resource usage #}
                    {% for diff in measurement.buildstats.top_increase|reverse %}
                    
                      {% endfor %}| {{ diff.pkg }}.{{ diff.task }} | {{ '%+0.0f' % diff.absdiff }} s |  | 
                    {% for diff in measurement.buildstats.top_decrease %}
                    
                      {% endfor %}| {{ diff.pkg }}.{{ diff.task }} | {{ '%+0.0f' % diff.absdiff }} s |  | 
            
            {# Recipe version differences #}
            {% if measurement.buildstats.ver_diff %}
              
Recipe version changes
              
                {% for head, recipes in measurement.buildstats.ver_diff.items() %}
                  
                    | {{ head }} | 
                  {% for name, info in recipes|sort %}
                    
                      | {{ name }} | {{ info }} | 
                  {% endfor %}
                {% endfor %}
              
            {% else %}
              
No recipe version changes detected
            {% endif %}
          {% endif %}
        
 
      {% endfor %}
    {# Unsuccessful test #}
    {% else %}
      
{{ test.status }}
      {% if test.err_type %}({{ test.err_type }}){% endif %}
      
      {{ test.message }}
    {% endif %}
  {% endfor %}