diff --git a/src/components/ArticoliMacchinaModal.tsx b/src/components/ArticoliMacchinaModal.tsx index 195d97e..0fb51b6 100644 --- a/src/components/ArticoliMacchinaModal.tsx +++ b/src/components/ArticoliMacchinaModal.tsx @@ -2,11 +2,12 @@ import { useState, useEffect } from "react"; import type { ArticoloAssegnatoMacchina } from "@/src/types/artMacchineParti"; -import type { Stabilimento, Magazzino } from "@/src/types/stabilimento"; +import type { Magazzino } from "@/src/types/stabilimento"; interface ArticoliMacchinaModalProps { macchinaId: number; macchinaNome: string; + macchinaStabilimentoId: number | null; articoli: ArticoloAssegnatoMacchina[]; onClose: () => void; onArticoloRimosso: () => void; @@ -22,6 +23,7 @@ interface RimuoviModalState { export default function ArticoliMacchinaModal({ macchinaId, macchinaNome, + macchinaStabilimentoId, articoli, onClose, onArticoloRimosso, @@ -29,33 +31,28 @@ export default function ArticoliMacchinaModal({ const [rimuoviModal, setRimuoviModal] = useState(null); const [saving, setSaving] = useState(false); const [error, setError] = useState(null); - const [stabilimenti, setStabilimenti] = useState([]); const [magazzini, setMagazzini] = useState([]); - const [selectedStabilimento, setSelectedStabilimento] = useState(null); useEffect(() => { - async function fetchData() { + async function fetchMagazzini() { + if (!macchinaStabilimentoId) return; + try { - const [stabRes, magRes] = await Promise.all([ - fetch("/api/stabilimenti"), - fetch("/api/magazzini"), - ]); - if (stabRes.ok && magRes.ok) { - const stabData = await stabRes.json(); - const magData = await magRes.json(); - setStabilimenti(stabData.stabilimenti); - setMagazzini(magData.magazzini); + const res = await fetch("/api/magazzini"); + if (res.ok) { + const data = await res.json(); + // Filtra solo i magazzini dello stabilimento della macchina + const filtered = data.magazzini.filter( + (m: Magazzino) => m.id_stabilimento === macchinaStabilimentoId + ); + setMagazzini(filtered); } } catch (err) { - console.error("Errore caricamento stabilimenti/magazzini:", err); + console.error("Errore caricamento magazzini:", err); } } - fetchData(); - }, []); - - const filteredMagazzini = selectedStabilimento - ? magazzini.filter((m) => m.id_stabilimento === selectedStabilimento) - : magazzini; + fetchMagazzini(); + }, [macchinaStabilimentoId]); const handleRimuoviClick = (articolo: ArticoloAssegnatoMacchina) => { setRimuoviModal({ @@ -64,7 +61,6 @@ export default function ArticoliMacchinaModal({ opzione: "carico", idMagazzino: null, }); - setSelectedStabilimento(null); setError(null); }; @@ -255,54 +251,39 @@ export default function ArticoliMacchinaModal({

Seleziona il magazzino di destinazione

-
- - -
- -
- - -
- - {!rimuoviModal.idMagazzino && ( + {magazzini.length === 0 ? (

- Devi selezionare un magazzino per confermare il rientro + Nessun magazzino disponibile per lo stabilimento di questa macchina

+ ) : ( + <> +
+ + +
+ + {!rimuoviModal.idMagazzino && ( +

+ Devi selezionare un magazzino per confermare il rientro +

+ )} + )}
)} diff --git a/src/components/MacchineTree.tsx b/src/components/MacchineTree.tsx index 21e9a37..4d0a536 100644 --- a/src/components/MacchineTree.tsx +++ b/src/components/MacchineTree.tsx @@ -51,6 +51,7 @@ export default function MacchineTree() { const [showArticlesModal, setShowArticlesModal] = useState<{ macchinaId: number; macchinaNome: string; + macchinaStabilimentoId: number | null; articoli: ArticoloAssegnatoMacchina[]; } | null>(null); @@ -243,6 +244,7 @@ export default function MacchineTree() { setShowArticlesModal({ macchinaId: nodeId, macchinaNome: macchina.nome, + macchinaStabilimentoId: macchina.id_stabilimento, articoli: allArticoli, }); }; @@ -301,14 +303,34 @@ export default function MacchineTree() { }; const filteredNodes = useMemo(() => { - if (!selectedStabilimento) return nodes; + if (!selectedStabilimento) return []; return nodes.filter((n) => n.id_stabilimento === selectedStabilimento.id); }, [nodes, selectedStabilimento]); const rootNodes = filteredNodes.filter((n) => n.id_padre === null); const filteredCount = filteredNodes.length; - const totalCount = nodes.length; + + // Se non c'รจ stabilimento selezionato, mostra messaggio + if (!selectedStabilimento) { + return ( +
+
+

Macchine

+

Seleziona uno stabilimento per visualizzare le macchine

+
+
+ + + +

Nessuno stabilimento selezionato

+

+ Seleziona uno stabilimento dal menu in alto per visualizzare e gestire le macchine +

+
+
+ ); + } return (
@@ -317,10 +339,7 @@ export default function MacchineTree() {

Macchine

- {selectedStabilimento - ? `${filteredCount} di ${totalCount} elementi` - : `${totalCount} elementi nell'albero` - } + {filteredCount} elementi in {selectedStabilimento.descrizione}

- {/* Info selezione corrente */} - {selectedStabilimento && ( -
- Filtro attivo: {selectedStabilimento.descrizione} -
- )} - {/* Indicatore clonazione */} {isCloning && (
@@ -391,16 +403,10 @@ export default function MacchineTree() {

- {selectedStabilimento - ? `Nessuna macchina in "${selectedStabilimento.descrizione}"` - : "Nessuna macchina presente" - } + Nessuna macchina in "{selectedStabilimento.descrizione}"

- {selectedStabilimento - ? "Seleziona un altro stabilimento o aggiungi una nuova macchina" - : "Clicca sul pulsante + per aggiungere la prima macchina" - } + Clicca sul pulsante + per aggiungere la prima macchina