@@ -925,9 +941,22 @@ function showFoodModal() {
await DB.addFoodEntry(state.date, time, selectedProduct.id, amountG, null, unitId, unitAmount);
} else {
const desc = overlay.querySelector("#m-desc").value.trim();
- const kcal = parseFloat(overlay.querySelector("#m-kcal").value) || null;
if (!desc) return false;
- await DB.addFoodManual(state.date, time, desc, kcal);
+ const kcal = parseFloat(overlay.querySelector("#m-kcal").value) || null;
+ const protein = parseFloat(overlay.querySelector("#m-protein").value) || null;
+ const fat = parseFloat(overlay.querySelector("#m-fat").value) || null;
+ const carbs = parseFloat(overlay.querySelector("#m-carbs").value) || null;
+ const amount = rawAmount;
+ if (kcal || protein || fat || carbs) {
+ // Create a custom product in DB, then log it
+ const pid = await DB.addProduct({
+ name: desc, kcal_per_100g: kcal, protein_per_100g: protein,
+ fat_per_100g: fat, carbs_per_100g: carbs, source: "manual",
+ });
+ await DB.addFoodEntry(state.date, time, pid, amount, null);
+ } else {
+ await DB.addFoodManual(state.date, time, desc, kcal);
+ }
}
});
@@ -1242,6 +1271,18 @@ async function renderProducts(container) {
function renderProdDetails(p) {
const r = v => v != null ? v : "—";
+ // Micronutrient chips for this product (per 100g)
+ const RDI = BMR.RDI;
+ const microChips = [];
+ for (const [key, rdi] of Object.entries(RDI)) {
+ if (!p[key]) continue;
+ const pct = Math.round(p[key] / rdi * 100);
+ if (pct < 1) continue;
+ const label = NUTRIENT_LABELS[key] || key;
+ const cls = pct < 30 ? "nut-low" : pct < 80 ? "nut-mid" : "nut-ok";
+ microChips.push({ pct, html: `
${label} ${pct}%
` });
+ }
+ microChips.sort((a, b) => a.pct - b.pct);
return `
@@ -1250,6 +1291,7 @@ async function renderProducts(container) {
${r(p.carbs_per_100g)}У
${r(p.fiber_per_100g)}Кл
+ ${microChips.length ? `
${microChips.map(c => c.html).join("")}
` : ""}
${p.composition ? `
${esc(p.composition)}
` : ""}
`;
@@ -3245,25 +3287,40 @@ async function showLogSupplementModal() {
// ---------------------------------------------------------------------------
const MICRO_FIELDS = [
- { key: "vit_a_mcg", label: "Вит A (мкг)" },
- { key: "vit_c_mg", label: "Вит C (мг)" },
- { key: "vit_d_mcg", label: "Вит D (мкг)" },
- { key: "vit_e_mg", label: "Вит E (мг)" },
- { key: "vit_k_mcg", label: "Вит K (мкг)" },
- { key: "vit_b1_mg", label: "B1 (мг)" },
- { key: "vit_b2_mg", label: "B2 (мг)" },
- { key: "vit_b3_mg", label: "B3 (мг)" },
- { key: "vit_b6_mg", label: "B6 (мг)" },
- { key: "vit_b12_mcg", label: "B12 (мкг)" },
- { key: "folate_mcg", label: "Фолат (мкг)" },
- { key: "calcium_mg", label: "Ca (мг)" },
- { key: "iron_mg", label: "Fe (мг)" },
- { key: "magnesium_mg", label: "Mg (мг)" },
- { key: "zinc_mg", label: "Zn (мг)" },
- { key: "copper_mg", label: "Cu (мг)" },
- { key: "selenium_mcg", label: "Se (мкг)" },
- { key: "potassium_mg", label: "K (мг)" },
- { key: "sodium_mg", label: "Na (мг)" },
+ { key: "vit_a_mcg", label: "Вит A (мкг РЭ)" },
+ { key: "vit_c_mg", label: "Вит C (мг)" },
+ { key: "vit_d_mcg", label: "Вит D3 (мкг)" },
+ { key: "vit_e_mg", label: "Вит E (мг ТЭ)" },
+ { key: "vit_k_mcg", label: "Вит K (мкг)" },
+ { key: "vit_b1_mg", label: "B1 (мг)" },
+ { key: "vit_b2_mg", label: "B2 (мг)" },
+ { key: "vit_b3_mg", label: "B3/PP (мг)" },
+ { key: "vit_b5_mg", label: "B5 (мг)" },
+ { key: "vit_b6_mg", label: "B6 (мг)" },
+ { key: "vit_b7_mcg", label: "B7/биотин (мкг)" },
+ { key: "folate_mcg", label: "B9/фолат (мкг)" },
+ { key: "vit_b12_mcg", label: "B12 (мкг)" },
+ { key: "calcium_mg", label: "Ca (мг)" },
+ { key: "magnesium_mg", label: "Mg (мг)" },
+ { key: "iron_mg", label: "Fe (мг)" },
+ { key: "zinc_mg", label: "Zn (мг)" },
+ { key: "copper_mg", label: "Cu (мг)" },
+ { key: "selenium_mcg", label: "Se (мкг)" },
+ { key: "potassium_mg", label: "K (мг)" },
+ { key: "sodium_mg", label: "Na (мг)" },
+ { key: "phosphorus_mg", label: "P (мг)" },
+ { key: "iodine_mg", label: "Йод (мг)" },
+ { key: "chromium_mg", label: "Хром (мг)" },
+ { key: "manganese_mg", label: "Mn (мг)" },
+ { key: "molybdenum_mcg", label: "Mo (мкг)" },
+ { key: "carotene_mcg", label: "b-каротин (мкг)" },
+ { key: "omega3_mg", label: "Омега-3 (мг)" },
+ { key: "omega6_mg", label: "Омега-6 (мг)" },
+ { key: "omega9_mg", label: "Омега-9 (мг)" },
+ { key: "silicon_mg", label: "Кремний (мг)" },
+ { key: "vanadium_mg", label: "Ванадий (мг)" },
+ { key: "lutein_mg", label: "Лютеин (мг)" },
+ { key: "lycopene_mg", label: "Ликопин (мг)" },
];
async function renderSupplements(container) {