"use client"; const dummy = [ { name: "Chrome", value: 42 }, { name: "Firefox", value: 23 }, { name: "Edge", value: 15 }, { name: "Safari", value: 37 }, { name: "Opera", value: 8 }, { name: "Brave", value: 29 }, ]; interface BrowserVisitor { browserName: string; totalVisitor: number; } import { getStatisticVisitorsBrowser } from "@/services/article"; import { convertDateFormatNoTime, convertDateFormatNoTimeV2, } from "@/utils/global"; import { Calendar, Popover, PopoverContent, PopoverTrigger, } from "@heroui/react"; import { parseDate } from "@internationalized/date"; import { Fragment, useEffect, useState } from "react"; import ReactApexChart from "react-apexcharts"; export default function PieChartLoginBrowser() { const [series, setSeries] = useState([]); const [labels, setLabels] = useState([]); const [data, setData] = useState([]); const [total, setTotal] = useState(0); const [selectedLabel, setSelectedLabel] = useState(""); const [visitorBrowserDate, setVisitorBrowserDate] = useState({ startDate: parseDate( convertDateFormatNoTimeV2( new Date(new Date().setDate(new Date().getDate() - 7)) ) ), endDate: parseDate(convertDateFormatNoTimeV2(new Date())), }); useEffect(() => { fetchData(); }, [visitorBrowserDate.startDate, visitorBrowserDate.endDate]); const fetchData = async () => { const getDate = (data: any) => { return `${data.year}-${data.month < 10 ? `0${data.month}` : data.month}-${ data.day < 10 ? `0${data.day}` : data.day }`; }; const res = await getStatisticVisitorsBrowser( getDate(visitorBrowserDate.startDate), getDate(visitorBrowserDate.endDate) ); const data: BrowserVisitor[] = res?.data?.data; setData(data); const label = data.map((a) => a.browserName); const seriesNow = data.map((a) => a.totalVisitor); const totalNow = seriesNow.reduce((a, c) => a + c, 0); setTotal(totalNow); setLabels(label); setSeries(seriesNow); }; const getPersentage = (value: number) => { const count = ((value / total) * 100).toFixed(1); return `${count}%`; }; return (

Browser Statistics

Browser Statistics from

{convertDateFormatNoTime(visitorBrowserDate.startDate)} setVisitorBrowserDate({ startDate: e, endDate: visitorBrowserDate.endDate, }) } maxValue={visitorBrowserDate.endDate} />

to

{convertDateFormatNoTime(visitorBrowserDate.endDate)} setVisitorBrowserDate({ startDate: visitorBrowserDate.startDate, endDate: e, }) } minValue={visitorBrowserDate.startDate} />

Browser

Visitors

Persentage

{data && data?.map((list, index) => (

{list.browserName}

{list.totalVisitor}

{getPersentage(list.totalVisitor)}

))}
); }