Added Speaking to level, fixed a bug where it was causing level to crash if the listening was already created and the section was switched, added true false exercises to listening
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
import { Action } from "@/stores/examEditor/reducers";
|
||||
import { ExamPart, Generating } from "@/stores/examEditor/types";
|
||||
import { createSpeakingExercise } from "./speaking";
|
||||
import { writingTask } from "@/stores/examEditor/sections";
|
||||
import { WritingExercise } from "@/interfaces/exam";
|
||||
|
||||
const getResults = (results: any[], type: 'writing' | 'speaking') => {
|
||||
return results.map((res) => {
|
||||
if (type === 'writing') {
|
||||
return {
|
||||
...writingTask(res.generating === "writing_letter" ? 1 : 2),
|
||||
prompt: res.result[0].prompt,
|
||||
variant: res.generating === "writing_letter" ? "letter" : "essay"
|
||||
} as WritingExercise;
|
||||
}
|
||||
return createSpeakingExercise(res);
|
||||
});
|
||||
};
|
||||
|
||||
const updates = (
|
||||
results: any[],
|
||||
sectionState: ExamPart,
|
||||
sectionId: number,
|
||||
currentModule: string,
|
||||
levelGenerating: any[],
|
||||
levelGenResults: any[],
|
||||
type: 'writing' | 'speaking'
|
||||
): Action[] => {
|
||||
return [
|
||||
{
|
||||
type: "UPDATE_SECTION_STATE",
|
||||
payload: {
|
||||
sectionId,
|
||||
module: "level",
|
||||
update: {
|
||||
exercises: [
|
||||
...(sectionState as ExamPart).exercises,
|
||||
...getResults(results, type)
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
type: "UPDATE_SECTION_SINGLE_FIELD",
|
||||
payload: {
|
||||
sectionId,
|
||||
module: currentModule,
|
||||
field: "levelGenerating",
|
||||
value: levelGenerating?.filter(g =>
|
||||
!results.flatMap(res => res.generating as Generating).includes(g)
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
type: "UPDATE_SECTION_SINGLE_FIELD",
|
||||
payload: {
|
||||
sectionId,
|
||||
module: currentModule,
|
||||
field: "levelGenResults",
|
||||
value: levelGenResults.filter(res =>
|
||||
!results.flatMap(res => res.generating as Generating).includes(res.generating)
|
||||
)
|
||||
}
|
||||
}
|
||||
] as Action[];
|
||||
};
|
||||
Reference in New Issue
Block a user