12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import { getFillBackClozeCount } from "./paperCard";
- const COMMON_QUESTION_TYPES = [
- "SINGLE_ANSWER_QUESTION",
- "MULTIPLE_ANSWER_QUESTION",
- "BOOL_ANSWER_QUESTION",
- "FILL_BLANK_QUESTION",
- "TEXT_ANSWER_QUESTION",
- ];
- // paper json
- export function getPaperJsonSimpleStructInfo(paperJson) {
- let struct = [];
- paperJson.paperDetails.forEach((detail) => {
- struct.push(`detail:${detail.number}-${detail.name}`);
- detail.paperDetailUnits.forEach((question) => {
- if (COMMON_QUESTION_TYPES.includes(question.questionType)) {
- question.question.number = question.number;
- const info = parseCommonTypeQuestion(question.question);
- struct.push(`${detail.number}-${info}`);
- } else {
- let infos = parseNestedTypeQuestion(question);
- infos.forEach((info) => {
- struct.push(`${detail.number}-${info}`);
- });
- }
- });
- });
- return struct.join("#");
- }
- function parseCommonTypeQuestion(question) {
- const structType = question.questionType;
- let info = `${question.number}:${structType}`;
- const choiceQs = ["SINGLE_ANSWER_QUESTION", "MULTIPLE_ANSWER_QUESTION"];
- if (choiceQs.includes(structType)) {
- info += `:${question.quesOptions.length}`;
- } else if (structType === "FILL_BLANK_QUESTION") {
- info += `:${getFillBackClozeCount(question.quesOptions)}`;
- } else {
- info += ":";
- }
- return info;
- }
- function parseNestedTypeQuestion(question) {
- let struct = [];
- let qinfo = `${question.number}`;
- question.question.subQuestions.forEach((subq, sindex) => {
- subq.number = sindex + 1;
- const info = parseCommonTypeQuestion(subq);
- struct.push(`${qinfo}-${info}`);
- });
- return struct;
- }
- // paper struct
- export function getPaperStructSimpleStructInfo(paperStruct) {
- let struct = [];
- paperStruct.details.forEach((detail) => {
- struct.push(`detail:${detail.number}-${detail.name}`);
- detail.units.forEach((question) => {
- if (COMMON_QUESTION_TYPES.includes(question.type)) {
- const info = parseStructCommonTypeQuestion(question);
- struct.push(`${detail.number}-${info}`);
- }
- });
- });
- return struct.join("#");
- }
- function parseStructCommonTypeQuestion(question) {
- const structType = question.type;
- let info = `${question.number}:${structType}`;
- const choiceQs = ["SINGLE_ANSWER_QUESTION", "MULTIPLE_ANSWER_QUESTION"];
- if (choiceQs.includes(structType)) {
- info += `:4`;
- } else if (structType === "FILL_BLANK_QUESTION") {
- info += `:1`;
- } else {
- info += ":";
- }
- return info;
- }
|