import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { Box, IconButton, Paper, Typography, useTheme, useMediaQuery, Menu, MenuItem, TextField, Button } from '@mui/material'; import { AreaChart, Area, XAxis, YAxis, Tooltip, Legend, ResponsiveContainer, CartesianGrid } from 'recharts'; // import MoreVertIcon from '@mui/icons-material/MoreVert'; const StatisticsCard = ({ title = "Statistics", subtitle = "Delivery Times", data = [], dataKeys = [ { key: 'revenue', name: 'Revenue', color: '#E46A11' }, { key: 'sales', name: 'Sales', color: '#0182FC' } ], xDataKey = 'month', valueFormatter = (value) => value, timeFrame = 'month', onTimeFrameChange }) => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down('sm')); const isTablet = useMediaQuery(theme.breakpoints.between('sm', 'md')); const [selectedDate, setSelectedDate] = useState(''); const [anchorEl, setAnchorEl] = useState(null); const handleMenuOpen = (event) => { setAnchorEl(event.currentTarget); }; const handleMenuClose = () => { setAnchorEl(null); }; const handleDateChange = (event) => { setSelectedDate(event.target.value); if (onTimeFrameChange) onTimeFrameChange(timeFrame, event.target.value); handleMenuClose(); }; const handleTodayClick = () => { const today = new Date().toISOString().split('T')[0]; setSelectedDate(today); if (onTimeFrameChange) onTimeFrameChange(timeFrame, today); handleMenuClose(); }; // حساب العلامات الديناميكية للمحور الشاقولي const ticksArray = (() => { if (!data || data.length === 0) return []; const maxValue = Math.max( ...data.flatMap(d => dataKeys.map(k => d[k.key] || 0)) ); const desiredTicks = 8; // عدد العلامات المطلوب const step = Math.ceil(maxValue / desiredTicks) || 1; const arr = []; for (let i = 0; i <= maxValue; i += step) { arr.push(i); } return arr; })(); return ( {/* */} {/* Header */} {title} {subtitle} {/* Chart */} {dataKeys.map(({ key, color }) => ( ))} {dataKeys.map(({ key, name, color }) => ( ))} ); }; StatisticsCard.propTypes = { title: PropTypes.string, subtitle: PropTypes.string, data: PropTypes.arrayOf(PropTypes.object), dataKeys: PropTypes.arrayOf(PropTypes.shape({ key: PropTypes.string.isRequired, name: PropTypes.string.isRequired, color: PropTypes.string.isRequired })), xDataKey: PropTypes.string, valueFormatter: PropTypes.func, timeFrame: PropTypes.oneOf(['day', 'week', 'month', 'year']), onTimeFrameChange: PropTypes.func }; export default StatisticsCard;