const productList = document.querySelector("#product-list"); const editor = { form: document.querySelector("#editor"), loadButton: document.querySelector("#editor #load"), saveButton: document.querySelector("#editor #save"), newButton: document.querySelector("#editor #new"), idInput: document.querySelector("#editor #product-id"), nameInput: document.querySelector("#editor #product-name"), priceInput: document.querySelector("#editor #product-price"), coordInput: document.querySelector("#editor #product-coord"), barcodeInput: document.querySelector("#editor #product-barcode"), descriptionTextarea: document.querySelector("#editor #product-description"), }; const imageUploader = { form: document.querySelector("#image-uploader"), idInput: document.querySelector("#image-uploader #product-id"), saveButton: document.querySelector("#image-uploader #save"), preview: document.querySelector("#image-uploader #preview"), fileInput: document.querySelector("#image-uploader #file"), }; const coords = { form: document.querySelector("#coords"), idInput: document.querySelector("#coords #product-id"), xInput: document.querySelector("#coords #coords-x"), yInput: document.querySelector("#coords #coords-y"), saveButton: document.querySelector("#coords #save"), }; let products = []; let selectedProductId = null; function selectProduct(product) { selectedProductId = product.id; editor.idInput.value = product.id.toString(); editor.nameInput.value = product.name; editor.priceInput.value = product.price_dkk_cent / 100; editor.descriptionTextarea.value = product.description; editor.coordInput.value = product.coord_id.toString(); editor.barcodeInput.value = product.barcode.toString(); imageUploader.idInput.value = product.id; coords.idInput.value = product.id; } function loadProduct() { selectedProductId = parseInt(editor.idInput.value); const product = products.find((product) => product.id === selectedProductId ); if (!product) { alert(`no product with id ${selectedProductId}`); return; } selectProduct(product); } function productFromForm() { return { id: parseInt(editor.idInput.value), name: editor.nameInput.value, description: editor.descriptionTextarea.value, price_dkk_cent: Math.floor(parseFloat(editor.priceInput.value) * 100), coord_id: parseInt(editor.coordInput.value), barcode: editor.barcodeInput.value, }; } async function saveProduct() { const product = productFromForm(); await fetch("/api/products/update", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(product), }).then((res) => res.json()); await updateProductList(); } async function newProduct() { const product = productFromForm(); await fetch("/api/products/create", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(product), }).then((res) => res.json()); await updateProductList(); } async function updateProductList() { const res = await fetch("/api/products/all") .then((res) => res.json()); products = res.products; productList.innerHTML = `
${product.id}
${product.coord_id}
${product.barcode}