Skip to content

Commit c30ad9f

Browse files
added safeguard in answer analytics
1 parent 89b16d6 commit c30ad9f

1 file changed

Lines changed: 13 additions & 12 deletions

File tree

src/components/organisms/UnmoderatedTestAnalytics/GeneralAnalytics.vue

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
</v-card>
133133
</v-col>
134134
<v-col cols="6">
135-
<v-card class="pa-6 elevation-3 rounded-xl h-100 stat-card">
135+
<v-card v-if="testStructure?.userTasks && taskAnswers.length" class="pa-6 elevation-3 rounded-xl h-100 stat-card">
136136
<div class="d-flex align-center mb-4">
137137
<v-avatar
138138
color="error"
@@ -322,19 +322,19 @@ const formatTime = (time) => {
322322
};
323323
324324
const findLongestTask = () => {
325-
if (!taskAnswers.value.length) return { taskName: 'Task', averageTime: formatTime(0) };
325+
if (!taskAnswers.value.length) {
326+
return { taskName: 'Task', averageTime: formatTime(0) };
327+
}
326328
327329
const taskAverages = {};
328330
329331
taskAnswers.value.forEach((answer) => {
332+
if (!answer.tasks) return;
330333
for (const taskId in answer.tasks) {
331-
const taskTime = answer.tasks[taskId].taskTime;
334+
const taskTime = answer.tasks[taskId]?.taskTime ?? 0;
332335
333336
if (!taskAverages[taskId]) {
334-
taskAverages[taskId] = {
335-
totalTime: taskTime,
336-
count: 1,
337-
};
337+
taskAverages[taskId] = { totalTime: taskTime, count: 1 };
338338
} else {
339339
taskAverages[taskId].totalTime += taskTime;
340340
taskAverages[taskId].count++;
@@ -343,8 +343,7 @@ const findLongestTask = () => {
343343
});
344344
345345
for (const taskId in taskAverages) {
346-
const averageTime = taskAverages[taskId].totalTime / taskAverages[taskId].count;
347-
taskAverages[taskId].averageTime = averageTime;
346+
taskAverages[taskId].averageTime = taskAverages[taskId].totalTime / taskAverages[taskId].count;
348347
}
349348
350349
let longestTask = null;
@@ -358,9 +357,11 @@ const findLongestTask = () => {
358357
}
359358
360359
const taskMap = {};
361-
testStructure.value.userTasks.forEach((task) => {
362-
taskMap[task.taskId] = task;
363-
});
360+
if (testStructure.value && Array.isArray(testStructure.value.userTasks)) {
361+
testStructure.value.userTasks.forEach((task) => {
362+
taskMap[task.taskId] = task;
363+
});
364+
}
364365
365366
return {
366367
taskName: taskMap[longestTask]?.taskName || 'Task',

0 commit comments

Comments
 (0)