@quesmed/types 2.6.218 → 2.6.219
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/resolvers/mutation/restricted/marksheet.js +22 -3
- package/dist/cjs/utils/evaluateMark.d.ts +5 -1
- package/dist/cjs/utils/evaluateMark.js +22 -22
- package/dist/mjs/resolvers/mutation/restricted/marksheet.js +22 -3
- package/dist/mjs/utils/evaluateMark.d.ts +5 -1
- package/dist/mjs/utils/evaluateMark.js +20 -20
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TOGGLE_STRIKE_OPTIONS = exports.optimisticEndMarksheet = exports.updateCacheOnEndMarksheet = exports.END_MARKSHEET = exports.LEAVE_MARKSHEET = exports.MODIFY_CURRENT_MARKSHEET_MARK = exports.MODIFY_MARKSHEET_MARK_QUESTIONCHOICEID = exports.MODIFY_MARKSHEET_MARK_STRIKED = exports.MODIFY_MARKSHEET_MARK = exports.MODIFY_MARKSHEET_STATE = exports.MODIFY_TOPIC_SELECTION = exports.MODIFY_BUILDER_CONFIG = exports.MODIFY_MARKSHEET = exports.optimisticModifyMarksheetBuilderConfig = exports.START_OR_JOIN_MARKSHEET = exports.optimisticRemoveFlaggedQuestion = exports.updateCacheRemoveFlaggedQuestion = exports.optimisticAddFlaggedQuestion = exports.updateCacheAddFlaggedQuestion = exports.REMOVE_FLAGGED_QUESTION = exports.ADD_FLAGGED_QUESTION = exports.optimisticSaveMarksheets = exports.updateMarksheets = exports.SAVE_MARKSHEET = exports.QUICK_BUILD_MARKSHEET = exports.RE_BUILD_MARKSHEET = exports.BUILD_UCAT_MARKSHEET = exports.BUILD_MARKSHEET = exports.BUILD_QUESTION_MARKSHEET = void 0;
|
|
4
4
|
const client_1 = require("@apollo/client");
|
|
5
|
+
const utils_1 = require("../../../utils");
|
|
5
6
|
const marksheet_1 = require("../../fragments/marksheet");
|
|
6
7
|
const restricted_1 = require("../../query/restricted");
|
|
7
8
|
exports.BUILD_QUESTION_MARKSHEET = (0, client_1.gql) `
|
|
@@ -119,8 +120,26 @@ const updateMarksheets = (cache, result, options) => {
|
|
|
119
120
|
};
|
|
120
121
|
exports.updateMarksheets = updateMarksheets;
|
|
121
122
|
const optimisticSaveMarksheets = (marksheet, marksheetInput, questionIndex) => {
|
|
122
|
-
const { timeTaken, choiceId, mark, marksheetId } = marksheetInput;
|
|
123
|
+
const { timeTaken, choiceId, mark, marksheetId, markId } = marksheetInput;
|
|
123
124
|
const { marks = [], ...rest } = marksheet || {};
|
|
125
|
+
const currentMark = marks.find((m) => Number(m.id) === Number(markId));
|
|
126
|
+
if (!currentMark) {
|
|
127
|
+
return {
|
|
128
|
+
restricted: {
|
|
129
|
+
saveMarksheets: [{ ...rest, marks }],
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const { psaSectionId, choices, typeId } = currentMark.question;
|
|
134
|
+
const { answerField } = (0, utils_1.getQuestionInfo)(typeId, psaSectionId);
|
|
135
|
+
const answer = currentMark.question[answerField];
|
|
136
|
+
const { result, score } = (0, utils_1.evaluateMark)({
|
|
137
|
+
mark: mark || '',
|
|
138
|
+
answer,
|
|
139
|
+
psaSectionId,
|
|
140
|
+
questionTypeId: typeId,
|
|
141
|
+
choices,
|
|
142
|
+
});
|
|
124
143
|
const updatedMark = {
|
|
125
144
|
...marks[questionIndex],
|
|
126
145
|
marksheetId,
|
|
@@ -128,8 +147,8 @@ const optimisticSaveMarksheets = (marksheet, marksheetInput, questionIndex) => {
|
|
|
128
147
|
questionChoiceId: choiceId ?? null,
|
|
129
148
|
isAnswered: true,
|
|
130
149
|
mark: mark || null,
|
|
131
|
-
result
|
|
132
|
-
score
|
|
150
|
+
result,
|
|
151
|
+
score,
|
|
133
152
|
};
|
|
134
153
|
const updatedMarks = [
|
|
135
154
|
...marks.slice(0, questionIndex),
|
|
@@ -4,7 +4,11 @@ export interface IEvaluateMarkData {
|
|
|
4
4
|
result: EMarkResult;
|
|
5
5
|
maxScore: number;
|
|
6
6
|
}
|
|
7
|
-
export
|
|
7
|
+
export type IQuestionInfo = {
|
|
8
|
+
maxScore: number;
|
|
9
|
+
answerField: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function getQuestionInfo(questionType: EQuestionType, psaSectionId: number | null): IQuestionInfo;
|
|
8
12
|
export declare function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, }: {
|
|
9
13
|
mark: IMarksheetMarkJSONB;
|
|
10
14
|
answer: IQuestionAnswer;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.evaluateMark = exports.
|
|
3
|
+
exports.evaluateMark = exports.getQuestionInfo = void 0;
|
|
4
4
|
const models_1 = require("../models");
|
|
5
5
|
function isPrescribeAnswer(data) {
|
|
6
6
|
return Object(data).hasOwnProperty('dose');
|
|
@@ -44,51 +44,51 @@ function deepParse(data) {
|
|
|
44
44
|
}
|
|
45
45
|
return parsed;
|
|
46
46
|
}
|
|
47
|
-
function
|
|
47
|
+
function getQuestionInfo(questionType, psaSectionId) {
|
|
48
48
|
switch (questionType) {
|
|
49
49
|
case models_1.EQuestionType.SINGLE_BEST_ANSWER:
|
|
50
50
|
if (psaSectionId) {
|
|
51
|
-
return 2;
|
|
51
|
+
return { maxScore: 2, answerField: 'sbaAnswer' };
|
|
52
52
|
}
|
|
53
|
-
return 1;
|
|
53
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
54
54
|
case models_1.EQuestionType.QUESTION_ANSWER:
|
|
55
55
|
if (psaSectionId) {
|
|
56
|
-
return 2;
|
|
56
|
+
return { maxScore: 2, answerField: 'qaAnswer' };
|
|
57
57
|
}
|
|
58
|
-
return 1;
|
|
58
|
+
return { maxScore: 1, answerField: 'qaAnswer' };
|
|
59
59
|
case models_1.EQuestionType.MULTIPLE_ANSWERS:
|
|
60
|
-
return 4;
|
|
60
|
+
return { maxScore: 4, answerField: 'multiAnswer' };
|
|
61
61
|
case models_1.EQuestionType.PRESCRIPTION_ANSWER:
|
|
62
|
-
return 10;
|
|
62
|
+
return { maxScore: 10, answerField: 'prescribeAnswer' };
|
|
63
63
|
case models_1.EQuestionType.EXTENDED_MATCHING_ANSWER:
|
|
64
|
-
return 1;
|
|
64
|
+
return { maxScore: 1, answerField: 'emqAnswer' };
|
|
65
65
|
case models_1.EQuestionType.SELECT_THREE_ANSWER:
|
|
66
|
-
return 1;
|
|
66
|
+
return { maxScore: 1, answerField: 'select3Answer' };
|
|
67
67
|
case models_1.EQuestionType.RANKING_ANSWER:
|
|
68
|
-
return 1;
|
|
68
|
+
return { maxScore: 1, answerField: 'rankingAnswer' };
|
|
69
69
|
case models_1.EQuestionType.SBA_WITH_MULTIPLE_CHOICES:
|
|
70
|
-
return 1;
|
|
70
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
71
71
|
case models_1.EQuestionType.VERBAL_VERACITY:
|
|
72
|
-
return 1;
|
|
72
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
73
73
|
case models_1.EQuestionType.VERBAL_READING_COMPREHENSION:
|
|
74
|
-
return 1;
|
|
74
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
75
75
|
case models_1.EQuestionType.QUANTITATIVE_REASONING_SBA:
|
|
76
|
-
return 1;
|
|
76
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
77
77
|
case models_1.EQuestionType.DECISION_MAKING_SBA:
|
|
78
|
-
return 1;
|
|
78
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
79
79
|
case models_1.EQuestionType.DECISION_MAKING_YES_NO:
|
|
80
|
-
return 2;
|
|
80
|
+
return { maxScore: 2, answerField: 'multiAnswer' };
|
|
81
81
|
case models_1.EQuestionType.SJT_SINGLE_CHOICE:
|
|
82
|
-
return 1;
|
|
82
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
83
83
|
case models_1.EQuestionType.SJT_TWO_ANSWERS:
|
|
84
|
-
return 1;
|
|
84
|
+
return { maxScore: 1, answerField: 'rankingAnswer' };
|
|
85
85
|
default:
|
|
86
|
-
return 1;
|
|
86
|
+
return { maxScore: 1, answerField: 'answer' };
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
exports.
|
|
89
|
+
exports.getQuestionInfo = getQuestionInfo;
|
|
90
90
|
function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, }) {
|
|
91
|
-
const maxScore =
|
|
91
|
+
const { maxScore } = getQuestionInfo(questionTypeId, psaSectionId);
|
|
92
92
|
const data = {
|
|
93
93
|
score: 0,
|
|
94
94
|
result: models_1.EMarkResult.Incorrect,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { gql } from '@apollo/client';
|
|
2
|
+
import { evaluateMark, getQuestionInfo } from '../../../utils';
|
|
2
3
|
import { BUILDER_CONFIG_FIELDS, MARKSHEET_FIELDS, MARKSHEET_STATS_FIELDS, MARK_FLAGGED_FIELD, MODIFY_MARKSHEET_COMPLETED_FRAGMENT, NEW_MARK_FIELDS, } from '../../fragments/marksheet';
|
|
3
4
|
import { MARKSHEET, } from '../../query/restricted';
|
|
4
5
|
export const BUILD_QUESTION_MARKSHEET = gql `
|
|
@@ -115,8 +116,26 @@ export const updateMarksheets = (cache, result, options) => {
|
|
|
115
116
|
}
|
|
116
117
|
};
|
|
117
118
|
export const optimisticSaveMarksheets = (marksheet, marksheetInput, questionIndex) => {
|
|
118
|
-
const { timeTaken, choiceId, mark, marksheetId } = marksheetInput;
|
|
119
|
+
const { timeTaken, choiceId, mark, marksheetId, markId } = marksheetInput;
|
|
119
120
|
const { marks = [], ...rest } = marksheet || {};
|
|
121
|
+
const currentMark = marks.find((m) => Number(m.id) === Number(markId));
|
|
122
|
+
if (!currentMark) {
|
|
123
|
+
return {
|
|
124
|
+
restricted: {
|
|
125
|
+
saveMarksheets: [{ ...rest, marks }],
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
const { psaSectionId, choices, typeId } = currentMark.question;
|
|
130
|
+
const { answerField } = getQuestionInfo(typeId, psaSectionId);
|
|
131
|
+
const answer = currentMark.question[answerField];
|
|
132
|
+
const { result, score } = evaluateMark({
|
|
133
|
+
mark: mark || '',
|
|
134
|
+
answer,
|
|
135
|
+
psaSectionId,
|
|
136
|
+
questionTypeId: typeId,
|
|
137
|
+
choices,
|
|
138
|
+
});
|
|
120
139
|
const updatedMark = {
|
|
121
140
|
...marks[questionIndex],
|
|
122
141
|
marksheetId,
|
|
@@ -124,8 +143,8 @@ export const optimisticSaveMarksheets = (marksheet, marksheetInput, questionInde
|
|
|
124
143
|
questionChoiceId: choiceId ?? null,
|
|
125
144
|
isAnswered: true,
|
|
126
145
|
mark: mark || null,
|
|
127
|
-
result
|
|
128
|
-
score
|
|
146
|
+
result,
|
|
147
|
+
score,
|
|
129
148
|
};
|
|
130
149
|
const updatedMarks = [
|
|
131
150
|
...marks.slice(0, questionIndex),
|
|
@@ -4,7 +4,11 @@ export interface IEvaluateMarkData {
|
|
|
4
4
|
result: EMarkResult;
|
|
5
5
|
maxScore: number;
|
|
6
6
|
}
|
|
7
|
-
export
|
|
7
|
+
export type IQuestionInfo = {
|
|
8
|
+
maxScore: number;
|
|
9
|
+
answerField: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function getQuestionInfo(questionType: EQuestionType, psaSectionId: number | null): IQuestionInfo;
|
|
8
12
|
export declare function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, }: {
|
|
9
13
|
mark: IMarksheetMarkJSONB;
|
|
10
14
|
answer: IQuestionAnswer;
|
|
@@ -41,50 +41,50 @@ function deepParse(data) {
|
|
|
41
41
|
}
|
|
42
42
|
return parsed;
|
|
43
43
|
}
|
|
44
|
-
export function
|
|
44
|
+
export function getQuestionInfo(questionType, psaSectionId) {
|
|
45
45
|
switch (questionType) {
|
|
46
46
|
case EQuestionType.SINGLE_BEST_ANSWER:
|
|
47
47
|
if (psaSectionId) {
|
|
48
|
-
return 2;
|
|
48
|
+
return { maxScore: 2, answerField: 'sbaAnswer' };
|
|
49
49
|
}
|
|
50
|
-
return 1;
|
|
50
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
51
51
|
case EQuestionType.QUESTION_ANSWER:
|
|
52
52
|
if (psaSectionId) {
|
|
53
|
-
return 2;
|
|
53
|
+
return { maxScore: 2, answerField: 'qaAnswer' };
|
|
54
54
|
}
|
|
55
|
-
return 1;
|
|
55
|
+
return { maxScore: 1, answerField: 'qaAnswer' };
|
|
56
56
|
case EQuestionType.MULTIPLE_ANSWERS:
|
|
57
|
-
return 4;
|
|
57
|
+
return { maxScore: 4, answerField: 'multiAnswer' };
|
|
58
58
|
case EQuestionType.PRESCRIPTION_ANSWER:
|
|
59
|
-
return 10;
|
|
59
|
+
return { maxScore: 10, answerField: 'prescribeAnswer' };
|
|
60
60
|
case EQuestionType.EXTENDED_MATCHING_ANSWER:
|
|
61
|
-
return 1;
|
|
61
|
+
return { maxScore: 1, answerField: 'emqAnswer' };
|
|
62
62
|
case EQuestionType.SELECT_THREE_ANSWER:
|
|
63
|
-
return 1;
|
|
63
|
+
return { maxScore: 1, answerField: 'select3Answer' };
|
|
64
64
|
case EQuestionType.RANKING_ANSWER:
|
|
65
|
-
return 1;
|
|
65
|
+
return { maxScore: 1, answerField: 'rankingAnswer' };
|
|
66
66
|
case EQuestionType.SBA_WITH_MULTIPLE_CHOICES:
|
|
67
|
-
return 1;
|
|
67
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
68
68
|
case EQuestionType.VERBAL_VERACITY:
|
|
69
|
-
return 1;
|
|
69
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
70
70
|
case EQuestionType.VERBAL_READING_COMPREHENSION:
|
|
71
|
-
return 1;
|
|
71
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
72
72
|
case EQuestionType.QUANTITATIVE_REASONING_SBA:
|
|
73
|
-
return 1;
|
|
73
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
74
74
|
case EQuestionType.DECISION_MAKING_SBA:
|
|
75
|
-
return 1;
|
|
75
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
76
76
|
case EQuestionType.DECISION_MAKING_YES_NO:
|
|
77
|
-
return 2;
|
|
77
|
+
return { maxScore: 2, answerField: 'multiAnswer' };
|
|
78
78
|
case EQuestionType.SJT_SINGLE_CHOICE:
|
|
79
|
-
return 1;
|
|
79
|
+
return { maxScore: 1, answerField: 'sbaAnswer' };
|
|
80
80
|
case EQuestionType.SJT_TWO_ANSWERS:
|
|
81
|
-
return 1;
|
|
81
|
+
return { maxScore: 1, answerField: 'rankingAnswer' };
|
|
82
82
|
default:
|
|
83
|
-
return 1;
|
|
83
|
+
return { maxScore: 1, answerField: 'answer' };
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
export function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, }) {
|
|
87
|
-
const maxScore =
|
|
87
|
+
const { maxScore } = getQuestionInfo(questionTypeId, psaSectionId);
|
|
88
88
|
const data = {
|
|
89
89
|
score: 0,
|
|
90
90
|
result: EMarkResult.Incorrect,
|