import { Card } from "flowbite-react"; import Link from "next/link"; import ApexCharts from "apexcharts"; import { useEffect } from "react"; import { minutesToTime } from "#/api/utils"; export const ProfileStats = (props: { lists: Array<number>; watched_count: number; watched_time: number; profile_id: number }) => { const getChartOptions = () => { return { series: props.lists, colors: ["#66bb6c", "#b566bb", "#5c6cc0", "#ffca28", "#ef5450"], chart: { height: 240, width: "100%", type: "donut", }, stroke: { colors: ["transparent"], lineCap: "", }, dataLabels: { enabled: false, }, labels: [`Смотрю`, `В планах`, `Просмотрено`, `Отложено`, `Брошено`], legend: { show: false, }, responsive: [ { breakpoint: 640, options: { chart: { height: 200, width: 200, type: "donut", }, }, }, ], }; }; useEffect(() => { if ( document.getElementById("donut-chart") && typeof ApexCharts !== "undefined" ) { const chart = new ApexCharts( document.getElementById("donut-chart"), getChartOptions() ); chart.render(); } }, []); return ( <Card className="font-light h-fit"> <div className="flex justify-between"> <h1 className="text-2xl font-bold">Статистика</h1> <Link href={`/profile/${props.profile_id}/bookmarks`}> <div className="flex items-center"> <p className="hidden text-xl font-bold sm:block">Показать все</p> <span className="w-6 h-6 iconify mdi--arrow-right"></span> </div> </Link> </div> <div className="flex items-center"> <div> <p className="align-center whitespace-nowrap"> <span className="inline-block rounded w-4 h-4 bg-[#66bb6c]"></span>{" "} Смотрю <span className="font-bold">{props.lists[0]}</span> </p> <p className="align-center whitespace-nowrap"> <span className="inline-block rounded w-4 h-4 bg-[#b566bb]"></span>{" "} В планах <span className="font-bold">{props.lists[1]}</span> </p> <p className="align-center whitespace-nowrap"> <span className="inline-block rounded w-4 h-4 bg-[#5c6cc0]"></span>{" "} Просмотрено <span className="font-bold">{props.lists[2]}</span> </p> <p className="align-center whitespace-nowrap"> <span className="inline-block rounded w-4 h-4 bg-[#ffca28]"></span>{" "} Отложено <span className="font-bold">{props.lists[3]}</span> </p> <p className="align-center whitespace-nowrap"> <span className="inline-block rounded w-4 h-4 bg-[#ef5450]"></span>{" "} Брошено <span className="font-bold">{props.lists[4]}</span> </p> </div> <div id="donut-chart"></div> </div> <div> <p> Просмотрено серий:{" "} <span className="font-bold">{props.watched_count}</span> </p> <p> Время просмотра:{" "} <span className="font-bold"> ~{minutesToTime(props.watched_time, "daysHours")} </span> </p> </div> </Card> ); };