diff --git a/web/src/components/UserStatisticsView.tsx b/web/src/components/UserStatisticsView.tsx index aed6b6cd..ccd69f1b 100644 --- a/web/src/components/UserStatisticsView.tsx +++ b/web/src/components/UserStatisticsView.tsx @@ -2,7 +2,17 @@ import { Divider, Tooltip } from "@mui/joy"; import clsx from "clsx"; import dayjs from "dayjs"; import { countBy } from "lodash-es"; -import { CalendarDaysIcon, CheckCircleIcon, Code2Icon, LinkIcon, ListTodoIcon, MoreVerticalIcon, RefreshCcwIcon } from "lucide-react"; +import { + CalendarDaysIcon, + CheckCircleIcon, + ChevronLeftIcon, + ChevronRightIcon, + Code2Icon, + LinkIcon, + ListTodoIcon, + MoreVerticalIcon, + RefreshCcwIcon, +} from "lucide-react"; import { useState } from "react"; import toast from "react-hot-toast"; import { memoServiceClient } from "@/grpcweb"; @@ -31,7 +41,7 @@ const UserStatisticsView = () => { const [memoStats, setMemoStats] = useState({ link: 0, taskList: 0, code: 0, incompleteTasks: 0 }); const [activityStats, setActivityStats] = useState>({}); const [selectedDate] = useState(new Date()); - const [monthString, setMonthString] = useState(dayjs(selectedDate.toDateString()).format("YYYY-MM")); + const [visibleMonthString, setVisibleMonthString] = useState(dayjs(selectedDate.toDateString()).format("YYYY-MM")); const days = Math.ceil((Date.now() - currentUser.createTime!.getTime()) / 86400000); useAsyncEffect(async () => { @@ -79,16 +89,24 @@ const UserStatisticsView = () => {
- {dayjs(monthString).toDate().toLocaleString(i18n.language, { year: "numeric", month: "long" })} + {dayjs(visibleMonthString).toDate().toLocaleString(i18n.language, { year: "numeric", month: "long" })} e.target.showPicker()} - onChange={(e) => setMonthString(e.target.value || dayjs().format("YYYY-MM"))} + onChange={(e) => setVisibleMonthString(e.target.value || dayjs().format("YYYY-MM"))} />
+ setVisibleMonthString(dayjs(visibleMonthString).subtract(1, "month").format("YYYY-MM"))} + /> + setVisibleMonthString(dayjs(visibleMonthString).add(1, "month").format("YYYY-MM"))} + /> @@ -103,7 +121,12 @@ const UserStatisticsView = () => {
- + {memoAmount > 0 && (

{memoAmount} memos in {days} {days > 1 ? "days" : "day"}