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:
Ondřej Anděl committed 2026-10-12 09:49:41 +02:00
1 parent b880b36edd
commit efed5e6e86
30 files changed
+514 -153

No files matched your search

+1 -23
View File
@@ -1,4 +1,4 @@
import { IntakeGroupTotal, IntakeStats, MealType } from "../../../types";
import { IntakeStats, MealType } from "../../../types";
import { MEAL_TYPES_IN_ORDER, StatsRange } from "../enums";
import { StatsBounds, formatPeriodLabel, listPeriods, pickPeriods } from "./statsShared";
@@ -67,28 +67,6 @@ export const buildIntakeSeries = (stats: IntakeStats, range: StatsBounds, mode:
});
};
/** Kolik zdrojů má v koláči vlastní výseč; zbytek se slije do "Ostatní". */
const SOURCE_SLICE_COUNT = 7;
/** Výseč koláče zdrojů. */
export type SourceSlice = { name: string, value: number, color: string };
/**
* Sestaví výseče koláče příjmu dle zdroje. Barva jde podle pořadí ve výběru,
* zdrojů bývá hodně a pevná barva pro každý by paletu nestačila.
*
* @param bySource příjem dle zdroje, sestupně dle kcal
*/
export const buildSourceSlices = (bySource: IntakeGroupTotal[]): SourceSlice[] => {
const slices = bySource
.filter(group => group.calories > 0)
.slice(0, SOURCE_SLICE_COUNT)
.map((group, index) => ({ name: group.key, value: group.calories, color: `var(--ft-series-${index + 1})` }));
const rest = bySource.slice(SOURCE_SLICE_COUNT).reduce((sum, group) => sum + group.calories, 0);
if (rest > 0) slices.push({ name: 'Ostatní', value: rest, color: 'var(--ft-series-other)' });
return slices;
};
/** Chody, které v období něco dodaly, v pořadí průběhu dne — pořadí dílů sloupce i legendy. */
export const getUsedMealTypes = (stats: IntakeStats): MealType[] => {
const used = new Set(stats.byMealType.map(group => group.key));