react-native-elearn-ui 0.1.28 → 0.1.31
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/lib/module/screens/qbank/QBankQuestionScreen.js +181 -123
- package/lib/module/screens/qbank/QBankQuestionScreen.js.map +1 -1
- package/lib/typescript/src/screens/qbank/QBankQuestionScreen.d.ts +7 -9
- package/lib/typescript/src/screens/qbank/QBankQuestionScreen.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +12 -7
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/screens/qbank/QBankQuestionScreen.tsx +164 -109
- package/src/types/index.ts +13 -7
|
@@ -12,59 +12,92 @@ const formatTime = totalSeconds => {
|
|
|
12
12
|
return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
|
|
13
13
|
};
|
|
14
14
|
export const QBankQuestionScreen = ({
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
examData,
|
|
16
|
+
onFinish,
|
|
17
|
+
onQuestionAttempt,
|
|
18
18
|
onBack,
|
|
19
|
-
onNext,
|
|
20
|
-
onPrev,
|
|
21
|
-
onPressOption,
|
|
22
19
|
onPressReport,
|
|
23
|
-
onPressUsers
|
|
20
|
+
onPressUsers,
|
|
21
|
+
isProUser = false
|
|
24
22
|
}) => {
|
|
25
23
|
const theme = useTheme();
|
|
26
|
-
const [
|
|
24
|
+
const [currentIndex, setCurrentIndex] = useState(0);
|
|
25
|
+
const [answers, setAnswers] = useState({});
|
|
26
|
+
const [timeLeft, setTimeLeft] = useState(examData.timeLimitSeconds || 0);
|
|
27
|
+
const currentQuestion = examData.questions[currentIndex];
|
|
28
|
+
const totalQuestions = examData.questions.length;
|
|
29
|
+
const isAttempted = !!currentQuestion && !!answers[currentQuestion.id];
|
|
30
|
+
const selectedOptionId = currentQuestion ? answers[currentQuestion.id] : undefined;
|
|
31
|
+
const isLastQuestion = currentIndex === totalQuestions - 1;
|
|
27
32
|
useEffect(() => {
|
|
33
|
+
if (!examData.timeLimitSeconds) return;
|
|
28
34
|
if (timeLeft <= 0) {
|
|
29
|
-
|
|
35
|
+
onFinish?.(answers);
|
|
30
36
|
return;
|
|
31
37
|
}
|
|
32
38
|
const timer = setInterval(() => {
|
|
33
39
|
setTimeLeft(prev => prev - 1);
|
|
34
40
|
}, 1000);
|
|
35
41
|
return () => clearInterval(timer);
|
|
36
|
-
}, [timeLeft,
|
|
37
|
-
const
|
|
42
|
+
}, [timeLeft, examData.timeLimitSeconds, onFinish, answers]);
|
|
43
|
+
const handleOptionPress = optionId => {
|
|
44
|
+
if (!currentQuestion || isAttempted) return; // Prevent changing answer in Tutor mode
|
|
45
|
+
|
|
46
|
+
setAnswers(prev => ({
|
|
47
|
+
...prev,
|
|
48
|
+
[currentQuestion.id]: optionId
|
|
49
|
+
}));
|
|
50
|
+
onQuestionAttempt?.(currentQuestion.id, optionId);
|
|
51
|
+
};
|
|
52
|
+
const handleNextOrFinish = () => {
|
|
53
|
+
if (isLastQuestion) {
|
|
54
|
+
onFinish?.(answers);
|
|
55
|
+
} else {
|
|
56
|
+
setCurrentIndex(prev => prev + 1);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const handlePrev = () => {
|
|
60
|
+
if (currentIndex > 0) {
|
|
61
|
+
setCurrentIndex(prev => prev - 1);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const progressPercentage = (currentIndex + 1) / totalQuestions * 100;
|
|
38
65
|
const renderOption = (option, index) => {
|
|
39
66
|
const letters = ['A', 'B', 'C', 'D', 'E', 'F'];
|
|
40
67
|
const letter = letters[index] || '';
|
|
41
|
-
let borderColor = '#E5E7EB';
|
|
68
|
+
let borderColor = '#E5E7EB';
|
|
42
69
|
let backgroundColor = '#FFFFFF';
|
|
43
70
|
let iconName;
|
|
44
71
|
let iconColor = theme.textSecondary;
|
|
45
72
|
let statusText = '';
|
|
46
73
|
let statusColor = '';
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
74
|
+
const isSelected = selectedOptionId === option.id;
|
|
75
|
+
if (isAttempted) {
|
|
76
|
+
if (option.isCorrect) {
|
|
77
|
+
borderColor = theme.success;
|
|
78
|
+
backgroundColor = '#F0FDF4';
|
|
79
|
+
iconName = 'check-circle';
|
|
80
|
+
iconColor = theme.success;
|
|
81
|
+
statusText = 'Correct';
|
|
82
|
+
statusColor = theme.success;
|
|
83
|
+
} else if (isSelected && !option.isCorrect) {
|
|
84
|
+
borderColor = '#EF4444';
|
|
85
|
+
backgroundColor = '#FEF2F2';
|
|
86
|
+
iconName = 'x-circle';
|
|
87
|
+
iconColor = '#EF4444';
|
|
88
|
+
statusText = 'InCorrect';
|
|
89
|
+
statusColor = '#EF4444';
|
|
90
|
+
}
|
|
91
|
+
} else if (isSelected) {
|
|
92
|
+
// Very brief state before it evaluates (if we ever want a delay), but here it evaluates instantly
|
|
93
|
+
borderColor = theme.primary;
|
|
61
94
|
}
|
|
62
95
|
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
63
96
|
style: [styles.optionContainer, {
|
|
64
97
|
borderColor,
|
|
65
98
|
backgroundColor
|
|
66
99
|
}],
|
|
67
|
-
onPress: () =>
|
|
100
|
+
onPress: () => handleOptionPress(option.id),
|
|
68
101
|
activeOpacity: 0.7,
|
|
69
102
|
children: /*#__PURE__*/_jsxs(View, {
|
|
70
103
|
style: styles.optionContent,
|
|
@@ -81,16 +114,16 @@ export const QBankQuestionScreen = ({
|
|
|
81
114
|
color: theme.textPrimary,
|
|
82
115
|
style: styles.optionText,
|
|
83
116
|
children: [letter, ". ", option.text]
|
|
84
|
-
}),
|
|
117
|
+
}), isAttempted && statusText ? /*#__PURE__*/_jsxs(Typography, {
|
|
85
118
|
variant: "caption",
|
|
86
119
|
color: statusColor,
|
|
87
120
|
style: styles.optionStatusText,
|
|
88
|
-
children: [statusText, " ", /*#__PURE__*/_jsxs(Typography, {
|
|
121
|
+
children: [statusText, " ", option.percentage !== undefined && /*#__PURE__*/_jsxs(Typography, {
|
|
89
122
|
variant: "caption",
|
|
90
123
|
color: theme.textSecondary,
|
|
91
124
|
children: ["[", option.percentage, "%]"]
|
|
92
125
|
})]
|
|
93
|
-
})
|
|
126
|
+
}) : null, !statusText && option.percentage !== undefined && isAttempted && /*#__PURE__*/_jsxs(Typography, {
|
|
94
127
|
variant: "caption",
|
|
95
128
|
color: theme.textSecondary,
|
|
96
129
|
style: styles.optionStatusText,
|
|
@@ -100,43 +133,70 @@ export const QBankQuestionScreen = ({
|
|
|
100
133
|
})
|
|
101
134
|
}, option.id);
|
|
102
135
|
};
|
|
136
|
+
if (!currentQuestion) return null;
|
|
103
137
|
return /*#__PURE__*/_jsxs(SafeAreaView, {
|
|
104
138
|
style: [styles.container, {
|
|
105
|
-
backgroundColor: '#
|
|
139
|
+
backgroundColor: '#FFFFFF'
|
|
106
140
|
}],
|
|
107
141
|
edges: ['top', 'bottom'],
|
|
108
142
|
children: [/*#__PURE__*/_jsx(StatusBar, {
|
|
109
143
|
barStyle: "dark-content",
|
|
110
144
|
backgroundColor: "#FFFFFF"
|
|
111
145
|
}), /*#__PURE__*/_jsxs(View, {
|
|
112
|
-
style: styles.
|
|
113
|
-
children: [/*#__PURE__*/
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
146
|
+
style: styles.header,
|
|
147
|
+
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
148
|
+
onPress: onBack,
|
|
149
|
+
style: styles.headerIconBtnLeft,
|
|
150
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
151
|
+
name: "chevron-left",
|
|
152
|
+
size: 24,
|
|
153
|
+
color: theme.textPrimary
|
|
154
|
+
})
|
|
155
|
+
}), /*#__PURE__*/_jsx(Typography, {
|
|
156
|
+
variant: "h3",
|
|
157
|
+
color: theme.textPrimary,
|
|
158
|
+
style: styles.headerTitle,
|
|
159
|
+
children: examData.title
|
|
160
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
161
|
+
style: styles.headerIconBtnRight,
|
|
162
|
+
children: [examData.accessType === 'pro' && !isProUser && /*#__PURE__*/_jsx(View, {
|
|
163
|
+
style: styles.proBadge,
|
|
164
|
+
children: /*#__PURE__*/_jsx(Typography, {
|
|
165
|
+
variant: "caption",
|
|
166
|
+
bold: true,
|
|
167
|
+
color: "#FFFFFF",
|
|
168
|
+
style: {
|
|
169
|
+
fontSize: 8
|
|
170
|
+
},
|
|
171
|
+
children: "PRO"
|
|
172
|
+
})
|
|
173
|
+
}), examData.accessType === 'free' && /*#__PURE__*/_jsx(View, {
|
|
174
|
+
style: styles.freeBadge,
|
|
175
|
+
children: /*#__PURE__*/_jsx(Typography, {
|
|
176
|
+
variant: "caption",
|
|
177
|
+
bold: true,
|
|
178
|
+
color: theme.success,
|
|
179
|
+
style: {
|
|
180
|
+
fontSize: 8
|
|
181
|
+
},
|
|
182
|
+
children: "FREE"
|
|
122
183
|
})
|
|
123
|
-
}), /*#__PURE__*/_jsx(Typography, {
|
|
124
|
-
variant: "h3",
|
|
125
|
-
color: theme.textPrimary,
|
|
126
|
-
style: styles.headerTitle,
|
|
127
|
-
children: params.headerTitle
|
|
128
|
-
}), /*#__PURE__*/_jsx(View, {
|
|
129
|
-
style: styles.headerIconBtnRight
|
|
130
184
|
})]
|
|
131
|
-
})
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
})
|
|
185
|
+
})]
|
|
186
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
187
|
+
style: styles.progressTrack,
|
|
188
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
189
|
+
style: [styles.progressFill, {
|
|
190
|
+
width: `${progressPercentage}%`,
|
|
191
|
+
backgroundColor: theme.success
|
|
192
|
+
}]
|
|
193
|
+
})
|
|
194
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
195
|
+
style: {
|
|
196
|
+
flex: 1,
|
|
197
|
+
backgroundColor: '#F9FAFB'
|
|
198
|
+
},
|
|
199
|
+
children: /*#__PURE__*/_jsxs(ScrollView, {
|
|
140
200
|
contentContainerStyle: styles.scrollContent,
|
|
141
201
|
showsVerticalScrollIndicator: false,
|
|
142
202
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
@@ -146,8 +206,8 @@ export const QBankQuestionScreen = ({
|
|
|
146
206
|
bold: true,
|
|
147
207
|
color: theme.textSecondary,
|
|
148
208
|
style: styles.questionNumber,
|
|
149
|
-
children: ["QUESTION ",
|
|
150
|
-
}), /*#__PURE__*/_jsxs(View, {
|
|
209
|
+
children: ["QUESTION ", currentIndex + 1, "/", totalQuestions]
|
|
210
|
+
}), !!examData.timeLimitSeconds && /*#__PURE__*/_jsxs(View, {
|
|
151
211
|
style: styles.timerWrapper,
|
|
152
212
|
children: [/*#__PURE__*/_jsx(Icon, {
|
|
153
213
|
name: "clock",
|
|
@@ -165,11 +225,11 @@ export const QBankQuestionScreen = ({
|
|
|
165
225
|
bold: true,
|
|
166
226
|
color: theme.textPrimary,
|
|
167
227
|
style: styles.questionText,
|
|
168
|
-
children:
|
|
228
|
+
children: currentQuestion.questionText
|
|
169
229
|
}), /*#__PURE__*/_jsx(View, {
|
|
170
230
|
style: styles.optionsList,
|
|
171
|
-
children:
|
|
172
|
-
}),
|
|
231
|
+
children: currentQuestion.options.map((option, index) => renderOption(option, index))
|
|
232
|
+
}), isAttempted && currentQuestion.explanation && /*#__PURE__*/_jsxs(View, {
|
|
173
233
|
style: styles.explanationContainer,
|
|
174
234
|
children: [/*#__PURE__*/_jsx(Typography, {
|
|
175
235
|
variant: "caption",
|
|
@@ -181,55 +241,58 @@ export const QBankQuestionScreen = ({
|
|
|
181
241
|
variant: "body",
|
|
182
242
|
color: theme.textSecondary,
|
|
183
243
|
style: styles.explanationText,
|
|
184
|
-
children:
|
|
185
|
-
}),
|
|
244
|
+
children: currentQuestion.explanation
|
|
245
|
+
}), currentQuestion.referenceId && /*#__PURE__*/_jsx(View, {
|
|
186
246
|
style: styles.referenceContainer,
|
|
187
247
|
children: /*#__PURE__*/_jsx(Typography, {
|
|
188
248
|
variant: "caption",
|
|
189
249
|
color: theme.textSecondary,
|
|
190
250
|
style: styles.referenceText,
|
|
191
|
-
children:
|
|
251
|
+
children: currentQuestion.referenceId
|
|
192
252
|
})
|
|
193
253
|
})]
|
|
194
254
|
})]
|
|
255
|
+
})
|
|
256
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
257
|
+
style: styles.bottomActions,
|
|
258
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
259
|
+
style: styles.leftActions,
|
|
260
|
+
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
261
|
+
style: styles.iconAction,
|
|
262
|
+
onPress: () => onPressReport?.(currentQuestion.id),
|
|
263
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
264
|
+
name: "alert-circle",
|
|
265
|
+
size: 20,
|
|
266
|
+
color: theme.textSecondary
|
|
267
|
+
})
|
|
268
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
269
|
+
style: styles.iconAction,
|
|
270
|
+
onPress: () => onPressUsers?.(currentQuestion.id),
|
|
271
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
272
|
+
name: "users",
|
|
273
|
+
size: 20,
|
|
274
|
+
color: theme.textSecondary
|
|
275
|
+
})
|
|
276
|
+
})]
|
|
195
277
|
}), /*#__PURE__*/_jsxs(View, {
|
|
196
|
-
style: styles.
|
|
197
|
-
children: [/*#__PURE__*/
|
|
198
|
-
style: styles.
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
})
|
|
215
|
-
})]
|
|
216
|
-
}), /*#__PURE__*/_jsxs(View, {
|
|
217
|
-
style: styles.rightActions,
|
|
218
|
-
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
219
|
-
style: styles.prevBtn,
|
|
220
|
-
onPress: onPrev,
|
|
221
|
-
children: /*#__PURE__*/_jsx(Typography, {
|
|
222
|
-
variant: "body",
|
|
223
|
-
bold: true,
|
|
224
|
-
color: theme.textPrimary,
|
|
225
|
-
children: "Prev"
|
|
226
|
-
})
|
|
227
|
-
}), /*#__PURE__*/_jsx(Button, {
|
|
228
|
-
title: "Next",
|
|
229
|
-
onPress: onNext || (() => {}),
|
|
230
|
-
style: styles.nextBtn,
|
|
231
|
-
textStyle: styles.nextBtnText
|
|
232
|
-
})]
|
|
278
|
+
style: styles.rightActions,
|
|
279
|
+
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
280
|
+
style: [styles.prevBtn, currentIndex === 0 && {
|
|
281
|
+
opacity: 0.5
|
|
282
|
+
}],
|
|
283
|
+
onPress: handlePrev,
|
|
284
|
+
disabled: currentIndex === 0,
|
|
285
|
+
children: /*#__PURE__*/_jsx(Typography, {
|
|
286
|
+
variant: "body",
|
|
287
|
+
bold: true,
|
|
288
|
+
color: theme.textPrimary,
|
|
289
|
+
children: "Prev"
|
|
290
|
+
})
|
|
291
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
292
|
+
title: isLastQuestion ? "Finish" : "Next",
|
|
293
|
+
onPress: handleNextOrFinish,
|
|
294
|
+
style: styles.nextBtn,
|
|
295
|
+
textStyle: styles.nextBtnText
|
|
233
296
|
})]
|
|
234
297
|
})]
|
|
235
298
|
})]
|
|
@@ -237,22 +300,7 @@ export const QBankQuestionScreen = ({
|
|
|
237
300
|
};
|
|
238
301
|
const styles = StyleSheet.create({
|
|
239
302
|
container: {
|
|
240
|
-
flex: 1
|
|
241
|
-
padding: 16 // Gray margin around the card
|
|
242
|
-
},
|
|
243
|
-
card: {
|
|
244
|
-
flex: 1,
|
|
245
|
-
backgroundColor: '#FFFFFF',
|
|
246
|
-
borderRadius: 8,
|
|
247
|
-
overflow: 'hidden',
|
|
248
|
-
shadowColor: '#000',
|
|
249
|
-
shadowOffset: {
|
|
250
|
-
width: 0,
|
|
251
|
-
height: 2
|
|
252
|
-
},
|
|
253
|
-
shadowOpacity: 0.1,
|
|
254
|
-
shadowRadius: 4,
|
|
255
|
-
elevation: 4
|
|
303
|
+
flex: 1
|
|
256
304
|
},
|
|
257
305
|
header: {
|
|
258
306
|
flexDirection: 'row',
|
|
@@ -266,10 +314,6 @@ const styles = StyleSheet.create({
|
|
|
266
314
|
justifyContent: 'center',
|
|
267
315
|
alignItems: 'flex-start'
|
|
268
316
|
},
|
|
269
|
-
headerRightActions: {
|
|
270
|
-
flexDirection: 'row',
|
|
271
|
-
alignItems: 'center'
|
|
272
|
-
},
|
|
273
317
|
headerIconBtnRight: {
|
|
274
318
|
width: 40,
|
|
275
319
|
height: 40,
|
|
@@ -282,6 +326,19 @@ const styles = StyleSheet.create({
|
|
|
282
326
|
flex: 1,
|
|
283
327
|
textAlign: 'center'
|
|
284
328
|
},
|
|
329
|
+
proBadge: {
|
|
330
|
+
paddingHorizontal: 6,
|
|
331
|
+
paddingVertical: 2,
|
|
332
|
+
borderRadius: 4,
|
|
333
|
+
backgroundColor: '#F59E0B'
|
|
334
|
+
},
|
|
335
|
+
freeBadge: {
|
|
336
|
+
paddingHorizontal: 6,
|
|
337
|
+
paddingVertical: 2,
|
|
338
|
+
borderRadius: 4,
|
|
339
|
+
borderWidth: 1,
|
|
340
|
+
borderColor: '#10B981'
|
|
341
|
+
},
|
|
285
342
|
progressTrack: {
|
|
286
343
|
height: 4,
|
|
287
344
|
backgroundColor: '#E5E7EB',
|
|
@@ -324,7 +381,8 @@ const styles = StyleSheet.create({
|
|
|
324
381
|
borderWidth: 1,
|
|
325
382
|
borderRadius: 8,
|
|
326
383
|
padding: 16,
|
|
327
|
-
marginBottom: 12
|
|
384
|
+
marginBottom: 12,
|
|
385
|
+
backgroundColor: '#FFFFFF'
|
|
328
386
|
},
|
|
329
387
|
optionContent: {
|
|
330
388
|
flexDirection: 'row',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useEffect","View","ScrollView","StyleSheet","TouchableOpacity","StatusBar","SafeAreaView","useTheme","Typography","Icon","Button","jsx","_jsx","jsxs","_jsxs","formatTime","totalSeconds","minutes","Math","floor","seconds","toString","padStart","QBankQuestionScreen","params","initialTimeSeconds","onTimeUp","onBack","onNext","onPrev","onPressOption","onPressReport","onPressUsers","theme","timeLeft","setTimeLeft","timer","setInterval","prev","clearInterval","progressPercentage","questionNumber","totalQuestions","renderOption","option","index","letters","letter","borderColor","backgroundColor","iconName","iconColor","textSecondary","statusText","statusColor","status","success","style","styles","optionContainer","onPress","id","activeOpacity","children","optionContent","name","size","color","emptyCircle","optionTextWrapper","variant","textPrimary","optionText","text","optionStatusText","percentage","undefined","container","edges","barStyle","card","header","headerIconBtnLeft","headerTitle","headerIconBtnRight","progressTrack","progressFill","width","contentContainerStyle","scrollContent","showsVerticalScrollIndicator","topBar","bold","timerWrapper","timerText","questionText","optionsList","options","map","explanation","explanationContainer","explanationTitle","explanationText","referenceId","referenceContainer","referenceText","bottomActions","leftActions","iconAction","rightActions","prevBtn","title","nextBtn","textStyle","nextBtnText","create","flex","padding","borderRadius","overflow","shadowColor","shadowOffset","height","shadowOpacity","shadowRadius","elevation","flexDirection","alignItems","paddingHorizontal","paddingVertical","justifyContent","headerRightActions","fontSize","fontWeight","textAlign","paddingBottom","marginBottom","letterSpacing","marginLeft","lineHeight","borderWidth","marginTop","paddingTop","borderTopWidth","borderTopColor","marginRight","minWidth"],"sourceRoot":"../../../../src","sources":["screens/qbank/QBankQuestionScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","View","ScrollView","StyleSheet","TouchableOpacity","StatusBar","SafeAreaView","useTheme","Typography","Icon","Button","jsx","_jsx","jsxs","_jsxs","formatTime","totalSeconds","minutes","Math","floor","seconds","toString","padStart","QBankQuestionScreen","examData","onFinish","onQuestionAttempt","onBack","onPressReport","onPressUsers","isProUser","theme","currentIndex","setCurrentIndex","answers","setAnswers","timeLeft","setTimeLeft","timeLimitSeconds","currentQuestion","questions","totalQuestions","length","isAttempted","id","selectedOptionId","undefined","isLastQuestion","timer","setInterval","prev","clearInterval","handleOptionPress","optionId","handleNextOrFinish","handlePrev","progressPercentage","renderOption","option","index","letters","letter","borderColor","backgroundColor","iconName","iconColor","textSecondary","statusText","statusColor","isSelected","isCorrect","success","primary","style","styles","optionContainer","onPress","activeOpacity","children","optionContent","name","size","color","emptyCircle","optionTextWrapper","variant","textPrimary","optionText","text","optionStatusText","percentage","container","edges","barStyle","header","headerIconBtnLeft","headerTitle","title","headerIconBtnRight","accessType","proBadge","bold","fontSize","freeBadge","progressTrack","progressFill","width","flex","contentContainerStyle","scrollContent","showsVerticalScrollIndicator","topBar","questionNumber","timerWrapper","timerText","questionText","optionsList","options","map","explanation","explanationContainer","explanationTitle","explanationText","referenceId","referenceContainer","referenceText","bottomActions","leftActions","iconAction","rightActions","prevBtn","opacity","disabled","nextBtn","textStyle","nextBtnText","create","flexDirection","alignItems","paddingHorizontal","paddingVertical","height","justifyContent","fontWeight","textAlign","borderRadius","borderWidth","padding","paddingBottom","marginBottom","letterSpacing","marginLeft","lineHeight","marginTop","paddingTop","borderTopWidth","borderTopColor","marginRight","minWidth"],"sourceRoot":"../../../../src","sources":["screens/qbank/QBankQuestionScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { QBankExamData } from '../../types/index.js';
|
|
3
3
|
interface QBankQuestionScreenProps {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
examData: QBankExamData;
|
|
5
|
+
onFinish?: (results: Record<string, string>) => void;
|
|
6
|
+
onQuestionAttempt?: (questionId: string, selectedOptionId: string) => void;
|
|
7
7
|
onBack?: () => void;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
onPressReport?: () => void;
|
|
12
|
-
onPressUsers?: () => void;
|
|
8
|
+
onPressReport?: (questionId: string) => void;
|
|
9
|
+
onPressUsers?: (questionId: string) => void;
|
|
10
|
+
isProUser?: boolean;
|
|
13
11
|
}
|
|
14
12
|
export declare const QBankQuestionScreen: React.FC<QBankQuestionScreenProps>;
|
|
15
13
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QBankQuestionScreen.d.ts","sourceRoot":"","sources":["../../../../../src/screens/qbank/QBankQuestionScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAWnD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"QBankQuestionScreen.d.ts","sourceRoot":"","sources":["../../../../../src/screens/qbank/QBankQuestionScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAWnD,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,sBAAa,CAAC;AAElE,UAAU,wBAAwB;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IACrD,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAQD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAqPlE,CAAC"}
|
|
@@ -227,21 +227,26 @@ export interface QBankSubTopicSection {
|
|
|
227
227
|
title: string;
|
|
228
228
|
modules: QBankSubTopicModule[];
|
|
229
229
|
}
|
|
230
|
-
export interface
|
|
230
|
+
export interface QBankExamOption {
|
|
231
231
|
id: string;
|
|
232
232
|
text: string;
|
|
233
|
-
|
|
233
|
+
isCorrect: boolean;
|
|
234
234
|
percentage?: number;
|
|
235
235
|
}
|
|
236
|
-
export interface
|
|
237
|
-
|
|
238
|
-
questionNumber: number;
|
|
239
|
-
totalQuestions: number;
|
|
236
|
+
export interface QBankExamQuestion {
|
|
237
|
+
id: string;
|
|
240
238
|
questionText: string;
|
|
241
|
-
options:
|
|
239
|
+
options: QBankExamOption[];
|
|
242
240
|
explanation?: string;
|
|
243
241
|
referenceId?: string;
|
|
244
242
|
}
|
|
243
|
+
export interface QBankExamData {
|
|
244
|
+
id: string;
|
|
245
|
+
title: string;
|
|
246
|
+
accessType: 'free' | 'pro';
|
|
247
|
+
timeLimitSeconds?: number;
|
|
248
|
+
questions: QBankExamQuestion[];
|
|
249
|
+
}
|
|
245
250
|
export interface QBankSubTopicParams {
|
|
246
251
|
header: {
|
|
247
252
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAE5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAG9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAGD,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7E,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACvD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9D,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE;QACT,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,gBAAgB,CAAC,EAAE,KAAK,CAAC;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,cAAc,CAAC,EAAE;QACf,UAAU,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAChD,QAAQ,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAC9C,UAAU,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAChD,gBAAgB,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACvD,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QACT,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;KACvC,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,KAAK,CAAC;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;IACxC,aAAa,CAAC,EAAE,aAAa,GAAG,QAAQ,GAAG,WAAW,CAAC;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC"}
|
package/package.json
CHANGED
|
@@ -9,18 +9,16 @@ import {
|
|
|
9
9
|
import { SafeAreaView } from 'react-native-safe-area-context';
|
|
10
10
|
import { useTheme } from '../../context/ThemeContext';
|
|
11
11
|
import { Typography, Icon, Button } from '../../components';
|
|
12
|
-
import type {
|
|
12
|
+
import type { QBankExamData, QBankExamOption } from '../../types';
|
|
13
13
|
|
|
14
14
|
interface QBankQuestionScreenProps {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
examData: QBankExamData;
|
|
16
|
+
onFinish?: (results: Record<string, string>) => void;
|
|
17
|
+
onQuestionAttempt?: (questionId: string, selectedOptionId: string) => void;
|
|
18
18
|
onBack?: () => void;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
onPressReport?: () => void;
|
|
23
|
-
onPressUsers?: () => void;
|
|
19
|
+
onPressReport?: (questionId: string) => void;
|
|
20
|
+
onPressUsers?: (questionId: string) => void;
|
|
21
|
+
isProUser?: boolean;
|
|
24
22
|
}
|
|
25
23
|
|
|
26
24
|
const formatTime = (totalSeconds: number) => {
|
|
@@ -30,22 +28,30 @@ const formatTime = (totalSeconds: number) => {
|
|
|
30
28
|
};
|
|
31
29
|
|
|
32
30
|
export const QBankQuestionScreen: React.FC<QBankQuestionScreenProps> = ({
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
examData,
|
|
32
|
+
onFinish,
|
|
33
|
+
onQuestionAttempt,
|
|
36
34
|
onBack,
|
|
37
|
-
onNext,
|
|
38
|
-
onPrev,
|
|
39
|
-
onPressOption,
|
|
40
35
|
onPressReport,
|
|
41
36
|
onPressUsers,
|
|
37
|
+
isProUser = false,
|
|
42
38
|
}) => {
|
|
43
39
|
const theme = useTheme();
|
|
44
|
-
const [
|
|
40
|
+
const [currentIndex, setCurrentIndex] = useState(0);
|
|
41
|
+
const [answers, setAnswers] = useState<Record<string, string>>({});
|
|
42
|
+
const [timeLeft, setTimeLeft] = useState(examData.timeLimitSeconds || 0);
|
|
43
|
+
|
|
44
|
+
const currentQuestion = examData.questions[currentIndex];
|
|
45
|
+
const totalQuestions = examData.questions.length;
|
|
46
|
+
const isAttempted = !!currentQuestion && !!answers[currentQuestion.id];
|
|
47
|
+
const selectedOptionId = currentQuestion ? answers[currentQuestion.id] : undefined;
|
|
48
|
+
const isLastQuestion = currentIndex === totalQuestions - 1;
|
|
45
49
|
|
|
46
50
|
useEffect(() => {
|
|
51
|
+
if (!examData.timeLimitSeconds) return;
|
|
52
|
+
|
|
47
53
|
if (timeLeft <= 0) {
|
|
48
|
-
|
|
54
|
+
onFinish?.(answers);
|
|
49
55
|
return;
|
|
50
56
|
}
|
|
51
57
|
|
|
@@ -54,42 +60,74 @@ export const QBankQuestionScreen: React.FC<QBankQuestionScreenProps> = ({
|
|
|
54
60
|
}, 1000);
|
|
55
61
|
|
|
56
62
|
return () => clearInterval(timer);
|
|
57
|
-
}, [timeLeft,
|
|
63
|
+
}, [timeLeft, examData.timeLimitSeconds, onFinish, answers]);
|
|
64
|
+
|
|
65
|
+
const handleOptionPress = (optionId: string) => {
|
|
66
|
+
if (!currentQuestion || isAttempted) return; // Prevent changing answer in Tutor mode
|
|
67
|
+
|
|
68
|
+
setAnswers((prev) => ({
|
|
69
|
+
...prev,
|
|
70
|
+
[currentQuestion.id]: optionId,
|
|
71
|
+
}));
|
|
72
|
+
|
|
73
|
+
onQuestionAttempt?.(currentQuestion.id, optionId);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const handleNextOrFinish = () => {
|
|
77
|
+
if (isLastQuestion) {
|
|
78
|
+
onFinish?.(answers);
|
|
79
|
+
} else {
|
|
80
|
+
setCurrentIndex((prev) => prev + 1);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const handlePrev = () => {
|
|
85
|
+
if (currentIndex > 0) {
|
|
86
|
+
setCurrentIndex((prev) => prev - 1);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
58
89
|
|
|
59
|
-
const progressPercentage = (
|
|
90
|
+
const progressPercentage = ((currentIndex + 1) / totalQuestions) * 100;
|
|
60
91
|
|
|
61
|
-
const renderOption = (option:
|
|
92
|
+
const renderOption = (option: QBankExamOption, index: number) => {
|
|
62
93
|
const letters = ['A', 'B', 'C', 'D', 'E', 'F'];
|
|
63
94
|
const letter = letters[index] || '';
|
|
64
95
|
|
|
65
|
-
let borderColor = '#E5E7EB';
|
|
96
|
+
let borderColor = '#E5E7EB';
|
|
66
97
|
let backgroundColor = '#FFFFFF';
|
|
67
98
|
let iconName: 'check-circle' | 'x-circle' | undefined;
|
|
68
99
|
let iconColor = theme.textSecondary;
|
|
69
100
|
let statusText = '';
|
|
70
101
|
let statusColor = '';
|
|
71
102
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
103
|
+
const isSelected = selectedOptionId === option.id;
|
|
104
|
+
|
|
105
|
+
if (isAttempted) {
|
|
106
|
+
if (option.isCorrect) {
|
|
107
|
+
borderColor = theme.success;
|
|
108
|
+
backgroundColor = '#F0FDF4';
|
|
109
|
+
iconName = 'check-circle';
|
|
110
|
+
iconColor = theme.success;
|
|
111
|
+
statusText = 'Correct';
|
|
112
|
+
statusColor = theme.success;
|
|
113
|
+
} else if (isSelected && !option.isCorrect) {
|
|
114
|
+
borderColor = '#EF4444';
|
|
115
|
+
backgroundColor = '#FEF2F2';
|
|
116
|
+
iconName = 'x-circle';
|
|
117
|
+
iconColor = '#EF4444';
|
|
118
|
+
statusText = 'InCorrect';
|
|
119
|
+
statusColor = '#EF4444';
|
|
120
|
+
}
|
|
121
|
+
} else if (isSelected) {
|
|
122
|
+
// Very brief state before it evaluates (if we ever want a delay), but here it evaluates instantly
|
|
123
|
+
borderColor = theme.primary;
|
|
86
124
|
}
|
|
87
125
|
|
|
88
126
|
return (
|
|
89
127
|
<TouchableOpacity
|
|
90
128
|
key={option.id}
|
|
91
129
|
style={[styles.optionContainer, { borderColor, backgroundColor }]}
|
|
92
|
-
onPress={() =>
|
|
130
|
+
onPress={() => handleOptionPress(option.id)}
|
|
93
131
|
activeOpacity={0.7}
|
|
94
132
|
>
|
|
95
133
|
<View style={styles.optionContent}>
|
|
@@ -102,12 +140,12 @@ export const QBankQuestionScreen: React.FC<QBankQuestionScreenProps> = ({
|
|
|
102
140
|
<Typography variant="body" color={theme.textPrimary} style={styles.optionText}>
|
|
103
141
|
{letter}. {option.text}
|
|
104
142
|
</Typography>
|
|
105
|
-
{
|
|
143
|
+
{isAttempted && statusText ? (
|
|
106
144
|
<Typography variant="caption" color={statusColor} style={styles.optionStatusText}>
|
|
107
|
-
{statusText} <Typography variant="caption" color={theme.textSecondary}>[{option.percentage}%]</Typography>
|
|
145
|
+
{statusText} {option.percentage !== undefined && <Typography variant="caption" color={theme.textSecondary}>[{option.percentage}%]</Typography>}
|
|
108
146
|
</Typography>
|
|
109
|
-
)}
|
|
110
|
-
{
|
|
147
|
+
) : null}
|
|
148
|
+
{!statusText && option.percentage !== undefined && isAttempted && (
|
|
111
149
|
<Typography variant="caption" color={theme.textSecondary} style={styles.optionStatusText}>
|
|
112
150
|
[{option.percentage}%]
|
|
113
151
|
</Typography>
|
|
@@ -118,27 +156,44 @@ export const QBankQuestionScreen: React.FC<QBankQuestionScreenProps> = ({
|
|
|
118
156
|
);
|
|
119
157
|
};
|
|
120
158
|
|
|
159
|
+
if (!currentQuestion) return null;
|
|
160
|
+
|
|
121
161
|
return (
|
|
122
|
-
<SafeAreaView style={[styles.container, { backgroundColor: '#
|
|
162
|
+
<SafeAreaView style={[styles.container, { backgroundColor: '#FFFFFF' }]} edges={['top', 'bottom']}>
|
|
123
163
|
<StatusBar barStyle="dark-content" backgroundColor="#FFFFFF" />
|
|
124
164
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
<
|
|
128
|
-
<
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
165
|
+
{/* Header */}
|
|
166
|
+
<View style={styles.header}>
|
|
167
|
+
<TouchableOpacity onPress={onBack} style={styles.headerIconBtnLeft}>
|
|
168
|
+
<Icon name="chevron-left" size={24} color={theme.textPrimary} />
|
|
169
|
+
</TouchableOpacity>
|
|
170
|
+
<Typography variant="h3" color={theme.textPrimary} style={styles.headerTitle}>
|
|
171
|
+
{examData.title}
|
|
172
|
+
</Typography>
|
|
173
|
+
<View style={styles.headerIconBtnRight}>
|
|
174
|
+
{examData.accessType === 'pro' && !isProUser && (
|
|
175
|
+
<View style={styles.proBadge}>
|
|
176
|
+
<Typography variant="caption" bold color="#FFFFFF" style={{fontSize: 8}}>
|
|
177
|
+
PRO
|
|
178
|
+
</Typography>
|
|
179
|
+
</View>
|
|
180
|
+
)}
|
|
181
|
+
{examData.accessType === 'free' && (
|
|
182
|
+
<View style={styles.freeBadge}>
|
|
183
|
+
<Typography variant="caption" bold color={theme.success} style={{fontSize: 8}}>
|
|
184
|
+
FREE
|
|
185
|
+
</Typography>
|
|
186
|
+
</View>
|
|
187
|
+
)}
|
|
135
188
|
</View>
|
|
189
|
+
</View>
|
|
136
190
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
191
|
+
{/* Progress Bar */}
|
|
192
|
+
<View style={styles.progressTrack}>
|
|
193
|
+
<View style={[styles.progressFill, { width: `${progressPercentage}%`, backgroundColor: theme.success }]} />
|
|
194
|
+
</View>
|
|
141
195
|
|
|
196
|
+
<View style={{ flex: 1, backgroundColor: '#F9FAFB' }}>
|
|
142
197
|
<ScrollView
|
|
143
198
|
contentContainerStyle={styles.scrollContent}
|
|
144
199
|
showsVerticalScrollIndicator={false}
|
|
@@ -146,73 +201,75 @@ export const QBankQuestionScreen: React.FC<QBankQuestionScreenProps> = ({
|
|
|
146
201
|
{/* Top Bar: Question Number & Timer */}
|
|
147
202
|
<View style={styles.topBar}>
|
|
148
203
|
<Typography variant="caption" bold color={theme.textSecondary} style={styles.questionNumber}>
|
|
149
|
-
QUESTION {
|
|
204
|
+
QUESTION {currentIndex + 1}/{totalQuestions}
|
|
150
205
|
</Typography>
|
|
151
|
-
|
|
152
|
-
<
|
|
153
|
-
|
|
154
|
-
{
|
|
155
|
-
|
|
156
|
-
|
|
206
|
+
{!!examData.timeLimitSeconds && (
|
|
207
|
+
<View style={styles.timerWrapper}>
|
|
208
|
+
<Icon name="clock" size={14} color={theme.textSecondary} />
|
|
209
|
+
<Typography variant="caption" color={theme.textSecondary} style={styles.timerText}>
|
|
210
|
+
{formatTime(timeLeft)}
|
|
211
|
+
</Typography>
|
|
212
|
+
</View>
|
|
213
|
+
)}
|
|
157
214
|
</View>
|
|
158
215
|
|
|
159
216
|
{/* Question Text */}
|
|
160
217
|
<Typography variant="h3" bold color={theme.textPrimary} style={styles.questionText}>
|
|
161
|
-
{
|
|
218
|
+
{currentQuestion.questionText}
|
|
162
219
|
</Typography>
|
|
163
220
|
|
|
164
221
|
{/* Options */}
|
|
165
222
|
<View style={styles.optionsList}>
|
|
166
|
-
{
|
|
223
|
+
{currentQuestion.options.map((option, index) => renderOption(option, index))}
|
|
167
224
|
</View>
|
|
168
225
|
|
|
169
|
-
{/* Explanation Section */}
|
|
170
|
-
{
|
|
226
|
+
{/* Explanation Section (Only shown if attempted) */}
|
|
227
|
+
{isAttempted && currentQuestion.explanation && (
|
|
171
228
|
<View style={styles.explanationContainer}>
|
|
172
229
|
<Typography variant="caption" bold color={theme.textPrimary} style={styles.explanationTitle}>
|
|
173
230
|
EXPLANATION
|
|
174
231
|
</Typography>
|
|
175
232
|
<Typography variant="body" color={theme.textSecondary} style={styles.explanationText}>
|
|
176
|
-
{
|
|
233
|
+
{currentQuestion.explanation}
|
|
177
234
|
</Typography>
|
|
178
235
|
|
|
179
|
-
{
|
|
236
|
+
{currentQuestion.referenceId && (
|
|
180
237
|
<View style={styles.referenceContainer}>
|
|
181
238
|
<Typography variant="caption" color={theme.textSecondary} style={styles.referenceText}>
|
|
182
|
-
{
|
|
239
|
+
{currentQuestion.referenceId}
|
|
183
240
|
</Typography>
|
|
184
241
|
</View>
|
|
185
242
|
)}
|
|
186
243
|
</View>
|
|
187
244
|
)}
|
|
188
245
|
</ScrollView>
|
|
246
|
+
</View>
|
|
189
247
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
</View>
|
|
248
|
+
{/* Bottom Actions */}
|
|
249
|
+
<View style={styles.bottomActions}>
|
|
250
|
+
<View style={styles.leftActions}>
|
|
251
|
+
<TouchableOpacity style={styles.iconAction} onPress={() => onPressReport?.(currentQuestion.id)}>
|
|
252
|
+
<Icon name="alert-circle" size={20} color={theme.textSecondary} />
|
|
253
|
+
</TouchableOpacity>
|
|
254
|
+
<TouchableOpacity style={styles.iconAction} onPress={() => onPressUsers?.(currentQuestion.id)}>
|
|
255
|
+
<Icon name="users" size={20} color={theme.textSecondary} />
|
|
256
|
+
</TouchableOpacity>
|
|
257
|
+
</View>
|
|
258
|
+
<View style={styles.rightActions}>
|
|
259
|
+
<TouchableOpacity style={[styles.prevBtn, currentIndex === 0 && { opacity: 0.5 }]} onPress={handlePrev} disabled={currentIndex === 0}>
|
|
260
|
+
<Typography variant="body" bold color={theme.textPrimary}>
|
|
261
|
+
Prev
|
|
262
|
+
</Typography>
|
|
263
|
+
</TouchableOpacity>
|
|
264
|
+
<Button
|
|
265
|
+
title={isLastQuestion ? "Finish" : "Next"}
|
|
266
|
+
onPress={handleNextOrFinish}
|
|
267
|
+
style={styles.nextBtn}
|
|
268
|
+
textStyle={styles.nextBtnText}
|
|
269
|
+
/>
|
|
213
270
|
</View>
|
|
214
|
-
|
|
215
271
|
</View>
|
|
272
|
+
|
|
216
273
|
</SafeAreaView>
|
|
217
274
|
);
|
|
218
275
|
};
|
|
@@ -220,18 +277,6 @@ export const QBankQuestionScreen: React.FC<QBankQuestionScreenProps> = ({
|
|
|
220
277
|
const styles = StyleSheet.create({
|
|
221
278
|
container: {
|
|
222
279
|
flex: 1,
|
|
223
|
-
padding: 16, // Gray margin around the card
|
|
224
|
-
},
|
|
225
|
-
card: {
|
|
226
|
-
flex: 1,
|
|
227
|
-
backgroundColor: '#FFFFFF',
|
|
228
|
-
borderRadius: 8,
|
|
229
|
-
overflow: 'hidden',
|
|
230
|
-
shadowColor: '#000',
|
|
231
|
-
shadowOffset: { width: 0, height: 2 },
|
|
232
|
-
shadowOpacity: 0.1,
|
|
233
|
-
shadowRadius: 4,
|
|
234
|
-
elevation: 4,
|
|
235
280
|
},
|
|
236
281
|
header: {
|
|
237
282
|
flexDirection: 'row',
|
|
@@ -245,10 +290,6 @@ const styles = StyleSheet.create({
|
|
|
245
290
|
justifyContent: 'center',
|
|
246
291
|
alignItems: 'flex-start',
|
|
247
292
|
},
|
|
248
|
-
headerRightActions: {
|
|
249
|
-
flexDirection: 'row',
|
|
250
|
-
alignItems: 'center',
|
|
251
|
-
},
|
|
252
293
|
headerIconBtnRight: {
|
|
253
294
|
width: 40,
|
|
254
295
|
height: 40,
|
|
@@ -261,6 +302,19 @@ const styles = StyleSheet.create({
|
|
|
261
302
|
flex: 1,
|
|
262
303
|
textAlign: 'center',
|
|
263
304
|
},
|
|
305
|
+
proBadge: {
|
|
306
|
+
paddingHorizontal: 6,
|
|
307
|
+
paddingVertical: 2,
|
|
308
|
+
borderRadius: 4,
|
|
309
|
+
backgroundColor: '#F59E0B',
|
|
310
|
+
},
|
|
311
|
+
freeBadge: {
|
|
312
|
+
paddingHorizontal: 6,
|
|
313
|
+
paddingVertical: 2,
|
|
314
|
+
borderRadius: 4,
|
|
315
|
+
borderWidth: 1,
|
|
316
|
+
borderColor: '#10B981',
|
|
317
|
+
},
|
|
264
318
|
progressTrack: {
|
|
265
319
|
height: 4,
|
|
266
320
|
backgroundColor: '#E5E7EB',
|
|
@@ -304,6 +358,7 @@ const styles = StyleSheet.create({
|
|
|
304
358
|
borderRadius: 8,
|
|
305
359
|
padding: 16,
|
|
306
360
|
marginBottom: 12,
|
|
361
|
+
backgroundColor: '#FFFFFF',
|
|
307
362
|
},
|
|
308
363
|
optionContent: {
|
|
309
364
|
flexDirection: 'row',
|
package/src/types/index.ts
CHANGED
|
@@ -239,23 +239,29 @@ export interface QBankSubTopicSection {
|
|
|
239
239
|
modules: QBankSubTopicModule[];
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
-
export interface
|
|
242
|
+
export interface QBankExamOption {
|
|
243
243
|
id: string;
|
|
244
244
|
text: string;
|
|
245
|
-
|
|
245
|
+
isCorrect: boolean;
|
|
246
246
|
percentage?: number; // e.g. 20 for [20%]
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
-
export interface
|
|
250
|
-
|
|
251
|
-
questionNumber: number;
|
|
252
|
-
totalQuestions: number;
|
|
249
|
+
export interface QBankExamQuestion {
|
|
250
|
+
id: string;
|
|
253
251
|
questionText: string;
|
|
254
|
-
options:
|
|
252
|
+
options: QBankExamOption[];
|
|
255
253
|
explanation?: string;
|
|
256
254
|
referenceId?: string;
|
|
257
255
|
}
|
|
258
256
|
|
|
257
|
+
export interface QBankExamData {
|
|
258
|
+
id: string;
|
|
259
|
+
title: string;
|
|
260
|
+
accessType: 'free' | 'pro';
|
|
261
|
+
timeLimitSeconds?: number;
|
|
262
|
+
questions: QBankExamQuestion[];
|
|
263
|
+
}
|
|
264
|
+
|
|
259
265
|
export interface QBankSubTopicParams {
|
|
260
266
|
header: {
|
|
261
267
|
title: string;
|