analytica-frontend-lib 1.2.70 → 1.2.72
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/ActivitiesHistory/index.js +14 -3
- package/dist/ActivitiesHistory/index.js.map +1 -1
- package/dist/ActivitiesHistory/index.mjs +14 -3
- package/dist/ActivitiesHistory/index.mjs.map +1 -1
- package/dist/ActivityDetails/index.d.ts +4 -11
- package/dist/ActivityDetails/index.d.ts.map +1 -1
- package/dist/ActivityDetails/index.js +176 -69
- package/dist/ActivityDetails/index.js.map +1 -1
- package/dist/ActivityDetails/index.mjs +143 -36
- package/dist/ActivityDetails/index.mjs.map +1 -1
- package/dist/ActivityFilters/index.js +5 -5
- package/dist/ActivityFilters/index.js.map +1 -1
- package/dist/ActivityFilters/index.mjs +5 -5
- package/dist/ActivityFilters/index.mjs.map +1 -1
- package/dist/CorrectActivityModal/index.d.ts.map +1 -1
- package/dist/CorrectActivityModal/index.js +1 -2
- package/dist/CorrectActivityModal/index.js.map +1 -1
- package/dist/CorrectActivityModal/index.mjs +1 -2
- package/dist/CorrectActivityModal/index.mjs.map +1 -1
- package/dist/RecommendedLessonsHistory/index.js +14 -3
- package/dist/RecommendedLessonsHistory/index.js.map +1 -1
- package/dist/RecommendedLessonsHistory/index.mjs +14 -3
- package/dist/RecommendedLessonsHistory/index.mjs.map +1 -1
- package/dist/TableProvider/index.d.ts +10 -1
- package/dist/TableProvider/index.d.ts.map +1 -1
- package/dist/TableProvider/index.js +14 -3
- package/dist/TableProvider/index.js.map +1 -1
- package/dist/TableProvider/index.mjs +14 -3
- package/dist/TableProvider/index.mjs.map +1 -1
- package/dist/hooks/useActivitiesHistory/index.d.ts +14 -14
- package/dist/hooks/useActivitiesHistory.d.ts +14 -14
- package/dist/hooks/useActivityDetails.d.ts +59 -0
- package/dist/hooks/useActivityDetails.d.ts.map +1 -0
- package/dist/hooks/useActivityModels/index.d.ts +6 -6
- package/dist/hooks/useActivityModels.d.ts +6 -6
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +537 -421
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +390 -276
- package/dist/index.mjs.map +1 -1
- package/dist/types/activityDetails.d.ts +29 -0
- package/dist/types/activityDetails.d.ts.map +1 -1
- package/dist/types/activityFilters.d.ts +1 -1
- package/dist/types/activityFilters.d.ts.map +1 -1
- package/dist/types/questions.d.ts +6 -7
- package/dist/types/questions.d.ts.map +1 -1
- package/dist/utils/activityDetailsUtils.d.ts +4 -4
- package/dist/utils/activityDetailsUtils.d.ts.map +1 -1
- package/dist/utils/index.js +13 -10
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +13 -10
- package/dist/utils/index.mjs.map +1 -1
- package/dist/utils/questionFiltersConverter.d.ts.map +1 -1
- package/dist/utils/studentActivityCorrection/types.d.ts +5 -5
- package/dist/utils/studentActivityCorrection/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -38,7 +38,7 @@ function arraysEqual(a, b, comparator) {
|
|
|
38
38
|
function areFiltersEqual(filters1, filters2) {
|
|
39
39
|
if (filters1 === filters2) return true;
|
|
40
40
|
if (!filters1 || !filters2) return false;
|
|
41
|
-
return arraysEqual(filters1.types, filters2.types) && arraysEqual(filters1.bankIds, filters2.bankIds) && arraysEqual(filters1.yearIds, filters2.yearIds) && arraysEqual(filters1.
|
|
41
|
+
return arraysEqual(filters1.types, filters2.types) && arraysEqual(filters1.bankIds, filters2.bankIds) && arraysEqual(filters1.yearIds, filters2.yearIds) && arraysEqual(filters1.subjectIds, filters2.subjectIds) && arraysEqual(filters1.topicIds, filters2.topicIds) && arraysEqual(filters1.subtopicIds, filters2.subtopicIds) && arraysEqual(filters1.contentIds, filters2.contentIds);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// src/components/Quiz/useQuizStore.ts
|
|
@@ -667,12 +667,19 @@ function mapQuestionTypeToEnumRequired(type, fallback = "ALTERNATIVA" /* ALTERNA
|
|
|
667
667
|
}
|
|
668
668
|
|
|
669
669
|
// src/types/activityDetails.ts
|
|
670
|
+
import { z } from "zod";
|
|
670
671
|
var STUDENT_ACTIVITY_STATUS = {
|
|
671
672
|
CONCLUIDO: "CONCLUIDO",
|
|
672
673
|
AGUARDANDO_CORRECAO: "AGUARDANDO_CORRECAO",
|
|
673
674
|
AGUARDANDO_RESPOSTA: "AGUARDANDO_RESPOSTA",
|
|
674
675
|
NAO_ENTREGUE: "NAO_ENTREGUE"
|
|
675
676
|
};
|
|
677
|
+
var studentActivityStatusSchema = z.enum([
|
|
678
|
+
STUDENT_ACTIVITY_STATUS.CONCLUIDO,
|
|
679
|
+
STUDENT_ACTIVITY_STATUS.AGUARDANDO_CORRECAO,
|
|
680
|
+
STUDENT_ACTIVITY_STATUS.AGUARDANDO_RESPOSTA,
|
|
681
|
+
STUDENT_ACTIVITY_STATUS.NAO_ENTREGUE
|
|
682
|
+
]);
|
|
676
683
|
var ACTIVITY_AVAILABILITY = {
|
|
677
684
|
DISPONIVEL: "DISPONIVEL",
|
|
678
685
|
NAO_INICIADA: "NAO_INICIADA",
|
|
@@ -701,19 +708,15 @@ var getStatusBadgeConfig = (status) => {
|
|
|
701
708
|
label: "N\xE3o Entregue",
|
|
702
709
|
bgColor: "bg-red-50",
|
|
703
710
|
textColor: "text-red-800"
|
|
704
|
-
},
|
|
705
|
-
default: {
|
|
706
|
-
label: "Desconhecido",
|
|
707
|
-
bgColor: "bg-gray-50",
|
|
708
|
-
textColor: "text-gray-800"
|
|
709
711
|
}
|
|
710
712
|
};
|
|
711
|
-
return configs[status]
|
|
713
|
+
return configs[status];
|
|
712
714
|
};
|
|
713
715
|
var formatTimeSpent = (seconds) => {
|
|
714
|
-
const
|
|
715
|
-
const
|
|
716
|
-
const
|
|
716
|
+
const totalSeconds = Math.floor(Math.abs(seconds));
|
|
717
|
+
const hours = Math.floor(totalSeconds / 3600);
|
|
718
|
+
const minutes = Math.floor(totalSeconds % 3600 / 60);
|
|
719
|
+
const secs = totalSeconds % 60;
|
|
717
720
|
return `${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}:${String(secs).padStart(2, "0")}`;
|
|
718
721
|
};
|
|
719
722
|
var formatQuestionNumbers = (numbers) => {
|
|
@@ -11991,7 +11994,6 @@ var CorrectActivityModal = ({
|
|
|
11991
11994
|
}
|
|
11992
11995
|
await onQuestionCorrectionSubmit(data.studentId, {
|
|
11993
11996
|
questionId: questionData.question.id,
|
|
11994
|
-
questionNumber,
|
|
11995
11997
|
isCorrect: correction.isCorrect,
|
|
11996
11998
|
teacherFeedback: correction.teacherFeedback
|
|
11997
11999
|
});
|
|
@@ -12070,7 +12072,7 @@ var CorrectActivityModal = ({
|
|
|
12070
12072
|
renderQuestionDissertative({
|
|
12071
12073
|
result
|
|
12072
12074
|
}),
|
|
12073
|
-
|
|
12075
|
+
onQuestionCorrectionSubmit && /* @__PURE__ */ jsx62("div", { className: "space-y-4 border-t border-border-100 pt-4 mt-4", children: renderEssayCorrectionFields(questionData) })
|
|
12074
12076
|
] });
|
|
12075
12077
|
break;
|
|
12076
12078
|
case "PREENCHER" /* PREENCHER */:
|
|
@@ -14453,13 +14455,12 @@ import { Notebook } from "phosphor-react";
|
|
|
14453
14455
|
// src/utils/questionFiltersConverter.ts
|
|
14454
14456
|
var convertActivityFiltersToQuestionsFilter = (filters) => {
|
|
14455
14457
|
return {
|
|
14456
|
-
|
|
14457
|
-
|
|
14458
|
-
|
|
14459
|
-
|
|
14460
|
-
|
|
14461
|
-
|
|
14462
|
-
contentIds: filters.contentIds.length > 0 ? filters.contentIds : void 0
|
|
14458
|
+
questionType: filters.types,
|
|
14459
|
+
questionBankYearId: filters.yearIds.map((yearId) => yearId.split("-")[0]),
|
|
14460
|
+
subjectId: filters.subjectIds,
|
|
14461
|
+
topicId: filters.topicIds,
|
|
14462
|
+
subtopicId: filters.subtopicIds,
|
|
14463
|
+
contentId: filters.contentIds
|
|
14463
14464
|
};
|
|
14464
14465
|
};
|
|
14465
14466
|
|
|
@@ -14733,7 +14734,7 @@ function convertFiltersToBackendFormat(filters) {
|
|
|
14733
14734
|
return {
|
|
14734
14735
|
questionTypes: filters.types,
|
|
14735
14736
|
questionBanks: filters.bankIds,
|
|
14736
|
-
subjects: filters.
|
|
14737
|
+
subjects: filters.subjectIds,
|
|
14737
14738
|
topics: filters.topicIds,
|
|
14738
14739
|
subtopics: filters.subtopicIds,
|
|
14739
14740
|
contents: filters.contentIds
|
|
@@ -14746,7 +14747,7 @@ function convertBackendFiltersToActivityFiltersData(backendFilters) {
|
|
|
14746
14747
|
return {
|
|
14747
14748
|
types: (backendFilters.questionTypes || []).filter(isValidQuestionType),
|
|
14748
14749
|
bankIds: backendFilters.questionBanks || [],
|
|
14749
|
-
|
|
14750
|
+
subjectIds: backendFilters.subjects || [],
|
|
14750
14751
|
topicIds: backendFilters.topics || [],
|
|
14751
14752
|
subtopicIds: backendFilters.subtopics || [],
|
|
14752
14753
|
contentIds: backendFilters.contents || [],
|
|
@@ -15186,7 +15187,7 @@ var CreateActivity = ({
|
|
|
15186
15187
|
if (questions.length === 0 && !hasFirstSaveBeenDone.current) {
|
|
15187
15188
|
return false;
|
|
15188
15189
|
}
|
|
15189
|
-
if (!appliedFilters
|
|
15190
|
+
if (!appliedFilters?.subjectIds?.length) {
|
|
15190
15191
|
return false;
|
|
15191
15192
|
}
|
|
15192
15193
|
if (loadingInitialQuestions || isSaving) {
|
|
@@ -15195,7 +15196,10 @@ var CreateActivity = ({
|
|
|
15195
15196
|
return true;
|
|
15196
15197
|
}, [questions.length, appliedFilters, loadingInitialQuestions, isSaving]);
|
|
15197
15198
|
const createDraftPayload = useCallback7(() => {
|
|
15198
|
-
const subjectId = appliedFilters
|
|
15199
|
+
const subjectId = appliedFilters?.subjectIds?.[0];
|
|
15200
|
+
if (!subjectId) {
|
|
15201
|
+
throw new Error("Subject ID n\xE3o encontrado");
|
|
15202
|
+
}
|
|
15199
15203
|
const title = generateTitle(activityType, subjectId, knowledgeAreas);
|
|
15200
15204
|
const filters = convertFiltersToBackendFormat(appliedFilters);
|
|
15201
15205
|
const questionIds = questions.map((q) => q.id);
|
|
@@ -15410,7 +15414,7 @@ var CreateActivity = ({
|
|
|
15410
15414
|
if (questions.length === 0 && !hasFirstSaveBeenDone.current) {
|
|
15411
15415
|
return;
|
|
15412
15416
|
}
|
|
15413
|
-
if (!appliedFilters
|
|
15417
|
+
if (!appliedFilters) {
|
|
15414
15418
|
return;
|
|
15415
15419
|
}
|
|
15416
15420
|
const questionIds = questions.map((q) => q.id).join(",");
|
|
@@ -15468,7 +15472,8 @@ var CreateActivity = ({
|
|
|
15468
15472
|
const handleReorder = useCallback7(
|
|
15469
15473
|
(orderedQuestions) => {
|
|
15470
15474
|
setQuestions(orderedQuestions);
|
|
15471
|
-
|
|
15475
|
+
const hasSubjectIds = Array.isArray(appliedFilters?.subjectIds) && appliedFilters.subjectIds.length > 0;
|
|
15476
|
+
if (hasFirstSaveBeenDone.current && hasSubjectIds && !loadingInitialQuestions && !isSaving) {
|
|
15472
15477
|
if (saveTimeoutRef.current) {
|
|
15473
15478
|
clearTimeout(saveTimeoutRef.current);
|
|
15474
15479
|
}
|
|
@@ -15514,7 +15519,7 @@ var CreateActivity = ({
|
|
|
15514
15519
|
async (formData) => {
|
|
15515
15520
|
setIsSendingActivity(true);
|
|
15516
15521
|
try {
|
|
15517
|
-
const subjectId = activity?.subjectId || appliedFilters?.
|
|
15522
|
+
const subjectId = activity?.subjectId || appliedFilters?.subjectIds?.[0];
|
|
15518
15523
|
if (!subjectId) {
|
|
15519
15524
|
throw new Error("Subject ID n\xE3o encontrado");
|
|
15520
15525
|
}
|
|
@@ -16303,8 +16308,8 @@ var ActivityFilters = ({
|
|
|
16303
16308
|
if (initialFilters.types && initialFilters.types.length > 0) {
|
|
16304
16309
|
setSelectedQuestionTypes(initialFilters.types);
|
|
16305
16310
|
}
|
|
16306
|
-
if (initialFilters.
|
|
16307
|
-
setSelectedSubject(initialFilters.
|
|
16311
|
+
if (initialFilters.subjectIds && initialFilters.subjectIds.length > 0) {
|
|
16312
|
+
setSelectedSubject(initialFilters.subjectIds[0]);
|
|
16308
16313
|
}
|
|
16309
16314
|
hasAppliedBasicInitialFiltersRef.current = true;
|
|
16310
16315
|
}, [initialFilters]);
|
|
@@ -16344,7 +16349,7 @@ var ActivityFilters = ({
|
|
|
16344
16349
|
if (!initialFilters) {
|
|
16345
16350
|
return;
|
|
16346
16351
|
}
|
|
16347
|
-
const subjectIds = initialFilters.
|
|
16352
|
+
const subjectIds = initialFilters.subjectIds || [];
|
|
16348
16353
|
const topicIds = initialFilters.topicIds || [];
|
|
16349
16354
|
const subtopicIds = initialFilters.subtopicIds || [];
|
|
16350
16355
|
if (subjectIds.length > 0 && !hasRequestedTopicsRef.current) {
|
|
@@ -16466,7 +16471,7 @@ var ActivityFilters = ({
|
|
|
16466
16471
|
types: selectedQuestionTypes,
|
|
16467
16472
|
bankIds: bankIds.bankIds || [],
|
|
16468
16473
|
yearIds: bankIds.yearIds || [],
|
|
16469
|
-
|
|
16474
|
+
subjectIds: selectedSubjects,
|
|
16470
16475
|
topicIds: knowledgeIds.topicIds,
|
|
16471
16476
|
subtopicIds: knowledgeIds.subtopicIds,
|
|
16472
16477
|
contentIds: knowledgeIds.contentIds
|
|
@@ -16608,6 +16613,8 @@ function TableProvider({
|
|
|
16608
16613
|
rowKey,
|
|
16609
16614
|
onParamsChange,
|
|
16610
16615
|
onRowClick,
|
|
16616
|
+
headerContent,
|
|
16617
|
+
containerClassName,
|
|
16611
16618
|
children
|
|
16612
16619
|
}) {
|
|
16613
16620
|
const [searchQuery, setSearchQuery] = useState29("");
|
|
@@ -16752,6 +16759,10 @@ function TableProvider({
|
|
|
16752
16759
|
}
|
|
16753
16760
|
) })
|
|
16754
16761
|
] });
|
|
16762
|
+
const headerSection = (headerContent || controls) && /* @__PURE__ */ jsxs59("div", { className: "flex flex-col md:flex-row items-stretch md:items-center justify-between gap-4", children: [
|
|
16763
|
+
headerContent && /* @__PURE__ */ jsx76("div", { children: headerContent }),
|
|
16764
|
+
controls && /* @__PURE__ */ jsx76("div", { className: "flex-1 md:flex-none", children: controls })
|
|
16765
|
+
] });
|
|
16755
16766
|
const table = /* @__PURE__ */ jsx76("div", { className: "w-full overflow-x-auto", children: /* @__PURE__ */ jsxs59(
|
|
16756
16767
|
Table_default,
|
|
16757
16768
|
{
|
|
@@ -16848,7 +16859,11 @@ function TableProvider({
|
|
|
16848
16859
|
) });
|
|
16849
16860
|
if (children) {
|
|
16850
16861
|
return /* @__PURE__ */ jsxs59(Fragment16, { children: [
|
|
16851
|
-
children({
|
|
16862
|
+
children({
|
|
16863
|
+
controls: headerSection || controls || null,
|
|
16864
|
+
table,
|
|
16865
|
+
pagination
|
|
16866
|
+
}),
|
|
16852
16867
|
enableFilters && /* @__PURE__ */ jsx76(
|
|
16853
16868
|
FilterModal,
|
|
16854
16869
|
{
|
|
@@ -16862,8 +16877,9 @@ function TableProvider({
|
|
|
16862
16877
|
)
|
|
16863
16878
|
] });
|
|
16864
16879
|
}
|
|
16865
|
-
|
|
16866
|
-
|
|
16880
|
+
const wrapperClassName = containerClassName || "w-full space-y-4";
|
|
16881
|
+
return /* @__PURE__ */ jsxs59("div", { className: wrapperClassName, children: [
|
|
16882
|
+
headerSection,
|
|
16867
16883
|
table,
|
|
16868
16884
|
pagination,
|
|
16869
16885
|
enableFilters && /* @__PURE__ */ jsx76(
|
|
@@ -21606,8 +21622,104 @@ var ActivityPreview = ({
|
|
|
21606
21622
|
};
|
|
21607
21623
|
|
|
21608
21624
|
// src/components/ActivityDetails/ActivityDetails.tsx
|
|
21609
|
-
import { useState as useState40, useMemo as useMemo24, useCallback as
|
|
21625
|
+
import { useState as useState40, useMemo as useMemo24, useCallback as useCallback18, useEffect as useEffect40 } from "react";
|
|
21610
21626
|
import { Medal as Medal2, Star as Star2, File as File3, CaretRight as CaretRight9, WarningCircle as WarningCircle7 } from "phosphor-react";
|
|
21627
|
+
|
|
21628
|
+
// src/hooks/useActivityDetails.ts
|
|
21629
|
+
import { useCallback as useCallback17 } from "react";
|
|
21630
|
+
var buildQueryParams = (params) => {
|
|
21631
|
+
const paramsObj = {};
|
|
21632
|
+
if (params?.page) paramsObj.page = params.page;
|
|
21633
|
+
if (params?.limit) paramsObj.limit = params.limit;
|
|
21634
|
+
if (params?.sortBy) paramsObj.sortBy = params.sortBy;
|
|
21635
|
+
if (params?.sortOrder) paramsObj.sortOrder = params.sortOrder;
|
|
21636
|
+
if (params?.status) paramsObj.status = params.status;
|
|
21637
|
+
return paramsObj;
|
|
21638
|
+
};
|
|
21639
|
+
var useActivityDetails = (apiClient) => {
|
|
21640
|
+
const fetchActivityDetails = useCallback17(
|
|
21641
|
+
async (id, params) => {
|
|
21642
|
+
const queryParams = buildQueryParams(params);
|
|
21643
|
+
const [detailsResponse, quizResponse] = await Promise.all([
|
|
21644
|
+
apiClient.get(`/activities/${id}/details`, {
|
|
21645
|
+
params: queryParams
|
|
21646
|
+
}),
|
|
21647
|
+
apiClient.get(`/activities/${id}/quiz`).catch(() => null)
|
|
21648
|
+
]);
|
|
21649
|
+
return {
|
|
21650
|
+
...detailsResponse.data.data,
|
|
21651
|
+
activity: quizResponse?.data?.data
|
|
21652
|
+
};
|
|
21653
|
+
},
|
|
21654
|
+
[apiClient]
|
|
21655
|
+
);
|
|
21656
|
+
const fetchStudentCorrection = useCallback17(
|
|
21657
|
+
async (activityId, studentId) => {
|
|
21658
|
+
const response = await apiClient.get(
|
|
21659
|
+
`/questions/activity/${activityId}/user/${studentId}/answers`
|
|
21660
|
+
);
|
|
21661
|
+
return response.data;
|
|
21662
|
+
},
|
|
21663
|
+
[apiClient]
|
|
21664
|
+
);
|
|
21665
|
+
const submitObservation = useCallback17(
|
|
21666
|
+
async (actId, studentId, observation, file) => {
|
|
21667
|
+
let attachmentUrl = null;
|
|
21668
|
+
if (file) {
|
|
21669
|
+
const presignedRes = await apiClient.post(
|
|
21670
|
+
"/user/get-pre-signed-url",
|
|
21671
|
+
{
|
|
21672
|
+
fileName: file.name,
|
|
21673
|
+
fileType: file.type,
|
|
21674
|
+
fileSize: file.size
|
|
21675
|
+
}
|
|
21676
|
+
);
|
|
21677
|
+
const { url, fields } = presignedRes.data.data;
|
|
21678
|
+
const formData = new FormData();
|
|
21679
|
+
for (const [key2, value] of Object.entries(fields)) {
|
|
21680
|
+
formData.append(key2, value);
|
|
21681
|
+
}
|
|
21682
|
+
formData.append("file", file);
|
|
21683
|
+
await fetch(url, {
|
|
21684
|
+
method: "POST",
|
|
21685
|
+
body: formData
|
|
21686
|
+
}).then((response) => {
|
|
21687
|
+
if (!response.ok) {
|
|
21688
|
+
throw new Error("Falha ao fazer upload do arquivo");
|
|
21689
|
+
}
|
|
21690
|
+
});
|
|
21691
|
+
const baseUrl = url.endsWith("/") ? url.slice(0, -1) : url;
|
|
21692
|
+
const key = fields.key.startsWith("/") ? fields.key.slice(1) : fields.key;
|
|
21693
|
+
attachmentUrl = `${baseUrl}/${key}`;
|
|
21694
|
+
}
|
|
21695
|
+
await apiClient.post(
|
|
21696
|
+
`/activities/${actId}/students/${studentId}/feedback/observation`,
|
|
21697
|
+
{
|
|
21698
|
+
observation,
|
|
21699
|
+
attachmentUrl
|
|
21700
|
+
}
|
|
21701
|
+
);
|
|
21702
|
+
},
|
|
21703
|
+
[apiClient]
|
|
21704
|
+
);
|
|
21705
|
+
const submitQuestionCorrection = useCallback17(
|
|
21706
|
+
async (activityId, studentId, payload) => {
|
|
21707
|
+
await apiClient.post(
|
|
21708
|
+
`/activities/${activityId}/students/${studentId}/questions/correction`,
|
|
21709
|
+
payload
|
|
21710
|
+
);
|
|
21711
|
+
},
|
|
21712
|
+
[apiClient]
|
|
21713
|
+
);
|
|
21714
|
+
return {
|
|
21715
|
+
fetchActivityDetails,
|
|
21716
|
+
fetchStudentCorrection,
|
|
21717
|
+
submitObservation,
|
|
21718
|
+
submitQuestionCorrection
|
|
21719
|
+
};
|
|
21720
|
+
};
|
|
21721
|
+
|
|
21722
|
+
// src/components/ActivityDetails/ActivityDetails.tsx
|
|
21611
21723
|
import { Fragment as Fragment21, jsx as jsx91, jsxs as jsxs71 } from "react/jsx-runtime";
|
|
21612
21724
|
var createTableColumns = (onCorrectActivity) => [
|
|
21613
21725
|
{
|
|
@@ -21695,10 +21807,7 @@ var createTableColumns = (onCorrectActivity) => [
|
|
|
21695
21807
|
];
|
|
21696
21808
|
var ActivityDetails = ({
|
|
21697
21809
|
activityId,
|
|
21698
|
-
|
|
21699
|
-
fetchStudentCorrection,
|
|
21700
|
-
submitObservation,
|
|
21701
|
-
submitQuestionCorrection,
|
|
21810
|
+
apiClient,
|
|
21702
21811
|
onBack,
|
|
21703
21812
|
onViewActivity,
|
|
21704
21813
|
emptyStateImage,
|
|
@@ -21718,6 +21827,12 @@ var ActivityDetails = ({
|
|
|
21718
21827
|
const [isModalOpen, setIsModalOpen] = useState40(false);
|
|
21719
21828
|
const [isViewOnlyModal, setIsViewOnlyModal] = useState40(false);
|
|
21720
21829
|
const [correctionError, setCorrectionError] = useState40(null);
|
|
21830
|
+
const {
|
|
21831
|
+
fetchActivityDetails,
|
|
21832
|
+
fetchStudentCorrection,
|
|
21833
|
+
submitObservation,
|
|
21834
|
+
submitQuestionCorrection
|
|
21835
|
+
} = useActivityDetails(apiClient);
|
|
21721
21836
|
useEffect40(() => {
|
|
21722
21837
|
const loadData = async () => {
|
|
21723
21838
|
if (!activityId) return;
|
|
@@ -21741,7 +21856,7 @@ var ActivityDetails = ({
|
|
|
21741
21856
|
};
|
|
21742
21857
|
loadData();
|
|
21743
21858
|
}, [activityId, page, limit, sortBy, sortOrder, fetchActivityDetails]);
|
|
21744
|
-
const handleCorrectActivity =
|
|
21859
|
+
const handleCorrectActivity = useCallback18(
|
|
21745
21860
|
async (studentId) => {
|
|
21746
21861
|
const student = data?.students.find((s) => s.studentId === studentId);
|
|
21747
21862
|
if (!student || !activityId) return;
|
|
@@ -21749,11 +21864,7 @@ var ActivityDetails = ({
|
|
|
21749
21864
|
setIsViewOnlyModal(isViewOnly);
|
|
21750
21865
|
setCorrectionError(null);
|
|
21751
21866
|
try {
|
|
21752
|
-
const apiResponse = await fetchStudentCorrection(
|
|
21753
|
-
activityId,
|
|
21754
|
-
studentId,
|
|
21755
|
-
student.studentName || "Aluno"
|
|
21756
|
-
);
|
|
21867
|
+
const apiResponse = await fetchStudentCorrection(activityId, studentId);
|
|
21757
21868
|
const correction = convertApiResponseToCorrectionData(
|
|
21758
21869
|
apiResponse,
|
|
21759
21870
|
studentId,
|
|
@@ -21770,23 +21881,24 @@ var ActivityDetails = ({
|
|
|
21770
21881
|
},
|
|
21771
21882
|
[data?.students, activityId, fetchStudentCorrection]
|
|
21772
21883
|
);
|
|
21773
|
-
const handleCloseModal =
|
|
21884
|
+
const handleCloseModal = useCallback18(() => {
|
|
21774
21885
|
setIsModalOpen(false);
|
|
21775
21886
|
}, []);
|
|
21776
|
-
const handleObservationSubmit =
|
|
21887
|
+
const handleObservationSubmit = useCallback18(
|
|
21777
21888
|
async (studentId, observation, files) => {
|
|
21778
21889
|
if (!activityId || !studentId) return;
|
|
21779
21890
|
try {
|
|
21780
|
-
|
|
21891
|
+
const file = files.length > 0 ? files[0] : null;
|
|
21892
|
+
await submitObservation(activityId, studentId, observation, file);
|
|
21781
21893
|
} catch (err) {
|
|
21782
21894
|
console.error("Failed to submit observation:", err);
|
|
21783
21895
|
}
|
|
21784
21896
|
},
|
|
21785
21897
|
[activityId, submitObservation]
|
|
21786
21898
|
);
|
|
21787
|
-
const handleQuestionCorrectionSubmit =
|
|
21899
|
+
const handleQuestionCorrectionSubmit = useCallback18(
|
|
21788
21900
|
async (studentId, payload) => {
|
|
21789
|
-
if (!activityId || !studentId
|
|
21901
|
+
if (!activityId || !studentId) return;
|
|
21790
21902
|
try {
|
|
21791
21903
|
await submitQuestionCorrection(activityId, studentId, payload);
|
|
21792
21904
|
} catch (err) {
|
|
@@ -22078,10 +22190,10 @@ import {
|
|
|
22078
22190
|
import dayjs2 from "dayjs";
|
|
22079
22191
|
|
|
22080
22192
|
// src/components/Support/schema/index.ts
|
|
22081
|
-
import { z } from "zod";
|
|
22082
|
-
var supportSchema =
|
|
22193
|
+
import { z as z2 } from "zod";
|
|
22194
|
+
var supportSchema = z2.object({
|
|
22083
22195
|
// Tipo de problema selecionado
|
|
22084
|
-
problemType:
|
|
22196
|
+
problemType: z2.enum(["tecnico", "acesso", "outros"], {
|
|
22085
22197
|
// istanbul ignore next - errorMap é testado em runtime pelo zod real
|
|
22086
22198
|
errorMap: (
|
|
22087
22199
|
/* istanbul ignore next */
|
|
@@ -22091,13 +22203,13 @@ var supportSchema = z.object({
|
|
|
22091
22203
|
)
|
|
22092
22204
|
}),
|
|
22093
22205
|
// Título do problema
|
|
22094
|
-
title:
|
|
22206
|
+
title: z2.string().min(1, "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.").min(5, "T\xEDtulo deve ter pelo menos 5 caracteres").max(100, "T\xEDtulo deve ter no m\xE1ximo 100 caracteres").trim(),
|
|
22095
22207
|
// Descrição do problema
|
|
22096
|
-
description:
|
|
22208
|
+
description: z2.string().min(1, "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.").min(10, "Descri\xE7\xE3o deve ter pelo menos 10 caracteres").max(1e3, "Descri\xE7\xE3o deve ter no m\xE1ximo 1000 caracteres").trim()
|
|
22097
22209
|
});
|
|
22098
22210
|
|
|
22099
22211
|
// src/components/Support/components/TicketModal.tsx
|
|
22100
|
-
import { useState as useState41, useEffect as useEffect41, useCallback as
|
|
22212
|
+
import { useState as useState41, useEffect as useEffect41, useCallback as useCallback19 } from "react";
|
|
22101
22213
|
import dayjs from "dayjs";
|
|
22102
22214
|
import "dayjs/locale/pt-br";
|
|
22103
22215
|
|
|
@@ -22229,7 +22341,7 @@ var TicketModal = ({
|
|
|
22229
22341
|
setShowCloseConfirmation(false);
|
|
22230
22342
|
onClose();
|
|
22231
22343
|
};
|
|
22232
|
-
const fetchAnswers =
|
|
22344
|
+
const fetchAnswers = useCallback19(async () => {
|
|
22233
22345
|
if (!ticket.id || ticket.status !== "respondido" /* RESPONDIDO */) return;
|
|
22234
22346
|
setIsLoadingAnswers(true);
|
|
22235
22347
|
try {
|
|
@@ -23053,7 +23165,7 @@ var Support = ({
|
|
|
23053
23165
|
var Support_default = Support;
|
|
23054
23166
|
|
|
23055
23167
|
// src/components/SendActivityModal/SendActivityModal.tsx
|
|
23056
|
-
import { useCallback as
|
|
23168
|
+
import { useCallback as useCallback20, useEffect as useEffect43, useRef as useRef24 } from "react";
|
|
23057
23169
|
import {
|
|
23058
23170
|
CaretLeftIcon,
|
|
23059
23171
|
ArrowRightIcon,
|
|
@@ -23065,7 +23177,7 @@ import {
|
|
|
23065
23177
|
import { create as create16 } from "zustand";
|
|
23066
23178
|
|
|
23067
23179
|
// src/components/SendActivityModal/validation.ts
|
|
23068
|
-
import { z as
|
|
23180
|
+
import { z as z3 } from "zod";
|
|
23069
23181
|
var ERROR_MESSAGES = {
|
|
23070
23182
|
SUBTYPE_REQUIRED: "Campo obrigat\xF3rio! Por favor, selecione uma op\xE7\xE3o para continuar.",
|
|
23071
23183
|
TITLE_REQUIRED: "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.",
|
|
@@ -23074,20 +23186,20 @@ var ERROR_MESSAGES = {
|
|
|
23074
23186
|
FINAL_DATE_REQUIRED: "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.",
|
|
23075
23187
|
FINAL_DATE_INVALID: "A data final deve ser maior ou igual \xE0 data inicial."
|
|
23076
23188
|
};
|
|
23077
|
-
var activityStepSchema =
|
|
23078
|
-
subtype:
|
|
23189
|
+
var activityStepSchema = z3.object({
|
|
23190
|
+
subtype: z3.enum(["TAREFA", "TRABALHO", "PROVA"], {
|
|
23079
23191
|
errorMap: () => ({ message: ERROR_MESSAGES.SUBTYPE_REQUIRED })
|
|
23080
23192
|
}),
|
|
23081
|
-
title:
|
|
23193
|
+
title: z3.string({ required_error: ERROR_MESSAGES.TITLE_REQUIRED }).transform((val) => val.trim()).refine((val) => val.length > 0, {
|
|
23082
23194
|
message: ERROR_MESSAGES.TITLE_REQUIRED
|
|
23083
23195
|
}),
|
|
23084
|
-
notification:
|
|
23196
|
+
notification: z3.string().optional()
|
|
23085
23197
|
});
|
|
23086
|
-
var recipientStepSchema =
|
|
23087
|
-
students:
|
|
23088
|
-
|
|
23089
|
-
studentId:
|
|
23090
|
-
userInstitutionId:
|
|
23198
|
+
var recipientStepSchema = z3.object({
|
|
23199
|
+
students: z3.array(
|
|
23200
|
+
z3.object({
|
|
23201
|
+
studentId: z3.string(),
|
|
23202
|
+
userInstitutionId: z3.string()
|
|
23091
23203
|
}),
|
|
23092
23204
|
{
|
|
23093
23205
|
required_error: ERROR_MESSAGES.STUDENTS_REQUIRED,
|
|
@@ -23097,18 +23209,18 @@ var recipientStepSchema = z2.object({
|
|
|
23097
23209
|
});
|
|
23098
23210
|
var DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/;
|
|
23099
23211
|
var TIME_REGEX = /^\d{2}:\d{2}$/;
|
|
23100
|
-
var deadlineStepBaseSchema =
|
|
23101
|
-
startDate:
|
|
23212
|
+
var deadlineStepBaseSchema = z3.object({
|
|
23213
|
+
startDate: z3.string({
|
|
23102
23214
|
required_error: ERROR_MESSAGES.START_DATE_REQUIRED,
|
|
23103
23215
|
invalid_type_error: ERROR_MESSAGES.START_DATE_REQUIRED
|
|
23104
23216
|
}).min(1, ERROR_MESSAGES.START_DATE_REQUIRED).regex(DATE_REGEX, ERROR_MESSAGES.START_DATE_REQUIRED),
|
|
23105
|
-
startTime:
|
|
23106
|
-
finalDate:
|
|
23217
|
+
startTime: z3.string().regex(TIME_REGEX).default("00:00"),
|
|
23218
|
+
finalDate: z3.string({
|
|
23107
23219
|
required_error: ERROR_MESSAGES.FINAL_DATE_REQUIRED,
|
|
23108
23220
|
invalid_type_error: ERROR_MESSAGES.FINAL_DATE_REQUIRED
|
|
23109
23221
|
}).min(1, ERROR_MESSAGES.FINAL_DATE_REQUIRED).regex(DATE_REGEX, ERROR_MESSAGES.FINAL_DATE_REQUIRED),
|
|
23110
|
-
finalTime:
|
|
23111
|
-
canRetry:
|
|
23222
|
+
finalTime: z3.string().regex(TIME_REGEX).default("23:59"),
|
|
23223
|
+
canRetry: z3.boolean().default(false)
|
|
23112
23224
|
});
|
|
23113
23225
|
var deadlineStepSchema = deadlineStepBaseSchema.refine(
|
|
23114
23226
|
(data) => {
|
|
@@ -23378,62 +23490,62 @@ var SendActivityModal = ({
|
|
|
23378
23490
|
prevInitialDataRef.current = void 0;
|
|
23379
23491
|
}
|
|
23380
23492
|
}, [isOpen, reset]);
|
|
23381
|
-
const handleCategoriesChange =
|
|
23493
|
+
const handleCategoriesChange = useCallback20(
|
|
23382
23494
|
(updatedCategories) => {
|
|
23383
23495
|
setCategories(updatedCategories);
|
|
23384
23496
|
onCategoriesChange?.(updatedCategories);
|
|
23385
23497
|
},
|
|
23386
23498
|
[setCategories, onCategoriesChange]
|
|
23387
23499
|
);
|
|
23388
|
-
const handleActivityTypeSelect =
|
|
23500
|
+
const handleActivityTypeSelect = useCallback20(
|
|
23389
23501
|
(subtype) => {
|
|
23390
23502
|
store.setFormData({ subtype });
|
|
23391
23503
|
},
|
|
23392
23504
|
[store]
|
|
23393
23505
|
);
|
|
23394
|
-
const handleTitleChange =
|
|
23506
|
+
const handleTitleChange = useCallback20(
|
|
23395
23507
|
(e) => {
|
|
23396
23508
|
store.setFormData({ title: e.target.value });
|
|
23397
23509
|
},
|
|
23398
23510
|
[store]
|
|
23399
23511
|
);
|
|
23400
|
-
const handleNotificationChange =
|
|
23512
|
+
const handleNotificationChange = useCallback20(
|
|
23401
23513
|
(e) => {
|
|
23402
23514
|
store.setFormData({ notification: e.target.value });
|
|
23403
23515
|
},
|
|
23404
23516
|
[store]
|
|
23405
23517
|
);
|
|
23406
|
-
const handleStartDateChange =
|
|
23518
|
+
const handleStartDateChange = useCallback20(
|
|
23407
23519
|
(date) => {
|
|
23408
23520
|
store.setFormData({ startDate: date });
|
|
23409
23521
|
},
|
|
23410
23522
|
[store]
|
|
23411
23523
|
);
|
|
23412
|
-
const handleStartTimeChange =
|
|
23524
|
+
const handleStartTimeChange = useCallback20(
|
|
23413
23525
|
(time) => {
|
|
23414
23526
|
store.setFormData({ startTime: time });
|
|
23415
23527
|
},
|
|
23416
23528
|
[store]
|
|
23417
23529
|
);
|
|
23418
|
-
const handleFinalDateChange =
|
|
23530
|
+
const handleFinalDateChange = useCallback20(
|
|
23419
23531
|
(date) => {
|
|
23420
23532
|
store.setFormData({ finalDate: date });
|
|
23421
23533
|
},
|
|
23422
23534
|
[store]
|
|
23423
23535
|
);
|
|
23424
|
-
const handleFinalTimeChange =
|
|
23536
|
+
const handleFinalTimeChange = useCallback20(
|
|
23425
23537
|
(time) => {
|
|
23426
23538
|
store.setFormData({ finalTime: time });
|
|
23427
23539
|
},
|
|
23428
23540
|
[store]
|
|
23429
23541
|
);
|
|
23430
|
-
const handleRetryChange =
|
|
23542
|
+
const handleRetryChange = useCallback20(
|
|
23431
23543
|
(value) => {
|
|
23432
23544
|
store.setFormData({ canRetry: value === "yes" });
|
|
23433
23545
|
},
|
|
23434
23546
|
[store]
|
|
23435
23547
|
);
|
|
23436
|
-
const handleSubmit =
|
|
23548
|
+
const handleSubmit = useCallback20(async () => {
|
|
23437
23549
|
const isValid = store.validateAllSteps();
|
|
23438
23550
|
if (!isValid) return;
|
|
23439
23551
|
try {
|
|
@@ -23447,7 +23559,7 @@ var SendActivityModal = ({
|
|
|
23447
23559
|
}
|
|
23448
23560
|
}
|
|
23449
23561
|
}, [store, onSubmit, onError]);
|
|
23450
|
-
const handleCancel =
|
|
23562
|
+
const handleCancel = useCallback20(() => {
|
|
23451
23563
|
onClose();
|
|
23452
23564
|
}, [onClose]);
|
|
23453
23565
|
const renderError = (error) => {
|
|
@@ -23685,7 +23797,7 @@ var SendActivityModal = ({
|
|
|
23685
23797
|
var SendActivityModal_default = SendActivityModal;
|
|
23686
23798
|
|
|
23687
23799
|
// src/components/RecommendedLessonsHistory/RecommendedLessonsHistory.tsx
|
|
23688
|
-
import { useState as useState44, useCallback as
|
|
23800
|
+
import { useState as useState44, useCallback as useCallback22, useMemo as useMemo25, useRef as useRef25 } from "react";
|
|
23689
23801
|
import { Plus as Plus3, CaretRight as CaretRight10, Trash as Trash2, PencilSimple as PencilSimple2 } from "phosphor-react";
|
|
23690
23802
|
|
|
23691
23803
|
// src/types/common.ts
|
|
@@ -23772,51 +23884,51 @@ var formatDaysToComplete = (daysToComplete) => {
|
|
|
23772
23884
|
};
|
|
23773
23885
|
|
|
23774
23886
|
// src/hooks/useRecommendedLessons.ts
|
|
23775
|
-
import { useState as useState43, useCallback as
|
|
23776
|
-
import { z as
|
|
23887
|
+
import { useState as useState43, useCallback as useCallback21 } from "react";
|
|
23888
|
+
import { z as z4 } from "zod";
|
|
23777
23889
|
import dayjs3 from "dayjs";
|
|
23778
|
-
var goalSubjectSchema =
|
|
23779
|
-
id:
|
|
23780
|
-
name:
|
|
23890
|
+
var goalSubjectSchema = z4.object({
|
|
23891
|
+
id: z4.string().uuid(),
|
|
23892
|
+
name: z4.string()
|
|
23781
23893
|
}).nullable();
|
|
23782
|
-
var goalCreatorSchema =
|
|
23783
|
-
id:
|
|
23784
|
-
name:
|
|
23894
|
+
var goalCreatorSchema = z4.object({
|
|
23895
|
+
id: z4.string().uuid(),
|
|
23896
|
+
name: z4.string()
|
|
23785
23897
|
}).nullable();
|
|
23786
|
-
var goalStatsSchema =
|
|
23787
|
-
totalStudents:
|
|
23788
|
-
completedCount:
|
|
23789
|
-
completionPercentage:
|
|
23898
|
+
var goalStatsSchema = z4.object({
|
|
23899
|
+
totalStudents: z4.number(),
|
|
23900
|
+
completedCount: z4.number(),
|
|
23901
|
+
completionPercentage: z4.number()
|
|
23790
23902
|
});
|
|
23791
|
-
var goalBreakdownSchema =
|
|
23792
|
-
classId:
|
|
23793
|
-
className:
|
|
23794
|
-
schoolId:
|
|
23795
|
-
schoolName:
|
|
23796
|
-
studentCount:
|
|
23797
|
-
completedCount:
|
|
23903
|
+
var goalBreakdownSchema = z4.object({
|
|
23904
|
+
classId: z4.string().uuid(),
|
|
23905
|
+
className: z4.string(),
|
|
23906
|
+
schoolId: z4.string(),
|
|
23907
|
+
schoolName: z4.string(),
|
|
23908
|
+
studentCount: z4.number(),
|
|
23909
|
+
completedCount: z4.number()
|
|
23798
23910
|
});
|
|
23799
|
-
var goalDataSchema =
|
|
23800
|
-
id:
|
|
23801
|
-
title:
|
|
23802
|
-
startDate:
|
|
23803
|
-
finalDate:
|
|
23804
|
-
createdAt:
|
|
23805
|
-
progress:
|
|
23806
|
-
totalLessons:
|
|
23911
|
+
var goalDataSchema = z4.object({
|
|
23912
|
+
id: z4.string().uuid(),
|
|
23913
|
+
title: z4.string(),
|
|
23914
|
+
startDate: z4.string().nullable(),
|
|
23915
|
+
finalDate: z4.string().nullable(),
|
|
23916
|
+
createdAt: z4.string(),
|
|
23917
|
+
progress: z4.number(),
|
|
23918
|
+
totalLessons: z4.number()
|
|
23807
23919
|
});
|
|
23808
|
-
var goalHistoryItemSchema =
|
|
23920
|
+
var goalHistoryItemSchema = z4.object({
|
|
23809
23921
|
goal: goalDataSchema,
|
|
23810
23922
|
subject: goalSubjectSchema,
|
|
23811
23923
|
creator: goalCreatorSchema,
|
|
23812
23924
|
stats: goalStatsSchema,
|
|
23813
|
-
breakdown:
|
|
23925
|
+
breakdown: z4.array(goalBreakdownSchema)
|
|
23814
23926
|
});
|
|
23815
|
-
var goalsHistoryApiResponseSchema =
|
|
23816
|
-
message:
|
|
23817
|
-
data:
|
|
23818
|
-
goals:
|
|
23819
|
-
total:
|
|
23927
|
+
var goalsHistoryApiResponseSchema = z4.object({
|
|
23928
|
+
message: z4.string(),
|
|
23929
|
+
data: z4.object({
|
|
23930
|
+
goals: z4.array(goalHistoryItemSchema),
|
|
23931
|
+
total: z4.number()
|
|
23820
23932
|
})
|
|
23821
23933
|
});
|
|
23822
23934
|
var determineGoalStatus = (finalDate, completionPercentage) => {
|
|
@@ -23855,7 +23967,7 @@ var transformGoalToTableItem = (item) => {
|
|
|
23855
23967
|
};
|
|
23856
23968
|
};
|
|
23857
23969
|
var handleGoalFetchError = (error) => {
|
|
23858
|
-
if (error instanceof
|
|
23970
|
+
if (error instanceof z4.ZodError) {
|
|
23859
23971
|
console.error("Erro ao validar dados de hist\xF3rico de aulas:", error);
|
|
23860
23972
|
return "Erro ao validar dados de hist\xF3rico de aulas";
|
|
23861
23973
|
}
|
|
@@ -23875,7 +23987,7 @@ var createUseRecommendedLessonsHistory = (fetchGoalsHistory) => {
|
|
|
23875
23987
|
totalPages: 0
|
|
23876
23988
|
}
|
|
23877
23989
|
});
|
|
23878
|
-
const fetchGoals =
|
|
23990
|
+
const fetchGoals = useCallback21(
|
|
23879
23991
|
async (filters) => {
|
|
23880
23992
|
setState((prev) => ({ ...prev, loading: true, error: null }));
|
|
23881
23993
|
try {
|
|
@@ -24247,7 +24359,7 @@ var RecommendedLessonsHistory = ({
|
|
|
24247
24359
|
() => createTableColumns2(mapSubjectNameToEnum2, onDeleteGoal, onEditGoal),
|
|
24248
24360
|
[mapSubjectNameToEnum2, onDeleteGoal, onEditGoal]
|
|
24249
24361
|
);
|
|
24250
|
-
const handleParamsChange =
|
|
24362
|
+
const handleParamsChange = useCallback22(
|
|
24251
24363
|
(params) => {
|
|
24252
24364
|
const filters = buildFiltersFromParams(params);
|
|
24253
24365
|
fetchGoals(filters);
|
|
@@ -24403,7 +24515,7 @@ var RecommendedLessonsHistory = ({
|
|
|
24403
24515
|
};
|
|
24404
24516
|
|
|
24405
24517
|
// src/components/RecommendedLessonDetails/RecommendedLessonDetails.tsx
|
|
24406
|
-
import { useMemo as useMemo27, useState as useState45, useCallback as
|
|
24518
|
+
import { useMemo as useMemo27, useState as useState45, useCallback as useCallback24 } from "react";
|
|
24407
24519
|
|
|
24408
24520
|
// src/components/RecommendedLessonDetails/components/Breadcrumb.tsx
|
|
24409
24521
|
import { CaretRightIcon as CaretRightIcon2 } from "@phosphor-icons/react";
|
|
@@ -24625,7 +24737,7 @@ var ResultsSection = ({ data, labels }) => {
|
|
|
24625
24737
|
};
|
|
24626
24738
|
|
|
24627
24739
|
// src/components/RecommendedLessonDetails/components/StudentsTable.tsx
|
|
24628
|
-
import { useCallback as
|
|
24740
|
+
import { useCallback as useCallback23 } from "react";
|
|
24629
24741
|
import { UserIcon } from "@phosphor-icons/react";
|
|
24630
24742
|
import { jsx as jsx101, jsxs as jsxs80 } from "react/jsx-runtime";
|
|
24631
24743
|
var StudentsTable = ({
|
|
@@ -24635,7 +24747,7 @@ var StudentsTable = ({
|
|
|
24635
24747
|
emptyMessage = "Nenhum aluno encontrado"
|
|
24636
24748
|
}) => {
|
|
24637
24749
|
const { sortedData, sortColumn, sortDirection, handleSort } = useTableSort(students);
|
|
24638
|
-
const canViewPerformance =
|
|
24750
|
+
const canViewPerformance = useCallback23((student) => {
|
|
24639
24751
|
return student.status === "CONCLU\xCDDO" /* CONCLUIDO */ || student.status === "N\xC3O FINALIZADO" /* NAO_FINALIZADO */;
|
|
24640
24752
|
}, []);
|
|
24641
24753
|
return /* @__PURE__ */ jsx101("div", { className: "bg-background rounded-xl border border-border-50 overflow-hidden", children: /* @__PURE__ */ jsxs80(Table_default, { children: [
|
|
@@ -25058,7 +25170,7 @@ var RecommendedLessonDetails = ({
|
|
|
25058
25170
|
const [performanceData, setPerformanceData] = useState45(null);
|
|
25059
25171
|
const [performanceLoading, setPerformanceLoading] = useState45(false);
|
|
25060
25172
|
const [performanceError, setPerformanceError] = useState45(null);
|
|
25061
|
-
const handleViewStudentPerformance =
|
|
25173
|
+
const handleViewStudentPerformance = useCallback24(
|
|
25062
25174
|
async (studentId) => {
|
|
25063
25175
|
if (!fetchStudentPerformance || !goalId) return;
|
|
25064
25176
|
setPerformanceModalOpen(true);
|
|
@@ -25079,7 +25191,7 @@ var RecommendedLessonDetails = ({
|
|
|
25079
25191
|
},
|
|
25080
25192
|
[fetchStudentPerformance, goalId]
|
|
25081
25193
|
);
|
|
25082
|
-
const handleClosePerformanceModal =
|
|
25194
|
+
const handleClosePerformanceModal = useCallback24(() => {
|
|
25083
25195
|
setPerformanceModalOpen(false);
|
|
25084
25196
|
setPerformanceData(null);
|
|
25085
25197
|
setPerformanceError(null);
|
|
@@ -25169,101 +25281,101 @@ var RecommendedLessonDetails = ({
|
|
|
25169
25281
|
var RecommendedLessonDetails_default = RecommendedLessonDetails;
|
|
25170
25282
|
|
|
25171
25283
|
// src/hooks/useRecommendedLessonDetails.ts
|
|
25172
|
-
import { useState as useState46, useCallback as
|
|
25173
|
-
import { z as
|
|
25174
|
-
var goalLessonSubjectSchema =
|
|
25175
|
-
id:
|
|
25176
|
-
name:
|
|
25177
|
-
color:
|
|
25178
|
-
icon:
|
|
25284
|
+
import { useState as useState46, useCallback as useCallback25, useEffect as useEffect44 } from "react";
|
|
25285
|
+
import { z as z5 } from "zod";
|
|
25286
|
+
var goalLessonSubjectSchema = z5.object({
|
|
25287
|
+
id: z5.string(),
|
|
25288
|
+
name: z5.string(),
|
|
25289
|
+
color: z5.string(),
|
|
25290
|
+
icon: z5.string()
|
|
25179
25291
|
});
|
|
25180
|
-
var lessonContentSchema =
|
|
25181
|
-
id:
|
|
25182
|
-
name:
|
|
25292
|
+
var lessonContentSchema = z5.object({
|
|
25293
|
+
id: z5.string(),
|
|
25294
|
+
name: z5.string()
|
|
25183
25295
|
});
|
|
25184
|
-
var goalLessonSchema =
|
|
25185
|
-
id:
|
|
25296
|
+
var goalLessonSchema = z5.object({
|
|
25297
|
+
id: z5.string(),
|
|
25186
25298
|
content: lessonContentSchema,
|
|
25187
25299
|
subtopic: lessonContentSchema,
|
|
25188
25300
|
topic: lessonContentSchema,
|
|
25189
25301
|
subject: goalLessonSubjectSchema
|
|
25190
25302
|
});
|
|
25191
|
-
var goalLessonProgressSchema =
|
|
25192
|
-
id:
|
|
25193
|
-
userId:
|
|
25194
|
-
lessonId:
|
|
25195
|
-
progress:
|
|
25303
|
+
var goalLessonProgressSchema = z5.object({
|
|
25304
|
+
id: z5.string(),
|
|
25305
|
+
userId: z5.string(),
|
|
25306
|
+
lessonId: z5.string(),
|
|
25307
|
+
progress: z5.number(),
|
|
25196
25308
|
lesson: goalLessonSchema
|
|
25197
25309
|
});
|
|
25198
|
-
var goalLessonGoalItemSchema =
|
|
25199
|
-
goalId:
|
|
25200
|
-
supLessonsProgressId:
|
|
25310
|
+
var goalLessonGoalItemSchema = z5.object({
|
|
25311
|
+
goalId: z5.string(),
|
|
25312
|
+
supLessonsProgressId: z5.string(),
|
|
25201
25313
|
supLessonsProgress: goalLessonProgressSchema
|
|
25202
25314
|
});
|
|
25203
|
-
var goalMetadataSchema =
|
|
25204
|
-
id:
|
|
25205
|
-
title:
|
|
25206
|
-
startDate:
|
|
25207
|
-
finalDate:
|
|
25208
|
-
progress:
|
|
25209
|
-
lessonsGoals:
|
|
25315
|
+
var goalMetadataSchema = z5.object({
|
|
25316
|
+
id: z5.string(),
|
|
25317
|
+
title: z5.string(),
|
|
25318
|
+
startDate: z5.string(),
|
|
25319
|
+
finalDate: z5.string(),
|
|
25320
|
+
progress: z5.number(),
|
|
25321
|
+
lessonsGoals: z5.array(goalLessonGoalItemSchema)
|
|
25210
25322
|
});
|
|
25211
|
-
var goalApiResponseSchema =
|
|
25212
|
-
message:
|
|
25323
|
+
var goalApiResponseSchema = z5.object({
|
|
25324
|
+
message: z5.string(),
|
|
25213
25325
|
data: goalMetadataSchema
|
|
25214
25326
|
});
|
|
25215
|
-
var goalDetailStudentSchema =
|
|
25216
|
-
userInstitutionId:
|
|
25217
|
-
userId:
|
|
25218
|
-
name:
|
|
25219
|
-
progress:
|
|
25220
|
-
completedAt:
|
|
25221
|
-
avgScore:
|
|
25222
|
-
daysToComplete:
|
|
25327
|
+
var goalDetailStudentSchema = z5.object({
|
|
25328
|
+
userInstitutionId: z5.string(),
|
|
25329
|
+
userId: z5.string(),
|
|
25330
|
+
name: z5.string(),
|
|
25331
|
+
progress: z5.number(),
|
|
25332
|
+
completedAt: z5.string().nullable(),
|
|
25333
|
+
avgScore: z5.number().nullable(),
|
|
25334
|
+
daysToComplete: z5.number().nullable()
|
|
25223
25335
|
});
|
|
25224
|
-
var goalDetailAggregatedSchema =
|
|
25225
|
-
completionPercentage:
|
|
25226
|
-
avgScore:
|
|
25336
|
+
var goalDetailAggregatedSchema = z5.object({
|
|
25337
|
+
completionPercentage: z5.number(),
|
|
25338
|
+
avgScore: z5.number().nullable()
|
|
25227
25339
|
});
|
|
25228
|
-
var goalDetailContentPerformanceItemSchema =
|
|
25229
|
-
contentId:
|
|
25230
|
-
contentName:
|
|
25231
|
-
rate:
|
|
25340
|
+
var goalDetailContentPerformanceItemSchema = z5.object({
|
|
25341
|
+
contentId: z5.string(),
|
|
25342
|
+
contentName: z5.string(),
|
|
25343
|
+
rate: z5.number()
|
|
25232
25344
|
}).nullable();
|
|
25233
|
-
var goalDetailContentPerformanceSchema =
|
|
25345
|
+
var goalDetailContentPerformanceSchema = z5.object({
|
|
25234
25346
|
best: goalDetailContentPerformanceItemSchema,
|
|
25235
25347
|
worst: goalDetailContentPerformanceItemSchema
|
|
25236
25348
|
});
|
|
25237
|
-
var goalDetailsDataSchema =
|
|
25238
|
-
students:
|
|
25349
|
+
var goalDetailsDataSchema = z5.object({
|
|
25350
|
+
students: z5.array(goalDetailStudentSchema),
|
|
25239
25351
|
aggregated: goalDetailAggregatedSchema,
|
|
25240
25352
|
contentPerformance: goalDetailContentPerformanceSchema
|
|
25241
25353
|
});
|
|
25242
|
-
var goalDetailsApiResponseSchema =
|
|
25243
|
-
message:
|
|
25354
|
+
var goalDetailsApiResponseSchema = z5.object({
|
|
25355
|
+
message: z5.string(),
|
|
25244
25356
|
data: goalDetailsDataSchema
|
|
25245
25357
|
});
|
|
25246
|
-
var goalBreakdownSchema2 =
|
|
25247
|
-
classId:
|
|
25248
|
-
className:
|
|
25249
|
-
schoolId:
|
|
25250
|
-
schoolName:
|
|
25251
|
-
studentCount:
|
|
25252
|
-
completedCount:
|
|
25358
|
+
var goalBreakdownSchema2 = z5.object({
|
|
25359
|
+
classId: z5.string().uuid(),
|
|
25360
|
+
className: z5.string(),
|
|
25361
|
+
schoolId: z5.string(),
|
|
25362
|
+
schoolName: z5.string(),
|
|
25363
|
+
studentCount: z5.number(),
|
|
25364
|
+
completedCount: z5.number()
|
|
25253
25365
|
});
|
|
25254
|
-
var historyGoalItemSchema =
|
|
25255
|
-
goal:
|
|
25256
|
-
breakdown:
|
|
25366
|
+
var historyGoalItemSchema = z5.object({
|
|
25367
|
+
goal: z5.object({ id: z5.string().uuid() }),
|
|
25368
|
+
breakdown: z5.array(goalBreakdownSchema2)
|
|
25257
25369
|
});
|
|
25258
|
-
var historyApiResponseSchema =
|
|
25259
|
-
message:
|
|
25260
|
-
data:
|
|
25261
|
-
goals:
|
|
25262
|
-
total:
|
|
25370
|
+
var historyApiResponseSchema = z5.object({
|
|
25371
|
+
message: z5.string(),
|
|
25372
|
+
data: z5.object({
|
|
25373
|
+
goals: z5.array(historyGoalItemSchema),
|
|
25374
|
+
total: z5.number()
|
|
25263
25375
|
})
|
|
25264
25376
|
});
|
|
25265
25377
|
var handleLessonDetailsFetchError = (error) => {
|
|
25266
|
-
if (error instanceof
|
|
25378
|
+
if (error instanceof z5.ZodError) {
|
|
25267
25379
|
console.error("Erro ao validar dados dos detalhes da aula:", error);
|
|
25268
25380
|
return "Erro ao validar dados dos detalhes da aula";
|
|
25269
25381
|
}
|
|
@@ -25277,7 +25389,7 @@ var createUseRecommendedLessonDetails = (apiClient) => {
|
|
|
25277
25389
|
loading: true,
|
|
25278
25390
|
error: null
|
|
25279
25391
|
});
|
|
25280
|
-
const fetchLessonDetails =
|
|
25392
|
+
const fetchLessonDetails = useCallback25(async () => {
|
|
25281
25393
|
if (!lessonId) {
|
|
25282
25394
|
setState({
|
|
25283
25395
|
data: null,
|
|
@@ -25338,7 +25450,7 @@ var createRecommendedLessonDetailsHook = createUseRecommendedLessonDetails;
|
|
|
25338
25450
|
import { useState as useState50 } from "react";
|
|
25339
25451
|
|
|
25340
25452
|
// src/components/ActivitiesHistory/tabs/HistoryTab.tsx
|
|
25341
|
-
import { useCallback as
|
|
25453
|
+
import { useCallback as useCallback27, useMemo as useMemo28, useRef as useRef26 } from "react";
|
|
25342
25454
|
import { Plus as Plus4 } from "phosphor-react";
|
|
25343
25455
|
|
|
25344
25456
|
// src/components/ActivitiesHistory/components/ErrorDisplay.tsx
|
|
@@ -25580,14 +25692,14 @@ var createHistoryFiltersConfig = (userData) => [
|
|
|
25580
25692
|
];
|
|
25581
25693
|
|
|
25582
25694
|
// src/hooks/useActivitiesHistory.ts
|
|
25583
|
-
import { useState as useState47, useCallback as
|
|
25584
|
-
import { z as
|
|
25695
|
+
import { useState as useState47, useCallback as useCallback26 } from "react";
|
|
25696
|
+
import { z as z7 } from "zod";
|
|
25585
25697
|
import dayjs4 from "dayjs";
|
|
25586
25698
|
|
|
25587
25699
|
// src/utils/hookErrorHandler.ts
|
|
25588
|
-
import { z as
|
|
25700
|
+
import { z as z6 } from "zod";
|
|
25589
25701
|
var createFetchErrorHandler = (validationErrorMessage, genericErrorMessage) => (error) => {
|
|
25590
|
-
if (error instanceof
|
|
25702
|
+
if (error instanceof z6.ZodError) {
|
|
25591
25703
|
console.error(validationErrorMessage, error);
|
|
25592
25704
|
return validationErrorMessage;
|
|
25593
25705
|
}
|
|
@@ -25596,33 +25708,33 @@ var createFetchErrorHandler = (validationErrorMessage, genericErrorMessage) => (
|
|
|
25596
25708
|
};
|
|
25597
25709
|
|
|
25598
25710
|
// src/hooks/useActivitiesHistory.ts
|
|
25599
|
-
var activityHistoryResponseSchema =
|
|
25600
|
-
id:
|
|
25601
|
-
title:
|
|
25602
|
-
startDate:
|
|
25603
|
-
finalDate:
|
|
25604
|
-
status:
|
|
25605
|
-
completionPercentage:
|
|
25606
|
-
subjectId:
|
|
25607
|
-
schoolId:
|
|
25608
|
-
schoolName:
|
|
25609
|
-
year:
|
|
25610
|
-
className:
|
|
25611
|
-
subjectName:
|
|
25711
|
+
var activityHistoryResponseSchema = z7.object({
|
|
25712
|
+
id: z7.string().uuid(),
|
|
25713
|
+
title: z7.string(),
|
|
25714
|
+
startDate: z7.string().nullable(),
|
|
25715
|
+
finalDate: z7.string().nullable(),
|
|
25716
|
+
status: z7.nativeEnum(GenericApiStatus),
|
|
25717
|
+
completionPercentage: z7.number().min(0).max(100).optional().default(0),
|
|
25718
|
+
subjectId: z7.string().uuid().optional().nullable(),
|
|
25719
|
+
schoolId: z7.string().optional(),
|
|
25720
|
+
schoolName: z7.string().optional(),
|
|
25721
|
+
year: z7.string().optional(),
|
|
25722
|
+
className: z7.string().optional(),
|
|
25723
|
+
subjectName: z7.string().optional()
|
|
25612
25724
|
});
|
|
25613
|
-
var activitiesHistoryApiResponseSchema =
|
|
25614
|
-
message:
|
|
25615
|
-
data:
|
|
25616
|
-
activities:
|
|
25725
|
+
var activitiesHistoryApiResponseSchema = z7.object({
|
|
25726
|
+
message: z7.string(),
|
|
25727
|
+
data: z7.object({
|
|
25728
|
+
activities: z7.array(z7.unknown()).transform(
|
|
25617
25729
|
(items) => items.map((item) => activityHistoryResponseSchema.safeParse(item)).filter(
|
|
25618
25730
|
(result) => result.success
|
|
25619
25731
|
).map((result) => result.data)
|
|
25620
25732
|
),
|
|
25621
|
-
pagination:
|
|
25622
|
-
total:
|
|
25623
|
-
page:
|
|
25624
|
-
limit:
|
|
25625
|
-
totalPages:
|
|
25733
|
+
pagination: z7.object({
|
|
25734
|
+
total: z7.number(),
|
|
25735
|
+
page: z7.number(),
|
|
25736
|
+
limit: z7.number(),
|
|
25737
|
+
totalPages: z7.number()
|
|
25626
25738
|
})
|
|
25627
25739
|
})
|
|
25628
25740
|
});
|
|
@@ -25658,7 +25770,7 @@ var createUseActivitiesHistory = (fetchActivitiesHistory) => {
|
|
|
25658
25770
|
error: null,
|
|
25659
25771
|
pagination: DEFAULT_ACTIVITIES_PAGINATION
|
|
25660
25772
|
});
|
|
25661
|
-
const fetchActivities =
|
|
25773
|
+
const fetchActivities = useCallback26(
|
|
25662
25774
|
async (filters) => {
|
|
25663
25775
|
setState((prev) => ({ ...prev, loading: true, error: null }));
|
|
25664
25776
|
try {
|
|
@@ -25726,7 +25838,7 @@ var HistoryTab = ({
|
|
|
25726
25838
|
() => createHistoryTableColumns(mapSubjectNameToEnum2),
|
|
25727
25839
|
[mapSubjectNameToEnum2]
|
|
25728
25840
|
);
|
|
25729
|
-
const handleParamsChange =
|
|
25841
|
+
const handleParamsChange = useCallback27(
|
|
25730
25842
|
(params) => {
|
|
25731
25843
|
const filters = buildHistoryFiltersFromParams(params);
|
|
25732
25844
|
fetchActivities(filters);
|
|
@@ -25809,7 +25921,7 @@ var HistoryTab = ({
|
|
|
25809
25921
|
};
|
|
25810
25922
|
|
|
25811
25923
|
// src/components/ActivitiesHistory/tabs/ModelsTab.tsx
|
|
25812
|
-
import { useState as useState49, useCallback as
|
|
25924
|
+
import { useState as useState49, useCallback as useCallback29, useMemo as useMemo29, useRef as useRef27, useEffect as useEffect45 } from "react";
|
|
25813
25925
|
import { Plus as Plus5 } from "phosphor-react";
|
|
25814
25926
|
|
|
25815
25927
|
// src/components/ActivitiesHistory/config/modelsTableColumns.tsx
|
|
@@ -25915,32 +26027,32 @@ var createModelsFiltersConfig = (userData) => [
|
|
|
25915
26027
|
];
|
|
25916
26028
|
|
|
25917
26029
|
// src/hooks/useActivityModels.ts
|
|
25918
|
-
import { useState as useState48, useCallback as
|
|
25919
|
-
import { z as
|
|
26030
|
+
import { useState as useState48, useCallback as useCallback28 } from "react";
|
|
26031
|
+
import { z as z8 } from "zod";
|
|
25920
26032
|
import dayjs5 from "dayjs";
|
|
25921
|
-
var activityDraftFiltersSchema =
|
|
25922
|
-
questionTypes:
|
|
25923
|
-
questionBanks:
|
|
25924
|
-
subjects:
|
|
25925
|
-
topics:
|
|
25926
|
-
subtopics:
|
|
25927
|
-
contents:
|
|
26033
|
+
var activityDraftFiltersSchema = z8.object({
|
|
26034
|
+
questionTypes: z8.array(z8.string()).optional(),
|
|
26035
|
+
questionBanks: z8.array(z8.string()).optional(),
|
|
26036
|
+
subjects: z8.array(z8.string()).optional(),
|
|
26037
|
+
topics: z8.array(z8.string()).optional(),
|
|
26038
|
+
subtopics: z8.array(z8.string()).optional(),
|
|
26039
|
+
contents: z8.array(z8.string()).optional()
|
|
25928
26040
|
}).nullable();
|
|
25929
|
-
var activityModelResponseSchema =
|
|
25930
|
-
id:
|
|
25931
|
-
type:
|
|
25932
|
-
title:
|
|
25933
|
-
creatorUserInstitutionId:
|
|
25934
|
-
subjectId:
|
|
26041
|
+
var activityModelResponseSchema = z8.object({
|
|
26042
|
+
id: z8.string().uuid(),
|
|
26043
|
+
type: z8.nativeEnum(ActivityDraftType),
|
|
26044
|
+
title: z8.string().nullable(),
|
|
26045
|
+
creatorUserInstitutionId: z8.string().uuid().nullable(),
|
|
26046
|
+
subjectId: z8.string().uuid().nullable(),
|
|
25935
26047
|
filters: activityDraftFiltersSchema,
|
|
25936
|
-
createdAt:
|
|
25937
|
-
updatedAt:
|
|
26048
|
+
createdAt: z8.string(),
|
|
26049
|
+
updatedAt: z8.string()
|
|
25938
26050
|
});
|
|
25939
|
-
var activityModelsApiResponseSchema =
|
|
25940
|
-
message:
|
|
25941
|
-
data:
|
|
25942
|
-
activityDrafts:
|
|
25943
|
-
total:
|
|
26051
|
+
var activityModelsApiResponseSchema = z8.object({
|
|
26052
|
+
message: z8.string(),
|
|
26053
|
+
data: z8.object({
|
|
26054
|
+
activityDrafts: z8.array(activityModelResponseSchema),
|
|
26055
|
+
total: z8.number()
|
|
25944
26056
|
})
|
|
25945
26057
|
});
|
|
25946
26058
|
var DEFAULT_MODELS_PAGINATION = {
|
|
@@ -25971,7 +26083,7 @@ var createUseActivityModels = (fetchActivityModels, deleteActivityModel) => {
|
|
|
25971
26083
|
error: null,
|
|
25972
26084
|
pagination: DEFAULT_MODELS_PAGINATION
|
|
25973
26085
|
});
|
|
25974
|
-
const fetchModels =
|
|
26086
|
+
const fetchModels = useCallback28(
|
|
25975
26087
|
async (filters, subjectsMap) => {
|
|
25976
26088
|
setState((prev) => ({ ...prev, loading: true, error: null }));
|
|
25977
26089
|
try {
|
|
@@ -26006,7 +26118,7 @@ var createUseActivityModels = (fetchActivityModels, deleteActivityModel) => {
|
|
|
26006
26118
|
},
|
|
26007
26119
|
[fetchActivityModels]
|
|
26008
26120
|
);
|
|
26009
|
-
const deleteModel =
|
|
26121
|
+
const deleteModel = useCallback28(
|
|
26010
26122
|
async (id) => {
|
|
26011
26123
|
try {
|
|
26012
26124
|
await deleteActivityModel(id);
|
|
@@ -26069,7 +26181,7 @@ var ModelsTab = ({
|
|
|
26069
26181
|
() => createModelsFiltersConfig(userFilterData),
|
|
26070
26182
|
[userFilterData]
|
|
26071
26183
|
);
|
|
26072
|
-
const handleDeleteClick =
|
|
26184
|
+
const handleDeleteClick = useCallback29((model) => {
|
|
26073
26185
|
setModelToDelete(model);
|
|
26074
26186
|
setDeleteDialogOpen(true);
|
|
26075
26187
|
}, []);
|
|
@@ -26082,7 +26194,7 @@ var ModelsTab = ({
|
|
|
26082
26194
|
),
|
|
26083
26195
|
[mapSubjectNameToEnum2, onSendActivity, onEditModel, handleDeleteClick]
|
|
26084
26196
|
);
|
|
26085
|
-
const handleParamsChange =
|
|
26197
|
+
const handleParamsChange = useCallback29(
|
|
26086
26198
|
(params) => {
|
|
26087
26199
|
const filters = buildModelsFiltersFromParams(params);
|
|
26088
26200
|
fetchModels(filters, subjectsMapRef.current);
|
|
@@ -26092,7 +26204,7 @@ var ModelsTab = ({
|
|
|
26092
26204
|
useEffect45(() => {
|
|
26093
26205
|
fetchModels({ page: 1, limit: 10 }, subjectsMapRef.current);
|
|
26094
26206
|
}, [fetchModels]);
|
|
26095
|
-
const handleConfirmDelete =
|
|
26207
|
+
const handleConfirmDelete = useCallback29(async () => {
|
|
26096
26208
|
if (modelToDelete) {
|
|
26097
26209
|
const success = await deleteModel(modelToDelete.id);
|
|
26098
26210
|
if (success) {
|
|
@@ -26105,7 +26217,7 @@ var ModelsTab = ({
|
|
|
26105
26217
|
setDeleteDialogOpen(false);
|
|
26106
26218
|
setModelToDelete(null);
|
|
26107
26219
|
}, [modelToDelete, deleteModel, fetchModels, addToast]);
|
|
26108
|
-
const handleCancelDelete =
|
|
26220
|
+
const handleCancelDelete = useCallback29(() => {
|
|
26109
26221
|
setDeleteDialogOpen(false);
|
|
26110
26222
|
setModelToDelete(null);
|
|
26111
26223
|
}, []);
|
|
@@ -26462,7 +26574,7 @@ var buildUserFilterData = (userData) => ({
|
|
|
26462
26574
|
});
|
|
26463
26575
|
|
|
26464
26576
|
// src/hooks/useChat.ts
|
|
26465
|
-
import { useState as useState51, useEffect as useEffect46, useCallback as
|
|
26577
|
+
import { useState as useState51, useEffect as useEffect46, useCallback as useCallback30, useRef as useRef28 } from "react";
|
|
26466
26578
|
var WS_STATES = {
|
|
26467
26579
|
CONNECTING: 0,
|
|
26468
26580
|
OPEN: 1,
|
|
@@ -26494,12 +26606,12 @@ function useChat({
|
|
|
26494
26606
|
const isConnectingRef = useRef28(false);
|
|
26495
26607
|
const connectRef = useRef28(() => {
|
|
26496
26608
|
});
|
|
26497
|
-
const sendWsMessage =
|
|
26609
|
+
const sendWsMessage = useCallback30((message) => {
|
|
26498
26610
|
if (wsRef.current?.readyState === WS_STATES.OPEN) {
|
|
26499
26611
|
wsRef.current.send(JSON.stringify(message));
|
|
26500
26612
|
}
|
|
26501
26613
|
}, []);
|
|
26502
|
-
const sendMessage =
|
|
26614
|
+
const sendMessage = useCallback30(
|
|
26503
26615
|
(content) => {
|
|
26504
26616
|
const trimmedContent = content.trim();
|
|
26505
26617
|
if (!trimmedContent) return;
|
|
@@ -26510,12 +26622,12 @@ function useChat({
|
|
|
26510
26622
|
},
|
|
26511
26623
|
[sendWsMessage]
|
|
26512
26624
|
);
|
|
26513
|
-
const leave =
|
|
26625
|
+
const leave = useCallback30(() => {
|
|
26514
26626
|
isManualDisconnectRef.current = true;
|
|
26515
26627
|
sendWsMessage({ type: "leave" });
|
|
26516
26628
|
wsRef.current?.close(1e3, "User left");
|
|
26517
26629
|
}, [sendWsMessage]);
|
|
26518
|
-
const handleMessage =
|
|
26630
|
+
const handleMessage = useCallback30(
|
|
26519
26631
|
(event) => {
|
|
26520
26632
|
try {
|
|
26521
26633
|
const data = JSON.parse(event.data);
|
|
@@ -26583,7 +26695,7 @@ function useChat({
|
|
|
26583
26695
|
},
|
|
26584
26696
|
[onError]
|
|
26585
26697
|
);
|
|
26586
|
-
const connect =
|
|
26698
|
+
const connect = useCallback30(() => {
|
|
26587
26699
|
if (isConnectingRef.current) {
|
|
26588
26700
|
return;
|
|
26589
26701
|
}
|
|
@@ -26636,7 +26748,7 @@ function useChat({
|
|
|
26636
26748
|
maxReconnectAttempts
|
|
26637
26749
|
]);
|
|
26638
26750
|
connectRef.current = connect;
|
|
26639
|
-
const reconnect =
|
|
26751
|
+
const reconnect = useCallback30(() => {
|
|
26640
26752
|
isManualDisconnectRef.current = false;
|
|
26641
26753
|
reconnectAttemptsRef.current = 0;
|
|
26642
26754
|
connectRef.current();
|
|
@@ -26685,7 +26797,7 @@ function createUseChat(baseWsUrl) {
|
|
|
26685
26797
|
}
|
|
26686
26798
|
|
|
26687
26799
|
// src/hooks/useChatRooms.ts
|
|
26688
|
-
import { useState as useState52, useCallback as
|
|
26800
|
+
import { useState as useState52, useCallback as useCallback31 } from "react";
|
|
26689
26801
|
function useChatRooms({
|
|
26690
26802
|
apiClient
|
|
26691
26803
|
}) {
|
|
@@ -26693,7 +26805,7 @@ function useChatRooms({
|
|
|
26693
26805
|
const [availableUsers, setAvailableUsers] = useState52([]);
|
|
26694
26806
|
const [loading, setLoading] = useState52(false);
|
|
26695
26807
|
const [error, setError] = useState52(null);
|
|
26696
|
-
const fetchRooms =
|
|
26808
|
+
const fetchRooms = useCallback31(async () => {
|
|
26697
26809
|
setLoading(true);
|
|
26698
26810
|
setError(null);
|
|
26699
26811
|
try {
|
|
@@ -26709,7 +26821,7 @@ function useChatRooms({
|
|
|
26709
26821
|
setLoading(false);
|
|
26710
26822
|
}
|
|
26711
26823
|
}, [apiClient]);
|
|
26712
|
-
const fetchAvailableUsers =
|
|
26824
|
+
const fetchAvailableUsers = useCallback31(async () => {
|
|
26713
26825
|
setLoading(true);
|
|
26714
26826
|
setError(null);
|
|
26715
26827
|
try {
|
|
@@ -26725,7 +26837,7 @@ function useChatRooms({
|
|
|
26725
26837
|
setLoading(false);
|
|
26726
26838
|
}
|
|
26727
26839
|
}, [apiClient]);
|
|
26728
|
-
const createRoom =
|
|
26840
|
+
const createRoom = useCallback31(
|
|
26729
26841
|
async (participantIds) => {
|
|
26730
26842
|
setLoading(true);
|
|
26731
26843
|
setError(null);
|
|
@@ -26749,7 +26861,7 @@ function useChatRooms({
|
|
|
26749
26861
|
},
|
|
26750
26862
|
[apiClient, fetchRooms]
|
|
26751
26863
|
);
|
|
26752
|
-
const clearError =
|
|
26864
|
+
const clearError = useCallback31(() => {
|
|
26753
26865
|
setError(null);
|
|
26754
26866
|
}, []);
|
|
26755
26867
|
return {
|
|
@@ -26783,7 +26895,7 @@ var CHAT_MESSAGE_TYPES = {
|
|
|
26783
26895
|
};
|
|
26784
26896
|
|
|
26785
26897
|
// src/components/Chat/Chat.tsx
|
|
26786
|
-
import { useState as useState53, useEffect as useEffect47, useCallback as
|
|
26898
|
+
import { useState as useState53, useEffect as useEffect47, useCallback as useCallback32, useRef as useRef29 } from "react";
|
|
26787
26899
|
import {
|
|
26788
26900
|
PaperPlaneTiltIcon as PaperPlaneTiltIcon2,
|
|
26789
26901
|
XIcon,
|
|
@@ -26998,7 +27110,7 @@ function ChatContent({
|
|
|
26998
27110
|
onBackToList?.();
|
|
26999
27111
|
}
|
|
27000
27112
|
}, [initialRoomId, rooms, roomsLoading, onBackToList]);
|
|
27001
|
-
const handleSelectRoom =
|
|
27113
|
+
const handleSelectRoom = useCallback32(
|
|
27002
27114
|
(room) => {
|
|
27003
27115
|
setSelectedRoom(room);
|
|
27004
27116
|
setView("room");
|
|
@@ -27006,12 +27118,12 @@ function ChatContent({
|
|
|
27006
27118
|
},
|
|
27007
27119
|
[onRoomChange]
|
|
27008
27120
|
);
|
|
27009
|
-
const handleOpenCreateModal =
|
|
27121
|
+
const handleOpenCreateModal = useCallback32(async () => {
|
|
27010
27122
|
await fetchAvailableUsers();
|
|
27011
27123
|
setSelectedUserIds(/* @__PURE__ */ new Set());
|
|
27012
27124
|
setShowCreateModal(true);
|
|
27013
27125
|
}, [fetchAvailableUsers]);
|
|
27014
|
-
const handleToggleUser =
|
|
27126
|
+
const handleToggleUser = useCallback32((id) => {
|
|
27015
27127
|
setSelectedUserIds((prev) => {
|
|
27016
27128
|
const next = new Set(prev);
|
|
27017
27129
|
if (next.has(id)) {
|
|
@@ -27022,7 +27134,7 @@ function ChatContent({
|
|
|
27022
27134
|
return next;
|
|
27023
27135
|
});
|
|
27024
27136
|
}, []);
|
|
27025
|
-
const handleCreateRoom =
|
|
27137
|
+
const handleCreateRoom = useCallback32(async () => {
|
|
27026
27138
|
if (selectedUserIds.size === 0) return;
|
|
27027
27139
|
const room = await createRoom(Array.from(selectedUserIds));
|
|
27028
27140
|
if (room) {
|
|
@@ -27031,12 +27143,12 @@ function ChatContent({
|
|
|
27031
27143
|
onRoomChange?.(room.id);
|
|
27032
27144
|
}
|
|
27033
27145
|
}, [selectedUserIds, createRoom, onRoomChange]);
|
|
27034
|
-
const handleSendMessage =
|
|
27146
|
+
const handleSendMessage = useCallback32(() => {
|
|
27035
27147
|
if (!messageInput.trim()) return;
|
|
27036
27148
|
sendMessage(messageInput);
|
|
27037
27149
|
setMessageInput("");
|
|
27038
27150
|
}, [messageInput, sendMessage]);
|
|
27039
|
-
const handleBackToList =
|
|
27151
|
+
const handleBackToList = useCallback32(() => {
|
|
27040
27152
|
setSelectedRoom(null);
|
|
27041
27153
|
setView("list");
|
|
27042
27154
|
onBackToList?.();
|
|
@@ -27283,7 +27395,7 @@ var CalendarActivityStatus = /* @__PURE__ */ ((CalendarActivityStatus2) => {
|
|
|
27283
27395
|
})(CalendarActivityStatus || {});
|
|
27284
27396
|
|
|
27285
27397
|
// src/hooks/useSendActivity.ts
|
|
27286
|
-
import { useState as useState54, useCallback as
|
|
27398
|
+
import { useState as useState54, useCallback as useCallback33, useMemo as useMemo30, useRef as useRef30 } from "react";
|
|
27287
27399
|
import dayjs6 from "dayjs";
|
|
27288
27400
|
function transformToCategoryConfig(data) {
|
|
27289
27401
|
return [
|
|
@@ -27352,7 +27464,7 @@ function useSendActivity(config) {
|
|
|
27352
27464
|
title: selectedModel.title
|
|
27353
27465
|
};
|
|
27354
27466
|
}, [selectedModel]);
|
|
27355
|
-
const loadCategories =
|
|
27467
|
+
const loadCategories = useCallback33(async () => {
|
|
27356
27468
|
if (categoriesLoadedRef.current) return;
|
|
27357
27469
|
setIsCategoriesLoading(true);
|
|
27358
27470
|
try {
|
|
@@ -27367,7 +27479,7 @@ function useSendActivity(config) {
|
|
|
27367
27479
|
setIsCategoriesLoading(false);
|
|
27368
27480
|
}
|
|
27369
27481
|
}, [fetchCategories, onError]);
|
|
27370
|
-
const openModal =
|
|
27482
|
+
const openModal = useCallback33(
|
|
27371
27483
|
(model) => {
|
|
27372
27484
|
setSelectedModel(model);
|
|
27373
27485
|
setIsOpen(true);
|
|
@@ -27375,17 +27487,17 @@ function useSendActivity(config) {
|
|
|
27375
27487
|
},
|
|
27376
27488
|
[loadCategories]
|
|
27377
27489
|
);
|
|
27378
|
-
const closeModal =
|
|
27490
|
+
const closeModal = useCallback33(() => {
|
|
27379
27491
|
setIsOpen(false);
|
|
27380
27492
|
setSelectedModel(null);
|
|
27381
27493
|
}, []);
|
|
27382
|
-
const onCategoriesChange =
|
|
27494
|
+
const onCategoriesChange = useCallback33(
|
|
27383
27495
|
(updatedCategories) => {
|
|
27384
27496
|
setCategories(updatedCategories);
|
|
27385
27497
|
},
|
|
27386
27498
|
[]
|
|
27387
27499
|
);
|
|
27388
|
-
const handleSubmit =
|
|
27500
|
+
const handleSubmit = useCallback33(
|
|
27389
27501
|
async (data) => {
|
|
27390
27502
|
if (!selectedModel) return;
|
|
27391
27503
|
setIsLoading(true);
|
|
@@ -27695,6 +27807,7 @@ export {
|
|
|
27695
27807
|
mapSubjectEnumToName,
|
|
27696
27808
|
mapSubjectNameToEnum,
|
|
27697
27809
|
questionTypeLabels,
|
|
27810
|
+
studentActivityStatusSchema,
|
|
27698
27811
|
supportSchema,
|
|
27699
27812
|
syncDropdownState,
|
|
27700
27813
|
toggleArrayItem,
|
|
@@ -27702,6 +27815,7 @@ export {
|
|
|
27702
27815
|
transformActivityToTableItem,
|
|
27703
27816
|
transformGoalToTableItem,
|
|
27704
27817
|
transformModelToTableItem,
|
|
27818
|
+
useActivityDetails,
|
|
27705
27819
|
useAlertFormStore,
|
|
27706
27820
|
useApiConfig,
|
|
27707
27821
|
useAppContent,
|