fix(课堂任务): 后台改一节不再把它排到同一分钟布置的另一节前面;学生管理员算进统计的课
- 后台「改」时刻只填到分,原来一保存就把布置时刻截成整分:先画流程图、紧接着再开一节写代码, 只改了做什么,「今天最后一节」就换回了画流程图那节。没改时刻就留着原来的 - 数据统计「一行一节课」只数 Regular User,学生管理员的提交不算,和「做完 / 全班」的花名册对不上 - 学生「老师改了这节课」:画流程图改成写 C、先画再写改成写代码,原来写「语言 改成 C语言」, 看不出不用画了;现在写「做法 改成 写代码 · C语言」 - 学生课堂标题按每道题合起来的要求写:先画流程图、再用这几道题写代码时,不再只写「用 C语言做」 - 先画再写的题,切到别的题再回来不再被拽回画布(原来只记最后一道题) - 课堂任务顶上写代码的课也写「写代码」;讲错误的弹层开着时不再因为 15 秒刷新换了个人 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
b09d479893
commit
c3f1413545
7 files changed
+67
-25
No files matched your search
@@ -1,9 +1,22 @@
|
||||
import { LESSON_MODE_LABEL } from '@oj2/contract'
|
||||
import { LESSON_MODE_LABEL, type LessonMode } from '@oj2/contract'
|
||||
import { defineStore } from 'pinia'
|
||||
import { getClassActivity } from 'shared/api'
|
||||
import { LANGUAGE_SHOW_VALUE } from 'utils/constants'
|
||||
import type { ClassActivity, ClassActivityProblem } from 'utils/types'
|
||||
|
||||
/**
|
||||
* 学生这边这节课做什么:按每道题合起来的要求算(后端 todaySteps 把今天几节里同一道题的要求并在一起),
|
||||
* 不直接用 `mode` —— 那是今天最后布置的那一节的。先布置画流程图、再「用这几道题写代码」,
|
||||
* 最后一节是写代码,但还没画完的照样要画,标题只写「用 C语言做」就漏了画图。
|
||||
* 推断出来的课为 null
|
||||
*/
|
||||
export function activityMode(activity: ClassActivity | null | undefined): LessonMode | null {
|
||||
if (!activity?.mode) return null
|
||||
const draw = activity.problems.some((item) => item.draw !== null)
|
||||
const code = activity.problems.some((item) => item.code !== null)
|
||||
return draw && code ? 'both' : draw ? 'flowchart' : code ? 'code' : activity.mode
|
||||
}
|
||||
|
||||
/** 同一节课里来回换题不用每次都重拉;过了这么久再进题目页就重拉一次 */
|
||||
const STALE_MS = 2 * 60 * 1000
|
||||
|
||||
@@ -89,8 +102,8 @@ export const useLessonStore = defineStore('lesson', () => {
|
||||
* 以前布置的)为空。写代码是默认的,不写出来
|
||||
*/
|
||||
const languageText = computed(() => {
|
||||
const mode = activity.value?.mode
|
||||
const language = activity.value?.language
|
||||
const mode = activityMode(activity.value)
|
||||
const language = mode === 'flowchart' ? null : activity.value?.language
|
||||
return [mode && mode !== 'code' ? LESSON_MODE_LABEL[mode] : '', language ? LANGUAGE_SHOW_VALUE[language] : ''].filter(Boolean).join(' · ')
|
||||
})
|
||||
|
||||
|
||||
Reference in new issue
Block a user