{#-----------------constants---------------------------#} {% set barGap = 32 %} {% set barThickness = 48 %} {% set barToValue = 6 %} {% set arrowHead = 6 %} {% set graphPadding = 48 %} {#------calculate values from template elements--------#} {% set values = elementsToValues(elements, 'tx-..-([1-9]\d*)-value') %} {% set ns = namespace(cols=0, rows=1) %} {% for k, v in elements %} {% set index = regex_group('^tx-..-([1-9]\d*)-value$', k) %} {% if index != null %} {% set i = index | int %} {% set ns.rows = [i % 10, ns.rows] | max %} {% set ns.cols = [i // 10, ns.cols] | max %} {% endif %} {% endfor %} {% set nbRows = ns.rows %} {% set nbCols = ns.cols + 1 %} {% set maxValue = values | max %} {% set height = 240 %} {% set width = barGap + (barThickness*nbRows + barGap) * nbCols %} {% set denominator = 100.0 %} {% if 1.0 >= maxValue %} {% set denominator = 1.0 %} {% endif %} {% if maxValue > 100.0 %} {% set denominator = maxValue %} {% endif %} {# bars #} {% for j in range(nbRows) %} {% for i in range(nbCols) %} {% set x = barGap + (barThickness*(nbRows-1-j)) + (barGap + barThickness*nbRows) * i %} {% set index = i * 10 + j + 1 %} {% set value = valueSourceToValue(elements['tx-xx-' ~ index ~ '-value']) or 0.0 %} {% set barHeight = height * value / denominator | round(3) %} {% set barY = height - barHeight %} {% endfor %} {% endfor %} {# values #} {% for j in range(nbRows) %} {% for i in range(nbCols) %} {% set x = barGap + (barThickness*(nbRows-1-j)) + (barGap + barThickness*nbRows) * i %} {% set index = i * nbRows + j %} {% set index = i * 10 + j + 1 %} {% set value = valueSourceToValue(elements['tx-xx-' ~ index ~ '-value']) or 0.0 %} {% set barHeight = height * value / denominator | round(3) %} {% set barY = height - barHeight %} {% endfor %} {% endfor %} {# labels #} {%for i in range(nbCols) %} {% set index = i * 10 %} {% set textWidth = barGap + barThickness*nbRows - 2 %} {% set x = barGap + barThickness*nbRows/2 + textWidth/2 + (barGap + barThickness*nbRows) * i %} {% endfor %} {# legend #} {%for j in range(nbRows) %} {% set index = j * 10 %} {% set y = (nbRows - j - 1) * 48 %} {% endfor %} {%for j in range(nbRows) %} {% set index = j * 10 %} {% set y = (nbRows - j - 1) * 48 %} {% endfor %} {# axes #}