Fix Usa and Modifica buttons in product detail modal
- quickUse: add try/catch error handling, loading state, weight_info extraction, loadUseInventoryInfo() call - editInventoryItem: replace modal content in-place instead of close/reopen pattern (avoids animation race condition), add error feedback when item not found
This commit is contained in:
+35
-18
@@ -454,22 +454,36 @@ function closeModal() {
|
|||||||
|
|
||||||
async function quickUse(productId, location) {
|
async function quickUse(productId, location) {
|
||||||
closeModal();
|
closeModal();
|
||||||
currentProduct = { id: productId };
|
showLoading(true);
|
||||||
// Get product info
|
try {
|
||||||
const data = await api('product_get', { id: productId });
|
currentProduct = { id: productId };
|
||||||
if (data.product) {
|
// Get product info
|
||||||
currentProduct = data.product;
|
const data = await api('product_get', { id: productId });
|
||||||
|
if (data.product) {
|
||||||
|
currentProduct = data.product;
|
||||||
|
// Extract weight_info from notes if available
|
||||||
|
if (!currentProduct.weight_info && currentProduct.notes) {
|
||||||
|
const pesoMatch = currentProduct.notes.match(/Peso:\s*([^·]+)/);
|
||||||
|
if (pesoMatch) currentProduct.weight_info = pesoMatch[1].trim();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.getElementById('use-location').value = location;
|
||||||
|
// Mark active location button
|
||||||
|
document.querySelectorAll('#page-use .loc-btn').forEach(b => b.classList.remove('active'));
|
||||||
|
const locBtns = document.querySelectorAll('#page-use .loc-btn');
|
||||||
|
locBtns.forEach(b => {
|
||||||
|
if (b.textContent.toLowerCase().includes(location)) b.classList.add('active');
|
||||||
|
});
|
||||||
|
|
||||||
|
renderUsePreview();
|
||||||
|
loadUseInventoryInfo();
|
||||||
|
showLoading(false);
|
||||||
|
showPage('use');
|
||||||
|
} catch (err) {
|
||||||
|
showLoading(false);
|
||||||
|
console.error('quickUse error:', err);
|
||||||
|
showToast('Errore nel caricamento del prodotto', 'error');
|
||||||
}
|
}
|
||||||
document.getElementById('use-location').value = location;
|
|
||||||
// Mark active location button
|
|
||||||
document.querySelectorAll('#page-use .loc-btn').forEach(b => b.classList.remove('active'));
|
|
||||||
const locBtns = document.querySelectorAll('#page-use .loc-btn');
|
|
||||||
locBtns.forEach(b => {
|
|
||||||
if (b.textContent.toLowerCase().includes(location)) b.classList.add('active');
|
|
||||||
});
|
|
||||||
|
|
||||||
renderUsePreview();
|
|
||||||
showPage('use');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function deleteInventoryItem(id) {
|
async function deleteInventoryItem(id) {
|
||||||
@@ -483,10 +497,13 @@ async function deleteInventoryItem(id) {
|
|||||||
|
|
||||||
function editInventoryItem(id) {
|
function editInventoryItem(id) {
|
||||||
const item = currentInventory.find(i => i.id === id);
|
const item = currentInventory.find(i => i.id === id);
|
||||||
if (!item) return;
|
if (!item) {
|
||||||
closeModal();
|
closeModal();
|
||||||
|
showToast('Prodotto non trovato', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Show a simple edit modal
|
// Rebuild modal content for editing (don't close and reopen - just replace content)
|
||||||
document.getElementById('modal-content').innerHTML = `
|
document.getElementById('modal-content').innerHTML = `
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h3>Modifica ${escapeHtml(item.name)}</h3>
|
<h3>Modifica ${escapeHtml(item.name)}</h3>
|
||||||
|
|||||||
Reference in New Issue
Block a user