feat: export + detail receptů
feat: losování jídel
This commit is contained in:
1 parent
35cbc5a9ca
commit
caffb6d8b4
23 files changed
+2674
-43
No files matched your search
@@ -82,7 +82,7 @@ cd client && yarn build # tsc --noEmit + vite build → client/dist
|
||||
`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)
|
||||
výběr z historie a receptů, SettingsModal, ImportModal, SpinWheelModal — kolo štěstí)
|
||||
- **Klientské enumy** patří do `enums.ts` jako TypeScript `enum` s mapou popisků,
|
||||
ne jako inline union u komponenty (`DayTab`, `StatsTab`, `StatsRange`)
|
||||
- **Context:** `context/auth.tsx` (JWT), `context/settings.tsx` (světlý/tmavý motiv)
|
||||
@@ -343,6 +343,29 @@ ji při čtení doplní.
|
||||
Recepty se nabízejí v našeptávání i ve výběru z historie (`ApplyMealModal`)
|
||||
a jídlo stejného jména z historie se vedle receptu nenabízí podruhé.
|
||||
|
||||
**Postup receptu je Markdown.** V aplikaci ho vykresluje `RecipeNote`
|
||||
(react-markdown, syrové HTML se nevykreslí), do PDF ho převádí `markdownPdf.ts`
|
||||
nad stejným parserem (mdast). Obě cesty používají `markdownBreaks.ts`, který
|
||||
z jednoduchého zalomení řádku dělá tvrdé — starší postupy jsou prostý text po
|
||||
řádcích a jinak by se slily do jednoho odstavce. **Když se změní zobrazení
|
||||
Markdownu v jedné cestě, je potřeba upravit i druhou.**
|
||||
|
||||
**Export do PDF** (`recipePdf.ts`, pdfmake v prohlížeči, načte se líně až při
|
||||
exportu) jde u jednoho receptu (ikona na kartě receptu) i hromadně tlačítkem
|
||||
na stránce Jídla — exportují se recepty, které seznam po filtrech ukazuje, bez
|
||||
filtru všechny. Víc receptů dostane titulní stranu s klikacím obsahem, každý
|
||||
recept začíná na nové stránce. PDF nese suroviny, hodnoty porce, postup a fotky
|
||||
jídla (první přes šířku, ostatní menší); pdfmake umí jen JPEG a PNG, jiné
|
||||
formáty se vynechají. Server se exportu neúčastní.
|
||||
|
||||
**Kolo štěstí** (`SpinWheelModal`, tlačítko v hlavičce) je převzaté z Luncheru.
|
||||
Losuje ze všech jídel (skupin ze seznamu jídel — i objednávaných), nebo jen
|
||||
z receptů, volitelně zúžených chutí a typem. U všech jídel se nejdřív vybere
|
||||
nebo vylosuje zdroj a točí se až z jeho jídel — všech jídel jsou stovky
|
||||
a kolo by s nimi bylo nepoužitelné. Padlý recept jde rovnou otevřít
|
||||
(`WheelRecipe`, jen ke čtení) a stáhnout jako PDF. Nic se neukládá — kolo jen
|
||||
rozhoduje. Konfety (`WheelConfetti`) mají vzhled jednoduchého stylu a Hell Girl.
|
||||
|
||||
Dřív pod stejným klíčem ležely i šablony hotových jídel (`kind: HOTOVE`, nebo
|
||||
bez `kind`). Ty zanikly: `loadRecipes` je při čtení vynechá (poznají se podle
|
||||
toho, že nemají suroviny) a první zápis receptu je z úložiště odklidí. **Jídla
|
||||
|
||||
Reference in new issue
Block a user