fix(veckoplan): byt-ratt-fel, navigera veckor, lagg till maltid manuellt

- Byt rätt gav 'något gick fel': limit=30 översteg schemats tak (20).
  Höjt taket till 50, byt rätt hämtar 40 + sök vilken rätt som helst.
- Veckonavigering: pilarna byter nu VECKA (weekOffset) i stället för att
  bara flytta markerad dag -> går att planera nästa vecka. Titel visar
  veckans datumintervall; bakåt spärras före denna vecka.
- Lägg till måltid: ny POST /v1/week-plans/:id/entries + knapp 'Lägg till
  måltid' (väljer måltidstyp -> receptväljaren i lägg-till-läge) + knapp
  'Planera om veckan'. Går nu att fylla en tom dag igen.
Verifierat: swap 200 (40 varierade), add-entry 201, delete 200, api 104/104.
This commit is contained in:
Claude
2026-08-20 00:54:32 +00:00
parent 9b3456b080
commit ceceb63e8e
17 changed files with 232 additions and 34 deletions
+3 -1
View File
@@ -486,5 +486,7 @@
"cookedLog.button": "Ja, jeg lavede den",
"cookedLog.confirm": "Træk råvarer for {count} portioner fra dit lager?",
"cookedLog.doneTitle": "Registreret!",
"cookedLog.doneBody": "Råvarerne er trukket fra dit lager, og måltidet er registreret."
"cookedLog.doneBody": "Råvarerne er trukket fra dit lager, og måltidet er registreret.",
"plan.addMeal": "Tilføj et måltid",
"plan.regenerate": "Planlæg ugen igen"
}
+3 -1
View File
@@ -486,5 +486,7 @@
"cookedLog.button": "Ja, ich habe es gekocht",
"cookedLog.confirm": "Zutaten für {count} Portionen von deinem Vorrat abziehen?",
"cookedLog.doneTitle": "Erfasst!",
"cookedLog.doneBody": "Die Zutaten wurden von deinem Vorrat abgezogen und die Mahlzeit ist erfasst."
"cookedLog.doneBody": "Die Zutaten wurden von deinem Vorrat abgezogen und die Mahlzeit ist erfasst.",
"plan.addMeal": "Mahlzeit hinzufügen",
"plan.regenerate": "Woche neu planen"
}
+3 -1
View File
@@ -486,5 +486,7 @@
"cookedLog.button": "Yes, I cooked it",
"cookedLog.confirm": "Deduct ingredients for {count} servings from your stock?",
"cookedLog.doneTitle": "Logged!",
"cookedLog.doneBody": "The ingredients have been deducted from your stock and the meal is logged."
"cookedLog.doneBody": "The ingredients have been deducted from your stock and the meal is logged.",
"plan.addMeal": "Add a meal",
"plan.regenerate": "Re-plan the week"
}
+3 -1
View File
@@ -486,5 +486,7 @@
"cookedLog.button": "Sí, lo cociné",
"cookedLog.confirm": "¿Descontar ingredientes para {count} raciones de tu despensa?",
"cookedLog.doneTitle": "¡Registrado!",
"cookedLog.doneBody": "Los ingredientes se han descontado de tu despensa y la comida queda registrada."
"cookedLog.doneBody": "Los ingredientes se han descontado de tu despensa y la comida queda registrada.",
"plan.addMeal": "Añadir una comida",
"plan.regenerate": "Replanificar la semana"
}
+3 -1
View File
@@ -486,5 +486,7 @@
"cookedLog.button": "Kyllä, tein sen",
"cookedLog.confirm": "Vähennetäänkö ainekset {count} annokselle varastostasi?",
"cookedLog.doneTitle": "Merkitty!",
"cookedLog.doneBody": "Ainekset on vähennetty varastostasi ja ateria on kirjattu."
"cookedLog.doneBody": "Ainekset on vähennetty varastostasi ja ateria on kirjattu.",
"plan.addMeal": "Lisää ateria",
"plan.regenerate": "Suunnittele viikko uudelleen"
}
+3 -1
View File
@@ -486,5 +486,7 @@
"cookedLog.button": "Oui, je l'ai cuisiné",
"cookedLog.confirm": "Déduire les ingrédients pour {count} portions de votre stock ?",
"cookedLog.doneTitle": "Enregistré !",
"cookedLog.doneBody": "Les ingrédients ont été déduits de votre stock et le repas est enregistré."
"cookedLog.doneBody": "Les ingrédients ont été déduits de votre stock et le repas est enregistré.",
"plan.addMeal": "Ajouter un repas",
"plan.regenerate": "Replanifier la semaine"
}
+3 -1
View File
@@ -486,5 +486,7 @@
"cookedLog.button": "Sì, l'ho cucinato",
"cookedLog.confirm": "Scalare gli ingredienti per {count} porzioni dalla tua dispensa?",
"cookedLog.doneTitle": "Registrato!",
"cookedLog.doneBody": "Gli ingredienti sono stati scalati dalla tua dispensa e il pasto è registrato."
"cookedLog.doneBody": "Gli ingredienti sono stati scalati dalla tua dispensa e il pasto è registrato.",
"plan.addMeal": "Aggiungi un pasto",
"plan.regenerate": "Ripianifica la settimana"
}
+3 -1
View File
@@ -486,5 +486,7 @@
"cookedLog.button": "Ja, jeg laget den",
"cookedLog.confirm": "Trekke råvarer for {count} porsjoner fra lageret ditt?",
"cookedLog.doneTitle": "Registrert!",
"cookedLog.doneBody": "Råvarene er trukket fra lageret ditt, og måltidet er logget."
"cookedLog.doneBody": "Råvarene er trukket fra lageret ditt, og måltidet er logget.",
"plan.addMeal": "Legg til et måltid",
"plan.regenerate": "Planlegg uken på nytt"
}
+3 -1
View File
@@ -486,5 +486,7 @@
"cookedLog.button": "Ja, ik heb het gemaakt",
"cookedLog.confirm": "Ingrediënten voor {count} porties van je voorraad aftrekken?",
"cookedLog.doneTitle": "Vastgelegd!",
"cookedLog.doneBody": "De ingrediënten zijn van je voorraad afgetrokken en de maaltijd is vastgelegd."
"cookedLog.doneBody": "De ingrediënten zijn van je voorraad afgetrokken en de maaltijd is vastgelegd.",
"plan.addMeal": "Maaltijd toevoegen",
"plan.regenerate": "Week opnieuw plannen"
}
+3 -1
View File
@@ -500,5 +500,7 @@
"cookedLog.button": "Tak, ugotowałem",
"cookedLog.confirm": "Odjąć składniki na {count} porcji z Twojej spiżarni?",
"cookedLog.doneTitle": "Zapisano!",
"cookedLog.doneBody": "Składniki zostały odjęte z Twojej spiżarni, a posiłek zapisano."
"cookedLog.doneBody": "Składniki zostały odjęte z Twojej spiżarni, a posiłek zapisano.",
"plan.addMeal": "Dodaj posiłek",
"plan.regenerate": "Zaplanuj tydzień ponownie"
}
+3 -1
View File
@@ -486,5 +486,7 @@
"cookedLog.button": "Sim, cozinhei",
"cookedLog.confirm": "Descontar ingredientes para {count} porções do seu stock?",
"cookedLog.doneTitle": "Registado!",
"cookedLog.doneBody": "Os ingredientes foram descontados do seu stock e a refeição fica registada."
"cookedLog.doneBody": "Os ingredientes foram descontados do seu stock e a refeição fica registada.",
"plan.addMeal": "Adicionar uma refeição",
"plan.regenerate": "Replanear a semana"
}
+3 -1
View File
@@ -486,5 +486,7 @@
"cookedLog.button": "Ja, jag lagade den",
"cookedLog.confirm": "Räkna av råvaror för {count} portioner från ditt lager?",
"cookedLog.doneTitle": "Registrerat!",
"cookedLog.doneBody": "Råvarorna är avräknade från ditt lager och måltiden är loggad."
"cookedLog.doneBody": "Råvarorna är avräknade från ditt lager och måltiden är loggad.",
"plan.addMeal": "Lägg till måltid",
"plan.regenerate": "Planera om veckan"
}