aboutsummaryrefslogtreecommitdiffhomepage
path: root/frontend/app/models
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-08-12 01:34:20 +0900
committernsfisis <nsfisis@gmail.com>2024-08-12 01:48:08 +0900
commitb97b245861b93a5ab5f8bde095d9920fabd0cbbd (patch)
treefcb88fe6a71747623cbe7f9b5c3042818ab519cd /frontend/app/models
parent5964fa404909550a2dd42a75633fef223fdb05fb (diff)
downloadphperkaigi-2025-albatross-b97b245861b93a5ab5f8bde095d9920fabd0cbbd.tar.gz
phperkaigi-2025-albatross-b97b245861b93a5ab5f8bde095d9920fabd0cbbd.tar.zst
phperkaigi-2025-albatross-b97b245861b93a5ab5f8bde095d9920fabd0cbbd.zip
refactor(frontend): move some types to app/models
Diffstat (limited to 'frontend/app/models')
-rw-r--r--frontend/app/models/PlayerInfo.ts9
-rw-r--r--frontend/app/models/SubmissionResult.ts38
-rw-r--r--frontend/app/models/VerificationResult.ts17
3 files changed, 64 insertions, 0 deletions
diff --git a/frontend/app/models/PlayerInfo.ts b/frontend/app/models/PlayerInfo.ts
new file mode 100644
index 0000000..7206a8b
--- /dev/null
+++ b/frontend/app/models/PlayerInfo.ts
@@ -0,0 +1,9 @@
+import type { SubmissionResult } from "./SubmissionResult";
+
+export type PlayerInfo = {
+ displayName: string | null;
+ iconPath: string | null;
+ score: number | null;
+ code: string | null;
+ submissionResult?: SubmissionResult;
+};
diff --git a/frontend/app/models/SubmissionResult.ts b/frontend/app/models/SubmissionResult.ts
new file mode 100644
index 0000000..7311494
--- /dev/null
+++ b/frontend/app/models/SubmissionResult.ts
@@ -0,0 +1,38 @@
+import type { VerificationResult } from "./VerificationResult";
+
+export type SubmissionResultStatus =
+ | "running"
+ | "success"
+ | "wrong_answer"
+ | "timeout"
+ | "compile_error"
+ | "runtime_error"
+ | "internal_error";
+
+export type SubmissionResult = {
+ status: SubmissionResultStatus;
+ verificationResults: VerificationResult[];
+};
+
+export function submissionResultStatusToLabel(
+ status: SubmissionResultStatus | null,
+) {
+ switch (status) {
+ case null:
+ return "-";
+ case "running":
+ return "Running...";
+ case "success":
+ return "Accepted";
+ case "wrong_answer":
+ return "Wrong Answer";
+ case "timeout":
+ return "Time Limit Exceeded";
+ case "compile_error":
+ return "Compile Error";
+ case "runtime_error":
+ return "Runtime Error";
+ case "internal_error":
+ return "Internal Error";
+ }
+}
diff --git a/frontend/app/models/VerificationResult.ts b/frontend/app/models/VerificationResult.ts
new file mode 100644
index 0000000..09a7ef4
--- /dev/null
+++ b/frontend/app/models/VerificationResult.ts
@@ -0,0 +1,17 @@
+export type VerificationResultStatus =
+ | "running"
+ | "success"
+ | "wrong_answer"
+ | "timeout"
+ | "compile_error"
+ | "runtime_error"
+ | "internal_error"
+ | "canceled";
+
+export type VerificationResult = {
+ testcase_id: number | null;
+ status: VerificationResultStatus;
+ label: string;
+ stdout: string;
+ stderr: string;
+};