{#-----------------constants---------------------------#} {% set titleHeight = 48 %} {% set textHeight = 24 %} {% set gap = 12 %} {% set startAngle = -5*pi/4 %} {% set endAngle = pi/4 %} {% set iR = 54 %} {% set oR = 84 %} {% set gaugeGap = 56 %} {#------calculate values from template elements--------#} {% set values = elementsToValues(elements, 'tx-..-([1-9]\d*)-value') %} {% set n = values|length %} {% set height = titleHeight + gap + (2*oR+2*gap+2*textHeight)*(1+n//4) %} {% set max_n_horizontal = [4,n]|min %} {% set width = (2*oR)*(max_n_horizontal) + gaugeGap*(max_n_horizontal-1) %} {#-------------svg starts here-------------------------#} {%for i in range(n)%} {# gauge specific variables. wrt topLeft of the gauge, so center is at oR,oR #} {% set arcAngle = (endAngle-startAngle) * clamp(values[i], 0, 100)/100 %} {% set startAngle = startAngle + arcAngle %} {% set startAngleDegree = 180*startAngle/pi %} {% set x0 = (oR + oR * cos(startAngle))|round(3) %} {% set y0 = (oR + oR * sin(startAngle))|round(3) %} {% set x1 = (oR + oR * cos(endAngle))|round(3) %} {% set y1 = (oR + oR * sin(endAngle))|round(3) %} {% set x2 = (oR + iR * cos(endAngle))|round(3) %} {% set y2 = (oR + iR * sin(endAngle))|round(3) %} {% set x3 = (oR + iR * cos(startAngle))|round(3) %} {% set y3 = (oR + iR * sin(startAngle))|round(3) %} {% set largeArc = 1 if (endAngle-startAngle) >= pi else 0 %} {% endfor %} {%for i in range(n)%} {# gauge specific variables. wrt topLeft of the gauge, so center is at oR,oR #} {% set arcAngle = (endAngle-startAngle) * clamp(values[i], 0, 100)/100 %} {% set endAngle = startAngle + arcAngle %} {% set x0 = (oR + oR * cos(startAngle))|round(3) %} {% set y0 = (oR + oR * sin(startAngle))|round(3) %} {% set x1 = (oR + oR * cos(endAngle))|round(3) %} {% set y1 = (oR + oR * sin(endAngle))|round(3) %} {% set x2 = (oR + iR * cos(endAngle))|round(3) %} {% set y2 = (oR + iR * sin(endAngle))|round(3) %} {% set x3 = (oR + iR * cos(startAngle))|round(3) %} {% set y3 = (oR + iR * sin(startAngle))|round(3) %} {% set largeArc = 1 if (endAngle-startAngle) >= pi else 0 %} {%endfor%} {# label for item i#} {%for i in range(n)%} {% set labelWidth = (gaugeGap+2*oR-gap) %} {%endfor%} {# title #} Title {# buttons #} {%for i in range(n+1) %} {% if n > 1 and n > i %} {% endif %} {% endfor %}