From b99b60b32ee2d1dce4736d0b7ca67387d24aa998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Faleiros?= Date: Wed, 1 Jul 2026 09:46:53 -0300 Subject: [PATCH] Hide non-seller entries from seller chart --- src/pages/Dashboard.tsx | 48 +++++++++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/src/pages/Dashboard.tsx b/src/pages/Dashboard.tsx index d9f1704..32a4b95 100644 --- a/src/pages/Dashboard.tsx +++ b/src/pages/Dashboard.tsx @@ -133,6 +133,19 @@ const getSellerMetricValue = (metric: SellerMetricKey, revenue: number, orders: return revenue; }; +const normalizeSellerGraphName = (name: string) => ( + name + .normalize('NFD') + .replace(/\p{Diacritic}/gu, '') + .trim() + .toLowerCase() +); + +const shouldHideSellerFromGraph = (name: string) => { + const normalizedName = normalizeSellerGraphName(name); + return normalizedName === '0' || normalizedName === 'pos vendas'; +}; + const getBarGlowStyle = (color: string) => ({ filter: `drop-shadow(0 0 3px ${color}40)` }); @@ -326,10 +339,27 @@ const Dashboard = () => { return buildDashboardMetrics(ordersData, dateRange); }, [dateRange, ordersData, serverMetrics]); + const chartRevenueBySeller = useMemo( + () => revenueBySeller.filter(seller => !shouldHideSellerFromGraph(seller.name)), + [revenueBySeller] + ); + const chartOrdersBySeller = useMemo( + () => ordersBySeller.filter(seller => !shouldHideSellerFromGraph(seller.name)), + [ordersBySeller] + ); + const chartSellerRevenueByDate = useMemo( + () => sellerRevenueByDate.filter(seller => !shouldHideSellerFromGraph(seller.name)), + [sellerRevenueByDate] + ); + const chartSellerRevenueByHour = useMemo( + () => sellerRevenueByHour.filter(seller => !shouldHideSellerFromGraph(seller.name)), + [sellerRevenueByHour] + ); + const sellerColorMap = useMemo(() => { const colorMap = new Map(); - [...revenueBySeller, ...ordersBySeller].forEach((seller) => { + [...chartRevenueBySeller, ...chartOrdersBySeller].forEach((seller) => { const key = seller.id || seller.name; if (!colorMap.has(key)) { colorMap.set(key, SELLER_COLORS[colorMap.size % SELLER_COLORS.length]); @@ -337,21 +367,21 @@ const Dashboard = () => { }); return colorMap; - }, [ordersBySeller, revenueBySeller]); + }, [chartOrdersBySeller, chartRevenueBySeller]); const sellerMetricConfig = sellerMetricOptions.find(option => option.key === sellerMetric) || sellerMetricOptions[0]; const sellerTimeSeries = useMemo(() => { const isSingleDayRange = formatDateKey(dateRange.start) === formatDateKey(dateRange.end); - const isHourly = isSingleDayRange && sellerRevenueByHour.length > 0; + const isHourly = isSingleDayRange && chartSellerRevenueByHour.length > 0; const activeTrendPoints = isHourly - ? sellerRevenueByHour.map(point => ({ + ? chartSellerRevenueByHour.map(point => ({ ...point, date: formatHourKey(point.hour) })) - : sellerRevenueByDate; + : chartSellerRevenueByDate; - if (!activeTrendPoints.length && revenueBySeller.length) { + if (!activeTrendPoints.length && chartRevenueBySeller.length) { const startDate = formatDateKey(dateRange.start); const endDate = formatDateKey(dateRange.end); const chartDates = isSingleDayRange && isHourly @@ -359,7 +389,7 @@ const Dashboard = () => { : startDate === endDate ? [endDate] : [startDate, endDate]; const sellersById = new Map>(); - revenueBySeller.forEach(seller => { + chartRevenueBySeller.forEach(seller => { const id = seller.id || seller.name; sellersById.set(id, { id, @@ -370,7 +400,7 @@ const Dashboard = () => { }); }); - ordersBySeller.forEach(seller => { + chartOrdersBySeller.forEach(seller => { const id = seller.id || seller.name; const existing = sellersById.get(id); sellersById.set(id, { @@ -468,7 +498,7 @@ const Dashboard = () => { }); return { sellers, chartData, isFallback: false, isHourly }; - }, [dateRange.end, dateRange.start, ordersBySeller, revenueBySeller, sellerColorMap, sellerMetric, sellerRevenueByDate, sellerRevenueByHour]); + }, [chartOrdersBySeller, chartRevenueBySeller, chartSellerRevenueByDate, chartSellerRevenueByHour, dateRange.end, dateRange.start, sellerColorMap, sellerMetric]); const focusedSeller = focusedSellerId ? sellerTimeSeries.sellers.find(seller => seller.id === focusedSellerId) : null; const effectiveFocusedSellerId = focusedSeller?.id || null;