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();