import React, { useState, useEffect } from 'react';
import {
BarChart2,
Clock,
AlertTriangle,
CheckCircle,
Filter,
Search,
MoreVertical,
Download,
RotateCcw
} from 'lucide-react';
const ProductionDashboard = () => {
const [selectedFilter, setSelectedFilter] = useState('all');
const [searchTerm, setSearchTerm] = useState('');
const [filteredOrders, setFilteredOrders] = useState([]);
const productionOrders = [
{
id: 'OP-001',
product: 'Sala Modelo X',
status: 'in-progress',
currentPhase: 'Ensamble',
progress: 65,
startDate: '2024-03-20',
daysDelayed: 2,
totalPieces: 10,
completedPieces: 7,
assignedLine: 'Línea 1',
materialStatus: 'Completo',
responsibleTeam: 'Equipo A'
},
{
id: 'OP-002',
product: 'Mesa Comedor',
status: 'delayed',
currentPhase: 'Materiales',
progress: 20,
startDate: '2024-03-22',
daysDelayed: 3,
totalPieces: 5,
completedPieces: 1,
assignedLine: 'Línea 2',
materialStatus: 'Faltante',
responsibleTeam: 'Equipo B'
},
{
id: 'OP-003',
product: 'Silla Ejecutiva',
status: 'completed',
currentPhase: 'Acabado',
progress: 100,
startDate: '2024-03-15',
daysDelayed: 0,
totalPieces: 15,
completedPieces: 15,
assignedLine: 'Línea 3',
materialStatus: 'Completo',
responsibleTeam: 'Equipo C'
}
];
useEffect(() => {
let result = productionOrders;
// Filtro por estado
if (selectedFilter !== 'all') {
result = result.filter(order => order.status === selectedFilter);
}
// Filtro por búsqueda
if (searchTerm) {
result = result.filter(order =>
order.id.toLowerCase().includes(searchTerm.toLowerCase()) ||
order.product.toLowerCase().includes(searchTerm.toLowerCase())
);
}
setFilteredOrders(result);
}, [selectedFilter, searchTerm]);
// Inicializar filteredOrders en el primer render
useEffect(() => {
setFilteredOrders(productionOrders);
}, []);
const getStatusColor = (status) => {
switch(status) {
case 'in-progress': return 'bg-blue-100 text-blue-800';
case 'delayed': return 'bg-red-100 text-red-800';
case 'completed': return 'bg-green-100 text-green-800';
default: return 'bg-gray-100 text-gray-800';
}
};
const getStatusIcon = (status) => {
switch(status) {
case 'in-progress': return