diff --git a/src/App.vue b/src/App.vue index 5651af3..e7b0f47 100644 --- a/src/App.vue +++ b/src/App.vue @@ -3,7 +3,7 @@ import zhCn from "element-plus/dist/locale/zh-cn.mjs" diff --git a/src/components.d.ts b/src/components.d.ts index 40e13ad..0f15d8c 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -43,6 +43,7 @@ declare module '@vue/runtime-core' { IEpLoading: typeof import('~icons/ep/loading')['default'] IEpSelect: typeof import('~icons/ep/select')['default'] IEpSemiSelect: typeof import('~icons/ep/semi-select')['default'] + IEpVideoPlay: typeof import('~icons/ep/video-play')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] } diff --git a/src/oj/problem/components/editor-exec.vue b/src/oj/problem/components/editor-exec.vue index 3d693f7..bceb99d 100644 --- a/src/oj/problem/components/editor-exec.vue +++ b/src/oj/problem/components/editor-exec.vue @@ -6,7 +6,7 @@ import { submissionExists } from "../../api" import SubmitPanel from "./submit-panel.vue" import TestcasePanel from "./testcase-panel.vue" -const tab = ref("testcase") +const tab = ref("test") const submitPanelRef = ref<{ submit: Function }>() const problem = inject>("problem") const [tried] = useToggle() @@ -21,7 +21,7 @@ async function checkIfTried() { } function onTab(pane: TabsPaneContext) { - if (pane.paneName === "result") { + if (pane.paneName === "submit") { submitPanelRef && submitPanelRef.value!.submit() } } diff --git a/src/oj/problem/components/editor.vue b/src/oj/problem/components/editor.vue index b14100c..9573ed7 100644 --- a/src/oj/problem/components/editor.vue +++ b/src/oj/problem/components/editor.vue @@ -8,17 +8,17 @@ import { import { isMobile } from "../../../utils/breakpoints" import { Problem } from "../../../utils/types" import EditorExec from "./editor-exec.vue" +import { useCodeStore } from "../../stores/code" interface Props { problem: Problem } const props = defineProps() -const code = reactive({ - value: SOURCES[props.problem.languages[0] || "C"], - language: props.problem.languages[0] || "C", -}) -provide("code", readonly(code)) + +const { code, setLanguage, setValue } = useCodeStore() +setValue(SOURCES[props.problem.languages[0] || "C"]) +setLanguage(props.problem.languages[0] || "C") const monacoEditorRef = ref() @@ -45,20 +45,22 @@ watch( } ) +function run() {} + function reset() { - code.value = props.problem.template[code.language] || SOURCES[code.language] + setValue(props.problem.template[code.language] || SOURCES[code.language]) if (monaco && monaco.editor) { monaco.editor.getModels()[0].setValue(code.value) } } async function init() { - code.value = props.problem.template[code.language] || SOURCES[code.language] + setValue(props.problem.template[code.language] || SOURCES[code.language]) monaco = await loader.init() monaco.editor.create(monacoEditorRef.value, { value: code.value, // 编辑器初始显示文字 language: LANGUAGE_VALUE[code.language], - theme: "vs-dark", // 官方自带三种主题vs, hc-black, or vs-dark + theme: "vs", // 官方自带三种主题vs, hc-black, or vs-dark minimap: { enabled: false, }, @@ -69,7 +71,7 @@ async function init() { scrollBeyondLastLine: false, // 取消代码后面一大段空白 }) monaco.editor.getModels()[0].onDidChangeContent(() => { - code.value = monaco.editor.getModels()[0].getValue() + setValue(monaco.editor.getModels()[0].getValue()) }) } @@ -109,6 +111,6 @@ async function init() { } .editorMobile { - height: 500px; + height: calc(100vh - 612px); } diff --git a/src/oj/problem/components/problem-content.vue b/src/oj/problem/components/problem-content.vue index 3d91b0e..f0c0ecb 100644 --- a/src/oj/problem/components/problem-content.vue +++ b/src/oj/problem/components/problem-content.vue @@ -1,10 +1,31 @@