import * as React from 'react'; 
 | 
import { Card, CardHeader, CardContent } from '@mui/material'; 
 | 
import { 
 | 
    ResponsiveContainer, 
 | 
    AreaChart, 
 | 
    Area, 
 | 
    XAxis, 
 | 
    YAxis, 
 | 
    CartesianGrid, 
 | 
    Tooltip, 
 | 
} from 'recharts'; 
 | 
import { useTranslate } from 'react-admin'; 
 | 
import { format, subDays, addDays } from 'date-fns'; 
 | 
  
 | 
const lastDay = new Date(); 
 | 
const lastMonthDays = Array.from({ length: 30 }, (_, i) => subDays(lastDay, i)); 
 | 
const aMonthAgo = subDays(new Date(), 30); 
 | 
  
 | 
const dateFormatter = (date) => 
 | 
    new Date(date).toLocaleDateString(); 
 | 
  
 | 
// const aggregateOrdersByDay = (orders) => 
 | 
//     orders 
 | 
//         .filter((order) => order.status !== 'cancelled') 
 | 
//         .reduce( 
 | 
//             (acc, curr) => { 
 | 
//                 const day = format(curr.date, 'yyyy-MM-dd'); 
 | 
//                 if (!acc[day]) { 
 | 
//                     acc[day] = 0; 
 | 
//                 } 
 | 
//                 acc[day] += curr.total; 
 | 
//                 return acc; 
 | 
//             }, 
 | 
//             {} 
 | 
//         ); 
 | 
  
 | 
// const getRevenuePerDay = (orders) => { 
 | 
//     const daysWithRevenue = aggregateOrdersByDay(orders); 
 | 
//     return lastMonthDays.map(date => ({ 
 | 
//         date: date.getTime(), 
 | 
//         total: daysWithRevenue[format(date, 'yyyy-MM-dd')] || 0, 
 | 
//     })); 
 | 
// }; 
 | 
  
 | 
const NbChart = (props) => { 
 | 
    const { orders } = props; 
 | 
    const translate = useTranslate(); 
 | 
    if (!orders) return null; 
 | 
  
 | 
    return ( 
 | 
        <Card> 
 | 
            <CardHeader title={translate('page.dashboard.chart.histories')} /> 
 | 
            <CardContent> 
 | 
                <div style={{ width: '100%', height: 300 }}> 
 | 
                    <ResponsiveContainer> 
 | 
                        <AreaChart data={orders?.trandItem 
 | 
                        }> 
 | 
                            <defs> 
 | 
                                <linearGradient 
 | 
                                    id="colorUv" 
 | 
                                    x1="0" 
 | 
                                    y1="0" 
 | 
                                    x2="0" 
 | 
                                    y2="1" 
 | 
                                > 
 | 
                                    <stop 
 | 
                                        offset="5%" 
 | 
                                        stopColor="#5091abff" 
 | 
                                        stopOpacity={0.8} 
 | 
                                    /> 
 | 
                                    <stop 
 | 
                                        offset="95%" 
 | 
                                        stopColor="#5091abff" 
 | 
                                        stopOpacity={0} 
 | 
                                    /> 
 | 
                                </linearGradient> 
 | 
                            </defs> 
 | 
                            <XAxis 
 | 
                                dataKey="orderTime" 
 | 
  
 | 
                                domain={[ 
 | 
                                    addDays(aMonthAgo, 1).getTime(), 
 | 
                                    new Date().getTime(), 
 | 
                                ]} 
 | 
                                tickFormatter={dateFormatter} 
 | 
                            /> 
 | 
                            <YAxis dataKey="inQty" name="Revenue" unit="" /> 
 | 
                            <CartesianGrid strokeDasharray="3 3" /> 
 | 
                            <Tooltip 
 | 
                                cursor={{ strokeDasharray: '3 3' }} 
 | 
                                formatter={(value) => 
 | 
                                    new Intl.NumberFormat(undefined, { 
 | 
                                        style: 'currency', 
 | 
                                        currency: 'USD', 
 | 
                                    }).format(value) 
 | 
                                } 
 | 
                                labelFormatter={(label) => 
 | 
                                    dateFormatter(label) 
 | 
                                } 
 | 
                            /> 
 | 
                            <Area 
 | 
                                type="monotone" 
 | 
                                dataKey="inQty" 
 | 
                                stroke="#50911aff" 
 | 
                                strokeWidth={2} 
 | 
                                fill="url(#colorUv)" 
 | 
                            /> 
 | 
                            <Area 
 | 
                                type="monotone" 
 | 
                                dataKey="outQty" 
 | 
                                stroke="#5091abff" 
 | 
                                strokeWidth={2} 
 | 
                                fill="url(#colorUv)" 
 | 
                            /> 
 | 
                        </AreaChart> 
 | 
                    </ResponsiveContainer> 
 | 
                </div> 
 | 
            </CardContent> 
 | 
        </Card> 
 | 
    ); 
 | 
}; 
 | 
  
 | 
export default NbChart; 
 |