4 background-color: navajowhite;
8 background-color: orangered;
16 border-spacing: 2em 0;
20 display: inline-block;
26 border: 1px solid black;
28 display: inline-block;
35 .events-box .btnline {
46 {%- macro event_box(title, events, warn_days=999, bad_days=9999) -%}
47 {# Calculate maximum timestamp of all relevant events #}
48 {%- set when = last_events.items() | selectattr(0, 'in', events) | map(attribute=1) | max -%}
49 {%- set days = when | days | default(0) -%}
50 <div class="events-box{% if days >= bad_days %} bad {% elif days >= warn_days %} warning{% endif %}">
51 <h4>{{title | capitalize}}</h4>
52 {#- The first item in the list is used as button label, last item in the overview -#}
54 "COFFEE_MACHINE_CLEANED": ["cleaned"],
55 "COFFEE_PACK_OPENED": ["opened"],
56 "LAST_COFFEE_PACK_OPENED": ["last opened"],
57 "MILK_CONTAINER_CLEANED": ["cleaned (water)", "cleaned"],
58 "MILK_CONTAINER_CLEANED_WITH_TABLET": ["cleaned (tablet)"],
61 {% if name -%} {# User logged in - show action buttons #}
62 {%- for event in events %}
64 <input type="button" value="{{ verb[event]|first }}"
65 onclick="addEvent('{{ event }}', '{{ verb[events[0]]|last }} the {{ title }}')" />
66 ({{ last_events[event] | humanize(max_interval="days") if event in last_events else "never" }})
69 {%- else -%} {# Nobody logged in - show overview with summary times #}
71 {{ verb[events[0]]|last }} {{ when | humanize(max_interval="days") }}
73 never {{ verb[events[0]]|last }}
79 <h3>{{ ("Record<br />event" if name else "Events") | safe }}:</h3>
80 {{ event_box('coffee machine', ['COFFEE_MACHINE_CLEANED'], warn_days=7, bad_days=21 ) }}
81 {{ event_box('milk container', ['MILK_CONTAINER_CLEANED', 'MILK_CONTAINER_CLEANED_WITH_TABLET'], warn_days=4, bad_days=7) }}
83 {{ event_box('coffee pack', ['COFFEE_PACK_OPENED'] ) }}