From 2aa410a96f96d14ce80d4d1b3f13e20d9c917b98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alessandro=20Gon=C3=A7aalves?= Date: Thu, 23 Oct 2025 11:52:37 -0300 Subject: [PATCH] fix: multi-filtro corrigido --- src/app/DRE/analitico.tsx | 83 ++++++++++++++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 9 deletions(-) diff --git a/src/app/DRE/analitico.tsx b/src/app/DRE/analitico.tsx index e4d46ae..525a251 100644 --- a/src/app/DRE/analitico.tsx +++ b/src/app/DRE/analitico.tsx @@ -624,31 +624,51 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { // Filtrar dados baseado nos filtros de coluna const filteredData = React.useMemo(() => { - if (!data || data.length === 0) return data; + console.log('πŸ” Debug filteredData - data:', data?.length, 'columnFilters:', columnFilters); + + if (!data || data.length === 0) { + console.log('⚠️ No data available'); + return data; + } - return data.filter((row) => { + const filtered = data.filter((row) => { return Object.entries(columnFilters).every(([field, filterValues]) => { if (!filterValues || filterValues.length === 0) return true; const cellValue = (row as any)[field]; const stringValue = cellValue === null || cellValue === undefined ? "" : String(cellValue); - return filterValues.includes(stringValue); + const matches = filterValues.includes(stringValue); + if (!matches) { + console.log(`❌ Filter mismatch - Field: ${field}, CellValue: ${cellValue}, StringValue: ${stringValue}, FilterValues:`, filterValues); + } + return matches; }); }).map((row, index) => ({ ...row, id: `filtered-${row.id || row.recnum || index}` // Garantir ID ΓΊnico e estΓ‘vel })); + + console.log('βœ… Filtered result:', filtered.length, 'out of', data.length); + return filtered; }, [data, columnFilters]); // Ordenar dados baseado na ordenaΓ§Γ£o de coluna const sortedAndFilteredData = React.useMemo(() => { - if (!filteredData || filteredData.length === 0) return filteredData; + console.log('πŸ” Debug sortedAndFilteredData - filteredData:', filteredData?.length, 'columnSorts:', columnSorts); + + if (!filteredData || filteredData.length === 0) { + console.log('⚠️ No filtered data available'); + return filteredData; + } const sortField = Object.keys(columnSorts).find(field => columnSorts[field] !== null); - if (!sortField || !columnSorts[sortField]) return filteredData; + if (!sortField || !columnSorts[sortField]) { + console.log('βœ… No sorting applied, returning filtered data as is'); + return filteredData; + } - return [...filteredData].sort((a, b) => { + const sorted = [...filteredData].sort((a, b) => { const aValue = (a as any)[sortField]; const bValue = (b as any)[sortField]; @@ -662,8 +682,29 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { return bString.localeCompare(aString); } }); + + console.log('βœ… Sorted result:', sorted.length); + return sorted; }, [filteredData, columnSorts]); + // Debug useEffect para investigar estado inicial + React.useEffect(() => { + console.log('πŸ” Debug Estado Inicial:'); + console.log('πŸ“Š data:', data?.length); + console.log('πŸ” columnFilters:', columnFilters); + console.log('πŸ“ˆ columnSorts:', columnSorts); + console.log('🌐 globalFilter:', globalFilter); + console.log('πŸ”— filtrosExternos:', filtrosExternos); + }, [data, columnFilters, columnSorts, globalFilter, filtrosExternos]); + + // Debug useEffect para DataGrid + React.useEffect(() => { + console.log('πŸ” Debug DataGrid - sortedAndFilteredData:', sortedAndFilteredData?.length, 'loading:', loading); + if (sortedAndFilteredData && sortedAndFilteredData.length > 0) { + console.log('πŸ“Š First row sample:', sortedAndFilteredData[0]); + } + }, [sortedAndFilteredData, loading]); + // Calcular valor total dos dados filtrados const valorTotal = React.useMemo(() => { return sortedAndFilteredData.reduce((sum, item) => sum + (Number(item.valor) || 0), 0); @@ -804,7 +845,27 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { )} {data.length > 0 && ( -
+
+ +