diff --git a/src/components/MacchineTree.tsx b/src/components/MacchineTree.tsx index fe9b13c..1e2dd25 100644 --- a/src/components/MacchineTree.tsx +++ b/src/components/MacchineTree.tsx @@ -280,30 +280,44 @@ export default function MacchineTree() { } }; - const handleShowArticles = (nodeId: number) => { + const handleShowArticles = async (nodeId: number) => { const macchina = nodes.find((n) => n.id === nodeId); if (!macchina) return; - const articoliNodo = articlesByMacchina[nodeId] || []; - - const getDescendantArticles = (id: number): ArticoloAssegnatoMacchina[] => { - const children = nodes.filter((n) => n.id_padre === id); - let result: ArticoloAssegnatoMacchina[] = []; - for (const child of children) { - const childArticles = articlesByMacchina[child.id] || []; - result = [...result, ...childArticles, ...getDescendantArticles(child.id)]; - } - return result; - }; - - const allArticoli = [...articoliNodo, ...getDescendantArticles(nodeId)]; - - setShowArticlesModal({ - macchinaId: nodeId, - macchinaNome: macchina.nome, - macchinaStabilimentoId: macchina.id_stabilimento, - articoli: allArticoli, - }); + // Ricarica sempre i dati freschi dal server prima di mostrare la modale + try { + const res = await fetch("/api/art-macchine-parti"); + if (!res.ok) throw new Error("Errore caricamento articoli"); + + const data = await res.json(); + const freshArticlesByMacchina = data.articoliPerMacchina || {}; + + // Aggiorna lo state globale + setArticlesByMacchina(freshArticlesByMacchina); + + const articoliNodo = freshArticlesByMacchina[nodeId] || []; + + const getDescendantArticles = (id: number): ArticoloAssegnatoMacchina[] => { + const children = nodes.filter((n) => n.id_padre === id); + let result: ArticoloAssegnatoMacchina[] = []; + for (const child of children) { + const childArticles = freshArticlesByMacchina[child.id] || []; + result = [...result, ...childArticles, ...getDescendantArticles(child.id)]; + } + return result; + }; + + const allArticoli = [...articoliNodo, ...getDescendantArticles(nodeId)]; + + setShowArticlesModal({ + macchinaId: nodeId, + macchinaNome: macchina.nome, + macchinaStabilimentoId: macchina.id_stabilimento, + articoli: allArticoli, + }); + } catch (err) { + console.error("Errore caricamento articoli:", err); + } }; const handleDropArticle = (macchinaId: number, article: unknown) => {