fix: saveCurrentMomentAsMeal crasht bij meal-group entries
Oorzaak: entry.item.kh probeerde meal-group entry's .item te lezen, maar meal-group entries hebben .items (array) i.p.v. .item. Fix: entry.type check in KH-berekening én preview rendering. - Meal-group: itereer entry.items voor KH + toon 'Naam (N items, Xg kh)' - Los item: origineel gedrag behouden Ook playwright.config gereset naar origineel (zonder projects array)
This commit is contained in:
parent
2077cb060b
commit
45a32ca964
3 changed files with 43 additions and 22 deletions
|
|
@ -4169,8 +4169,23 @@ button:active, .btn:active, .meal-card-main:active, .dagboek-item:active, .food-
|
|||
return map[nevoCat] || 'overig';
|
||||
}
|
||||
|
||||
/** Flatten mixed entries (items + meal-groups) naar uniform {item, portie} array */
|
||||
function flattenEntries(entries) {
|
||||
const result = [];
|
||||
entries.forEach(entry => {
|
||||
if (entry.type === 'meal') {
|
||||
entry.items.forEach(e => result.push({ item: e.item, portie: e.portie }));
|
||||
} else {
|
||||
result.push({ item: entry.item, portie: entry.portie });
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
/** Genereer een slimme, menselijke maaltijdnaam op basis van de categorieën */
|
||||
function suggestMealName(items) {
|
||||
// Unwrap meal-group entries first
|
||||
items = flattenEntries(items);
|
||||
if (!items || items.length === 0) return '';
|
||||
if (items.length === 1) return shortItemName(items[0].item.naam);
|
||||
|
||||
|
|
@ -4273,8 +4288,11 @@ button:active, .btn:active, .meal-card-main:active, .dagboek-item:active, .food-
|
|||
|
||||
function saveCurrentMomentAsMeal(momentId) {
|
||||
const dayData = getOrCreateDay(activeDate);
|
||||
const items = dayData[momentId] || [];
|
||||
if (items.length === 0) return;
|
||||
const rawItems = dayData[momentId] || [];
|
||||
if (rawItems.length === 0) return;
|
||||
|
||||
// Flatten: unwrap meal-group entries into uniform {item, portie} items
|
||||
const items = flattenEntries(rawItems);
|
||||
|
||||
// Calculate total kh
|
||||
let khTotaal = 0;
|
||||
|
|
@ -4337,7 +4355,7 @@ button:active, .btn:active, .meal-card-main:active, .dagboek-item:active, .food-
|
|||
maaltijden.push({
|
||||
id: 'm' + Date.now(),
|
||||
naam: name,
|
||||
items: items.map(e => ({ item: e.item, portie: e.portie })),
|
||||
items: items,
|
||||
khTotaal: Math.round(khTotaal)
|
||||
});
|
||||
saveMaaltijden();
|
||||
|
|
|
|||
24
index.html
24
index.html
|
|
@ -4169,8 +4169,23 @@ button:active, .btn:active, .meal-card-main:active, .dagboek-item:active, .food-
|
|||
return map[nevoCat] || 'overig';
|
||||
}
|
||||
|
||||
/** Flatten mixed entries (items + meal-groups) naar uniform {item, portie} array */
|
||||
function flattenEntries(entries) {
|
||||
const result = [];
|
||||
entries.forEach(entry => {
|
||||
if (entry.type === 'meal') {
|
||||
entry.items.forEach(e => result.push({ item: e.item, portie: e.portie }));
|
||||
} else {
|
||||
result.push({ item: entry.item, portie: entry.portie });
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
/** Genereer een slimme, menselijke maaltijdnaam op basis van de categorieën */
|
||||
function suggestMealName(items) {
|
||||
// Unwrap meal-group entries first
|
||||
items = flattenEntries(items);
|
||||
if (!items || items.length === 0) return '';
|
||||
if (items.length === 1) return shortItemName(items[0].item.naam);
|
||||
|
||||
|
|
@ -4273,8 +4288,11 @@ button:active, .btn:active, .meal-card-main:active, .dagboek-item:active, .food-
|
|||
|
||||
function saveCurrentMomentAsMeal(momentId) {
|
||||
const dayData = getOrCreateDay(activeDate);
|
||||
const items = dayData[momentId] || [];
|
||||
if (items.length === 0) return;
|
||||
const rawItems = dayData[momentId] || [];
|
||||
if (rawItems.length === 0) return;
|
||||
|
||||
// Flatten: unwrap meal-group entries into uniform {item, portie} items
|
||||
const items = flattenEntries(rawItems);
|
||||
|
||||
// Calculate total kh
|
||||
let khTotaal = 0;
|
||||
|
|
@ -4337,7 +4355,7 @@ button:active, .btn:active, .meal-card-main:active, .dagboek-item:active, .food-
|
|||
maaltijden.push({
|
||||
id: 'm' + Date.now(),
|
||||
naam: name,
|
||||
items: items.map(e => ({ item: e.item, portie: e.portie })),
|
||||
items: items,
|
||||
khTotaal: Math.round(khTotaal)
|
||||
});
|
||||
saveMaaltijden();
|
||||
|
|
|
|||
|
|
@ -4,26 +4,11 @@ module.exports = defineConfig({
|
|||
testDir: './tests',
|
||||
timeout: 30000,
|
||||
expect: { timeout: 10000 },
|
||||
retries: 1,
|
||||
fullyParallel: false,
|
||||
workers: 1,
|
||||
retries: 0,
|
||||
use: {
|
||||
baseURL: 'https://eetdagboek.vantwout.dev',
|
||||
headless: true,
|
||||
viewport: { width: 390, height: 844 }, // iPhone 14 size
|
||||
ignoreHTTPSErrors: true,
|
||||
screenshot: 'only-on-failure',
|
||||
video: 'retain-on-failure',
|
||||
trace: 'retain-on-failure',
|
||||
},
|
||||
projects: [
|
||||
{
|
||||
name: 'mobile',
|
||||
use: { viewport: { width: 375, height: 667 } },
|
||||
},
|
||||
{
|
||||
name: 'desktop',
|
||||
use: { viewport: { width: 1280, height: 720 } },
|
||||
},
|
||||
],
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue