From e2689d5f8ab121f86a7f894ae2dd5717d074b769 Mon Sep 17 00:00:00 2001 From: Clumsy-Coder <19594044+Clumsy-Coder@users.noreply.github.com> Date: Sun, 14 Jan 2024 20:32:39 -0700 Subject: [PATCH] feat(page:user): display problem solved VS user submissions with donut chart ## what - display problem solved VS user submissions with donut chart ## how - fetch the data using react-query hook `useFetchUserSubmissionAttempted` - display the data using Rechart donut chart ## why - to display user solved problems VS user submissions ## where - ./src/app/users/[username]/page.tsx ## usage --- src/app/users/[username]/page.tsx | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/app/users/[username]/page.tsx b/src/app/users/[username]/page.tsx index 6745ad3..a5b92bd 100644 --- a/src/app/users/[username]/page.tsx +++ b/src/app/users/[username]/page.tsx @@ -8,6 +8,7 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { userSchema } from "@/schema"; import SubmissionVerdictChart from "@/components/charts/ProblemVerdictChart"; import { + useFetchUserSubmissionAttempted, useFetchUserSubmissionLanguage, useFetchUserSubmissionOvertime, useFetchUserSubmissions, @@ -15,6 +16,7 @@ import { } from "@/hooks"; import { SubmissionLangType, + SubmissionSovledVsAttempted, SubmissionsOvertimeLineChartType, UserSubmission, UserSubmissionBarChartType, @@ -23,6 +25,7 @@ import { DataTable } from "@/components/ui/data-table"; import { columns } from "@/app/users/[username]/components/data-table/submissionColumns"; import SubmissionLanguageRadarChart from "@/components/charts/SubmissionLanguageRadarChart"; import SubmissionsOvertimeChart from "@/components/charts/SubmissionsOvertimeChart"; +import SolvedVsAttemptedDonutChart from "@/components/charts/SolvedVsAttemptedDonutChart"; type Props = { params: z.infer; @@ -57,13 +60,20 @@ const UserPage = ({ params }: Props) => { data: userSubmissionOvertimeData, error: userSubmissionOvertimeError, } = useFetchUserSubmissionOvertime(params.username); - + const { + isLoading: userSubmissionAttemptedIsLoading, + isSuccess: userSubmissionAttemptedIsSuccess, + isError: userSubmissionAttemptedIsError, + data: userSubmissionAttemptedData, + error: userSubmissionAttemptedError, + } = useFetchUserSubmissionAttempted(params.username); if ( userSubmissionIsLoading || userSubmissionVerdictIsLoading || userSubmissionLanguageIsLoading || - userSubmissionOvertimeIsLoading + userSubmissionOvertimeIsLoading || + userSubmissionAttemptedIsLoading ) { return
Loading {params.username}
; } @@ -134,6 +144,19 @@ const UserPage = ({ params }: Props) => { + {/* Problem solved vs attempted with donut chart */} +
+ + + Solved problems vs Problem submissions + + + + + +