Implementazione completa dell'app BitePlan
- App.vue: root con navigazione tra le tre pagine - BottomNav.vue: barra navigazione inferiore (Pasti, Converti, Spesa) - MealPlanner.vue + MealCard.vue: pianificatore settimanale con lista voci per pasto - Converter.vue: convertitore crudo/cotto con ricerca testuale - ShoppingList.vue + CheckboxItem.vue: lista spesa con checkbox - utils/storage.js: wrapper LocalStorage (save/load) - utils/conversion.js: rawToCooked e cookedToRaw - data/conversions.json: 14 alimenti con coefficienti di resa Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
45
src/pages/MealPlanner.vue
Normal file
45
src/pages/MealPlanner.vue
Normal file
@@ -0,0 +1,45 @@
|
||||
<template>
|
||||
<div class="page">
|
||||
<h1 class="page-title">Pasti della settimana</h1>
|
||||
<MealCard
|
||||
v-for="day in days"
|
||||
:key="day.id"
|
||||
:day-name="day.label"
|
||||
:meals="meals[day.id]"
|
||||
@add="(slot, text) => addItem(day.id, slot, text)"
|
||||
@remove="(slot, idx) => removeItem(day.id, slot, idx)"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, watch } from 'vue'
|
||||
import MealCard from '../components/MealCard.vue'
|
||||
import { save, load } from '../utils/storage.js'
|
||||
|
||||
const days = [
|
||||
{ id: 'lunedi', label: 'Lunedì' },
|
||||
{ id: 'martedi', label: 'Martedì' },
|
||||
{ id: 'mercoledi', label: 'Mercoledì' },
|
||||
{ id: 'giovedi', label: 'Giovedì' },
|
||||
{ id: 'venerdi', label: 'Venerdì' },
|
||||
{ id: 'sabato', label: 'Sabato' },
|
||||
{ id: 'domenica', label: 'Domenica' },
|
||||
]
|
||||
|
||||
const defaultMeals = () =>
|
||||
Object.fromEntries(days.map(d => [d.id, { colazione: [], pranzo: [], cena: [] }]))
|
||||
|
||||
const meals = reactive(load('meals', defaultMeals()))
|
||||
|
||||
watch(meals, () => save('meals', meals), { deep: true })
|
||||
|
||||
function addItem(day, slot, text) {
|
||||
const t = text.trim()
|
||||
if (t) meals[day][slot].push(t)
|
||||
}
|
||||
|
||||
function removeItem(day, slot, idx) {
|
||||
meals[day][slot].splice(idx, 1)
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user