@quesmed/types 2.6.215 → 2.6.217

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.
Files changed (35) hide show
  1. package/dist/cjs/models/Marksheet.d.ts +13 -4
  2. package/dist/cjs/models/MockTest.d.ts +2 -0
  3. package/dist/cjs/resolvers/fragments/marksheet.d.ts +7 -0
  4. package/dist/cjs/resolvers/fragments/marksheet.js +29 -1
  5. package/dist/cjs/resolvers/fragments/mockTest.d.ts +9 -0
  6. package/dist/cjs/resolvers/fragments/mockTest.js +32 -0
  7. package/dist/cjs/resolvers/mutation/restricted/marksheet.d.ts +4 -2
  8. package/dist/cjs/resolvers/mutation/restricted/marksheet.js +6 -2
  9. package/dist/cjs/resolvers/mutation/restricted/mockTest.d.ts +2 -1
  10. package/dist/cjs/resolvers/mutation/restricted/mockTest.js +14 -1
  11. package/dist/cjs/resolvers/mutation/restricted/osce.d.ts +1 -1
  12. package/dist/cjs/resolvers/query/restricted/marksheet.d.ts +24 -17
  13. package/dist/cjs/resolvers/query/restricted/marksheet.js +61 -41
  14. package/dist/cjs/resolvers/query/restricted/qBank.d.ts +1 -10
  15. package/dist/cjs/resolvers/query/restricted/qBank.js +1 -0
  16. package/dist/cjs/utils/evaluateMark.d.ts +2 -0
  17. package/dist/cjs/utils/evaluateMark.js +58 -14
  18. package/dist/mjs/models/Marksheet.d.ts +13 -4
  19. package/dist/mjs/models/MockTest.d.ts +2 -0
  20. package/dist/mjs/resolvers/fragments/marksheet.d.ts +7 -0
  21. package/dist/mjs/resolvers/fragments/marksheet.js +28 -0
  22. package/dist/mjs/resolvers/fragments/mockTest.d.ts +9 -0
  23. package/dist/mjs/resolvers/fragments/mockTest.js +32 -0
  24. package/dist/mjs/resolvers/mutation/restricted/marksheet.d.ts +4 -2
  25. package/dist/mjs/resolvers/mutation/restricted/marksheet.js +7 -3
  26. package/dist/mjs/resolvers/mutation/restricted/mockTest.d.ts +2 -1
  27. package/dist/mjs/resolvers/mutation/restricted/mockTest.js +15 -2
  28. package/dist/mjs/resolvers/mutation/restricted/osce.d.ts +1 -1
  29. package/dist/mjs/resolvers/query/restricted/marksheet.d.ts +24 -17
  30. package/dist/mjs/resolvers/query/restricted/marksheet.js +61 -41
  31. package/dist/mjs/resolvers/query/restricted/qBank.d.ts +1 -10
  32. package/dist/mjs/resolvers/query/restricted/qBank.js +1 -0
  33. package/dist/mjs/utils/evaluateMark.d.ts +2 -0
  34. package/dist/mjs/utils/evaluateMark.js +56 -13
  35. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { gql } from '@apollo/client';
2
- import { MARKSHEET_FIELDS } from '../../fragments/marksheet';
2
+ import { MARKSHEET_FIELDS, MARKSHEET_STATS_FIELDS, } from '../../fragments/marksheet';
3
3
  export const MARKSHEET = gql `
4
4
  ${MARKSHEET_FIELDS}
5
5
  query Marksheet($id: Int!) {
@@ -10,47 +10,8 @@ export const MARKSHEET = gql `
10
10
  }
11
11
  }
12
12
  `;
13
- export const MARKSHEETS = gql `
14
- query Marksheets($options: MarksheetOptions!) {
15
- restricted {
16
- marksheets(options: $options) {
17
- results {
18
- id
19
- source
20
- endedAt
21
- topicNames
22
- entitlement {
23
- id
24
- name
25
- }
26
- correct
27
- incorrect
28
- totalQuestions
29
- isTestMarksheet
30
- solo
31
- completed
32
- passingMark
33
- duration
34
- updatedAt
35
- users {
36
- id
37
- displayName
38
- }
39
- marks {
40
- question {
41
- topic {
42
- typeId
43
- name
44
- }
45
- }
46
- }
47
- }
48
- total
49
- }
50
- }
51
- }
52
- `;
53
13
  export const MARKSHEETS_WINDOW = gql `
14
+ ${MARKSHEET_STATS_FIELDS}
54
15
  query MarksheetsWindow($filter: MarksheetWindowFilterInput!) {
55
16
  restricted {
56
17
  marksheetsWindow(filter: $filter) {
@@ -73,6 +34,9 @@ export const MARKSHEETS_WINDOW = gql `
73
34
  solo
74
35
  completed
75
36
  updatedAt
37
+ stats {
38
+ ...MarksheetStatsFields
39
+ }
76
40
  }
77
41
  }
78
42
  total
@@ -81,6 +45,62 @@ export const MARKSHEETS_WINDOW = gql `
81
45
  }
82
46
  }
83
47
  `;
48
+ export const MARKSHEETS = gql `
49
+ ${MARKSHEET_STATS_FIELDS}
50
+ query Marksheets($options: MarksheetOptions!) {
51
+ restricted {
52
+ marksheets(options: $options) {
53
+ results {
54
+ id
55
+ source
56
+ endedAt
57
+ topicNames
58
+ typeId
59
+ entitlement {
60
+ id
61
+ name
62
+ }
63
+ stats {
64
+ ...MarksheetStatsFields
65
+ }
66
+ isTestMarksheet
67
+ solo
68
+ completed
69
+ updatedAt
70
+ }
71
+ total
72
+ }
73
+ }
74
+ }
75
+ `;
76
+ export const MARKSHEETS_TRACKER = gql `
77
+ ${MARKSHEET_STATS_FIELDS}
78
+ query MarksheetsTracker($options: MarksheetTrackerOptions!) {
79
+ restricted {
80
+ marksheetsTracker(options: $options) {
81
+ date
82
+ result {
83
+ id
84
+ source
85
+ endedAt
86
+ topicNames
87
+ typeId
88
+ entitlement {
89
+ id
90
+ name
91
+ }
92
+ stats {
93
+ ...MarksheetStatsFields
94
+ }
95
+ isTestMarksheet
96
+ solo
97
+ completed
98
+ updatedAt
99
+ }
100
+ }
101
+ }
102
+ }
103
+ `;
84
104
  export const LATEST_PAST_MARKSHEET_ID = gql `
85
105
  query LatestPastMarksheetId {
86
106
  restricted {
@@ -1,20 +1,11 @@
1
- import { IDailyProgressData, ITodo, ITopic, IUser } from '../../../models';
2
- import { PaginatedMarksheets } from './marksheet';
3
- import { IUniversitiesRankSpeciality } from './university';
1
+ import { IUser } from '../../../models';
4
2
  export interface IDashboardQBank {
5
3
  restricted: {
6
4
  latestSessionId: string;
7
5
  latestPastMarksheetId: number;
8
6
  user: IUser;
9
- marksheets: PaginatedMarksheets;
10
- dailyFeed: ITodo;
11
- dailyProgress: IDailyProgressData[];
12
- topics: ITopic[];
13
7
  totalQuestions: number;
14
8
  totalCards: number;
15
- universityLeaderboard: {
16
- month: IUniversitiesRankSpeciality[];
17
- };
18
9
  };
19
10
  }
20
11
  export declare const DASHBOARD_QBANK: import("@apollo/client").DocumentNode;
@@ -3,6 +3,7 @@ export const DASHBOARD_QBANK = gql `
3
3
  query Dashboard_Qbank {
4
4
  restricted {
5
5
  latestPastMarksheetId
6
+ latestSessionId
6
7
  user {
7
8
  id
8
9
  settings {
@@ -2,7 +2,9 @@ import { EMarkResult, EPsaSectionType, EQuestionType, IMarksheetMarkJSONB, IQues
2
2
  export interface IEvaluateMarkData {
3
3
  score: number;
4
4
  result: EMarkResult;
5
+ maxScore: number;
5
6
  }
7
+ export declare function getQuestionMaxScore(questionType: EQuestionType, psaSectionId: number | null): number;
6
8
  export declare function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, }: {
7
9
  mark: IMarksheetMarkJSONB;
8
10
  answer: IQuestionAnswer;
@@ -41,10 +41,54 @@ function deepParse(data) {
41
41
  }
42
42
  return parsed;
43
43
  }
44
+ export function getQuestionMaxScore(questionType, psaSectionId) {
45
+ switch (questionType) {
46
+ case EQuestionType.SINGLE_BEST_ANSWER:
47
+ if (psaSectionId) {
48
+ return 2;
49
+ }
50
+ return 1;
51
+ case EQuestionType.QUESTION_ANSWER:
52
+ if (psaSectionId) {
53
+ return 2;
54
+ }
55
+ return 1;
56
+ case EQuestionType.MULTIPLE_ANSWERS:
57
+ return 4;
58
+ case EQuestionType.PRESCRIPTION_ANSWER:
59
+ return 10;
60
+ case EQuestionType.EXTENDED_MATCHING_ANSWER:
61
+ return 1;
62
+ case EQuestionType.SELECT_THREE_ANSWER:
63
+ return 1;
64
+ case EQuestionType.RANKING_ANSWER:
65
+ return 1;
66
+ case EQuestionType.SBA_WITH_MULTIPLE_CHOICES:
67
+ return 1;
68
+ case EQuestionType.VERBAL_VERACITY:
69
+ return 1;
70
+ case EQuestionType.VERBAL_READING_COMPREHENSION:
71
+ return 1;
72
+ case EQuestionType.QUANTITATIVE_REASONING_SBA:
73
+ return 1;
74
+ case EQuestionType.DECISION_MAKING_SBA:
75
+ return 1;
76
+ case EQuestionType.DECISION_MAKING_YES_NO:
77
+ return 2;
78
+ case EQuestionType.SJT_SINGLE_CHOICE:
79
+ return 1;
80
+ case EQuestionType.SJT_TWO_ANSWERS:
81
+ return 1;
82
+ default:
83
+ return 1;
84
+ }
85
+ }
44
86
  export function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, }) {
87
+ const maxScore = getQuestionMaxScore(questionTypeId, psaSectionId);
45
88
  const data = {
46
89
  score: 0,
47
90
  result: EMarkResult.Incorrect,
91
+ maxScore,
48
92
  };
49
93
  if (!mark || !answer) {
50
94
  return data;
@@ -61,7 +105,7 @@ export function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choic
61
105
  case EQuestionType.DECISION_MAKING_SBA:
62
106
  case EQuestionType.QUANTITATIVE_REASONING_SBA: {
63
107
  if (flatAnswer === flatAttempt) {
64
- data.score = psaSectionId ? 2 : 1;
108
+ data.score = maxScore;
65
109
  data.result = EMarkResult.Correct;
66
110
  }
67
111
  else {
@@ -83,8 +127,7 @@ export function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choic
83
127
  !Number.isNaN(attemptNum) &&
84
128
  answerNum === attemptNum;
85
129
  if (isNumericMatch || normalizedAnswer === normalizedAttempt) {
86
- // for psa section, we give 2 marks for correct answer
87
- data.score = psaSectionId ? 2 : 1;
130
+ data.score = maxScore;
88
131
  data.result = EMarkResult.Correct;
89
132
  }
90
133
  else {
@@ -107,11 +150,11 @@ export function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choic
107
150
  const isBMatch = answerB.length === attemptB.length &&
108
151
  attemptB.every((x, i) => x === answerB[i]);
109
152
  if (isAMatch && isBMatch) {
110
- data.score = 4;
153
+ data.score = maxScore;
111
154
  data.result = EMarkResult.Correct;
112
155
  }
113
156
  else if (isAMatch || isBMatch) {
114
- data.score = 2;
157
+ data.score = maxScore / 2;
115
158
  data.result = EMarkResult.Partial;
116
159
  }
117
160
  else {
@@ -138,12 +181,12 @@ export function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choic
138
181
  const totalStatements = answerA.length + answerB.length;
139
182
  if (correctCount === totalStatements) {
140
183
  // 5 / 5
141
- data.score = 2;
184
+ data.score = maxScore;
142
185
  data.result = EMarkResult.Correct;
143
186
  }
144
187
  else if (correctCount === totalStatements - 1) {
145
188
  // 4 / 5
146
- data.score = 1;
189
+ data.score = maxScore / 2;
147
190
  data.result = EMarkResult.Partial;
148
191
  }
149
192
  else {
@@ -211,7 +254,7 @@ export function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choic
211
254
  }
212
255
  }
213
256
  if (isCorrect) {
214
- data.score = 1;
257
+ data.score = maxScore;
215
258
  data.result = EMarkResult.Correct;
216
259
  }
217
260
  else {
@@ -238,7 +281,7 @@ export function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choic
238
281
  }
239
282
  }
240
283
  if (isCorrect) {
241
- data.score = 1;
284
+ data.score = maxScore;
242
285
  data.result = EMarkResult.Correct;
243
286
  }
244
287
  else {
@@ -266,7 +309,7 @@ export function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choic
266
309
  }
267
310
  }
268
311
  if (isCorrect) {
269
- data.score = 1;
312
+ data.score = maxScore;
270
313
  data.result = EMarkResult.Correct;
271
314
  }
272
315
  else {
@@ -282,7 +325,7 @@ export function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choic
282
325
  if (twoAnswer.length === 2 &&
283
326
  attempt.length === 2 &&
284
327
  twoAnswer.join(',') === attempt.join(',')) {
285
- data.score = 1;
328
+ data.score = maxScore;
286
329
  data.result = EMarkResult.Correct;
287
330
  }
288
331
  else {
@@ -309,11 +352,11 @@ export function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choic
309
352
  else {
310
353
  const distance = Math.abs(answerIndex - attemptIndex);
311
354
  if (distance === 0) {
312
- data.score = 1;
355
+ data.score = maxScore;
313
356
  data.result = EMarkResult.Correct;
314
357
  }
315
358
  else if (distance === 1) {
316
- data.score = 0.5;
359
+ data.score = maxScore / 2;
317
360
  data.result = EMarkResult.Partial;
318
361
  }
319
362
  else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quesmed/types",
3
- "version": "2.6.215",
3
+ "version": "2.6.217",
4
4
  "description": "Typescript types for Quesmed",
5
5
  "keywords": [
6
6
  "quesmed",