From 39fd5cbe6e4aaaacedd8ece94308da438aea419a Mon Sep 17 00:00:00 2001 From: KanonKC Date: Sat, 11 May 2024 16:23:44 +0700 Subject: [PATCH 1/2] Formatting code --- .../Forms/CreateGroupForm/ManageMembers.tsx | 1 + src/views/My/Problems/CreateProblem.tsx | 40 +++++++++++-------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/components/Forms/CreateGroupForm/ManageMembers.tsx b/src/components/Forms/CreateGroupForm/ManageMembers.tsx index 9116ee1..cf5973d 100644 --- a/src/components/Forms/CreateGroupForm/ManageMembers.tsx +++ b/src/components/Forms/CreateGroupForm/ManageMembers.tsx @@ -132,6 +132,7 @@ const ManageMembers = ({ const reader = new FileReader(); reader.onload = function (e) { const content = e.target?.result; + console.log(content) const lines = (content as string).split("\n").map((line) => line.split(",")[0]); setAccountReferenceFromFile(lines) diff --git a/src/views/My/Problems/CreateProblem.tsx b/src/views/My/Problems/CreateProblem.tsx index b47da0f..e09760b 100644 --- a/src/views/My/Problems/CreateProblem.tsx +++ b/src/views/My/Problems/CreateProblem.tsx @@ -1,6 +1,8 @@ import { ELEMENT_PARAGRAPH } from "@udecode/plate-paragraph"; import { useNavigate } from "react-router-dom"; -import CreateProblemForm, { OnProblemSaveCallback } from "../../../components/Forms/CreateProblemForm"; +import CreateProblemForm, { + OnProblemSaveCallback, +} from "../../../components/Forms/CreateProblemForm"; import { toast } from "../../../components/shadcn/UseToast"; import NavbarSidebarLayout from "../../../layout/NavbarSidebarLayout"; import { ProblemService } from "../../../services/Problem.service"; @@ -26,28 +28,32 @@ const formInitialValue: CreateProblemRequestForm = { }; const CreateProblem = () => { - const accountId = String(localStorage.getItem("account_id")); const navigate = useNavigate(); - - const handleSave:OnProblemSaveCallback = (setLoading, createRequest) => { + const handleSave: OnProblemSaveCallback = (setLoading, createRequest) => { setLoading(true); - const {request,groups} = transformCreateProblemRequestForm2CreateProblemRequest(createRequest) - - ProblemService.create( - accountId, - request - ).then((response) => { - return ProblemService.updateGroupPermissions(response.data.problem_id,accountId,groups) - }).then((response) => { - setLoading(false); - toast({ - title: "Create Completed", + const { request, groups } = + transformCreateProblemRequestForm2CreateProblemRequest( + createRequest + ); + + ProblemService.create(accountId, request) + .then((response) => { + return ProblemService.updateGroupPermissions( + response.data.problem_id, + accountId, + groups + ); + }) + .then((response) => { + setLoading(false); + toast({ + title: "Create Completed", + }); + navigate(`/my/problems/${response.data.problem_id}/edit`); }); - navigate(`/my/problems/${response.data.problem_id}/edit`); - }); }; return ( From 8faad7396c1b60ddb44ebeb59d6c2ff410aeffc2 Mon Sep 17 00:00:00 2001 From: KanonKC Date: Sun, 12 May 2024 13:45:04 +0700 Subject: [PATCH 2/2] feat: Realtime submission --- src/views/My/Problems/ProblemStatistic.tsx | 64 +++++++++++++++++++--- 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/src/views/My/Problems/ProblemStatistic.tsx b/src/views/My/Problems/ProblemStatistic.tsx index 5df7f92..a95e29c 100644 --- a/src/views/My/Problems/ProblemStatistic.tsx +++ b/src/views/My/Problems/ProblemStatistic.tsx @@ -7,19 +7,25 @@ import { SubmissionService } from "../../../services/Submission.service"; import { ProblemPopulateAccountAndTestcasesAndProblemGroupPermissionsPopulateGroupModel } from "../../../types/models/Problem.model"; import { SubmissionPopulateSubmissionTestcaseAndAccountModel } from "../../../types/models/Submission.model"; import { ProblemService } from "./../../../services/Problem.service"; +import { Pencil, RotateCw } from "lucide-react"; +import { Switch } from "../../../components/shadcn/Switch"; +import { Label } from "../../../components/shadcn/Label"; +import { cn } from "../../../lib/utils"; const ProblemStatistic = () => { const { problemId } = useParams(); const accountId = String(localStorage.getItem("account_id")); + const [loading, setLoading] = useState(false); + const [realtimeSubmission, setRealtimeSubmission] = useState(false); const [problem, setProblem] = useState(); const [submissions, setSubmissions] = useState(); - useEffect(() => { + const loadSubmissions = () => { if (!problemId) return; - + setLoading(true); ProblemService.get(accountId, problemId) .then((response) => { setProblem(response.data); @@ -30,21 +36,63 @@ const ProblemStatistic = () => { }) .then((response) => { setSubmissions(response.data.submissions); + setLoading(false); }); - }, [accountId, problemId]); + }; + + useEffect(loadSubmissions, [accountId, problemId]); + useEffect(() => { + if (realtimeSubmission) { + loadSubmissions(); + } + }) return (
{problem?.title}
-
- - - +
+
+ + {!realtimeSubmission ? ( + + ) : ( + + )} + + + setRealtimeSubmission(!realtimeSubmission) + } + /> +
+
+ + + +
-
+
{problem && (