@speakableio/core 0.1.103 → 0.1.106
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/analytics.js +25 -329
- package/dist/analytics.js.map +1 -1
- package/dist/{assignment.model-Lu21tZCh.d.mts → assignment.model-DLMWAp0Y.d.ts} +1 -1
- package/dist/chunk-233VJDUF.js +149 -0
- package/dist/chunk-233VJDUF.js.map +1 -0
- package/dist/chunk-2CRI5MJP.js +225 -0
- package/dist/chunk-2CRI5MJP.js.map +1 -0
- package/dist/chunk-AWVUNWML.js +141 -0
- package/dist/chunk-AWVUNWML.js.map +1 -0
- package/dist/chunk-CJ5JXKII.js +129 -0
- package/dist/chunk-CJ5JXKII.js.map +1 -0
- package/dist/chunk-EEBMPASA.js +21 -0
- package/dist/chunk-EEBMPASA.js.map +1 -0
- package/dist/chunk-H5XNOXRC.js +11 -0
- package/dist/chunk-H5XNOXRC.js.map +1 -0
- package/dist/chunk-LZG3MTSH.js +53 -0
- package/dist/chunk-LZG3MTSH.js.map +1 -0
- package/dist/chunk-OLSTHM2U.js +154 -0
- package/dist/chunk-OLSTHM2U.js.map +1 -0
- package/dist/chunk-TQGDTKTE.js +13 -0
- package/dist/chunk-TQGDTKTE.js.map +1 -0
- package/dist/chunk-YKUMIPSO.js +212 -0
- package/dist/chunk-YKUMIPSO.js.map +1 -0
- package/dist/chunk-YMJRCINF.js +68 -0
- package/dist/chunk-YMJRCINF.js.map +1 -0
- package/dist/chunk-YO34TZYN.js +28 -0
- package/dist/chunk-YO34TZYN.js.map +1 -0
- package/dist/const.d.ts +331 -0
- package/dist/const.js +170 -162
- package/dist/const.js.map +1 -1
- package/dist/{hooks.d.mts → hooks.d.ts} +5 -5
- package/dist/hooks.js +35 -591
- package/dist/hooks.js.map +1 -1
- package/dist/index.native.js +52 -64
- package/dist/index.native.js.map +1 -1
- package/dist/{index.web.d.mts → index.web.d.ts} +3 -3
- package/dist/index.web.js +12 -427
- package/dist/index.web.js.map +1 -1
- package/dist/{models.d.mts → models.d.ts} +3 -3
- package/dist/models.js +8 -43
- package/dist/models.js.map +1 -1
- package/dist/{notification.constants-B72fb734.d.mts → notification.constants-Da4-_0kX.d.ts} +1 -1
- package/dist/{repos.d.mts → repos.d.ts} +4 -4
- package/dist/repos.js +13 -440
- package/dist/repos.js.map +1 -1
- package/dist/{utils.d.mts → utils.d.ts} +2 -2
- package/dist/utils.js +14 -174
- package/dist/utils.js.map +1 -1
- package/package.json +21 -25
- package/dist/assignment.model-Bcbxx8oI.d.mts +0 -299
- package/dist/const.d.mts +0 -26
- package/dist/index.native.d.mts +0 -591
- package/dist/index.native.mjs +0 -505
- package/dist/index.native.mjs.map +0 -1
- /package/dist/{analytics.d.mts → analytics.d.ts} +0 -0
- /package/dist/{assignment.constants-BIKM6fYi.d.mts → assignment.constants-BIKM6fYi.d.ts} +0 -0
- /package/dist/{card.constants-DhKFipX3.d.mts → card.constants-DhKFipX3.d.ts} +0 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createCard,
|
|
3
|
+
createCards,
|
|
4
|
+
getCard,
|
|
5
|
+
withErrorHandler
|
|
6
|
+
} from "./chunk-233VJDUF.js";
|
|
7
|
+
import {
|
|
8
|
+
ASSIGNMENT_ANALYTICS_TYPES,
|
|
9
|
+
refsAssignmentFiresotre
|
|
10
|
+
} from "./chunk-AWVUNWML.js";
|
|
11
|
+
import {
|
|
12
|
+
checkAssignmentAvailability
|
|
13
|
+
} from "./chunk-TQGDTKTE.js";
|
|
14
|
+
import {
|
|
15
|
+
api
|
|
16
|
+
} from "./chunk-CJ5JXKII.js";
|
|
17
|
+
|
|
18
|
+
// src/domains/assignment/services/get-assignments-score.service.ts
|
|
19
|
+
var _getAssignmentScores = async ({
|
|
20
|
+
assignmentId,
|
|
21
|
+
analyticType = "macro" /* Macro */,
|
|
22
|
+
studentId,
|
|
23
|
+
currentUserId
|
|
24
|
+
}) => {
|
|
25
|
+
if (analyticType === "student" /* Student */) {
|
|
26
|
+
const path = refsAssignmentFiresotre.assignmentScores({
|
|
27
|
+
id: assignmentId,
|
|
28
|
+
userId: currentUserId
|
|
29
|
+
});
|
|
30
|
+
const response = await api.getDoc(path);
|
|
31
|
+
return { scores: response.data, id: assignmentId };
|
|
32
|
+
}
|
|
33
|
+
if (analyticType === "student_summary" /* StudentSummary */ && studentId) {
|
|
34
|
+
const path = refsAssignmentFiresotre.assignmentScores({
|
|
35
|
+
id: assignmentId,
|
|
36
|
+
userId: studentId
|
|
37
|
+
});
|
|
38
|
+
const response = await api.getDoc(path);
|
|
39
|
+
return { scores: response.data, id: assignmentId };
|
|
40
|
+
}
|
|
41
|
+
if (analyticType !== "all" /* All */ && ASSIGNMENT_ANALYTICS_TYPES.includes(analyticType)) {
|
|
42
|
+
const ref = refsAssignmentFiresotre.assignmentAnalytics({
|
|
43
|
+
id: assignmentId,
|
|
44
|
+
type: analyticType
|
|
45
|
+
});
|
|
46
|
+
const docData = await api.getDoc(ref);
|
|
47
|
+
return { scores: docData.data, id: assignmentId };
|
|
48
|
+
} else if (analyticType === "all" /* All */) {
|
|
49
|
+
const ref = refsAssignmentFiresotre.assignmentAllAnalytics({ id: assignmentId });
|
|
50
|
+
const response = await api.getDocs(ref);
|
|
51
|
+
const data = response.data.reduce((acc, curr) => {
|
|
52
|
+
acc[curr.id] = curr;
|
|
53
|
+
return acc;
|
|
54
|
+
}, {});
|
|
55
|
+
return { scores: data, id: assignmentId };
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
var getAssignmentScores = withErrorHandler(_getAssignmentScores, "getAssignmentScores");
|
|
59
|
+
|
|
60
|
+
// src/domains/assignment/services/attach-score-assignment.service.ts
|
|
61
|
+
var _attachScoresAssignment = async ({
|
|
62
|
+
assignments,
|
|
63
|
+
analyticType,
|
|
64
|
+
studentId,
|
|
65
|
+
currentUserId
|
|
66
|
+
}) => {
|
|
67
|
+
const scoresPromises = assignments.map((a) => {
|
|
68
|
+
return getAssignmentScores({
|
|
69
|
+
assignmentId: a.id,
|
|
70
|
+
analyticType,
|
|
71
|
+
studentId,
|
|
72
|
+
currentUserId
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
const scores = await Promise.all(scoresPromises);
|
|
76
|
+
const scoresObject = scores.reduce((acc, curr) => {
|
|
77
|
+
acc[curr.id] = curr.scores;
|
|
78
|
+
return acc;
|
|
79
|
+
}, {});
|
|
80
|
+
const assignmentsWithScores = assignments.map((a) => {
|
|
81
|
+
var _a;
|
|
82
|
+
return {
|
|
83
|
+
...a,
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/ban-ts-comment
|
|
85
|
+
// @ts-ignore
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
87
|
+
scores: (_a = scoresObject[a.id]) != null ? _a : null
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
return assignmentsWithScores;
|
|
91
|
+
};
|
|
92
|
+
var attachScoresAssignment = withErrorHandler(
|
|
93
|
+
_attachScoresAssignment,
|
|
94
|
+
"attachScoresAssignment"
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
// src/domains/assignment/services/get-all-assignment.service.ts
|
|
98
|
+
async function _getAllAssignments() {
|
|
99
|
+
const path = refsAssignmentFiresotre.allAssignments();
|
|
100
|
+
const response = await api.getDocs(path);
|
|
101
|
+
return response.data;
|
|
102
|
+
}
|
|
103
|
+
var getAllAssignments = withErrorHandler(_getAllAssignments, "getAllAssignments");
|
|
104
|
+
|
|
105
|
+
// src/domains/assignment/services/get-assignment.service.ts
|
|
106
|
+
async function _getAssignment(params) {
|
|
107
|
+
var _a;
|
|
108
|
+
const path = refsAssignmentFiresotre.assignment({ id: params.assignmentId });
|
|
109
|
+
const response = await api.getDoc(path);
|
|
110
|
+
if (!response.data) return null;
|
|
111
|
+
const assignment = response.data;
|
|
112
|
+
const isAvailable = checkAssignmentAvailability(assignment.scheduledTime);
|
|
113
|
+
const assignmentWithId = {
|
|
114
|
+
...assignment,
|
|
115
|
+
isAvailable,
|
|
116
|
+
id: params.assignmentId,
|
|
117
|
+
scheduledTime: (_a = assignment.scheduledTime) != null ? _a : null
|
|
118
|
+
};
|
|
119
|
+
if (params.analyticType) {
|
|
120
|
+
const assignmentsWithScores = await attachScoresAssignment({
|
|
121
|
+
assignments: [assignmentWithId],
|
|
122
|
+
analyticType: params.analyticType,
|
|
123
|
+
currentUserId: params.currentUserId
|
|
124
|
+
});
|
|
125
|
+
return assignmentsWithScores.length > 0 ? assignmentsWithScores[0] : assignmentWithId;
|
|
126
|
+
}
|
|
127
|
+
return assignmentWithId;
|
|
128
|
+
}
|
|
129
|
+
var getAssignment = withErrorHandler(_getAssignment, "getAssignment");
|
|
130
|
+
|
|
131
|
+
// src/domains/assignment/assignment.repo.ts
|
|
132
|
+
var createAssignmentRepo = () => {
|
|
133
|
+
return {
|
|
134
|
+
getAssignment,
|
|
135
|
+
attachScoresAssignment,
|
|
136
|
+
getAssignmentScores,
|
|
137
|
+
getAllAssignments
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
// src/domains/cards/card.repo.ts
|
|
142
|
+
var createCardRepo = () => {
|
|
143
|
+
return {
|
|
144
|
+
createCard,
|
|
145
|
+
createCards,
|
|
146
|
+
getCard
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
export {
|
|
151
|
+
createAssignmentRepo,
|
|
152
|
+
createCardRepo
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=chunk-OLSTHM2U.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/domains/assignment/services/get-assignments-score.service.ts","../src/domains/assignment/services/attach-score-assignment.service.ts","../src/domains/assignment/services/get-all-assignment.service.ts","../src/domains/assignment/services/get-assignment.service.ts","../src/domains/assignment/assignment.repo.ts","../src/domains/cards/card.repo.ts"],"sourcesContent":["import { api } from '@core/lib/firebase/api'\nimport { withErrorHandler } from '@core/utils/error-handler'\n\nimport {\n ASSIGNMENT_ANALYTICS_TYPES,\n AssignmentAnalyticsType,\n refsAssignmentFiresotre,\n} from '../assignment.constants'\n\nconst _getAssignmentScores = async ({\n assignmentId,\n analyticType = AssignmentAnalyticsType.Macro,\n studentId,\n currentUserId,\n}: {\n assignmentId: string\n currentUserId: string\n analyticType?: AssignmentAnalyticsType\n studentId?: string\n}) => {\n if (analyticType === AssignmentAnalyticsType.Student) {\n const path = refsAssignmentFiresotre.assignmentScores({\n id: assignmentId,\n userId: currentUserId,\n })\n const response = await api.getDoc(path)\n\n return { scores: response.data, id: assignmentId }\n }\n\n if (analyticType === AssignmentAnalyticsType.StudentSummary && studentId) {\n const path = refsAssignmentFiresotre.assignmentScores({\n id: assignmentId,\n userId: studentId,\n })\n const response = await api.getDoc(path)\n\n return { scores: response.data, id: assignmentId }\n }\n\n if (\n analyticType !== AssignmentAnalyticsType.All &&\n ASSIGNMENT_ANALYTICS_TYPES.includes(analyticType)\n ) {\n const ref = refsAssignmentFiresotre.assignmentAnalytics({\n id: assignmentId,\n type: analyticType,\n })\n\n const docData = await api.getDoc(ref)\n\n return { scores: docData.data, id: assignmentId }\n } else if (analyticType === AssignmentAnalyticsType.All) {\n const ref = refsAssignmentFiresotre.assignmentAllAnalytics({ id: assignmentId })\n\n const response = await api.getDocs(ref)\n const data = response.data.reduce((acc, curr) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n acc[curr.id] = curr\n\n return acc\n }, {})\n\n return { scores: data, id: assignmentId }\n }\n}\n\nexport const getAssignmentScores = withErrorHandler(_getAssignmentScores, 'getAssignmentScores')\n","import { withErrorHandler } from '@core/utils/error-handler'\n\nimport { type AssignmentAnalyticsType } from '../assignment.constants'\nimport { type AssignmentWithId } from '../assignment.model'\n\nimport { getAssignmentScores } from './get-assignments-score.service'\n\nconst _attachScoresAssignment = async ({\n assignments,\n analyticType,\n studentId,\n currentUserId,\n}: {\n assignments: AssignmentWithId[]\n analyticType: AssignmentAnalyticsType\n studentId?: string\n currentUserId: string\n}) => {\n const scoresPromises = assignments.map(a => {\n return getAssignmentScores({\n assignmentId: a.id,\n analyticType: analyticType,\n studentId,\n currentUserId,\n })\n })\n const scores = await Promise.all(scoresPromises)\n\n const scoresObject = scores.reduce((acc, curr) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n acc[curr.id] = curr.scores\n\n return acc\n }, {})\n const assignmentsWithScores = assignments.map(a => {\n return {\n ...a,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n scores: scoresObject[a.id] ?? null,\n }\n })\n\n return assignmentsWithScores\n}\n\nexport const attachScoresAssignment = withErrorHandler(\n _attachScoresAssignment,\n 'attachScoresAssignment',\n)\n","import { api } from '@core/lib/firebase/api'\nimport { withErrorHandler } from '@core/utils/error-handler'\n\nimport { refsAssignmentFiresotre } from '../assignment.constants'\nimport { type AssignmentWithId } from '../assignment.model'\n\nexport async function _getAllAssignments() {\n const path = refsAssignmentFiresotre.allAssignments()\n const response = await api.getDocs<AssignmentWithId>(path)\n\n return response.data\n}\n\nexport const getAllAssignments = withErrorHandler(_getAllAssignments, 'getAllAssignments')\n","import { api } from '@core/lib/firebase/api'\nimport { withErrorHandler } from '@core/utils/error-handler'\n\nimport { type AssignmentWithId } from '../assignment.model'\nimport { type AssignmentAnalyticsType, refsAssignmentFiresotre } from '../assignment.constants'\nimport { checkAssignmentAvailability } from '../utils/check-assignment-availability'\n\nimport { attachScoresAssignment } from './attach-score-assignment.service'\n\nasync function _getAssignment(params: {\n assignmentId: string\n currentUserId: string\n analyticType?: AssignmentAnalyticsType\n studentId?: string\n}) {\n const path = refsAssignmentFiresotre.assignment({ id: params.assignmentId })\n const response = await api.getDoc<AssignmentWithId>(path)\n\n if (!response.data) return null\n\n const assignment = response.data\n\n const isAvailable = checkAssignmentAvailability(assignment.scheduledTime)\n\n const assignmentWithId: AssignmentWithId = {\n ...assignment,\n isAvailable,\n id: params.assignmentId,\n scheduledTime: assignment.scheduledTime ?? null,\n }\n\n if (params.analyticType) {\n const assignmentsWithScores = await attachScoresAssignment({\n assignments: [assignmentWithId],\n analyticType: params.analyticType,\n currentUserId: params.currentUserId,\n })\n\n return assignmentsWithScores.length > 0 ? assignmentsWithScores[0] : assignmentWithId\n }\n\n return assignmentWithId\n}\n\nexport const getAssignment = withErrorHandler(_getAssignment, 'getAssignment')\n","import { attachScoresAssignment } from './services/attach-score-assignment.service'\nimport { getAllAssignments } from './services/get-all-assignment.service'\nimport { getAssignment } from './services/get-assignment.service'\nimport { getAssignmentScores } from './services/get-assignments-score.service'\n\nexport const createAssignmentRepo = () => {\n return {\n getAssignment: getAssignment,\n attachScoresAssignment: attachScoresAssignment,\n getAssignmentScores: getAssignmentScores,\n getAllAssignments: getAllAssignments,\n }\n}\n","import { createCards } from './services/create-card.service'\nimport { createCard } from './services/create-card.service'\nimport { getCard } from './services/get-card.service'\n\nexport const createCardRepo = () => {\n return {\n createCard: createCard,\n createCards: createCards,\n getCard: getCard,\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// src/domains/assignment/utils/check-assignment-availability.ts
|
|
2
|
+
import dayjs from "dayjs";
|
|
3
|
+
var checkAssignmentAvailability = (scheduledTime) => {
|
|
4
|
+
if (!scheduledTime) return true;
|
|
5
|
+
const scheduledDate = typeof scheduledTime === "string" ? dayjs(scheduledTime) : dayjs(scheduledTime.toDate());
|
|
6
|
+
if (!scheduledDate.isValid()) return true;
|
|
7
|
+
return dayjs().isAfter(scheduledDate);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export {
|
|
11
|
+
checkAssignmentAvailability
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=chunk-TQGDTKTE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/domains/assignment/utils/check-assignment-availability.ts"],"sourcesContent":["import { type CustomTimestamp } from '@core/types/firebase.types'\nimport dayjs from 'dayjs'\n\nexport const checkAssignmentAvailability = (\n scheduledTime: string | CustomTimestamp | null | undefined,\n) => {\n if (!scheduledTime) return true\n\n const scheduledDate =\n typeof scheduledTime === 'string' ? dayjs(scheduledTime) : dayjs(scheduledTime.toDate())\n\n if (!scheduledDate.isValid()) return true\n\n return dayjs().isAfter(scheduledDate)\n}\n"],"mappings":";AACA,OAAO,WAAW;AAEX,IAAM,8BAA8B,CACzC,kBACG;AACH,MAAI,CAAC,cAAe,QAAO;AAE3B,QAAM,gBACJ,OAAO,kBAAkB,WAAW,MAAM,aAAa,IAAI,MAAM,cAAc,OAAO,CAAC;AAEzF,MAAI,CAAC,cAAc,QAAQ,EAAG,QAAO;AAErC,SAAO,MAAM,EAAE,QAAQ,aAAa;AACtC;","names":[]}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ANALYTICS_EVENT_TYPES
|
|
3
|
+
} from "./chunk-YO34TZYN.js";
|
|
4
|
+
import {
|
|
5
|
+
api
|
|
6
|
+
} from "./chunk-CJ5JXKII.js";
|
|
7
|
+
|
|
8
|
+
// src/lib/firebase/firebase-analytics/grading-standard.ts
|
|
9
|
+
var logGradingStandardLog = (data) => {
|
|
10
|
+
var _a, _b, _c;
|
|
11
|
+
if (data.courseId && data.type && data.level) {
|
|
12
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, "handleCouresAnalyticsEvent")) == null ? void 0 : _c({
|
|
13
|
+
eventType: data.type || "custom",
|
|
14
|
+
level: data.level,
|
|
15
|
+
courseId: data.courseId
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
api.logEvent("logGradingStandard", data);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// src/lib/firebase/firebase-analytics/assignment.ts
|
|
22
|
+
var logOpenAssignment = (data = {}) => {
|
|
23
|
+
api.logEvent("open_assignment", data);
|
|
24
|
+
};
|
|
25
|
+
var logOpenActivityPreview = (data = {}) => {
|
|
26
|
+
api.logEvent("open_activity_preview", data);
|
|
27
|
+
};
|
|
28
|
+
var logSubmitAssignment = (data = {}) => {
|
|
29
|
+
var _a, _b, _c;
|
|
30
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, "handleCouresAnalyticsEvent")) == null ? void 0 : _c({
|
|
31
|
+
eventType: ANALYTICS_EVENT_TYPES.SUBMISSION,
|
|
32
|
+
...data
|
|
33
|
+
});
|
|
34
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.SUBMISSION, data);
|
|
35
|
+
};
|
|
36
|
+
var logCreateAssignment = (data = {}) => {
|
|
37
|
+
var _a, _b, _c;
|
|
38
|
+
if (data.courseId) {
|
|
39
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, "handleCouresAnalyticsEvent")) == null ? void 0 : _c({
|
|
40
|
+
eventType: ANALYTICS_EVENT_TYPES.CREATE_ASSIGNMENT,
|
|
41
|
+
...data
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.CREATE_ASSIGNMENT, data);
|
|
45
|
+
};
|
|
46
|
+
var logStartAssignment = (data = {}) => {
|
|
47
|
+
var _a, _b, _c;
|
|
48
|
+
if (data.courseId) {
|
|
49
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, "handleCouresAnalyticsEvent")) == null ? void 0 : _c({
|
|
50
|
+
eventType: ANALYTICS_EVENT_TYPES.ASSIGNMENT_STARTED,
|
|
51
|
+
...data
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.ASSIGNMENT_STARTED, data);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// src/lib/firebase/firebase-analytics/page-analytics.ts
|
|
58
|
+
var HANDLE_COURSE_ANALYTICS_EVENT = "handleCouresAnalyticsEvent";
|
|
59
|
+
var logRepeatSuccess = (data = {}) => {
|
|
60
|
+
var _a, _b, _c;
|
|
61
|
+
if (data.courseId) {
|
|
62
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
|
|
63
|
+
eventType: ANALYTICS_EVENT_TYPES.VOICE_SUCCESS,
|
|
64
|
+
...data,
|
|
65
|
+
courseId: data.courseId
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.VOICE_SUCCESS, data);
|
|
69
|
+
};
|
|
70
|
+
var logRepeatFail = (data = {}) => {
|
|
71
|
+
var _a, _b, _c;
|
|
72
|
+
if (data.courseId) {
|
|
73
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
|
|
74
|
+
eventType: ANALYTICS_EVENT_TYPES.VOICE_FAIL,
|
|
75
|
+
...data,
|
|
76
|
+
courseId: data.courseId
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.VOICE_FAIL, data);
|
|
80
|
+
};
|
|
81
|
+
var logRespondSuccess = (data) => {
|
|
82
|
+
var _a, _b, _c;
|
|
83
|
+
if (data.courseId) {
|
|
84
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
|
|
85
|
+
eventType: ANALYTICS_EVENT_TYPES.RESPOND_CARD_SUCCESS,
|
|
86
|
+
...data,
|
|
87
|
+
courseId: data.courseId
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_SUCCESS, data);
|
|
91
|
+
};
|
|
92
|
+
var logRespondFail = (data) => {
|
|
93
|
+
var _a, _b, _c;
|
|
94
|
+
if (data.courseId) {
|
|
95
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
|
|
96
|
+
eventType: ANALYTICS_EVENT_TYPES.RESPOND_CARD_FAIL,
|
|
97
|
+
...data,
|
|
98
|
+
courseId: data.courseId
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_FAIL, data);
|
|
102
|
+
};
|
|
103
|
+
var logRespondSubmitted = (data) => {
|
|
104
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_SUBMITTED, data);
|
|
105
|
+
};
|
|
106
|
+
var logRespondError = (errorDetails) => {
|
|
107
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_ERROR, {
|
|
108
|
+
errorDetails
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
var logWrittenResponseSuccess = (data) => {
|
|
112
|
+
var _a, _b, _c;
|
|
113
|
+
if (data.courseId) {
|
|
114
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
|
|
115
|
+
eventType: ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_SUCCESS,
|
|
116
|
+
...data,
|
|
117
|
+
courseId: data.courseId
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_SUCCESS, data);
|
|
121
|
+
};
|
|
122
|
+
var logWrittenResponseFail = (data) => {
|
|
123
|
+
var _a, _b, _c;
|
|
124
|
+
if (data.courseId) {
|
|
125
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
|
|
126
|
+
eventType: ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_FAIL,
|
|
127
|
+
...data,
|
|
128
|
+
courseId: data.courseId
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_FAIL, data);
|
|
132
|
+
};
|
|
133
|
+
var logWrittenResponseSubmitted = (data = {}) => {
|
|
134
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_SUBMITTED, data);
|
|
135
|
+
};
|
|
136
|
+
var logWrittenResponseError = (errorDetails) => {
|
|
137
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_ERROR, {
|
|
138
|
+
errorDetails
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
var logFreePlanRespond = (data) => {
|
|
142
|
+
var _a, _b, _c;
|
|
143
|
+
if (data.courseId) {
|
|
144
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
|
|
145
|
+
eventType: ANALYTICS_EVENT_TYPES.RESPOND_FREE_PLAN,
|
|
146
|
+
...data,
|
|
147
|
+
courseId: data.courseId
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_FREE_PLAN, data);
|
|
151
|
+
};
|
|
152
|
+
var logFreePlanWrittenResponse = (data) => {
|
|
153
|
+
var _a, _b, _c;
|
|
154
|
+
if (data.courseId) {
|
|
155
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
|
|
156
|
+
eventType: ANALYTICS_EVENT_TYPES.RESPOND_WRITE_FREE_PLAN,
|
|
157
|
+
...data,
|
|
158
|
+
courseId: data.courseId
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_FREE_PLAN, data);
|
|
162
|
+
};
|
|
163
|
+
var logMultipleChoiceSuccess = (data) => {
|
|
164
|
+
var _a, _b, _c;
|
|
165
|
+
if (data.courseId) {
|
|
166
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
|
|
167
|
+
eventType: ANALYTICS_EVENT_TYPES.MC_SUCCESS,
|
|
168
|
+
courseId: data.courseId
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.MC_SUCCESS, data);
|
|
172
|
+
};
|
|
173
|
+
var logMultipleChoiceFail = (data) => {
|
|
174
|
+
var _a, _b, _c;
|
|
175
|
+
if (data.courseId) {
|
|
176
|
+
(_c = (_b = (_a = api).httpsCallable) == null ? void 0 : _b.call(_a, HANDLE_COURSE_ANALYTICS_EVENT)) == null ? void 0 : _c({
|
|
177
|
+
eventType: ANALYTICS_EVENT_TYPES.MC_FAIL,
|
|
178
|
+
courseId: data.courseId
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.MC_FAIL, data);
|
|
182
|
+
};
|
|
183
|
+
var logMultipleChoiceError = (errorDetails) => {
|
|
184
|
+
api.logEvent(ANALYTICS_EVENT_TYPES.MC_ERROR, {
|
|
185
|
+
errorDetails
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
export {
|
|
190
|
+
logGradingStandardLog,
|
|
191
|
+
logOpenAssignment,
|
|
192
|
+
logOpenActivityPreview,
|
|
193
|
+
logSubmitAssignment,
|
|
194
|
+
logCreateAssignment,
|
|
195
|
+
logStartAssignment,
|
|
196
|
+
logRepeatSuccess,
|
|
197
|
+
logRepeatFail,
|
|
198
|
+
logRespondSuccess,
|
|
199
|
+
logRespondFail,
|
|
200
|
+
logRespondSubmitted,
|
|
201
|
+
logRespondError,
|
|
202
|
+
logWrittenResponseSuccess,
|
|
203
|
+
logWrittenResponseFail,
|
|
204
|
+
logWrittenResponseSubmitted,
|
|
205
|
+
logWrittenResponseError,
|
|
206
|
+
logFreePlanRespond,
|
|
207
|
+
logFreePlanWrittenResponse,
|
|
208
|
+
logMultipleChoiceSuccess,
|
|
209
|
+
logMultipleChoiceFail,
|
|
210
|
+
logMultipleChoiceError
|
|
211
|
+
};
|
|
212
|
+
//# sourceMappingURL=chunk-YKUMIPSO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/firebase/firebase-analytics/grading-standard.ts","../src/lib/firebase/firebase-analytics/assignment.ts","../src/lib/firebase/firebase-analytics/page-analytics.ts"],"sourcesContent":["import { type GradingStandard } from '@core/services/add-grading-standard'\n\nimport { api } from '../api'\n\nexport const logGradingStandardLog = (data: {\n type: GradingStandard['type']\n level?: GradingStandard['level']\n courseId?: GradingStandard['courseId']\n}) => {\n if (data.courseId && data.type && data.level) {\n api.httpsCallable?.('handleCouresAnalyticsEvent')?.({\n eventType: data.type || 'custom',\n level: data.level,\n courseId: data.courseId,\n })\n }\n api.logEvent('logGradingStandard', data)\n}\n","import { ANALYTICS_EVENT_TYPES } from '@core/constants/analytics.constants'\n\nimport { api } from '../api'\n\nexport const logOpenAssignment = (data = {}) => {\n api.logEvent('open_assignment', data)\n}\n\nexport const logOpenActivityPreview = (data = {}) => {\n api.logEvent('open_activity_preview', data)\n}\n\nexport const logSubmitAssignment = (data = {}) => {\n api.httpsCallable?.('handleCouresAnalyticsEvent')?.({\n eventType: ANALYTICS_EVENT_TYPES.SUBMISSION,\n ...data,\n })\n api.logEvent(ANALYTICS_EVENT_TYPES.SUBMISSION, data)\n}\n\nexport const logCreateAssignment = (data = {}) => {\n // @ts-ignore\n if (data.courseId) {\n api.httpsCallable?.('handleCouresAnalyticsEvent')?.({\n eventType: ANALYTICS_EVENT_TYPES.CREATE_ASSIGNMENT,\n ...data,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.CREATE_ASSIGNMENT, data)\n}\n\nexport const logStartAssignment = (data = {}) => {\n // @ts-ignore\n if (data.courseId) {\n api.httpsCallable?.('handleCouresAnalyticsEvent')?.({\n eventType: ANALYTICS_EVENT_TYPES.ASSIGNMENT_STARTED,\n ...data,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.ASSIGNMENT_STARTED, data)\n}\n","import { ANALYTICS_EVENT_TYPES } from '@core/constants/analytics.constants'\n\nimport { api } from '../api'\n\nconst HANDLE_COURSE_ANALYTICS_EVENT = 'handleCouresAnalyticsEvent'\n\nexport const logRepeatSuccess = (\n data: {\n courseId?: string\n [key: string]: any\n } = {},\n) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.VOICE_SUCCESS,\n ...data,\n courseId: data.courseId,\n })\n }\n\n api.logEvent(ANALYTICS_EVENT_TYPES.VOICE_SUCCESS, data)\n}\n\nexport const logRepeatFail = (\n data: {\n courseId?: string\n [key: string]: any\n } = {},\n) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.VOICE_FAIL,\n ...data,\n courseId: data.courseId,\n })\n }\n\n api.logEvent(ANALYTICS_EVENT_TYPES.VOICE_FAIL, data)\n}\n\nexport const logRespondSuccess = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.RESPOND_CARD_SUCCESS,\n ...data,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_SUCCESS, data)\n}\n\nexport const logRespondFail = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.RESPOND_CARD_FAIL,\n ...data,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_FAIL, data)\n}\n\nexport const logRespondSubmitted = (data: { courseId?: string; [key: string]: any }) => {\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_SUBMITTED, data)\n}\n\nexport const logRespondError = (errorDetails: { courseId?: string; [key: string]: any }) => {\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_CARD_ERROR, {\n errorDetails,\n })\n}\n\nexport const logWrittenResponseSuccess = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_SUCCESS,\n ...data,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_SUCCESS, data)\n}\n\nexport const logWrittenResponseFail = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_FAIL,\n ...data,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_FAIL, data)\n}\n\nexport const logWrittenResponseSubmitted = (data = {}) => {\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_SUBMITTED, data)\n}\n\nexport const logWrittenResponseError = (errorDetails: Record<string, unknown>) => {\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_CARD_ERROR, {\n errorDetails,\n })\n}\n\nexport const logFreePlanRespond = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.RESPOND_FREE_PLAN,\n ...data,\n courseId: data.courseId,\n })\n }\n\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_FREE_PLAN, data)\n}\n\nexport const logFreePlanWrittenResponse = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.RESPOND_WRITE_FREE_PLAN,\n ...data,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.RESPOND_WRITE_FREE_PLAN, data)\n}\n\nexport const logMultipleChoiceSuccess = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.MC_SUCCESS,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.MC_SUCCESS, data)\n}\n\nexport const logMultipleChoiceFail = (data: { courseId?: string; [key: string]: any }) => {\n if (data.courseId) {\n api.httpsCallable?.(HANDLE_COURSE_ANALYTICS_EVENT)?.({\n eventType: ANALYTICS_EVENT_TYPES.MC_FAIL,\n courseId: data.courseId,\n })\n }\n api.logEvent(ANALYTICS_EVENT_TYPES.MC_FAIL, data)\n}\n\nexport const logMultipleChoiceError = (errorDetails: { courseId?: string; [key: string]: any }) => {\n api.logEvent(ANALYTICS_EVENT_TYPES.MC_ERROR, {\n errorDetails,\n })\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import {
|
|
2
|
+
api
|
|
3
|
+
} from "./chunk-CJ5JXKII.js";
|
|
4
|
+
|
|
5
|
+
// src/domains/assignment/utils/create-default-score.ts
|
|
6
|
+
var defaultScore = (props) => {
|
|
7
|
+
const { serverTimestamp } = api.accessHelpers();
|
|
8
|
+
const score = {
|
|
9
|
+
progress: 0,
|
|
10
|
+
score: 0,
|
|
11
|
+
startDate: serverTimestamp(),
|
|
12
|
+
status: "IN_PROGRESS",
|
|
13
|
+
submitted: false,
|
|
14
|
+
cards: {},
|
|
15
|
+
lastPlayed: serverTimestamp(),
|
|
16
|
+
owners: props.owners,
|
|
17
|
+
userId: props.userId
|
|
18
|
+
};
|
|
19
|
+
if (props.googleClassroomUserId) {
|
|
20
|
+
score.googleClassroomUserId = props.googleClassroomUserId;
|
|
21
|
+
}
|
|
22
|
+
if (props.courseId) {
|
|
23
|
+
score.courseId = props.courseId;
|
|
24
|
+
}
|
|
25
|
+
return score;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// src/domains/assignment/utils/calculateScoreAndProgress.ts
|
|
29
|
+
var calculateScoreAndProgress = (scores, cardsList, weights) => {
|
|
30
|
+
const totalSetPoints = cardsList.reduce((acc, cardId) => {
|
|
31
|
+
acc += (weights == null ? void 0 : weights[cardId]) || 1;
|
|
32
|
+
return acc;
|
|
33
|
+
}, 0);
|
|
34
|
+
const totalPointsAwarded = Object.keys((scores == null ? void 0 : scores.cards) || {}).reduce((acc, cardId) => {
|
|
35
|
+
var _a, _b;
|
|
36
|
+
const cardScores = (_a = scores == null ? void 0 : scores.cards) == null ? void 0 : _a[cardId];
|
|
37
|
+
if ((cardScores == null ? void 0 : cardScores.completed) || (cardScores == null ? void 0 : cardScores.score) || (cardScores == null ? void 0 : cardScores.score) === 0) {
|
|
38
|
+
const score2 = (cardScores == null ? void 0 : cardScores.score) || (cardScores == null ? void 0 : cardScores.score) === 0 ? Number((_b = cardScores == null ? void 0 : cardScores.score) != null ? _b : 0) : null;
|
|
39
|
+
const weight = (weights == null ? void 0 : weights[cardId]) || 1;
|
|
40
|
+
const fraction = (score2 != null ? score2 : 0) / 100;
|
|
41
|
+
if (score2 || score2 === 0) {
|
|
42
|
+
acc += weight * fraction;
|
|
43
|
+
} else {
|
|
44
|
+
acc += weight;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return acc;
|
|
48
|
+
}, 0);
|
|
49
|
+
const totalCompletedCards = Object.keys((scores == null ? void 0 : scores.cards) || {}).reduce((acc, cardId) => {
|
|
50
|
+
var _a;
|
|
51
|
+
const cardScores = (_a = scores == null ? void 0 : scores.cards) == null ? void 0 : _a[cardId];
|
|
52
|
+
if ((cardScores == null ? void 0 : cardScores.completed) || (cardScores == null ? void 0 : cardScores.score) || (cardScores == null ? void 0 : cardScores.score) === 0) {
|
|
53
|
+
acc += 1;
|
|
54
|
+
}
|
|
55
|
+
return acc;
|
|
56
|
+
}, 0);
|
|
57
|
+
const percent = totalPointsAwarded / totalSetPoints;
|
|
58
|
+
const score = Math.round(percent * 100);
|
|
59
|
+
const progress = Math.round(totalCompletedCards / (cardsList.length || 1) * 100);
|
|
60
|
+
return { score, progress };
|
|
61
|
+
};
|
|
62
|
+
var calculateScoreAndProgress_default = calculateScoreAndProgress;
|
|
63
|
+
|
|
64
|
+
export {
|
|
65
|
+
defaultScore,
|
|
66
|
+
calculateScoreAndProgress_default
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=chunk-YMJRCINF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/domains/assignment/utils/create-default-score.ts","../src/domains/assignment/utils/calculateScoreAndProgress.ts"],"sourcesContent":["import { api } from '@core/lib/firebase/api'\n\nimport { type Score } from '../assignment.model'\n\nexport const defaultScore = (props: {\n owners: string[]\n courseId?: string\n userId: string\n googleClassroomUserId?: string\n}): Score => {\n const { serverTimestamp } = api.accessHelpers()\n\n const score = {\n progress: 0,\n score: 0,\n startDate: serverTimestamp(),\n status: 'IN_PROGRESS',\n submitted: false,\n cards: {},\n lastPlayed: serverTimestamp(),\n owners: props.owners,\n userId: props.userId,\n } as Score\n\n if (props.googleClassroomUserId) {\n score.googleClassroomUserId = props.googleClassroomUserId\n }\n\n if (props.courseId) {\n score.courseId = props.courseId\n }\n\n return score\n}\n","import { type Score } from '../assignment.model'\n\nconst calculateScoreAndProgress = (\n scores: Score,\n cardsList: string[],\n weights: Record<string, number>,\n) => {\n const totalSetPoints = cardsList.reduce((acc, cardId) => {\n acc += weights?.[cardId] || 1\n\n return acc\n }, 0)\n\n const totalPointsAwarded = Object.keys(scores?.cards || {}).reduce((acc, cardId) => {\n const cardScores = scores?.cards?.[cardId]\n\n if (cardScores?.completed || cardScores?.score || cardScores?.score === 0) {\n const score =\n cardScores?.score || cardScores?.score === 0 ? Number(cardScores?.score ?? 0) : null\n const weight = weights?.[cardId] || 1\n const fraction = (score ?? 0) / 100\n\n if (score || score === 0) {\n acc += weight * fraction\n } else {\n acc += weight\n }\n }\n\n return acc\n }, 0)\n const totalCompletedCards = Object.keys(scores?.cards || {}).reduce((acc, cardId) => {\n const cardScores = scores?.cards?.[cardId]\n\n if (cardScores?.completed || cardScores?.score || cardScores?.score === 0) {\n acc += 1\n }\n\n return acc\n }, 0)\n\n const percent = totalPointsAwarded / totalSetPoints\n\n const score = Math.round(percent * 100)\n\n const progress = Math.round((totalCompletedCards / (cardsList.length || 1)) * 100)\n\n return { score, progress }\n}\n\nexport default calculateScoreAndProgress\n"],"mappings":";;;;;AAIO,IAAM,eAAe,CAAC,UAKhB;AACX,QAAM,EAAE,gBAAgB,IAAI,IAAI,cAAc;AAE9C,QAAM,QAAQ;AAAA,IACZ,UAAU;AAAA,IACV,OAAO;AAAA,IACP,WAAW,gBAAgB;AAAA,IAC3B,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,OAAO,CAAC;AAAA,IACR,YAAY,gBAAgB;AAAA,IAC5B,QAAQ,MAAM;AAAA,IACd,QAAQ,MAAM;AAAA,EAChB;AAEA,MAAI,MAAM,uBAAuB;AAC/B,UAAM,wBAAwB,MAAM;AAAA,EACtC;AAEA,MAAI,MAAM,UAAU;AAClB,UAAM,WAAW,MAAM;AAAA,EACzB;AAEA,SAAO;AACT;;;AC/BA,IAAM,4BAA4B,CAChC,QACA,WACA,YACG;AACH,QAAM,iBAAiB,UAAU,OAAO,CAAC,KAAK,WAAW;AACvD,YAAO,mCAAU,YAAW;AAE5B,WAAO;AAAA,EACT,GAAG,CAAC;AAEJ,QAAM,qBAAqB,OAAO,MAAK,iCAAQ,UAAS,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,WAAW;AAbtF;AAcI,UAAM,cAAa,sCAAQ,UAAR,mBAAgB;AAEnC,SAAI,yCAAY,eAAa,yCAAY,WAAS,yCAAY,WAAU,GAAG;AACzE,YAAMA,UACJ,yCAAY,WAAS,yCAAY,WAAU,IAAI,QAAO,8CAAY,UAAZ,YAAqB,CAAC,IAAI;AAClF,YAAM,UAAS,mCAAU,YAAW;AACpC,YAAM,YAAYA,UAAA,OAAAA,SAAS,KAAK;AAEhC,UAAIA,UAASA,WAAU,GAAG;AACxB,eAAO,SAAS;AAAA,MAClB,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAAC;AACJ,QAAM,sBAAsB,OAAO,MAAK,iCAAQ,UAAS,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,WAAW;AA/BvF;AAgCI,UAAM,cAAa,sCAAQ,UAAR,mBAAgB;AAEnC,SAAI,yCAAY,eAAa,yCAAY,WAAS,yCAAY,WAAU,GAAG;AACzE,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT,GAAG,CAAC;AAEJ,QAAM,UAAU,qBAAqB;AAErC,QAAM,QAAQ,KAAK,MAAM,UAAU,GAAG;AAEtC,QAAM,WAAW,KAAK,MAAO,uBAAuB,UAAU,UAAU,KAAM,GAAG;AAEjF,SAAO,EAAE,OAAO,SAAS;AAC3B;AAEA,IAAO,oCAAQ;","names":["score"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// src/constants/analytics.constants.ts
|
|
2
|
+
var ANALYTICS_EVENT_TYPES = {
|
|
3
|
+
VOICE_SUCCESS: "voice_success",
|
|
4
|
+
VOICE_FAIL: "voice_fail",
|
|
5
|
+
RESPOND_CARD_SUCCESS: "respond_card_success",
|
|
6
|
+
RESPOND_CARD_FAIL: "respond_card_fail",
|
|
7
|
+
RESPOND_WRITE_CARD_SUCCESS: "respond_write_card_success",
|
|
8
|
+
RESPOND_WRITE_CARD_FAIL: "respond_write_card_fail",
|
|
9
|
+
RESPOND_WRITE_CARD_SUBMITTED: "respond_write_card_submitted",
|
|
10
|
+
RESPOND_WRITE_CARD_ERROR: "respond_write_card_error",
|
|
11
|
+
RESPOND_CARD_ERROR: "respond_card_error",
|
|
12
|
+
RESPOND_CARD_SUBMITTED: "respond_card_submitted",
|
|
13
|
+
RESPOND_FREE_PLAN: "respond_free_plan",
|
|
14
|
+
RESPOND_WRITE_FREE_PLAN: "respond_write_free_plan",
|
|
15
|
+
SUBMISSION: "assignment_submitted",
|
|
16
|
+
ASSIGNMENT_STARTED: "assignment_started",
|
|
17
|
+
CREATE_ASSIGNMENT: "create_assignment",
|
|
18
|
+
MC_SUCCESS: "multiple_choice_success",
|
|
19
|
+
MC_FAIL: "multiple_choice_fail",
|
|
20
|
+
MC_ERROR: "multiple_choice_error",
|
|
21
|
+
ACTFL_LEVEL: "actfl_level",
|
|
22
|
+
WIDA_LEVEL: "wida_level"
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export {
|
|
26
|
+
ANALYTICS_EVENT_TYPES
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=chunk-YO34TZYN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/constants/analytics.constants.ts"],"sourcesContent":["// Event constants\nexport const ANALYTICS_EVENT_TYPES = {\n VOICE_SUCCESS: 'voice_success',\n VOICE_FAIL: 'voice_fail',\n RESPOND_CARD_SUCCESS: 'respond_card_success',\n RESPOND_CARD_FAIL: 'respond_card_fail',\n RESPOND_WRITE_CARD_SUCCESS: 'respond_write_card_success',\n RESPOND_WRITE_CARD_FAIL: 'respond_write_card_fail',\n RESPOND_WRITE_CARD_SUBMITTED: 'respond_write_card_submitted',\n RESPOND_WRITE_CARD_ERROR: 'respond_write_card_error',\n RESPOND_CARD_ERROR: 'respond_card_error',\n RESPOND_CARD_SUBMITTED: 'respond_card_submitted',\n RESPOND_FREE_PLAN: 'respond_free_plan',\n RESPOND_WRITE_FREE_PLAN: 'respond_write_free_plan',\n SUBMISSION: 'assignment_submitted',\n ASSIGNMENT_STARTED: 'assignment_started',\n CREATE_ASSIGNMENT: 'create_assignment',\n MC_SUCCESS: 'multiple_choice_success',\n MC_FAIL: 'multiple_choice_fail',\n MC_ERROR: 'multiple_choice_error',\n ACTFL_LEVEL: 'actfl_level',\n WIDA_LEVEL: 'wida_level',\n} as const\n"],"mappings":";AACO,IAAM,wBAAwB;AAAA,EACnC,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,4BAA4B;AAAA,EAC5B,yBAAyB;AAAA,EACzB,8BAA8B;AAAA,EAC9B,0BAA0B;AAAA,EAC1B,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,mBAAmB;AAAA,EACnB,yBAAyB;AAAA,EACzB,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AACd;","names":[]}
|