diff --git a/components/main/dashboard/chart/pie-chart-browser.tsx b/components/main/dashboard/chart/pie-chart-browser.tsx new file mode 100644 index 0000000..edb7b1a --- /dev/null +++ b/components/main/dashboard/chart/pie-chart-browser.tsx @@ -0,0 +1,181 @@ +"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 }, +]; + +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 [topContentDate, setTopContentDate] = useState({ + startDate: parseDate( + convertDateFormatNoTimeV2( + new Date(new Date().setDate(new Date().getDate() - 7)) + ) + ), + endDate: parseDate(convertDateFormatNoTimeV2(new Date())), + }); + + useEffect(() => { + fetchData(); + }, [topContentDate.startDate, topContentDate.endDate]); + + const fetchData = async () => { + const data = dummy; + setData(data); + const label = data.map((a) => a.name); + const seriesNow = data.map((a) => a.value); + 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(topContentDate.startDate)} + + + + + setTopContentDate({ + startDate: e, + endDate: topContentDate.endDate, + }) + } + maxValue={topContentDate.endDate} + /> + + +

to

+ + + + {convertDateFormatNoTime(topContentDate.endDate)} + + + + + setTopContentDate({ + startDate: topContentDate.startDate, + endDate: e, + }) + } + minValue={topContentDate.startDate} + /> + + +
+
+
+

Browser

+

Visitors

+

Persentage

+
+ + {data && + data?.map((list: any, index: number) => ( +
+

{list.name}

+

{list.value}

+

{getPersentage(list.value)}

+
+ ))} +
+
+
+ ); +} diff --git a/components/main/dashboard/dashboard-container.tsx b/components/main/dashboard/dashboard-container.tsx index 0ba669d..008508c 100644 --- a/components/main/dashboard/dashboard-container.tsx +++ b/components/main/dashboard/dashboard-container.tsx @@ -71,6 +71,7 @@ import ApexChartColumnVisitors from "./chart/visitor-chart"; import IndonesiaMap from "@/components/ui/maps-charts"; import ApexChartDynamic from "./chart/dynamic-bar-char"; import ApexMultiLineChart from "./chart/multiline-chart"; +import PieChartLoginBrowser from "./chart/pie-chart-browser"; type ArticleData = Article & { no: number; @@ -116,52 +117,6 @@ const months = [ "Dec", ]; -const rawData = [ - { name: "Aceh", value: 32 }, - { name: "Sumatera Utara", value: 78 }, - { name: "Sumatera Barat", value: 45 }, - { name: "Riau", value: 63 }, - { name: "Jambi", value: 21 }, - { name: "Sumatera Selatan", value: 56 }, - { name: "Bengkulu", value: 11 }, - { name: "Lampung", value: 49 }, - { name: "Kepulauan Bangka Belitung", value: 27 }, - { name: "Kepulauan Riau", value: 19 }, - { name: "DKI Jakarta", value: 97 }, - { name: "Jawa Barat", value: 84 }, - { name: "Jawa Tengah", value: 88 }, - { name: "Daerah Istimewa Yogyakarta", value: 36 }, - { name: "Jawa Timur", value: 91 }, - { name: "Banten", value: 52 }, - { name: "Bali", value: 66 }, - { name: "Nusa Tenggara Barat", value: 40 }, - { name: "Nusa Tenggara Timur", value: 59 }, - { name: "Kalimantan Barat", value: 61 }, - { name: "Kalimantan Tengah", value: 29 }, - { name: "Kalimantan Selatan", value: 71 }, - { name: "Kalimantan Timur", value: 76 }, - { name: "Kalimantan Utara", value: 18 }, - { name: "Sulawesi Utara", value: 55 }, - { name: "Sulawesi Tengah", value: 31 }, - { name: "Sulawesi Selatan", value: 80 }, - { name: "Sulawesi Tenggara", value: 34 }, - { name: "Gorontalo", value: 23 }, - { name: "Sulawesi Barat", value: 12 }, - { name: "Maluku", value: 25 }, - { name: "Maluku Utara", value: 30 }, - { name: "Papua", value: 37 }, - { name: "Papua Barat", value: 33 }, - { name: "Papua Tengah", value: 16 }, - { name: "Papua Pegunungan", value: 8 }, - { name: "Papua Selatan", value: 14 }, - { name: "Papua Barat Daya", value: 6 }, -]; - -const getTotalData: number[] = []; -rawData.map((list) => { - getTotalData.push(list.value); -}); - export default function DashboardContainer() { const { isOpen, onOpen, onOpenChange } = useDisclosure(); @@ -1132,6 +1087,7 @@ export default function DashboardContainer() {
{chartVisitorTotal}
+ )} diff --git a/components/table/visitors-table.tsx b/components/table/visitors-table.tsx new file mode 100644 index 0000000..1e0cfef --- /dev/null +++ b/components/table/visitors-table.tsx @@ -0,0 +1,5 @@ +"use-client"; + +export default function VisitorsTable() { + return
aaa
; +}