{% set stroke_width = 4 %} {% set margin = 2 %} {% macro path(data_points, vb_height) %} {% for value, position in data_points %} {% set x = (position * vb_width)+margin %} {% set y = (vb_height - value)+margin %} {% if loop.first %}M{{ x | int }} {{ y | int }}{% else %} L{{ x | int }} {{ y | int }}{% endif %} {% endfor %} {% endmacro %} {% macro path_best_fit(best_fit_points, vb_height) %} {% for value, position in best_fit_points %} {% set x = (position * vb_width)+margin %} {% set y = (vb_height - value)+margin %} {% if loop.first %}M{{ x | int }} {{ y | int }}{% else %} L{{ x | int }} {{ y | int }}{% endif %} {% endfor %} {% endmacro %} {% macro path_band(lower_points, upper_points, vb_height) %} {% if lower_points and upper_points %} M{% for value, position in lower_points %}{{ (((position * vb_width) + margin) | int) }} {{ (((vb_height - value) + margin) | int) }}{% if not loop.last %} L{% endif %}{% endfor %} {% for value, position in upper_points|reverse %} L{{ (((position * vb_width) + margin) | int) }} {{ (((vb_height - value) + margin) | int) }}{% endfor %} Z {% endif %} {% endmacro %} {% macro circles(data_points, color) %} {% for value, position in data_points %} {% set x = (position * vb_width)+margin %} {% set y = (vb_height - value)+margin %} {% endfor %} {% endmacro %} {% macro forecast_circles(data_points, details, color) %} {% for value, position in data_points %} {% if loop.last %} {% set x = (position * vb_width)+margin %} {% set y = (vb_height - value)+margin %} {% endif %} {% endfor %} {% endmacro %} {% macro plot_line(points, color) %} {{ circles(points, color) }} {% endmacro %} {% macro random_int() %}{% for n in [0,1,2,3,4,5] %}{{ [0,1,2,3,4,5,6,7,8,9]|random }}{% endfor %}{% endmacro %} {% set parts = [random_int()] %} {% set unique_id = parts|join('-') %}

{{ title }}

{% if best_fit_formula and not forecast_enabled %} {{ best_fit_formula.kg_per_week }} kg/week, {{ best_fit_formula.kg_per_month }} kg/month {% endif %}

{% for epoch in epochs %}
{% if epoch == 'Custom' %} {% else %} {{ epoch}} {% endif %}
{% endfor %}
{% if forecast_enabled %}
{% if forecast.available %}
Forecast · {{ forecast.horizon_weeks }} weeks
{{ forecast.projected_value }}kg projected E1RM
{% if forecast.projected_change >= 0 %}+{% endif %}{{ forecast.projected_change }}kg total
{{ forecast.confidence }} confidence · {{ forecast.observed_points }} sessions
{% if forecast.selected_top_set %}
Top-set guide {{ forecast.selected_top_set.weight_display }}kg × {{ forecast.selected_top_set.repetitions }} at the selected rep target · details in History
{% endif %}
Horizon {% for weeks, label in forecast_horizons %} {% endfor %}
{% else %}
Forecast unavailable
{{ forecast.reason }}
{% endif %}
{% endif %} {% if selected_epoch == 'Custom' %}
{% endif %} {% if forecast_enabled and forecast.available %} {{ forecast_circles(forecast_points, forecast_details, '#059669') }} {% endif %} {% for plot in plots %} {{ plot_line(plot.points, plot.color) }} {% endfor %} {% for detail in plot_details %} {% set x = (detail.position * vb_width) - (stroke_width/2) + margin %} {% set y = 0 %} {% set width = stroke_width %} {% set height = vb_height + margin %} {% endfor %} {% if forecast_enabled and forecast.available %} {% for detail in forecast_details %} {% set x = (detail.position * vb_width) - (stroke_width/2) + margin %} {% endfor %} {% endif %}
{% for plot in plots %}
{{ plot.label }}
{% endfor %} {% if forecast_enabled and forecast.available %}
Projected E1RM
{% endif %}