@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,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.evaluateMark = void 0;
3
+ exports.evaluateMark = exports.getQuestionMaxScore = void 0;
4
4
  const models_1 = require("../models");
5
5
  function isPrescribeAnswer(data) {
6
6
  return Object(data).hasOwnProperty('dose');
@@ -44,10 +44,55 @@ function deepParse(data) {
44
44
  }
45
45
  return parsed;
46
46
  }
47
+ function getQuestionMaxScore(questionType, psaSectionId) {
48
+ switch (questionType) {
49
+ case models_1.EQuestionType.SINGLE_BEST_ANSWER:
50
+ if (psaSectionId) {
51
+ return 2;
52
+ }
53
+ return 1;
54
+ case models_1.EQuestionType.QUESTION_ANSWER:
55
+ if (psaSectionId) {
56
+ return 2;
57
+ }
58
+ return 1;
59
+ case models_1.EQuestionType.MULTIPLE_ANSWERS:
60
+ return 4;
61
+ case models_1.EQuestionType.PRESCRIPTION_ANSWER:
62
+ return 10;
63
+ case models_1.EQuestionType.EXTENDED_MATCHING_ANSWER:
64
+ return 1;
65
+ case models_1.EQuestionType.SELECT_THREE_ANSWER:
66
+ return 1;
67
+ case models_1.EQuestionType.RANKING_ANSWER:
68
+ return 1;
69
+ case models_1.EQuestionType.SBA_WITH_MULTIPLE_CHOICES:
70
+ return 1;
71
+ case models_1.EQuestionType.VERBAL_VERACITY:
72
+ return 1;
73
+ case models_1.EQuestionType.VERBAL_READING_COMPREHENSION:
74
+ return 1;
75
+ case models_1.EQuestionType.QUANTITATIVE_REASONING_SBA:
76
+ return 1;
77
+ case models_1.EQuestionType.DECISION_MAKING_SBA:
78
+ return 1;
79
+ case models_1.EQuestionType.DECISION_MAKING_YES_NO:
80
+ return 2;
81
+ case models_1.EQuestionType.SJT_SINGLE_CHOICE:
82
+ return 1;
83
+ case models_1.EQuestionType.SJT_TWO_ANSWERS:
84
+ return 1;
85
+ default:
86
+ return 1;
87
+ }
88
+ }
89
+ exports.getQuestionMaxScore = getQuestionMaxScore;
47
90
  function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, }) {
91
+ const maxScore = getQuestionMaxScore(questionTypeId, psaSectionId);
48
92
  const data = {
49
93
  score: 0,
50
94
  result: models_1.EMarkResult.Incorrect,
95
+ maxScore,
51
96
  };
52
97
  if (!mark || !answer) {
53
98
  return data;
@@ -64,7 +109,7 @@ function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, })
64
109
  case models_1.EQuestionType.DECISION_MAKING_SBA:
65
110
  case models_1.EQuestionType.QUANTITATIVE_REASONING_SBA: {
66
111
  if (flatAnswer === flatAttempt) {
67
- data.score = psaSectionId ? 2 : 1;
112
+ data.score = maxScore;
68
113
  data.result = models_1.EMarkResult.Correct;
69
114
  }
70
115
  else {
@@ -86,8 +131,7 @@ function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, })
86
131
  !Number.isNaN(attemptNum) &&
87
132
  answerNum === attemptNum;
88
133
  if (isNumericMatch || normalizedAnswer === normalizedAttempt) {
89
- // for psa section, we give 2 marks for correct answer
90
- data.score = psaSectionId ? 2 : 1;
134
+ data.score = maxScore;
91
135
  data.result = models_1.EMarkResult.Correct;
92
136
  }
93
137
  else {
@@ -110,11 +154,11 @@ function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, })
110
154
  const isBMatch = answerB.length === attemptB.length &&
111
155
  attemptB.every((x, i) => x === answerB[i]);
112
156
  if (isAMatch && isBMatch) {
113
- data.score = 4;
157
+ data.score = maxScore;
114
158
  data.result = models_1.EMarkResult.Correct;
115
159
  }
116
160
  else if (isAMatch || isBMatch) {
117
- data.score = 2;
161
+ data.score = maxScore / 2;
118
162
  data.result = models_1.EMarkResult.Partial;
119
163
  }
120
164
  else {
@@ -141,12 +185,12 @@ function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, })
141
185
  const totalStatements = answerA.length + answerB.length;
142
186
  if (correctCount === totalStatements) {
143
187
  // 5 / 5
144
- data.score = 2;
188
+ data.score = maxScore;
145
189
  data.result = models_1.EMarkResult.Correct;
146
190
  }
147
191
  else if (correctCount === totalStatements - 1) {
148
192
  // 4 / 5
149
- data.score = 1;
193
+ data.score = maxScore / 2;
150
194
  data.result = models_1.EMarkResult.Partial;
151
195
  }
152
196
  else {
@@ -214,7 +258,7 @@ function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, })
214
258
  }
215
259
  }
216
260
  if (isCorrect) {
217
- data.score = 1;
261
+ data.score = maxScore;
218
262
  data.result = models_1.EMarkResult.Correct;
219
263
  }
220
264
  else {
@@ -241,7 +285,7 @@ function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, })
241
285
  }
242
286
  }
243
287
  if (isCorrect) {
244
- data.score = 1;
288
+ data.score = maxScore;
245
289
  data.result = models_1.EMarkResult.Correct;
246
290
  }
247
291
  else {
@@ -269,7 +313,7 @@ function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, })
269
313
  }
270
314
  }
271
315
  if (isCorrect) {
272
- data.score = 1;
316
+ data.score = maxScore;
273
317
  data.result = models_1.EMarkResult.Correct;
274
318
  }
275
319
  else {
@@ -285,7 +329,7 @@ function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, })
285
329
  if (twoAnswer.length === 2 &&
286
330
  attempt.length === 2 &&
287
331
  twoAnswer.join(',') === attempt.join(',')) {
288
- data.score = 1;
332
+ data.score = maxScore;
289
333
  data.result = models_1.EMarkResult.Correct;
290
334
  }
291
335
  else {
@@ -312,11 +356,11 @@ function evaluateMark({ mark, answer, questionTypeId, psaSectionId, choices, })
312
356
  else {
313
357
  const distance = Math.abs(answerIndex - attemptIndex);
314
358
  if (distance === 0) {
315
- data.score = 1;
359
+ data.score = maxScore;
316
360
  data.result = models_1.EMarkResult.Correct;
317
361
  }
318
362
  else if (distance === 1) {
319
- data.score = 0.5;
363
+ data.score = maxScore / 2;
320
364
  data.result = models_1.EMarkResult.Partial;
321
365
  }
322
366
  else {
@@ -56,6 +56,18 @@ export interface IMarksheetMember {
56
56
  userId: Id;
57
57
  user?: IUser | null;
58
58
  }
59
+ export interface IMarksheetStats {
60
+ correct: number;
61
+ incorrect: number;
62
+ partial: number;
63
+ score: number;
64
+ maxPossibleScore: number;
65
+ percentage: number;
66
+ totalQuestions: number;
67
+ totalSets: number;
68
+ attempts: number;
69
+ timeTaken: number;
70
+ }
59
71
  export interface IMarksheet {
60
72
  id: Id;
61
73
  createdAt: number | Date;
@@ -74,6 +86,7 @@ export interface IMarksheet {
74
86
  marks: IMarksheetMark[];
75
87
  mockTestId: number | null;
76
88
  isTestMarksheet: boolean;
89
+ stats: IMarksheetStats;
77
90
  correct?: number;
78
91
  incorrect?: number;
79
92
  partial?: number;
@@ -86,10 +99,6 @@ export interface IMarksheet {
86
99
  users: IUser[];
87
100
  activeUsers?: IUser[];
88
101
  state: EMarksheetState;
89
- /**
90
- * @deprecated Use !!endedAt instead
91
- * And for timed tests, check if (parent.endedAt && new Date(parent.endedAt) <= new Date());
92
- */
93
102
  completed: boolean;
94
103
  timeTaken: number;
95
104
  currentMarkId?: number;
@@ -1,3 +1,4 @@
1
+ import { IMarksheet } from './Marksheet';
1
2
  import { EProductType } from './Product';
2
3
  import { IQuestion } from './Question';
3
4
  import { Id } from './Type';
@@ -47,6 +48,7 @@ export interface IUserMockTest {
47
48
  lastMarksheetId?: Id;
48
49
  lastMarksheetStartedAt?: number | Date;
49
50
  lastMarksheetEndedAt?: number | Date;
51
+ lastMarksheet?: IMarksheet;
50
52
  }
51
53
  export interface IMockTestQuestion {
52
54
  id: Id;
@@ -1,5 +1,9 @@
1
+ export declare const MARKSHEET_STATS_FIELDS: import("@apollo/client").DocumentNode;
1
2
  export declare const MARKSHEET_MARK_FIELDS: import("@apollo/client").DocumentNode;
2
3
  export declare const BUILDER_CONFIG_FIELDS: import("@apollo/client").DocumentNode;
4
+ /**
5
+ * TODO:: Remove deperecated fields once mobile app is updated
6
+ */
3
7
  export declare const MARKSHEET_FIELDS: import("@apollo/client").DocumentNode;
4
8
  /**
5
9
  * All below fragments are used in cache updator
@@ -11,6 +15,9 @@ export declare const MODIFY_MARKSHEET_STATE_FRAGMENT: import("@apollo/client").D
11
15
  export declare const MODIFY_TOPIC_SELECTION_FRAGMENT: import("@apollo/client").DocumentNode;
12
16
  export declare const MODIFY_CURRENT_MARK_FRAGMENT: import("@apollo/client").DocumentNode;
13
17
  export declare const MARK_FLAGGED_FIELD: import("@apollo/client").DocumentNode;
18
+ /**
19
+ * TODO:: Remove deperecated fields once mobile app is updated
20
+ */
14
21
  export declare const MODIFY_MARKSHEET_COMPLETED_FRAGMENT: import("@apollo/client").DocumentNode;
15
22
  export declare const NEW_MARK_FIELDS: import("@apollo/client").DocumentNode;
16
23
  export declare const DAILY_STACK_FIELDS: import("@apollo/client").DocumentNode;
@@ -1,5 +1,19 @@
1
1
  import { gql } from '@apollo/client';
2
2
  import { QUESTION_FIELDS } from './question';
3
+ export const MARKSHEET_STATS_FIELDS = gql `
4
+ fragment MarksheetStatsFields on MarksheetStats {
5
+ correct
6
+ incorrect
7
+ partial
8
+ totalQuestions
9
+ totalSets
10
+ score
11
+ maxPossibleScore
12
+ percentage
13
+ attempts
14
+ timeTaken
15
+ }
16
+ `;
3
17
  export const MARKSHEET_MARK_FIELDS = gql `
4
18
  ${QUESTION_FIELDS}
5
19
  fragment MarksheetMarkFields on MarksheetMark {
@@ -32,9 +46,13 @@ export const BUILDER_CONFIG_FIELDS = gql `
32
46
  seenIncorrect
33
47
  }
34
48
  `;
49
+ /**
50
+ * TODO:: Remove deperecated fields once mobile app is updated
51
+ */
35
52
  export const MARKSHEET_FIELDS = gql `
36
53
  ${MARKSHEET_MARK_FIELDS}
37
54
  ${BUILDER_CONFIG_FIELDS}
55
+ ${MARKSHEET_STATS_FIELDS}
38
56
  fragment MarksheetFields on Marksheet {
39
57
  id
40
58
  topicConceptData
@@ -87,6 +105,9 @@ export const MARKSHEET_FIELDS = gql `
87
105
  marks {
88
106
  ...MarksheetMarkFields
89
107
  }
108
+ stats {
109
+ ...MarksheetStatsFields
110
+ }
90
111
  }
91
112
  `;
92
113
  /**
@@ -128,7 +149,11 @@ export const MARK_FLAGGED_FIELD = gql `
128
149
  flagged
129
150
  }
130
151
  `;
152
+ /**
153
+ * TODO:: Remove deperecated fields once mobile app is updated
154
+ */
131
155
  export const MODIFY_MARKSHEET_COMPLETED_FRAGMENT = gql `
156
+ ${MARKSHEET_STATS_FIELDS}
132
157
  fragment MarksheetCompleted on Marksheet {
133
158
  timeTaken
134
159
  completed
@@ -136,6 +161,9 @@ export const MODIFY_MARKSHEET_COMPLETED_FRAGMENT = gql `
136
161
  incorrect
137
162
  duration
138
163
  endedAt
164
+ stats {
165
+ ...MarksheetStatsFields
166
+ }
139
167
  }
140
168
  `;
141
169
  export const NEW_MARK_FIELDS = gql `
@@ -1,7 +1,16 @@
1
+ /**
2
+ * TODO:: Remove deperecated fields once mobile app is updated
3
+ */
1
4
  export declare const MOCK_TEST_FIELDS: import("@apollo/client").DocumentNode;
2
5
  /**
3
6
  * All below fragments are used in cache updator
4
7
  */
5
8
  export declare const MARK_FLAGGED_QUESTION: import("@apollo/client").DocumentNode;
9
+ /**
10
+ * TODO:: Remove deperecated fields once mobile app is updated
11
+ */
6
12
  export declare const COMPLETED_MOCK_TEST_MARKSHEET_FRAGMENT: import("@apollo/client").DocumentNode;
13
+ /**
14
+ * TODO:: Remove deperecated fields once mobile app is updated
15
+ */
7
16
  export declare const COMPLETED_MOCK_TESTS_FRAGMENT: import("@apollo/client").DocumentNode;
@@ -1,5 +1,10 @@
1
1
  import { gql } from '@apollo/client';
2
+ import { MARKSHEET_STATS_FIELDS } from './marksheet';
3
+ /**
4
+ * TODO:: Remove deperecated fields once mobile app is updated
5
+ */
2
6
  export const MOCK_TEST_FIELDS = gql `
7
+ ${MARKSHEET_STATS_FIELDS}
3
8
  fragment MockTestFields on MockTest {
4
9
  id
5
10
  demo
@@ -13,6 +18,14 @@ export const MOCK_TEST_FIELDS = gql `
13
18
  lastMarksheetEndedAt
14
19
  lastMarksheetStartedAt
15
20
  lastMarksheetId
21
+ lastMarksheet {
22
+ id
23
+ startedAt
24
+ endedAt
25
+ stats {
26
+ ...MarksheetStatsFields
27
+ }
28
+ }
16
29
  typeId
17
30
  }
18
31
  `;
@@ -24,7 +37,11 @@ export const MARK_FLAGGED_QUESTION = gql `
24
37
  flagged
25
38
  }
26
39
  `;
40
+ /**
41
+ * TODO:: Remove deperecated fields once mobile app is updated
42
+ */
27
43
  export const COMPLETED_MOCK_TEST_MARKSHEET_FRAGMENT = gql `
44
+ ${MARKSHEET_STATS_FIELDS}
28
45
  fragment MockTestCompleted on Marksheet {
29
46
  completed
30
47
  correct
@@ -32,14 +49,29 @@ export const COMPLETED_MOCK_TEST_MARKSHEET_FRAGMENT = gql `
32
49
  incorrect
33
50
  duration
34
51
  endedAt
52
+ stats {
53
+ ...MarksheetStatsFields
54
+ }
35
55
  }
36
56
  `;
57
+ /**
58
+ * TODO:: Remove deperecated fields once mobile app is updated
59
+ */
37
60
  export const COMPLETED_MOCK_TESTS_FRAGMENT = gql `
61
+ ${MARKSHEET_STATS_FIELDS}
38
62
  fragment CompletedMockTestFragment on MockTest {
39
63
  correct
40
64
  incorrect
41
65
  lastMarksheetEndedAt
42
66
  lastMarksheetStartedAt
43
67
  lastMarksheetId
68
+ lastMarksheet {
69
+ id
70
+ startedAt
71
+ endedAt
72
+ stats {
73
+ ...MarksheetStatsFields
74
+ }
75
+ }
44
76
  }
45
77
  `;
@@ -188,6 +188,7 @@ export declare const optimisticModifyMarksheetBuilderConfig: (marksheetId: numbe
188
188
  marks: IMarksheetMark[];
189
189
  mockTestId: number | null;
190
190
  isTestMarksheet: boolean;
191
+ stats: import("../../../models").IMarksheetStats;
191
192
  correct?: number | undefined;
192
193
  incorrect?: number | undefined;
193
194
  partial?: number | undefined;
@@ -205,7 +206,7 @@ export declare const optimisticModifyMarksheetBuilderConfig: (marksheetId: numbe
205
206
  currentMarkId?: number | undefined;
206
207
  topicConceptData?: string | undefined;
207
208
  preBuildData?: IPreBuildMarksheet | undefined;
208
- entitlementId: import("../../../models").EProductType | EEntitlementType;
209
+ entitlementId: EEntitlementType | import("../../../models").EProductType;
209
210
  };
210
211
  };
211
212
  };
@@ -282,6 +283,7 @@ export declare const optimisticEndMarksheet: (marksheet: IMarksheet) => {
282
283
  marks: IMarksheetMark[];
283
284
  mockTestId: number | null;
284
285
  isTestMarksheet: boolean;
286
+ stats: import("../../../models").IMarksheetStats;
285
287
  correct?: number | undefined;
286
288
  incorrect?: number | undefined;
287
289
  partial?: number | undefined;
@@ -299,7 +301,7 @@ export declare const optimisticEndMarksheet: (marksheet: IMarksheet) => {
299
301
  topicConceptData?: string | undefined;
300
302
  preBuildData?: IPreBuildMarksheet | undefined;
301
303
  builderConfig?: IBuildConfigData | undefined;
302
- entitlementId: import("../../../models").EProductType | EEntitlementType;
304
+ entitlementId: EEntitlementType | import("../../../models").EProductType;
303
305
  __typename: string;
304
306
  };
305
307
  };
@@ -1,5 +1,5 @@
1
1
  import { gql } from '@apollo/client';
2
- import { BUILDER_CONFIG_FIELDS, MARKSHEET_FIELDS, MARK_FLAGGED_FIELD, MODIFY_MARKSHEET_COMPLETED_FRAGMENT, NEW_MARK_FIELDS, } from '../../fragments/marksheet';
2
+ import { BUILDER_CONFIG_FIELDS, MARKSHEET_FIELDS, MARKSHEET_STATS_FIELDS, MARK_FLAGGED_FIELD, MODIFY_MARKSHEET_COMPLETED_FRAGMENT, NEW_MARK_FIELDS, } from '../../fragments/marksheet';
3
3
  import { MARKSHEET, } from '../../query/restricted';
4
4
  export const BUILD_QUESTION_MARKSHEET = gql `
5
5
  ${MARKSHEET_FIELDS}
@@ -77,8 +77,6 @@ export const SAVE_MARKSHEET = gql `
77
77
  flagged
78
78
  mark
79
79
  }
80
- correct
81
- incorrect
82
80
  }
83
81
  }
84
82
  }
@@ -396,6 +394,7 @@ export const LEAVE_MARKSHEET = gql `
396
394
  }
397
395
  `;
398
396
  export const END_MARKSHEET = gql `
397
+ ${MARKSHEET_STATS_FIELDS}
399
398
  mutation EndMarksheet($marksheetId: Int!) {
400
399
  restricted {
401
400
  endMarksheet(marksheetId: $marksheetId) {
@@ -409,6 +408,9 @@ export const END_MARKSHEET = gql `
409
408
  correct
410
409
  incorrect
411
410
  totalQuestions
411
+ stats {
412
+ ...MarksheetStatsFields
413
+ }
412
414
  }
413
415
  }
414
416
  }
@@ -429,7 +431,9 @@ export const updateCacheOnEndMarksheet = (cache, result, options) => {
429
431
  incorrect: endMarksheet.incorrect,
430
432
  duration: endMarksheet.duration,
431
433
  endedAt: endMarksheet.endedAt,
434
+ stats: endMarksheet.stats,
432
435
  },
436
+ fragmentName: 'MarksheetCompleted',
433
437
  fragment: MODIFY_MARKSHEET_COMPLETED_FRAGMENT,
434
438
  });
435
439
  };
@@ -65,6 +65,7 @@ export declare const optimisticEndMockTest: (marksheet: IMarksheet) => {
65
65
  marks: IMarksheetMark[];
66
66
  mockTestId: number | null;
67
67
  isTestMarksheet: boolean;
68
+ stats: import("../../../models").IMarksheetStats;
68
69
  correct?: number | undefined;
69
70
  incorrect?: number | undefined;
70
71
  partial?: number | undefined;
@@ -82,7 +83,7 @@ export declare const optimisticEndMockTest: (marksheet: IMarksheet) => {
82
83
  topicConceptData?: string | undefined;
83
84
  preBuildData?: import("./marksheet").IPreBuildMarksheet | undefined;
84
85
  builderConfig?: import("./marksheet").IBuildConfigData | undefined;
85
- entitlementId: import("../../../models").EProductType | import("../../../models").EEntitlementType;
86
+ entitlementId: import("../../../models").EEntitlementType | import("../../../models").EProductType;
86
87
  __typename: string;
87
88
  };
88
89
  };
@@ -1,5 +1,5 @@
1
1
  import { gql } from '@apollo/client';
2
- import { COMPLETED_MOCK_TESTS_FRAGMENT, COMPLETED_MOCK_TEST_MARKSHEET_FRAGMENT, MARK_FLAGGED_QUESTION, } from '../../fragments';
2
+ import { COMPLETED_MOCK_TESTS_FRAGMENT, COMPLETED_MOCK_TEST_MARKSHEET_FRAGMENT, MARKSHEET_STATS_FIELDS, MARK_FLAGGED_QUESTION, } from '../../fragments';
3
3
  export const BUILD_MOCK_TEST_MARKSHEET = gql `
4
4
  mutation BuildMockTestMarksheet($mockTestId: Int!, $duration: Int!) {
5
5
  restricted {
@@ -51,6 +51,7 @@ export const optimisticToggleFlaggedQuestion = (mark, flagged) => ({
51
51
  },
52
52
  });
53
53
  export const END_MOCK_TEST = gql `
54
+ ${MARKSHEET_STATS_FIELDS}
54
55
  mutation EndMockTest($marksheetId: Int!) {
55
56
  restricted {
56
57
  endMockTest(marksheetId: $marksheetId) {
@@ -59,11 +60,14 @@ export const END_MOCK_TEST = gql `
59
60
  startedAt
60
61
  endedAt
61
62
  mockTestId
63
+ duration
62
64
  completed
63
65
  correct
64
66
  incorrect
65
67
  totalQuestions
66
- duration
68
+ stats {
69
+ ...MarksheetStatsFields
70
+ }
67
71
  }
68
72
  }
69
73
  }
@@ -84,7 +88,9 @@ export const updateCacheOnEndMockTest = (cache, result, options) => {
84
88
  incorrect: endMockTest.incorrect,
85
89
  duration: endMockTest.duration,
86
90
  endedAt: endMockTest.endedAt,
91
+ stats: endMockTest.stats,
87
92
  },
93
+ fragmentName: 'MockTestCompleted',
88
94
  fragment: COMPLETED_MOCK_TEST_MARKSHEET_FRAGMENT,
89
95
  });
90
96
  cache.writeFragment({
@@ -95,7 +101,14 @@ export const updateCacheOnEndMockTest = (cache, result, options) => {
95
101
  lastMarksheetEndedAt: endMockTest.endedAt,
96
102
  correct: endMockTest.correct,
97
103
  incorrect: endMockTest.incorrect,
104
+ lastMarksheet: {
105
+ id: endMockTest.id,
106
+ startedAt: endMockTest.startedAt,
107
+ endedAt: endMockTest.endedAt,
108
+ stats: endMockTest.stats,
109
+ },
98
110
  },
111
+ fragmentName: 'CompletedMockTestFragment',
99
112
  fragment: COMPLETED_MOCK_TESTS_FRAGMENT,
100
113
  });
101
114
  };
@@ -131,7 +131,7 @@ export declare const optimisticEndOsceMarksheet: (marksheet: IOsceMarksheet) =>
131
131
  members: import("../../../models").IOsceMarksheetMember[];
132
132
  state: EOsceMarksheetState;
133
133
  entitlement: import("../../../models").IEntitlement;
134
- entitlementId: EProductType | EEntitlementType;
134
+ entitlementId: EEntitlementType | EProductType;
135
135
  isTimed: boolean;
136
136
  __typename: string;
137
137
  };
@@ -7,14 +7,6 @@ export interface IMarksheetVar {
7
7
  }
8
8
  export type IMarksheetData = RestrictedData<graphqlNormalize & IMarksheet, 'marksheet'>;
9
9
  export declare const MARKSHEET: import("@apollo/client").DocumentNode;
10
- export interface IMarksheetsVar {
11
- options: {
12
- limit: number;
13
- order?: ESortOrder;
14
- lastId?: number;
15
- solo?: boolean;
16
- };
17
- }
18
10
  export interface IMarksheetsWindowVar {
19
11
  filter: {
20
12
  limit: number;
@@ -24,11 +16,6 @@ export interface IMarksheetsWindowVar {
24
16
  period?: number;
25
17
  };
26
18
  }
27
- export type IMarksheetsData = RestrictedData<{
28
- results: (graphqlNormalize & IMarksheet)[];
29
- total: number;
30
- score: number;
31
- }, 'marksheets'>;
32
19
  export interface IMarksheetsDashboardData {
33
20
  total: number;
34
21
  score: number;
@@ -38,13 +25,33 @@ export interface IMarksheetsDashboardData {
38
25
  }>;
39
26
  }
40
27
  export type IMarksheetsWindowData = RestrictedData<graphqlNormalize & IMarksheetsDashboardData, 'marksheetsWindow'>;
41
- export interface PaginatedMarksheets {
28
+ export declare const MARKSHEETS_WINDOW: import("@apollo/client").DocumentNode;
29
+ export interface IMarksheetsVar {
30
+ options: {
31
+ limit: number;
32
+ order?: ESortOrder;
33
+ lastId?: number;
34
+ solo?: boolean;
35
+ };
36
+ }
37
+ export type IMarksheetsData = RestrictedData<{
42
38
  results: (graphqlNormalize & IMarksheet)[];
43
39
  total: number;
44
- score: number;
45
- }
40
+ }, 'marksheets'>;
46
41
  export declare const MARKSHEETS: import("@apollo/client").DocumentNode;
47
- export declare const MARKSHEETS_WINDOW: import("@apollo/client").DocumentNode;
42
+ export interface IMarksheetsTrackerVar {
43
+ options: {
44
+ order?: ESortOrder;
45
+ solo?: boolean;
46
+ period?: number;
47
+ };
48
+ }
49
+ export interface IMarksheetsTrackerItem {
50
+ date: Date | number;
51
+ result: IMarksheet[];
52
+ }
53
+ export type IMarksheetsTrackerData = RestrictedData<graphqlNormalize & IMarksheetsTrackerItem[], 'marksheetsTracker'>;
54
+ export declare const MARKSHEETS_TRACKER: import("@apollo/client").DocumentNode;
48
55
  export type ILatestPastMarksheetIdVar = null;
49
56
  export type ILatestPastMarksheetIdData = RestrictedData<number, 'latestPastMarksheetId'>;
50
57
  export declare const LATEST_PAST_MARKSHEET_ID: import("@apollo/client").DocumentNode;