Fix ugens madplan: standalone button-card i stedet for entities-nested

- button-card som entity-row i entities-kort understøtter ikke custom_fields korrekt
- Bruger nu standalone custom:button-card direkte under cards
- Forenklet JS: var i stedet for const/let, \x27 i stedet for escaped quotes
- Undgår em-dash og andre special chars
This commit is contained in:
2026-04-19 13:41:27 +02:00
parent 27228815ba
commit acb2540890
+44 -47
View File
@@ -65,66 +65,63 @@ cards:
service: script.mad_announcement service: script.mad_announcement
# 📅 Ugens madplan # 📅 Ugens madplan
- type: entities
title: Ugens madplan
show_header_toggle: false
entities:
- type: custom:button-card - type: custom:button-card
entity: sensor.mealie_madplan_ugen entity: sensor.mealie_madplan_ugen
name: Ugens madplan
show_icon: false show_icon: false
show_name: false show_name: true
show_state: false show_state: false
styles: styles:
card: card:
- padding: 0 - padding: 0
- background: none - border-radius: 12px
- box-shadow: none name:
- font-size: 16px
- font-weight: bold
- padding: 12px 12px 4px 12px
- justify-self: start
custom_fields: custom_fields:
week: | week: |
[[[ [[[
if (!entity || !entity.attributes || !entity.attributes.items) if (!entity || !entity.attributes || !entity.attributes.items)
return 'Ingen madplan data'; return '<div>Ingen madplan data</div>';
const items = entity.attributes.items; var items = entity.attributes.items;
const dayNames = ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag']; var dayNames = ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'];
const today = new Date().toISOString().slice(0,10); var today = new Date().toISOString().slice(0,10);
const meals = {}; var meals = {};
items.forEach(function(item) { for (var j = 0; j < items.length; j++) {
if (item.recipe && item.recipe.name) { var it = items[j];
meals[item.date] = { name: item.recipe.name, slug: item.recipe.slug || '' }; if (it.recipe && it.recipe.name) {
meals[it.date] = { name: it.recipe.name, slug: it.recipe.slug || '' };
} }
}); }
const now = new Date(); var now = new Date();
const dayOfWeek = now.getDay(); var dow = now.getDay();
const monday = new Date(now); var monday = new Date(now);
monday.setDate(now.getDate() - (dayOfWeek === 0 ? 6 : dayOfWeek - 1)); monday.setDate(now.getDate() - (dow === 0 ? 6 : dow - 1));
let html = '<div style="width:100%">'; var html = '<div style="width:100%">';
for (let i = 0; i < 7; i++) { for (var i = 0; i < 7; i++) {
const d = new Date(monday); var d = new Date(monday);
d.setDate(monday.getDate() + i); d.setDate(monday.getDate() + i);
const dateStr = d.toISOString().slice(0,10); var dateStr = d.toISOString().slice(0,10);
const dayName = dayNames[d.getDay()]; var dayName = dayNames[d.getDay()];
const meal = meals[dateStr]; var meal = meals[dateStr];
const isToday = dateStr === today; var isToday = dateStr === today;
const bg = isToday ? 'var(--primary-color)' : 'transparent'; var bg = isToday ? 'var(--primary-color)' : 'transparent';
const textColor = isToday ? 'white' : 'var(--primary-text-color)'; var tc = isToday ? 'white' : 'var(--primary-text-color)';
const dayColor = isToday ? 'rgba(255,255,255,0.7)' : 'var(--secondary-text-color)'; var dc = isToday ? 'rgba(255,255,255,0.7)' : 'var(--secondary-text-color)';
const weight = isToday ? 'bold' : 'normal'; var fw = isToday ? 'bold' : 'normal';
const radius = isToday ? '8px' : '0'; var br = isToday ? '8px' : '0';
const border = isToday ? 'none' : '1px solid var(--divider-color)'; var bb = isToday ? 'none' : '1px solid var(--divider-color)';
const mealName = meal ? meal.name : ''; var mn = meal ? meal.name : '-';
const slug = meal ? meal.slug : ''; var sl = meal ? meal.slug : '';
const link = slug ? 'http://anneclaus.dk:9925/g/home/r/' + slug : ''; var lnk = sl ? 'http://anneclaus.dk:9925/g/home/r/' + sl : '';
const cursor = slug ? 'pointer' : 'default'; var cur = sl ? 'pointer' : 'default';
const clickAttr = slug ? ' onclick="window.open(\'' + link + '\',\'_blank\')"' : ''; var oc = sl ? ' onclick="window.open(\x27' + lnk + '\x27,\x27_blank\x27)"' : '';
html += '<div style="display:flex;align-items:center;padding:10px 12px;' html += '<div style="display:flex;align-items:center;padding:10px 12px;background:' + bg + ';border-radius:' + br + ';border-bottom:' + bb + ';cursor:' + cur + '"' + oc + '>';
+ 'background:' + bg + ';border-radius:' + radius + ';' html += '<div style="width:70px;font-size:12px;color:' + dc + ';text-transform:uppercase;font-weight:600">' + dayName + '</div>';
+ 'border-bottom:' + border + ';cursor:' + cursor + '"' html += '<div style="flex:1;font-size:15px;color:' + tc + ';font-weight:' + fw + '">' + mn + '</div>';
+ clickAttr + '>' html += '</div>';
+ '<div style="width:70px;font-size:12px;color:' + dayColor
+ ';text-transform:uppercase;font-weight:600">' + dayName + '</div>'
+ '<div style="flex:1;font-size:15px;color:' + textColor
+ ';font-weight:' + weight + '">' + mealName + '</div>'
+ '</div>';
} }
html += '</div>'; html += '</div>';
return html; return html;