From 6af913ea02829d731029beca06ea4c3eeca4dbc9 Mon Sep 17 00:00:00 2001
From: pietrolama <32061233+pietrolama@users.noreply.github.com>
Date: Fri, 27 Dec 2024 16:32:16 +0100
Subject: [PATCH] Update diario.js
---
js/diario.js | 285 ++++++++++++++++++++++-----------------------------
1 file changed, 121 insertions(+), 164 deletions(-)
diff --git a/js/diario.js b/js/diario.js
index e3bb520..df8592d 100644
--- a/js/diario.js
+++ b/js/diario.js
@@ -13,77 +13,16 @@ import { calcolaDiretto, calcolaBiga, calcolaPoolish, calcolaLievitoMadre, calco
const db = getFirestore(app);
-// Attendere il caricamento del DOM
document.addEventListener("DOMContentLoaded", () => {
- // Verifica se login-btn esiste prima di aggiungere un event listener
- const loginButton = document.getElementById("login-btn");
- if (loginButton) {
- loginButton.addEventListener("click", handleLogin);
- } else {
- console.warn('Elemento con id "login-btn" non trovato nel DOM.');
- }
-
- // Verifica se fermentazione-form esiste prima di lavorarci
const fermentazioneForm = document.getElementById("fermentazione-form");
- if (fermentazioneForm) {
- fermentazioneForm.addEventListener("submit", async (e) => {
- e.preventDefault();
+ const confrontaButton = document.getElementById("confronta-button");
- const user = auth.currentUser;
- if (!user) {
- alert("Devi essere autenticato per aggiungere una fermentazione!");
- return;
- }
-
- const userId = user.uid;
- const tipoPizza = document.getElementById("tipo_pizza").value;
- const metodoImpasto = document.getElementById("tipo_impasto").value;
-
- let datiTeorici;
- switch (metodoImpasto) {
- case "diretto":
- datiTeorici = calcolaDiretto();
- break;
- case "biga":
- datiTeorici = calcolaBiga();
- break;
- case "poolish":
- datiTeorici = calcolaPoolish();
- break;
- case "lievito_madre":
- datiTeorici = calcolaLievitoMadre();
- break;
- case "biga_poolish":
- datiTeorici = calcolaBigaPoolish();
- break;
- default:
- alert("Metodo di impasto non riconosciuto.");
- return;
- }
+ if (fermentazioneForm) {
+ fermentazioneForm.addEventListener("submit", aggiungiFermentazione);
+ }
- const idratazioneReale = parseFloat(document.getElementById("idratazione-reale").value) || 0;
- const tempoReale = parseFloat(document.getElementById("tempo-reale").value) || 0;
- const note = document.getElementById("note").value || "";
-
- try {
- const docRef = doc(collection(db, "fermentazioni", userId, "entries"));
- await setDoc(docRef, {
- tipoPizza,
- metodoImpasto,
- datiTeorici,
- idratazioneReale,
- tempoReale,
- note,
- });
- alert("Fermentazione aggiunta o aggiornata con successo!");
- fermentazioneForm.reset();
- caricaFermentazioni(userId);
- } catch (error) {
- console.error("Errore durante l'aggiunta della fermentazione:", error);
- }
- });
- } else {
- console.warn('Modulo con id "fermentazione-form" non trovato nel DOM.');
+ if (confrontaButton) {
+ confrontaButton.addEventListener("click", confrontaFermentazioni);
}
onAuthStateChanged(auth, (user) => {
@@ -96,109 +35,139 @@ document.addEventListener("DOMContentLoaded", () => {
});
});
+// Aggiungi una fermentazione
+async function aggiungiFermentazione(e) {
+ e.preventDefault();
+
+ const user = auth.currentUser;
+ if (!user) {
+ alert("Devi essere autenticato per aggiungere una fermentazione!");
+ return;
+ }
-// Carica le fermentazioni salvate
+ const userId = user.uid;
+ const nome = document.getElementById("nome").value;
+ const data = document.getElementById("data").value;
+ const idratazione = parseFloat(document.getElementById("idratazione").value);
+ const lievito = document.getElementById("lievito").value;
+ const tempo = parseFloat(document.getElementById("tempo").value);
+
+ try {
+ const docRef = doc(collection(db, "fermentazioni", userId, "entries"));
+ await setDoc(docRef, {
+ nome,
+ data,
+ idratazione,
+ lievito,
+ tempo,
+ });
+ alert("Fermentazione aggiunta con successo!");
+ e.target.reset();
+ caricaFermentazioni(userId);
+ } catch (error) {
+ console.error("Errore durante l'aggiunta della fermentazione:", error);
+ }
+}
+
+// Carica fermentazioni salvate
async function caricaFermentazioni(userId) {
try {
const fermentazioniRef = collection(db, "fermentazioni", userId, "entries");
const fermentazioniSnapshot = await getDocs(fermentazioniRef);
const list = document.getElementById("fermentazioni-list");
- if (!list) {
- console.error("Elemento con id 'fermentazioni-list' non trovato.");
+ const select = document.getElementById("seleziona-fermentazioni");
+
+ if (!list || !select) {
+ console.error("Elementi 'fermentazioni-list' o 'seleziona-fermentazioni' non trovati.");
return;
}
- list.innerHTML = ""; // Pulisci la lista precedente
+ list.innerHTML = "";
+ select.innerHTML = "";
fermentazioniSnapshot.forEach((doc) => {
const fermentazione = doc.data();
+ // Aggiungi fermentazione alla lista
const li = document.createElement("li");
li.innerHTML = `
- ${fermentazione.tipoPizza} - ${fermentazione.metodoImpasto}
- Teorico: ${JSON.stringify(fermentazione.datiTeorici)}
- Reale: ${fermentazione.idratazioneReale || "N/A"}%, ${fermentazione.tempoReale || "N/A"} ore
- Note: ${fermentazione.note || "Nessuna"}
+ ${fermentazione.nome} - ${fermentazione.data}
+ Idratazione: ${fermentazione.idratazione}% - Lievito: ${fermentazione.lievito}
+ Tempo: ${fermentazione.tempo} ore
`;
list.appendChild(li);
+
+ // Aggiungi fermentazione al selettore
+ const option = document.createElement("option");
+ option.value = doc.id;
+ option.textContent = `${fermentazione.nome} - ${fermentazione.data}`;
+ select.appendChild(option);
});
} catch (error) {
console.error("Errore durante il caricamento delle fermentazioni:", error);
}
}
-// Modifica una fermentazione
-window.modificaFermentazione = async function (docId) {
- const user = auth.currentUser;
- if (!user) {
- alert("Devi essere autenticato per modificare una fermentazione!");
+// Confronta fermentazioni
+async function confrontaFermentazioni() {
+ const select = document.getElementById("seleziona-fermentazioni");
+ const selectedIds = Array.from(select.selectedOptions).map(option => option.value);
+
+ if (selectedIds.length < 2) {
+ alert("Seleziona almeno due fermentazioni per confrontare.");
return;
}
- const userId = user.uid;
- const docRef = doc(db, "fermentazioni", userId, "entries", docId);
- const fermentazioneSnapshot = await getDoc(docRef);
-
- if (fermentazioneSnapshot.exists()) {
- const data = fermentazioneSnapshot.data();
+ try {
+ const userId = auth.currentUser.uid;
+ const fermentazioniRef = collection(db, "fermentazioni", userId, "entries");
- // Popola i campi del modulo
- document.getElementById("idratazione-reale").value = data.idratazioneReale || "";
- document.getElementById("tempo-reale").value = data.tempoReale || "";
- document.getElementById("note").value = data.note || "";
- } else {
- alert("Errore: fermentazione non trovata.");
- }
-};
+ const datiTeorici = [];
+ const datiReali = [];
-// Elimina una fermentazione
-window.eliminaFermentazione = async function (docId) {
- const user = auth.currentUser;
- if (!user) {
- alert("Devi essere autenticato per eliminare una fermentazione!");
- return;
- }
+ for (const id of selectedIds) {
+ const docRef = doc(fermentazioniRef, id);
+ const snapshot = await getDoc(docRef);
- const userId = user.uid;
+ if (snapshot.exists()) {
+ const data = snapshot.data();
+ datiTeorici.push(data.idratazione);
+ datiReali.push(data.tempo);
+ }
+ }
- try {
- const docRef = doc(db, "fermentazioni", userId, "entries", docId);
- await deleteDoc(docRef);
- alert("Fermentazione eliminata con successo!");
- caricaFermentazioni(userId);
+ generaGrafico(datiTeorici, datiReali);
} catch (error) {
- console.error("Errore durante l'eliminazione della fermentazione:", error);
+ console.error("Errore durante il confronto delle fermentazioni:", error);
}
-};
+}
-// Grafico teorico vs reale
-function generaGrafico(dataTeorici, dataReali) {
+// Genera il grafico
+function generaGrafico(datiTeorici, datiReali) {
const ctx = document.getElementById("grafico-teorico-reale").getContext("2d");
if (window.graficoTeoricoReale) {
window.graficoTeoricoReale.destroy();
}
- const labels = dataTeorici.map((_, index) => `Fermentazione ${index + 1}`);
- const datasetTeorico = dataTeorici.map((d) => d.idratazione);
- const datasetReale = dataReali.map((d) => d.idratazione);
+ const labels = datiTeorici.map((_, index) => `Fermentazione ${index + 1}`);
window.graficoTeoricoReale = new Chart(ctx, {
type: "bar",
data: {
- labels: labels,
+ labels,
datasets: [
{
- label: "Idratazione Teorica",
- data: datasetTeorico,
+ label: "Idratazione (%)",
+ data: datiTeorici,
backgroundColor: "rgba(54, 162, 235, 0.6)",
},
{
- label: "Idratazione Reale",
- data: datasetReale,
+ label: "Tempo (ore)",
+ data: datiReali,
backgroundColor: "rgba(255, 99, 132, 0.6)",
},
],
@@ -214,59 +183,47 @@ function generaGrafico(dataTeorici, dataReali) {
});
}
-// Funzione per salvare una ricetta nel diario
-export async function salvaRicettaNelDiario(tipoPizza, metodoImpasto, datiTeorici) {
+// Modifica una fermentazione
+window.modificaFermentazione = async function (docId) {
const user = auth.currentUser;
if (!user) {
- alert("Devi essere autenticato per salvare una ricetta!");
+ alert("Devi essere autenticato per modificare una fermentazione!");
return;
}
const userId = user.uid;
+ const docRef = doc(db, "fermentazioni", userId, "entries", docId);
+ const fermentazioneSnapshot = await getDoc(docRef);
- try {
- const docRef = doc(collection(db, "fermentazioni", userId, "entries"));
- await setDoc(docRef, {
- tipoPizza,
- metodoImpasto,
- datiTeorici,
- idratazioneReale: null, // Puoi aggiungere valori reali se necessario
- tempoReale: null, // Puoi aggiungere valori reali se necessario
- note: null, // Puoi aggiungere valori reali se necessario
- });
- alert("Ricetta salvata nel diario!");
- } catch (error) {
- console.error("Errore durante il salvataggio della ricetta:", error);
- alert("Errore durante il salvataggio della ricetta. Riprova.");
+ if (fermentazioneSnapshot.exists()) {
+ const data = fermentazioneSnapshot.data();
+
+ document.getElementById("nome").value = data.nome || "";
+ document.getElementById("data").value = data.data || "";
+ document.getElementById("idratazione").value = data.idratazione || "";
+ document.getElementById("lievito").value = data.lievito || "";
+ document.getElementById("tempo").value = data.tempo || "";
+ } else {
+ alert("Errore: fermentazione non trovata.");
}
-}
+};
-// Evento per salvare nel diario
-document.getElementById('salva-diario-btn').addEventListener('click', () => {
- const tipoPizza = document.getElementById('tipo_pizza').value;
- const metodoImpasto = document.getElementById('tipo_impasto').value;
-
- let datiTeorici;
- switch (metodoImpasto) {
- case 'diretto':
- datiTeorici = calcolaDiretto();
- break;
- case 'biga':
- datiTeorici = calcolaBiga();
- break;
- case 'poolish':
- datiTeorici = calcolaPoolish();
- break;
- case 'lievito_madre':
- datiTeorici = calcolaLievitoMadre();
- break;
- case 'biga_poolish':
- datiTeorici = calcolaBigaPoolish();
- break;
- default:
- alert('Metodo di impasto non riconosciuto.');
- return;
+// Elimina una fermentazione
+window.eliminaFermentazione = async function (docId) {
+ const user = auth.currentUser;
+ if (!user) {
+ alert("Devi essere autenticato per eliminare una fermentazione!");
+ return;
}
- salvaRicettaNelDiario(tipoPizza, metodoImpasto, datiTeorici);
-});
+ const userId = user.uid;
+
+ try {
+ const docRef = doc(db, "fermentazioni", userId, "entries", docId);
+ await deleteDoc(docRef);
+ alert("Fermentazione eliminata con successo!");
+ caricaFermentazioni(userId);
+ } catch (error) {
+ console.error("Errore durante l'eliminazione della fermentazione:", error);
+ }
+};