Fix 7-day meal plan table: use namespace to build rows, avoid YAML folded-scalar whitespace issue

This commit is contained in:
2026-04-22 19:36:29 +02:00
parent 7b7dc22245
commit 5bbf0a5082
+27 -66
View File
@@ -64,72 +64,33 @@ cards:
action: call-service
service: script.mad_announcement
# 📅 Ugens madplan
- type: custom:button-card
entity: sensor.mealie_madplan_ugen
name: Ugens madplan
show_icon: false
show_name: true
show_state: false
styles:
card:
- padding: 0
- border-radius: 12px
name:
- font-size: 16px
- font-weight: bold
- padding: 12px 12px 4px 12px
- justify-self: start
custom_fields:
week: |
[[[
if (!entity || !entity.attributes || !entity.attributes.items)
return '<div>Ingen madplan data</div>';
var items = entity.attributes.items;
var dayNames = ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'];
var today = new Date().toISOString().slice(0,10);
var meals = {};
for (var j = 0; j < items.length; j++) {
var it = items[j];
if (it.recipe && it.recipe.name) {
meals[it.date] = { name: it.recipe.name, slug: it.recipe.slug || '' };
}
}
var now = new Date();
var dow = now.getDay();
var monday = new Date(now);
monday.setDate(now.getDate() - (dow === 0 ? 6 : dow - 1));
var html = '<div style="width:100%">';
for (var i = 0; i < 7; i++) {
var d = new Date(monday);
d.setDate(monday.getDate() + i);
var dateStr = d.toISOString().slice(0,10);
var dayName = dayNames[d.getDay()];
var meal = meals[dateStr];
var isToday = dateStr === today;
var bg = isToday ? 'var(--primary-color)' : 'transparent';
var tc = isToday ? 'white' : 'var(--primary-text-color)';
var dc = isToday ? 'rgba(255,255,255,0.7)' : 'var(--secondary-text-color)';
var fw = isToday ? 'bold' : 'normal';
var br = isToday ? '8px' : '0';
var bb = isToday ? 'none' : '1px solid var(--divider-color)';
var mn = meal ? meal.name : '-';
var sl = meal ? meal.slug : '';
var lnk = sl ? 'http://anneclaus.dk:9925/g/home/r/' + sl : '';
var cur = sl ? 'pointer' : 'default';
var oc = sl ? ' onclick="window.open(\x27' + lnk + '\x27,\x27_blank\x27)"' : '';
html += '<div style="display:flex;align-items:center;padding:10px 12px;background:' + bg + ';border-radius:' + br + ';border-bottom:' + bb + ';cursor:' + cur + '"' + oc + '>';
html += '<div style="width:70px;font-size:12px;color:' + dc + ';text-transform:uppercase;font-weight:600">' + dayName + '</div>';
html += '<div style="flex:1;font-size:15px;color:' + tc + ';font-weight:' + fw + '">' + mn + '</div>';
html += '</div>';
}
html += '</div>';
return html;
]]]
extra_styles: |
#week {
width: 100%;
}
# 📅 Madplan: i dag + 6 dage
- type: markdown
content: |-
{%- set ns = namespace(rows="") -%}
{%- set items = state_attr('sensor.mealie_madplan_ugen', 'items') or [] -%}
{%- set days = ['Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag','Søndag'] -%}
{%- for offset in range(7) -%}
{%- set day = now().date() + timedelta(days=offset) -%}
{%- set ms = items | selectattr('date', 'eq', day.isoformat()) | list -%}
{%- set m = ms[0] if ms else none -%}
{%- set recipe = m.recipe if m else none -%}
{%- set name = recipe.name if recipe else '' -%}
{%- set slug = recipe.slug if recipe else '' -%}
{%- set label = 'I dag' if offset == 0 else days[day.weekday()] -%}
{%- if slug -%}
{%- set ns.rows = ns.rows + "| **" + label + "** | [" + name + "](http://anneclaus.dk:9925/g/home/r/" + slug + ") |\n" -%}
{%- elif name -%}
{%- set ns.rows = ns.rows + "| **" + label + "** | " + name + " |\n" -%}
{%- else -%}
{%- set ns.rows = ns.rows + "| **" + label + "** | - |\n" -%}
{%- endif -%}
{%- endfor -%}
## Næste 7 dage
| Dag | Ret |
| --- | --- |
{{ ns.rows }}
# 🛒 Bilka ToGo - opdater og vis kryds-af liste
- type: vertical-stack