fix: graf cena per zdroj nahrazen koláčem
feat: stránka doplnit údaje předělána na samostatnou stránku jídel + přidáno přejmenování
This commit is contained in:
1 parent
b880b36edd
commit
efed5e6e86
30 files changed
+514
-153
No files matched your search
@@ -73,11 +73,12 @@ cd client && yarn build # tsc --noEmit + vite build → client/dist
|
||||
### Client (client/src/)
|
||||
- **Entry:** `index.tsx` → `AppRoutes.tsx`; `Login.tsx` je přihlašovací obrazovka
|
||||
- **Pages:** `pages/` — `DayPage` (přehled dne se záložkami Příjem/Výdej),
|
||||
`MealGroupsPage` (`/jidla` — seznam jídel podle názvu a zdroje s filtrem zdroje,
|
||||
hromadným doplněním údajů a přejmenováním),
|
||||
`TemplatesPage` (šablony tréninků a recepty), `ProfilePage` (Profil — ukazatele,
|
||||
vývoj hmotnosti, tělesné údaje, cíle a klidový výdej),
|
||||
`StatsPage` (statistiky se záložkami Příjem / Výdej / Útrata a import; panely
|
||||
`IntakeStatsPanel`, `ActivityStatsPanel`, `SpendingStatsPanel`),
|
||||
`MealGroupsPage` (`/statistiky/doplneni` — hromadné doplnění údajů jídel)
|
||||
`IntakeStatsPanel`, `ActivityStatsPanel`, `SpendingStatsPanel`)
|
||||
- **Components:** `components/` (Header, CalorieLookup, MealSuggestions, NutrientsFieldset)
|
||||
a `components/modals/` (MealModal, ActivityModal, ApplyWorkoutModal, ApplyMealModal —
|
||||
výběr z historie a receptů, SettingsModal, ImportModal)
|
||||
@@ -267,9 +268,12 @@ takže `DayPage` si vystačí s jedním voláním.
|
||||
|
||||
Hotová jídla (objednaná, koupená) **nemají šablony**. Při zakládání jídla se
|
||||
k rozepsanému názvu nabízí historie: `getMealHistory` v `meals.ts`
|
||||
(`GET /api/meals/history`) projde všechna jídla uživatele a každý název vrátí
|
||||
jednou (`MealSuggestion`). Názvy se porovnávají znormalizované přes
|
||||
`normalizeName`, hodnoty jsou z **posledního** záznamu toho jména (cena i gramáž
|
||||
(`GET /api/meals/history`) projde všechna jídla uživatele a každou dvojici
|
||||
**název a zdroj** vrátí jednou (`MealSuggestion`). Stejnojmenné jídlo z jiného
|
||||
zdroje (tikka masala z Everestu a z Namaste) je jiné jídlo a nikde se s ním
|
||||
neslučuje — ani v návrzích, ani v seznamu jídel, ani při `fillSameNameMeals`;
|
||||
na klientovi to hlídá `getMealKey` v `Utils.tsx`. Porovnává se znormalizovaně
|
||||
přes `normalizeName`, hodnoty jsou z **posledního** záznamu (cena i gramáž
|
||||
se časem mění) a řadí se od nejčastěji jedených.
|
||||
|
||||
Návrh nese jen to, co popisuje jídlo samo — **chod, datum, násobek ani poznámku
|
||||
@@ -283,10 +287,10 @@ Návrhy se nabízejí i při **úpravě** jídla, ale až po změně názvu, a d
|
||||
prázdná pole (`mergeSuggestion` v `MealModal`) — slouží k přejmenování
|
||||
naimportovaného jídla, jehož cena a zdroj jsou skutečné. Po uložení jídla
|
||||
s kaloriemi `DayPage` nabídne (`FillSameNameOffer`) doplnit stejné hodnoty do
|
||||
ostatních jídel stejného názvu, která je nemají (`fillSameNameMeals`,
|
||||
ostatních jídel stejného názvu a zdroje, která je nemají (`fillSameNameMeals`,
|
||||
`POST /api/meals/fillSameName`); jídla s kaloriemi se nepřepisují.
|
||||
|
||||
**Hromadné doplnění** (`MealGroupsPage`, odkaz ze Statistik → Příjem) seskupí
|
||||
**Seznam jídel** (`MealGroupsPage`, položka Jídla v hlavičce) seskupí
|
||||
jídla podle znormalizovaného názvu **a zdroje** (`getMealGroups`,
|
||||
`GET /api/meals/groups`) a ukáže, kolika chybí kalorie, gramáž a živiny.
|
||||
Skupina nese i dny, kdy se jídlo jedlo (`MealGroup.days`, s příznakem neúplných
|
||||
@@ -297,6 +301,12 @@ jídlům bez kalorií (jinak by dopočet přepsal ručně zadané kalorie), živ
|
||||
jednotlivých položkách. Předvyplněné hodnoty jsou z nejnovějšího jídla skupiny;
|
||||
energie a živiny bez nich i z jídla stejného názvu odjinud, sazba a gramáž ne.
|
||||
|
||||
Druhou akcí skupiny je **přejmenování** (`renameMealGroup`,
|
||||
`POST /api/meals/renameGroup`) — změní název i zdroj všem jídlům skupiny ve
|
||||
všech dnech. Je oddělené od doplnění schválně: doplnění jen připisuje, co chybí,
|
||||
přejmenování přepisuje. Když nový název a zdroj patří jiné skupině, jídla se do
|
||||
ní sloučí (formulář na to předem upozorní).
|
||||
|
||||
Pole Zdroj (`SourceInput`) nabízí zdroje z historie (`getMealSources`,
|
||||
`GET /api/meals/sources`, nejčastější první) a podniky se sazbou z nastavení;
|
||||
psát jde i nový.
|
||||
|
||||
Reference in new issue
Block a user