import React, { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { Button } from '@/components/ui/button'; import { X, ChevronLeft, ChevronRight, Play, Pause } from 'lucide-react'; import { supabase } from '@/integrations/supabase/client'; import { OFCardOptimized } from '@/components/painel-industrial/OFCardOptimized'; import { PainelHeader } from '@/components/painel-industrial/PainelHeader'; interface OFData { num_of: string; descritivo?: string; peso_total?: number; data_prazo?: string; } const PainelIndustrial: React.FC = () => { const navigate = useNavigate(); const [ofsAtivas, setOfsAtivas] = useState([]); const [currentPage, setCurrentPage] = useState(0); const [autoRotate, setAutoRotate] = useState(true); const [loading, setLoading] = useState(true); const ofsPerPage = 4; const totalPages = Math.ceil(ofsAtivas.length / ofsPerPage); const currentOFs = ofsAtivas.slice(currentPage * ofsPerPage, (currentPage + 1) * ofsPerPage); // Buscar OFs ativas const fetchOfsAtivas = async () => { try { const { data, error } = await supabase .from('ordens_fabricacao') .select('num_of, descritivo, peso_total, data_prazo') .eq('status', 'ativa') .order('created_at', { ascending: false }); if (error) throw error; setOfsAtivas(data || []); } catch (error) { console.error('Erro ao buscar OFs ativas:', error); } finally { setLoading(false); } }; // Auto-rotação das páginas useEffect(() => { if (!autoRotate || totalPages <= 1) return; const interval = setInterval(() => { setCurrentPage(prev => (prev + 1) % totalPages); }, 15000); return () => clearInterval(interval); }, [autoRotate, totalPages]); // Atualização automática dos dados useEffect(() => { fetchOfsAtivas(); const interval = setInterval(fetchOfsAtivas, 30000); return () => clearInterval(interval); }, []); const handleClose = () => { navigate('/dashboard'); }; const handlePrevPage = () => { setCurrentPage(prev => prev > 0 ? prev - 1 : totalPages - 1); }; const handleNextPage = () => { setCurrentPage(prev => (prev + 1) % totalPages); }; if (loading) { return (
Carregando painel...
); } return (
setAutoRotate(!autoRotate)} onPrevPage={handlePrevPage} onNextPage={handleNextPage} onClose={handleClose} /> {/* Grid de OFs - Layout Responsivo Melhorado */}
{currentOFs.map((of) => ( ))}
{ofsAtivas.length === 0 && (

Nenhuma OF ativa encontrada

)}
); }; export default PainelIndustrial;