type: grid square: false columns: 1 cards: - type: markdown content: > {{ '{%' }} set trackers = [ {% for item in trackers -%} { "counter": states("counter.days_since_{{ item.id }}") | int, "threshold": state_attr("binary_sensor.threshold_for_days_since_{{ item.id }}", "upper"), "percent": (int(states("counter.days_since_{{ item.id }}")) / state_attr("binary_sensor.threshold_for_days_since_{{ item.id }}", "upper")), "name": "{{ item.name }}" }, {% endfor -%} ]{{ '%} ' }} {% raw %} {% for tracker in (trackers | sort(reverse=true, attribute='percent')) %} {% set days_left = ((tracker.threshold - tracker.counter) | int | string) %} {% set message = tracker.name + " completed " + tracker.counter | string + " days ago. Due again in " + days_left + " days." %} {% if tracker.percent > 1 %} {{ message }} {% elif tracker.percent > 0.8 %} {{ message }} {% else %} {{ message }} {% endif %} {% endfor %} {%- endraw %} {% for item in trackers %} - type: grid square: false columns: 2 title: Days Since {{ item.name }} cards: - type: button name: Reset entity: input_button.reset_days_since_{{ item.id }} tap_action: action: toggle - type: button entity: input_button.undo_reset_days_since_{{ item.id }} name: Undo tap_action: action: toggle - type: entity entity: counter.days_since_{{ item.id }} name: Days Since - type: entity entity: counter.last_non_zero_days_since_{{ item.id }} name: Last Non-Zero {% endfor %}