{#-----------------constants---------------------------#} {% set minRadius = 48 %} {% set titleHeight = 48 %} {% set textHeight = 24 %} {% set gaugeThickness = 24 %} {% set gap = 12 %} {% set labelWidth = 264 %} {#------calculate values from template elements--------#} {% set values = elementsToValues(elements, 'tx-..-([1-9]\d*)-value') %} {% set n = values | length %} {% if n == 0 %} {% set values = [ 0 ] %} {% set n = 1 %} {% endif %} {% set height = titleHeight + 2*((gaugeThickness + gap) * n + 96 + minRadius) %} {% set width = 2*((gaugeThickness + gap) * n + 168 + minRadius) %} {#-------------svg starts here-------------------------#} {%for i in range(n)%} {% set arcAngle = (3*pi/2) * clamp(values[i], 0, 100)/100 %} {% set startAngle = - pi/2 %} {% set endAngle = pi %} {% set iR = (minRadius + (n-i) * (gaugeThickness + gap))|round(3) %} {% set oR = (iR + gaugeThickness)|round(3) %} {% 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 %} {% endfor %} {%for i in range(n)%} {# gauge specific variables. wrt topLeft of the gauge, so center is at oR,oR #} {% set arcAngle = (3*pi/2) * clamp(values[i], 0, 100)/100 %} {% set startAngle = -pi/2 %} {% set endAngle = startAngle + arcAngle %} {% set iR = (minRadius + (n-i) * (gaugeThickness + gap))|round(3) %} {% set oR = (iR + gaugeThickness)|round(3) %} {% 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)%} {%endfor%} {# title #} Title {# labels 0% to 100% #} {%set rMax = (n+1)*gaugeThickness + n*gap + minRadius %} {% for a in range(0, 101, 10) %} {% set angle = (3*pi/2) * a/100 - pi/2 %} {% set r = minRadius + n*(gaugeThickness + gap) + 60 %} {% set x = 168 + rMax + r*cos(angle) %} {% set y = titleHeight + 96 + rMax + r*sin(angle) %} Label {% endfor%} {# buttons #} {%for i in range(n+1) %} {% set center_y_add = titleHeight - (titleHeight-gap)/2 + 96 + i*(gaugeThickness+gap) %} {% set center_y_remove = titleHeight + 96 + i*(gaugeThickness+gap) %} {% if n > 1 and n > i %} {% endif %} {% endfor %}