import React, { useState, useMemo } from 'react'; import { SalesRecord } from '../types'; import { calculateItemMovers, getUniqueValues, generateItemMoversCSV } from '../services/dataProcessor'; // Import generateItemMoversCSV import ItemGrowthTable from './ItemGrowthTable'; import { ExpandableCard } from './Dashboard'; // Re-use ExpandableCard from Dashboard interface TopMoversPageProps { filteredData: SalesRecord[]; // Data already filtered by global customer, year, month, etc. } const TopMoversPage: React.FC = ({ filteredData }) => { // Local state for the specific comparison year, initially null for auto-selection const [selectedComparisonYear, setSelectedComparisonYear] = useState(null); // Derive available years from the *currently filtered data* for the comparison year dropdown const availableYearsForComparisonDropdown = useMemo(() => { const yearsInFilteredData = getUniqueValues(filteredData, 'year'); // Sort descending for the dropdown return yearsInFilteredData.sort((a,b) => parseInt(b) - parseInt(a)); }, [filteredData]); // Derive top/bottom movers based on selections const { topMovers, bottomMovers, comparisonPeriods } = useMemo(() => { const comparisonYearNum = selectedComparisonYear ? parseInt(selectedComparisonYear) : null; // Pass the globally filtered data. The global filter bar now handles customer/line/sku/etc filtering. // We pass null for the local customer override as it is no longer used. return calculateItemMovers(filteredData, null, comparisonYearNum); }, [filteredData, selectedComparisonYear]); // Handlers for export const handleExportGainers = () => { generateItemMoversCSV(topMovers, comparisonPeriods, 'Gainers'); }; const handleExportLosers = () => { generateItemMoversCSV(bottomMovers, comparisonPeriods, 'Losers'); }; return (

Top Item Movers

{/* Top 20 Gainers Table */} {/* Top 20 Losers Table */}
); }; export default TopMoversPage;