import { initializeApp } from "https://www.gstatic.com/firebasejs/11.1.0/firebase-app.js"; import { getFirestore, doc, getDoc, updateDoc } from "https://www.gstatic.com/firebasejs/11.1.0/firebase-firestore.js"; const firebaseConfig = { apiKey: "AIzaSyAnoTZXPZGF1e6OABQNaiTm2azaEwr4nwA", authDomain: "courses-35750.firebaseapp.com", projectId: "courses-35750", storageBucket: "courses-35750.appspot.com", messagingSenderId: "579827180001", appId: "1:579827180001:web:929b09f8ff002a96b632a0" }; const app = initializeApp(firebaseConfig); const db = getFirestore(app); const urlParams = new URLSearchParams(window.location.search); const listId = urlParams.get("listId"); const categoriesContainer = document.getElementById('categoriesContainer'); const addIngredientButton = document.getElementById('addIngredientButton'); const addIngredientModal = document.getElementById('addIngredientModal'); const submitIngredientButton = document.getElementById('submitIngredientButton'); const ingredientName = document.getElementById('ingredientName'); const ingredientQuantity = document.getElementById('ingredientQuantity'); const ingredientUnit = document.getElementById('ingredientUnit'); const ingredientCategory = document.getElementById('ingredientCategory'); const modalOverlay = document.getElementById('modalOverlay'); const closeModalButton = document.getElementById('closeModalButton'); addIngredientButton.addEventListener('click', () => { addIngredientModal.style.display = 'block'; modalOverlay.style.display = 'block'; }); closeModalButton.addEventListener('click', () => { addIngredientModal.style.display = 'none'; modalOverlay.style.display = 'none'; }); modalOverlay.addEventListener('click', () => { addIngredientModal.style.display = 'none'; modalOverlay.style.display = 'none'; }); const loadCategories = async () => { const listRef = doc(db, "shoppingLists", listId); const listDoc = await getDoc(listRef); const listData = listDoc.data(); categoriesContainer.innerHTML = ''; const categories = [ "Viandes et Poissons", "Fruits et Légumes", "Épicerie", "Produits Frais", "Surgelés", "Hygiène et Beauté", "Boulangerie et Pâtisserie", "Boissons", "Autres" ]; categories.forEach(category => { const categoryDiv = document.createElement('div'); categoryDiv.classList.add('category'); // Vérifie si la catégorie contient des ingrédients const hasItems = listData.ingredients.some(ingredient => ingredient.category === category); // Ajoute une classe si la catégorie a des éléments if (hasItems) { categoryDiv.classList.add('has-items'); } const categoryHeader = document.createElement('h3'); categoryHeader.innerHTML = ` ${category} ${hasItems ? '●' : ''} ▼ `; categoryDiv.appendChild(categoryHeader); const ingredientsList = document.createElement('div'); ingredientsList.classList.add('ingredients-list'); listData.ingredients.forEach(ingredient => { if (ingredient.category === category) { const ingredientItem = document.createElement('div'); ingredientItem.classList.add('ingredient-item'); const quantityUnit = ingredient.quantity ? `${ingredient.quantity}${ingredient.unit || ''}` : ''; ingredientItem.innerHTML = ` ${ingredient.name} ${quantityUnit} `; ingredientsList.appendChild(ingredientItem); } }); categoryDiv.appendChild(ingredientsList); categoriesContainer.appendChild(categoryDiv); categoryHeader.addEventListener('click', () => { ingredientsList.classList.toggle('open'); }); }); }; window.toggleValid = async (ingredientId) => { const listRef = doc(db, "shoppingLists", listId); const listDoc = await getDoc(listRef); const listData = listDoc.data(); const updatedIngredients = listData.ingredients.map(ingredient => { if (ingredient.id === ingredientId) { ingredient.valid = !ingredient.valid; } return ingredient; }); await updateDoc(listRef, { ingredients: updatedIngredients }); loadCategories(); }; window.deleteIngredient = async (ingredientId) => { const listRef = doc(db, "shoppingLists", listId); const listDoc = await getDoc(listRef); const listData = listDoc.data(); const updatedIngredients = listData.ingredients.filter(ingredient => ingredient.id !== ingredientId); await updateDoc(listRef, { ingredients: updatedIngredients }); loadCategories(); }; submitIngredientButton.addEventListener("click", async () => { const newIngredient = { name: ingredientName.value, quantity: ingredientQuantity.value, unit: ingredientUnit.value, category: ingredientCategory.value, valid: false, id: Date.now().toString() }; const listRef = doc(db, "shoppingLists", listId); const listDoc = await getDoc(listRef); const listData = listDoc.data(); listData.ingredients.push(newIngredient); await updateDoc(listRef, { ingredients: listData.ingredients }); ingredientName.value = ''; ingredientQuantity.value = ''; ingredientUnit.value = ''; loadCategories(); addIngredientModal.style.display = 'none'; }); addIngredientButton.addEventListener("click", () => { addIngredientModal.style.display = 'block'; }); // Charger les catégories et les ingrédients au chargement de la page loadCategories();