import { Box, Paper, Typography, useMediaQuery, useTheme } from "@mui/material"; import { LineChart } from "@mui/x-charts"; import moment from "moment"; import type { GeneralResponse } from "@api/statistic"; import { FC } from "react"; type GeneralItemsProps = { title: string; general: Record; color: string; numberType: "sum" | "percent"; }; type GeneralProps = { data: GeneralResponse | null; }; const COLORS: Record = { 0: "#61BB1A", 1: "#7E2AEA", 2: "#FB5607", 3: "#0886FB", }; const dateParser = (object: Record): Record => { const result = {} as Record for (var key in object) { result[moment.utc(Number(key)*1000).format('DD/MM/YYYY')] = object[key] console.log(result) } return result; } const GeneralItem = ({ title, general, color, numberType, }: GeneralItemsProps) => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down(700)); const numberValue = numberType === "sum" ? Object.values(general).reduce((total, item) => total + item, 0) : Object.entries(general).reduce( (total, [key, value]) => total + (value / Number(key)) * 100, 0, ) / Object.keys(general).length || Number(0); return ( {title} {numberType === "sum" ? numberValue : `${numberValue.toFixed()}%`} moment.utc(Number(value)*1000).format('DD/MM/YYYY') }]} series={[{ data: Object.values(general) }]} height={220} colors={[color]} sx={{ transform: isMobile ? "scale(1.1)" : "scale(1.2)", "& .MuiChartsAxis-tickContainer": { display: "none" }, }} /> ); }; export const General: FC = ({ data }) => { const theme = useTheme(); const isTablet = useMediaQuery(theme.breakpoints.down(1000)); const isMobile = useMediaQuery(theme.breakpoints.down(700)); if (!data) { return ( нет данных о ключевых метриках ); } return ( Ключевые метрики ); };