From 46fcccda35315da257f7df4bbb28dd05cb224e06 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Fri, 13 Jan 2023 14:26:51 +0800 Subject: [PATCH] add testcase panel. --- src/oj/problem/components/Editor.vue | 4 +- src/oj/problem/components/ProblemContent.vue | 76 ++++++++++++++++---- src/oj/problem/components/SubmitPanel.vue | 74 +++++++++---------- src/oj/problem/components/TestcasePanel.vue | 32 ++++++++- src/oj/{stores => store}/code.ts | 2 +- src/oj/{stores => store}/signup.ts | 0 src/oj/stores/testcaseResult.ts | 11 --- src/routes.ts | 2 + src/shared/Header/index.vue | 2 +- src/shared/Login/index.vue | 2 +- src/shared/Monaco/index.vue | 2 +- src/shared/Signup/index.vue | 2 +- src/shared/monaco/index.vue | 2 +- src/utils/judge.ts | 22 +++--- 14 files changed, 146 insertions(+), 87 deletions(-) rename src/oj/{stores => store}/code.ts (71%) rename src/oj/{stores => store}/signup.ts (100%) delete mode 100644 src/oj/stores/testcaseResult.ts diff --git a/src/oj/problem/components/Editor.vue b/src/oj/problem/components/Editor.vue index d5fc2fd..586546d 100644 --- a/src/oj/problem/components/Editor.vue +++ b/src/oj/problem/components/Editor.vue @@ -1,11 +1,11 @@ diff --git a/src/oj/problem/components/TestcasePanel.vue b/src/oj/problem/components/TestcasePanel.vue index 00e43c0..dd4885d 100644 --- a/src/oj/problem/components/TestcasePanel.vue +++ b/src/oj/problem/components/TestcasePanel.vue @@ -1,8 +1,32 @@ - + @@ -10,4 +34,8 @@ .panel { height: 400px; } +.msg { + white-space: pre; + line-height: 1.5; +} diff --git a/src/oj/stores/code.ts b/src/oj/store/code.ts similarity index 71% rename from src/oj/stores/code.ts rename to src/oj/store/code.ts index 6afe0f4..2fff2ce 100644 --- a/src/oj/stores/code.ts +++ b/src/oj/store/code.ts @@ -1,4 +1,4 @@ -import { Code, LANGUAGE } from "../../utils/types" +import { Code } from "../../utils/types" export const useCodeStore = defineStore("code", () => { const code = reactive({ diff --git a/src/oj/stores/signup.ts b/src/oj/store/signup.ts similarity index 100% rename from src/oj/stores/signup.ts rename to src/oj/store/signup.ts diff --git a/src/oj/stores/testcaseResult.ts b/src/oj/stores/testcaseResult.ts deleted file mode 100644 index d71a61f..0000000 --- a/src/oj/stores/testcaseResult.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Code } from "../../utils/types" - -export const useTestcaseReultStore = defineStore("testcaseResult", () => { - const result = ref({}) - - async function runTestcase(code: Code, sample: string) { - console.log(code, sample) - } - - return { result, runTestcase } -}) diff --git a/src/routes.ts b/src/routes.ts index 3b6fdc2..3ca603c 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -12,6 +12,7 @@ const routes = [ path: "problem/:problemID", component: () => import("./oj/problem/detail.vue"), props: true, + name: "ProblemDetail", }, { path: "status", @@ -37,6 +38,7 @@ const routes = [ path: "contest/:contestID/problem/:problemID", component: () => import("./oj/problem/detail.vue"), props: true, + name: "ContestProblemDetail", }, { path: "rank", diff --git a/src/shared/Header/index.vue b/src/shared/Header/index.vue index fec3f0e..ebd2461 100644 --- a/src/shared/Header/index.vue +++ b/src/shared/Header/index.vue @@ -1,6 +1,6 @@ diff --git a/src/shared/monaco/index.vue b/src/shared/monaco/index.vue index 6a7bd7e..4d63236 100644 --- a/src/shared/monaco/index.vue +++ b/src/shared/monaco/index.vue @@ -46,6 +46,7 @@ onMounted(async function () { automaticLayout: true, // 自适应布局 tabSize: 4, fontSize: isMobile.value ? 20 : 24, // 字体大小 + scrollBeyondLastLine: false, }) model.onDidChangeContent(() => { @@ -68,7 +69,6 @@ onMounted(async function () { watchEffect(() => { if (props.value !== model.getValue()) { - console.log(666) model.setValue(props.value) } }) diff --git a/src/utils/judge.ts b/src/utils/judge.ts index 7afa5c7..a952849 100644 --- a/src/utils/judge.ts +++ b/src/utils/judge.ts @@ -41,19 +41,15 @@ export async function createTestSubmission(code: Code, input: string) { redirect_stderr_to_stdout: true, compiler_options: compilerOptions, } - try { - const response = await http.post("/submissions", payload, { - params: { base64_encoded: true, wait: true }, - }) - const data = response.data - return { - status: data.status && data.status.id, - output: [decode(data.compile_output), decode(data.stdout)] - .join("\n") - .trim(), - } - } catch (e) { - console.error(e) + const response = await http.post("/submissions", payload, { + params: { base64_encoded: true, wait: true }, + }) + const data = response.data + return { + status: data.status && data.status.id, + output: [decode(data.compile_output), decode(data.stdout)] + .join("\n") + .trim(), } } }