analytica-frontend-lib 1.2.85 → 1.2.87
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.map +1 -1
- package/dist/ActivitiesHistory/index.mjs.map +1 -1
- package/dist/NotificationCard/index.js +1 -1
- package/dist/NotificationCard/index.js.map +1 -1
- package/dist/NotificationCard/index.mjs +1 -1
- package/dist/NotificationCard/index.mjs.map +1 -1
- package/dist/RecommendedLessonsHistory/index.d.ts +1 -1
- package/dist/RecommendedLessonsHistory/index.d.ts.map +1 -1
- package/dist/RecommendedLessonsHistory/index.js +148 -142
- package/dist/RecommendedLessonsHistory/index.js.map +1 -1
- package/dist/RecommendedLessonsHistory/index.mjs +147 -141
- package/dist/RecommendedLessonsHistory/index.mjs.map +1 -1
- package/dist/hooks/useActivitiesHistory/index.js.map +1 -1
- package/dist/hooks/useActivitiesHistory/index.mjs.map +1 -1
- package/dist/hooks/useNotifications.d.ts +2 -2
- package/dist/hooks/useNotifications.d.ts.map +1 -1
- package/dist/hooks/useRecommendedClassDrafts/index.d.ts +57 -0
- package/dist/hooks/useRecommendedClassDrafts/index.d.ts.map +1 -0
- package/dist/hooks/{useGoalDrafts → useRecommendedClassDrafts}/index.js +40 -40
- package/dist/hooks/useRecommendedClassDrafts/index.js.map +1 -0
- package/dist/hooks/{useGoalDrafts → useRecommendedClassDrafts}/index.mjs +33 -33
- package/dist/hooks/useRecommendedClassDrafts/index.mjs.map +1 -0
- package/dist/hooks/useRecommendedClassDrafts.d.ts +57 -0
- package/dist/hooks/useRecommendedClassDrafts.d.ts.map +1 -0
- package/dist/hooks/{useGoalModels.d.ts → useRecommendedClassModels.d.ts} +32 -32
- package/dist/hooks/useRecommendedClassModels.d.ts.map +1 -0
- package/dist/hooks/useRecommendedLessonDetails.d.ts +44 -44
- package/dist/hooks/useRecommendedLessonDetails.d.ts.map +1 -1
- package/dist/hooks/useRecommendedLessons/index.d.ts +35 -35
- package/dist/hooks/useRecommendedLessons/index.d.ts.map +1 -1
- package/dist/hooks/useRecommendedLessons/index.js +41 -41
- package/dist/hooks/useRecommendedLessons/index.js.map +1 -1
- package/dist/hooks/useRecommendedLessons/index.mjs +37 -37
- package/dist/hooks/useRecommendedLessons/index.mjs.map +1 -1
- package/dist/hooks/useRecommendedLessons.d.ts +35 -35
- package/dist/hooks/useRecommendedLessons.d.ts.map +1 -1
- package/dist/hooks/useRecommendedLessonsPage/index.d.ts +21 -21
- package/dist/hooks/useRecommendedLessonsPage/index.d.ts.map +1 -1
- package/dist/hooks/useRecommendedLessonsPage/index.js +39 -33
- package/dist/hooks/useRecommendedLessonsPage/index.js.map +1 -1
- package/dist/hooks/useRecommendedLessonsPage/index.mjs +39 -33
- package/dist/hooks/useRecommendedLessonsPage/index.mjs.map +1 -1
- package/dist/hooks/useRecommendedLessonsPage.d.ts +21 -21
- package/dist/hooks/useRecommendedLessonsPage.d.ts.map +1 -1
- package/dist/index.d.ts +14 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +359 -288
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +329 -262
- package/dist/index.mjs.map +1 -1
- package/dist/store/notificationStore.d.ts.map +1 -1
- package/dist/types/activitiesHistory/index.js.map +1 -1
- package/dist/types/activitiesHistory/index.mjs.map +1 -1
- package/dist/types/common.d.ts +2 -2
- package/dist/types/lessonAvailability.d.ts +33 -0
- package/dist/types/lessonAvailability.d.ts.map +1 -0
- package/dist/types/notifications.d.ts +5 -5
- package/dist/types/notifications.d.ts.map +1 -1
- package/dist/types/recommendedLessons/index.d.ts +112 -112
- package/dist/types/recommendedLessons/index.d.ts.map +1 -1
- package/dist/types/recommendedLessons/index.js +25 -25
- package/dist/types/recommendedLessons/index.js.map +1 -1
- package/dist/types/recommendedLessons/index.mjs +17 -17
- package/dist/types/recommendedLessons/index.mjs.map +1 -1
- package/dist/types/recommendedLessons.d.ts +112 -112
- package/dist/types/recommendedLessons.d.ts.map +1 -1
- package/dist/utils/lessonAvailabilityUtils.d.ts +45 -0
- package/dist/utils/lessonAvailabilityUtils.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/hooks/useGoalDrafts/index.d.ts +0 -57
- package/dist/hooks/useGoalDrafts/index.d.ts.map +0 -1
- package/dist/hooks/useGoalDrafts/index.js.map +0 -1
- package/dist/hooks/useGoalDrafts/index.mjs.map +0 -1
- package/dist/hooks/useGoalDrafts.d.ts +0 -57
- package/dist/hooks/useGoalDrafts.d.ts.map +0 -1
- package/dist/hooks/useGoalModels.d.ts.map +0 -1
package/dist/index.mjs
CHANGED
|
@@ -12739,7 +12739,7 @@ import { devtools as devtools3 } from "zustand/middleware";
|
|
|
12739
12739
|
var NotificationEntityType = /* @__PURE__ */ ((NotificationEntityType2) => {
|
|
12740
12740
|
NotificationEntityType2["ACTIVITY"] = "ACTIVITY";
|
|
12741
12741
|
NotificationEntityType2["TRAIL"] = "TRAIL";
|
|
12742
|
-
NotificationEntityType2["
|
|
12742
|
+
NotificationEntityType2["RECOMMENDEDCLASS"] = "RECOMMENDEDCLASS";
|
|
12743
12743
|
return NotificationEntityType2;
|
|
12744
12744
|
})(NotificationEntityType || {});
|
|
12745
12745
|
|
|
@@ -12748,8 +12748,7 @@ var mapBackendNotification = (backendNotification) => {
|
|
|
12748
12748
|
let type = "GENERAL";
|
|
12749
12749
|
let entityType = null;
|
|
12750
12750
|
if (backendNotification.entityType) {
|
|
12751
|
-
|
|
12752
|
-
switch (backendEntityType) {
|
|
12751
|
+
switch (backendNotification.entityType.toUpperCase()) {
|
|
12753
12752
|
case "ACTIVITY" /* ACTIVITY */:
|
|
12754
12753
|
type = "ACTIVITY";
|
|
12755
12754
|
entityType = "ACTIVITY" /* ACTIVITY */;
|
|
@@ -12758,9 +12757,9 @@ var mapBackendNotification = (backendNotification) => {
|
|
|
12758
12757
|
type = "TRAIL";
|
|
12759
12758
|
entityType = "TRAIL" /* TRAIL */;
|
|
12760
12759
|
break;
|
|
12761
|
-
case "
|
|
12762
|
-
type = "
|
|
12763
|
-
entityType = "
|
|
12760
|
+
case "RECOMMENDEDCLASS" /* RECOMMENDEDCLASS */:
|
|
12761
|
+
type = "RECOMMENDEDCLASS";
|
|
12762
|
+
entityType = "RECOMMENDEDCLASS" /* RECOMMENDEDCLASS */;
|
|
12764
12763
|
break;
|
|
12765
12764
|
default:
|
|
12766
12765
|
break;
|
|
@@ -12777,7 +12776,7 @@ var mapBackendNotification = (backendNotification) => {
|
|
|
12777
12776
|
entityId: backendNotification.entityId,
|
|
12778
12777
|
sender: backendNotification.sender,
|
|
12779
12778
|
activity: backendNotification.activity,
|
|
12780
|
-
|
|
12779
|
+
recommendedClass: backendNotification.recommendedClass,
|
|
12781
12780
|
actionLink: backendNotification.actionLink ?? null
|
|
12782
12781
|
};
|
|
12783
12782
|
};
|
|
@@ -13153,7 +13152,7 @@ var NotificationList = ({
|
|
|
13153
13152
|
groupedNotifications.map((group, idx) => /* @__PURE__ */ jsxs52("div", { className: "flex flex-col", children: [
|
|
13154
13153
|
/* @__PURE__ */ jsx65("div", { className: "flex items-end px-4 py-6 pb-4", children: /* @__PURE__ */ jsx65("h4", { className: "text-lg font-bold text-text-500 flex-grow", children: group.label }) }),
|
|
13155
13154
|
group.notifications.map((notification) => {
|
|
13156
|
-
const isGlobalNotification = !notification.entityType && !notification.entityId && !notification.activity && !notification.
|
|
13155
|
+
const isGlobalNotification = !notification.entityType && !notification.entityId && !notification.activity && !notification.recommendedClass;
|
|
13157
13156
|
let navigationHandler;
|
|
13158
13157
|
if (isGlobalNotification) {
|
|
13159
13158
|
navigationHandler = () => handleGlobalNotificationClick(notification);
|
|
@@ -13703,7 +13702,8 @@ var createUseNotifications = (apiClient) => {
|
|
|
13703
13702
|
case "ACTIVITY" /* ACTIVITY */:
|
|
13704
13703
|
window.location.href = `/atividades/${entityId}`;
|
|
13705
13704
|
break;
|
|
13706
|
-
case "
|
|
13705
|
+
case "RECOMMENDEDCLASS" /* RECOMMENDEDCLASS */:
|
|
13706
|
+
case "RECOMMENDEDCLASS":
|
|
13707
13707
|
window.location.href = `/painel/trilhas/${entityId}`;
|
|
13708
13708
|
break;
|
|
13709
13709
|
default:
|
|
@@ -13720,7 +13720,8 @@ var createUseNotifications = (apiClient) => {
|
|
|
13720
13720
|
switch (entityType.toUpperCase()) {
|
|
13721
13721
|
case "ACTIVITY" /* ACTIVITY */:
|
|
13722
13722
|
return "Ver atividade";
|
|
13723
|
-
case "
|
|
13723
|
+
case "RECOMMENDEDCLASS" /* RECOMMENDEDCLASS */:
|
|
13724
|
+
case "RECOMMENDEDCLASS":
|
|
13724
13725
|
return "Ver meta";
|
|
13725
13726
|
default:
|
|
13726
13727
|
return void 0;
|
|
@@ -23300,6 +23301,53 @@ var LessonPreview = ({
|
|
|
23300
23301
|
] });
|
|
23301
23302
|
};
|
|
23302
23303
|
|
|
23304
|
+
// src/types/lessonAvailability.ts
|
|
23305
|
+
var LESSON_AVAILABILITY = {
|
|
23306
|
+
/** Lesson is available for access */
|
|
23307
|
+
DISPONIVEL: "DISPONIVEL",
|
|
23308
|
+
/** Lesson has not started yet (current date < startDate) */
|
|
23309
|
+
NAO_INICIADA: "NAO_INICIADA",
|
|
23310
|
+
/** Lesson has expired (current date > finalDate) */
|
|
23311
|
+
EXPIRADA: "EXPIRADA"
|
|
23312
|
+
};
|
|
23313
|
+
|
|
23314
|
+
// src/utils/lessonAvailabilityUtils.ts
|
|
23315
|
+
var isDateInPast = (dateString) => {
|
|
23316
|
+
const date = new Date(dateString);
|
|
23317
|
+
const now = /* @__PURE__ */ new Date();
|
|
23318
|
+
return now > date;
|
|
23319
|
+
};
|
|
23320
|
+
var isDateInFuture = (dateString) => {
|
|
23321
|
+
const date = new Date(dateString);
|
|
23322
|
+
const now = /* @__PURE__ */ new Date();
|
|
23323
|
+
return now < date;
|
|
23324
|
+
};
|
|
23325
|
+
var checkLessonAvailability = (startDate, finalDate) => {
|
|
23326
|
+
const start = startDate ? new Date(startDate) : null;
|
|
23327
|
+
const end = finalDate ? new Date(finalDate) : null;
|
|
23328
|
+
let status = LESSON_AVAILABILITY.DISPONIVEL;
|
|
23329
|
+
if (startDate && isDateInFuture(startDate)) {
|
|
23330
|
+
status = LESSON_AVAILABILITY.NAO_INICIADA;
|
|
23331
|
+
} else if (finalDate && isDateInPast(finalDate)) {
|
|
23332
|
+
status = LESSON_AVAILABILITY.EXPIRADA;
|
|
23333
|
+
}
|
|
23334
|
+
return {
|
|
23335
|
+
status,
|
|
23336
|
+
startDate: start,
|
|
23337
|
+
endDate: end,
|
|
23338
|
+
formattedStartDate: startDate ? formatDateToBrazilian(startDate) : null,
|
|
23339
|
+
formattedEndDate: finalDate ? formatDateToBrazilian(finalDate) : null
|
|
23340
|
+
};
|
|
23341
|
+
};
|
|
23342
|
+
var isLessonNotYetAvailable = (startDate) => {
|
|
23343
|
+
if (!startDate) return false;
|
|
23344
|
+
return isDateInFuture(startDate);
|
|
23345
|
+
};
|
|
23346
|
+
var isLessonExpired = (finalDate) => {
|
|
23347
|
+
if (!finalDate) return false;
|
|
23348
|
+
return isDateInPast(finalDate);
|
|
23349
|
+
};
|
|
23350
|
+
|
|
23303
23351
|
// src/components/ActivityDetails/ActivityDetails.tsx
|
|
23304
23352
|
import { useState as useState43, useMemo as useMemo26, useCallback as useCallback20, useEffect as useEffect45, useRef as useRef28 } from "react";
|
|
23305
23353
|
import {
|
|
@@ -26065,12 +26113,12 @@ import { useState as useState50, useCallback as useCallback29, useMemo as useMem
|
|
|
26065
26113
|
import { Plus as Plus5, CaretRight as CaretRight10, Trash as Trash4, PencilSimple as PencilSimple4 } from "phosphor-react";
|
|
26066
26114
|
|
|
26067
26115
|
// src/types/recommendedLessons.ts
|
|
26068
|
-
var
|
|
26069
|
-
var
|
|
26116
|
+
var getRecommendedClassStatusBadgeAction = (status) => getStatusBadgeAction(status);
|
|
26117
|
+
var RECOMMENDED_CLASS_FILTER_STATUS_OPTIONS = [
|
|
26070
26118
|
{ id: "VENCIDA" /* VENCIDA */, name: "Vencida" },
|
|
26071
26119
|
{ id: "A_VENCER" /* A_VENCER */, name: "Ativa" }
|
|
26072
26120
|
];
|
|
26073
|
-
var
|
|
26121
|
+
var RECOMMENDED_CLASS_STATUS_OPTIONS = [
|
|
26074
26122
|
{ id: "A_VENCER" /* A_VENCER */, name: "A Vencer" },
|
|
26075
26123
|
{ id: "VENCIDA" /* VENCIDA */, name: "Vencida" },
|
|
26076
26124
|
{ id: "CONCLUIDA" /* CONCLUIDA */, name: "Conclu\xEDda" }
|
|
@@ -26110,35 +26158,35 @@ var formatDaysToComplete = (daysToComplete) => {
|
|
|
26110
26158
|
if (daysToComplete === 1) return "1 dia";
|
|
26111
26159
|
return `${daysToComplete} dias`;
|
|
26112
26160
|
};
|
|
26113
|
-
var
|
|
26161
|
+
var RECOMMENDED_CLASS_ACTIVITY_STATUS = {
|
|
26114
26162
|
PENDENTE: "PENDENTE",
|
|
26115
26163
|
CONCLUIDA: "CONCLUIDA",
|
|
26116
26164
|
EXPIRADA: "EXPIRADA"
|
|
26117
26165
|
};
|
|
26118
|
-
var
|
|
26119
|
-
|
|
26120
|
-
|
|
26121
|
-
return
|
|
26122
|
-
})(
|
|
26166
|
+
var RecommendedClassDraftType = /* @__PURE__ */ ((RecommendedClassDraftType2) => {
|
|
26167
|
+
RecommendedClassDraftType2["MODELO"] = "MODELO";
|
|
26168
|
+
RecommendedClassDraftType2["RASCUNHO"] = "RASCUNHO";
|
|
26169
|
+
return RecommendedClassDraftType2;
|
|
26170
|
+
})(RecommendedClassDraftType || {});
|
|
26123
26171
|
|
|
26124
26172
|
// src/hooks/useRecommendedLessons.ts
|
|
26125
26173
|
import { useState as useState46, useCallback as useCallback25 } from "react";
|
|
26126
26174
|
import { z as z4 } from "zod";
|
|
26127
26175
|
import dayjs4 from "dayjs";
|
|
26128
|
-
var
|
|
26176
|
+
var recommendedClassSubjectSchema = z4.object({
|
|
26129
26177
|
id: z4.string().uuid(),
|
|
26130
26178
|
name: z4.string()
|
|
26131
26179
|
}).nullable();
|
|
26132
|
-
var
|
|
26180
|
+
var recommendedClassCreatorSchema = z4.object({
|
|
26133
26181
|
id: z4.string().uuid(),
|
|
26134
26182
|
name: z4.string()
|
|
26135
26183
|
}).nullable();
|
|
26136
|
-
var
|
|
26184
|
+
var recommendedClassStatsSchema = z4.object({
|
|
26137
26185
|
totalStudents: z4.number(),
|
|
26138
26186
|
completedCount: z4.number(),
|
|
26139
26187
|
completionPercentage: z4.number()
|
|
26140
26188
|
});
|
|
26141
|
-
var
|
|
26189
|
+
var recommendedClassBreakdownSchema = z4.object({
|
|
26142
26190
|
classId: z4.string().uuid(),
|
|
26143
26191
|
className: z4.string(),
|
|
26144
26192
|
schoolId: z4.string(),
|
|
@@ -26146,7 +26194,7 @@ var goalBreakdownSchema = z4.object({
|
|
|
26146
26194
|
studentCount: z4.number(),
|
|
26147
26195
|
completedCount: z4.number()
|
|
26148
26196
|
});
|
|
26149
|
-
var
|
|
26197
|
+
var recommendedClassDataSchema = z4.object({
|
|
26150
26198
|
id: z4.string().uuid(),
|
|
26151
26199
|
title: z4.string(),
|
|
26152
26200
|
startDate: z4.string().nullable(),
|
|
@@ -26155,21 +26203,21 @@ var goalDataSchema = z4.object({
|
|
|
26155
26203
|
progress: z4.number(),
|
|
26156
26204
|
totalLessons: z4.number()
|
|
26157
26205
|
});
|
|
26158
|
-
var
|
|
26159
|
-
|
|
26160
|
-
subject:
|
|
26161
|
-
creator:
|
|
26162
|
-
stats:
|
|
26163
|
-
breakdown: z4.array(
|
|
26206
|
+
var recommendedClassHistoryItemSchema = z4.object({
|
|
26207
|
+
recommendedClass: recommendedClassDataSchema,
|
|
26208
|
+
subject: recommendedClassSubjectSchema,
|
|
26209
|
+
creator: recommendedClassCreatorSchema,
|
|
26210
|
+
stats: recommendedClassStatsSchema,
|
|
26211
|
+
breakdown: z4.array(recommendedClassBreakdownSchema)
|
|
26164
26212
|
});
|
|
26165
|
-
var
|
|
26213
|
+
var recommendedClassHistoryApiResponseSchema = z4.object({
|
|
26166
26214
|
message: z4.string(),
|
|
26167
26215
|
data: z4.object({
|
|
26168
|
-
|
|
26216
|
+
recommendedClass: z4.array(recommendedClassHistoryItemSchema),
|
|
26169
26217
|
total: z4.number()
|
|
26170
26218
|
})
|
|
26171
26219
|
});
|
|
26172
|
-
var
|
|
26220
|
+
var determineRecommendedClassStatus = (finalDate, completionPercentage) => {
|
|
26173
26221
|
if (completionPercentage === 100) {
|
|
26174
26222
|
return "CONCLU\xCDDA" /* CONCLUIDA */;
|
|
26175
26223
|
}
|
|
@@ -26182,29 +26230,29 @@ var determineGoalStatus = (finalDate, completionPercentage) => {
|
|
|
26182
26230
|
}
|
|
26183
26231
|
return "ATIVA" /* ATIVA */;
|
|
26184
26232
|
};
|
|
26185
|
-
var
|
|
26233
|
+
var transformRecommendedClassToTableItem = (item) => {
|
|
26186
26234
|
const firstBreakdown = item.breakdown[0];
|
|
26187
26235
|
const schoolName = firstBreakdown?.schoolName || "-";
|
|
26188
26236
|
const className = firstBreakdown?.className || "-";
|
|
26189
26237
|
const classDisplay = item.breakdown.length > 1 ? `${item.breakdown.length} turmas` : className;
|
|
26190
26238
|
return {
|
|
26191
|
-
id: item.
|
|
26192
|
-
startDate: item.
|
|
26193
|
-
deadline: item.
|
|
26194
|
-
title: item.
|
|
26239
|
+
id: item.recommendedClass.id,
|
|
26240
|
+
startDate: item.recommendedClass.startDate ? dayjs4(item.recommendedClass.startDate).format("DD/MM") : "-",
|
|
26241
|
+
deadline: item.recommendedClass.finalDate ? dayjs4(item.recommendedClass.finalDate).format("DD/MM") : "-",
|
|
26242
|
+
title: item.recommendedClass.title,
|
|
26195
26243
|
school: schoolName,
|
|
26196
26244
|
year: "-",
|
|
26197
26245
|
// API doesn't provide year directly
|
|
26198
26246
|
subject: item.subject?.name || "-",
|
|
26199
26247
|
class: classDisplay,
|
|
26200
|
-
status:
|
|
26201
|
-
item.
|
|
26248
|
+
status: determineRecommendedClassStatus(
|
|
26249
|
+
item.recommendedClass.finalDate,
|
|
26202
26250
|
item.stats.completionPercentage
|
|
26203
26251
|
),
|
|
26204
26252
|
completionPercentage: item.stats.completionPercentage
|
|
26205
26253
|
};
|
|
26206
26254
|
};
|
|
26207
|
-
var
|
|
26255
|
+
var handleRecommendedClassFetchError = (error) => {
|
|
26208
26256
|
if (error instanceof z4.ZodError) {
|
|
26209
26257
|
console.error("Erro ao validar dados de hist\xF3rico de aulas:", error);
|
|
26210
26258
|
return "Erro ao validar dados de hist\xF3rico de aulas";
|
|
@@ -26212,10 +26260,10 @@ var handleGoalFetchError = (error) => {
|
|
|
26212
26260
|
console.error("Erro ao carregar hist\xF3rico de aulas:", error);
|
|
26213
26261
|
return "Erro ao carregar hist\xF3rico de aulas";
|
|
26214
26262
|
};
|
|
26215
|
-
var createUseRecommendedLessonsHistory = (
|
|
26263
|
+
var createUseRecommendedLessonsHistory = (fetchRecommendedClassHistory) => {
|
|
26216
26264
|
return () => {
|
|
26217
26265
|
const [state, setState] = useState46({
|
|
26218
|
-
|
|
26266
|
+
recommendedClass: [],
|
|
26219
26267
|
loading: false,
|
|
26220
26268
|
error: null,
|
|
26221
26269
|
pagination: {
|
|
@@ -26225,21 +26273,21 @@ var createUseRecommendedLessonsHistory = (fetchGoalsHistory) => {
|
|
|
26225
26273
|
totalPages: 0
|
|
26226
26274
|
}
|
|
26227
26275
|
});
|
|
26228
|
-
const
|
|
26276
|
+
const fetchRecommendedClass = useCallback25(
|
|
26229
26277
|
async (filters) => {
|
|
26230
26278
|
setState((prev) => ({ ...prev, loading: true, error: null }));
|
|
26231
26279
|
try {
|
|
26232
|
-
const responseData = await
|
|
26233
|
-
const validatedData =
|
|
26234
|
-
const tableItems = validatedData.data.
|
|
26235
|
-
|
|
26280
|
+
const responseData = await fetchRecommendedClassHistory(filters);
|
|
26281
|
+
const validatedData = recommendedClassHistoryApiResponseSchema.parse(responseData);
|
|
26282
|
+
const tableItems = validatedData.data.recommendedClass.map(
|
|
26283
|
+
transformRecommendedClassToTableItem
|
|
26236
26284
|
);
|
|
26237
26285
|
const page = filters?.page || 1;
|
|
26238
26286
|
const limit = filters?.limit || 10;
|
|
26239
26287
|
const total = validatedData.data.total;
|
|
26240
26288
|
const totalPages = Math.ceil(total / limit);
|
|
26241
26289
|
setState({
|
|
26242
|
-
|
|
26290
|
+
recommendedClass: tableItems,
|
|
26243
26291
|
loading: false,
|
|
26244
26292
|
error: null,
|
|
26245
26293
|
pagination: {
|
|
@@ -26250,7 +26298,7 @@ var createUseRecommendedLessonsHistory = (fetchGoalsHistory) => {
|
|
|
26250
26298
|
}
|
|
26251
26299
|
});
|
|
26252
26300
|
} catch (error) {
|
|
26253
|
-
const errorMessage =
|
|
26301
|
+
const errorMessage = handleRecommendedClassFetchError(error);
|
|
26254
26302
|
setState((prev) => ({
|
|
26255
26303
|
...prev,
|
|
26256
26304
|
loading: false,
|
|
@@ -26258,11 +26306,11 @@ var createUseRecommendedLessonsHistory = (fetchGoalsHistory) => {
|
|
|
26258
26306
|
}));
|
|
26259
26307
|
}
|
|
26260
26308
|
},
|
|
26261
|
-
[
|
|
26309
|
+
[fetchRecommendedClassHistory]
|
|
26262
26310
|
);
|
|
26263
26311
|
return {
|
|
26264
26312
|
...state,
|
|
26265
|
-
|
|
26313
|
+
fetchRecommendedClass
|
|
26266
26314
|
};
|
|
26267
26315
|
};
|
|
26268
26316
|
};
|
|
@@ -26463,7 +26511,7 @@ var getSubjectOptions = (data) => {
|
|
|
26463
26511
|
name: subject.name
|
|
26464
26512
|
}));
|
|
26465
26513
|
};
|
|
26466
|
-
var
|
|
26514
|
+
var createRecommendedClassModelsFiltersConfig = (userData) => [
|
|
26467
26515
|
{
|
|
26468
26516
|
key: "content",
|
|
26469
26517
|
label: "CONTE\xDADO",
|
|
@@ -26479,7 +26527,7 @@ var createGoalModelsFiltersConfig = (userData) => [
|
|
|
26479
26527
|
];
|
|
26480
26528
|
|
|
26481
26529
|
// src/components/RecommendedLessonsHistory/utils/filterBuilders.ts
|
|
26482
|
-
var
|
|
26530
|
+
var buildRecommendedClassModelsFiltersFromParams = (params) => {
|
|
26483
26531
|
const filters = {
|
|
26484
26532
|
page: params.page,
|
|
26485
26533
|
limit: params.limit
|
|
@@ -26493,7 +26541,7 @@ var buildGoalModelsFiltersFromParams = (params) => {
|
|
|
26493
26541
|
return filters;
|
|
26494
26542
|
};
|
|
26495
26543
|
|
|
26496
|
-
// src/hooks/
|
|
26544
|
+
// src/hooks/useRecommendedClassModels.ts
|
|
26497
26545
|
import { useState as useState48, useCallback as useCallback27 } from "react";
|
|
26498
26546
|
import { z as z6 } from "zod";
|
|
26499
26547
|
import dayjs5 from "dayjs";
|
|
@@ -26509,10 +26557,10 @@ var createFetchErrorHandler = (validationErrorMessage, genericErrorMessage) => (
|
|
|
26509
26557
|
return genericErrorMessage;
|
|
26510
26558
|
};
|
|
26511
26559
|
|
|
26512
|
-
// src/hooks/
|
|
26513
|
-
var
|
|
26560
|
+
// src/hooks/useRecommendedClassModels.ts
|
|
26561
|
+
var recommendedClassModelResponseSchema = z6.object({
|
|
26514
26562
|
id: z6.string().uuid(),
|
|
26515
|
-
type: z6.nativeEnum(
|
|
26563
|
+
type: z6.nativeEnum(RecommendedClassDraftType),
|
|
26516
26564
|
title: z6.string(),
|
|
26517
26565
|
description: z6.string().nullable(),
|
|
26518
26566
|
creatorUserInstitutionId: z6.string().uuid(),
|
|
@@ -26522,20 +26570,20 @@ var goalModelResponseSchema = z6.object({
|
|
|
26522
26570
|
createdAt: z6.string(),
|
|
26523
26571
|
updatedAt: z6.string()
|
|
26524
26572
|
});
|
|
26525
|
-
var
|
|
26573
|
+
var recommendedClassModelsApiResponseSchema = z6.object({
|
|
26526
26574
|
message: z6.string(),
|
|
26527
26575
|
data: z6.object({
|
|
26528
|
-
drafts: z6.array(
|
|
26576
|
+
drafts: z6.array(recommendedClassModelResponseSchema),
|
|
26529
26577
|
total: z6.number()
|
|
26530
26578
|
})
|
|
26531
26579
|
});
|
|
26532
|
-
var
|
|
26580
|
+
var DEFAULT_RECOMMENDED_CLASS_MODELS_PAGINATION = {
|
|
26533
26581
|
total: 0,
|
|
26534
26582
|
page: 1,
|
|
26535
26583
|
limit: 10,
|
|
26536
26584
|
totalPages: 0
|
|
26537
26585
|
};
|
|
26538
|
-
var
|
|
26586
|
+
var transformRecommendedClassModelToTableItem = (model, subjectsMap) => {
|
|
26539
26587
|
const subjectName = model.subjectId ? subjectsMap?.get(model.subjectId) || "" : "";
|
|
26540
26588
|
return {
|
|
26541
26589
|
id: model.id,
|
|
@@ -26545,26 +26593,26 @@ var transformGoalModelToTableItem = (model, subjectsMap) => {
|
|
|
26545
26593
|
subjectId: model.subjectId
|
|
26546
26594
|
};
|
|
26547
26595
|
};
|
|
26548
|
-
var
|
|
26596
|
+
var handleRecommendedClassModelFetchError = createFetchErrorHandler(
|
|
26549
26597
|
"Erro ao validar dados de modelos de aulas",
|
|
26550
26598
|
"Erro ao carregar modelos de aulas"
|
|
26551
26599
|
);
|
|
26552
|
-
var
|
|
26600
|
+
var createUseRecommendedClassModels = (fetchRecommendedClassModels, deleteRecommendedClassModel) => {
|
|
26553
26601
|
return () => {
|
|
26554
26602
|
const [state, setState] = useState48({
|
|
26555
26603
|
models: [],
|
|
26556
26604
|
loading: false,
|
|
26557
26605
|
error: null,
|
|
26558
|
-
pagination:
|
|
26606
|
+
pagination: DEFAULT_RECOMMENDED_CLASS_MODELS_PAGINATION
|
|
26559
26607
|
});
|
|
26560
26608
|
const fetchModels = useCallback27(
|
|
26561
26609
|
async (filters, subjectsMap) => {
|
|
26562
26610
|
setState((prev) => ({ ...prev, loading: true, error: null }));
|
|
26563
26611
|
try {
|
|
26564
|
-
const responseData = await
|
|
26565
|
-
const validatedData =
|
|
26612
|
+
const responseData = await fetchRecommendedClassModels(filters);
|
|
26613
|
+
const validatedData = recommendedClassModelsApiResponseSchema.parse(responseData);
|
|
26566
26614
|
const tableItems = validatedData.data.drafts.map(
|
|
26567
|
-
(model) =>
|
|
26615
|
+
(model) => transformRecommendedClassModelToTableItem(model, subjectsMap)
|
|
26568
26616
|
);
|
|
26569
26617
|
const limit = filters?.limit || 10;
|
|
26570
26618
|
const page = filters?.page || 1;
|
|
@@ -26582,7 +26630,7 @@ var createUseGoalModels = (fetchGoalModels, deleteGoalModel) => {
|
|
|
26582
26630
|
}
|
|
26583
26631
|
});
|
|
26584
26632
|
} catch (error) {
|
|
26585
|
-
const errorMessage =
|
|
26633
|
+
const errorMessage = handleRecommendedClassModelFetchError(error);
|
|
26586
26634
|
setState((prev) => ({
|
|
26587
26635
|
...prev,
|
|
26588
26636
|
loading: false,
|
|
@@ -26590,19 +26638,19 @@ var createUseGoalModels = (fetchGoalModels, deleteGoalModel) => {
|
|
|
26590
26638
|
}));
|
|
26591
26639
|
}
|
|
26592
26640
|
},
|
|
26593
|
-
[
|
|
26641
|
+
[fetchRecommendedClassModels]
|
|
26594
26642
|
);
|
|
26595
26643
|
const deleteModel = useCallback27(
|
|
26596
26644
|
async (id) => {
|
|
26597
26645
|
try {
|
|
26598
|
-
await
|
|
26646
|
+
await deleteRecommendedClassModel(id);
|
|
26599
26647
|
return true;
|
|
26600
26648
|
} catch (error) {
|
|
26601
26649
|
console.error("Erro ao deletar modelo:", error);
|
|
26602
26650
|
return false;
|
|
26603
26651
|
}
|
|
26604
26652
|
},
|
|
26605
|
-
[
|
|
26653
|
+
[deleteRecommendedClassModel]
|
|
26606
26654
|
);
|
|
26607
26655
|
return {
|
|
26608
26656
|
...state,
|
|
@@ -26611,27 +26659,27 @@ var createUseGoalModels = (fetchGoalModels, deleteGoalModel) => {
|
|
|
26611
26659
|
};
|
|
26612
26660
|
};
|
|
26613
26661
|
};
|
|
26614
|
-
var
|
|
26662
|
+
var createRecommendedClassModelsHook = createUseRecommendedClassModels;
|
|
26615
26663
|
|
|
26616
26664
|
// src/components/RecommendedLessonsHistory/tabs/ModelsTab.tsx
|
|
26617
26665
|
import { jsx as jsx118 } from "react/jsx-runtime";
|
|
26618
|
-
var
|
|
26666
|
+
var RECOMMENDED_CLASS_MODELS_CONFIG = {
|
|
26619
26667
|
entityName: "aula",
|
|
26620
26668
|
entityNamePlural: "aulas",
|
|
26621
|
-
testId: "
|
|
26669
|
+
testId: "recommendedClass-models-tab",
|
|
26622
26670
|
emptyStateTitle: "Crie modelos para agilizar suas aulas",
|
|
26623
26671
|
emptyStateDescription: "Salve modelos de aulas recomendadas para reutilizar e enviar rapidamente para suas turmas!",
|
|
26624
26672
|
searchPlaceholder: "Buscar modelo"
|
|
26625
26673
|
};
|
|
26626
|
-
var
|
|
26674
|
+
var RECOMMENDED_CLASS_COLUMNS_CONFIG = {
|
|
26627
26675
|
sendButtonLabel: "Enviar aula",
|
|
26628
26676
|
sendButtonAriaLabel: "Enviar aula",
|
|
26629
26677
|
deleteButtonAriaLabel: "Deletar modelo",
|
|
26630
26678
|
editButtonAriaLabel: "Editar modelo"
|
|
26631
26679
|
};
|
|
26632
|
-
var
|
|
26633
|
-
|
|
26634
|
-
|
|
26680
|
+
var RecommendedClassModelsTab = ({
|
|
26681
|
+
fetchRecommendedClassModels,
|
|
26682
|
+
deleteRecommendedClassModel,
|
|
26635
26683
|
onCreateModel,
|
|
26636
26684
|
onSendLesson,
|
|
26637
26685
|
onEditModel,
|
|
@@ -26643,8 +26691,8 @@ var GoalModelsTab = ({
|
|
|
26643
26691
|
}) => /* @__PURE__ */ jsx118(
|
|
26644
26692
|
ModelsTabBase,
|
|
26645
26693
|
{
|
|
26646
|
-
fetchModels:
|
|
26647
|
-
deleteModel:
|
|
26694
|
+
fetchModels: fetchRecommendedClassModels,
|
|
26695
|
+
deleteModel: deleteRecommendedClassModel,
|
|
26648
26696
|
onCreateModel,
|
|
26649
26697
|
onSend: onSendLesson,
|
|
26650
26698
|
onEditModel,
|
|
@@ -26653,17 +26701,17 @@ var GoalModelsTab = ({
|
|
|
26653
26701
|
mapSubjectNameToEnum: mapSubjectNameToEnum2,
|
|
26654
26702
|
userFilterData,
|
|
26655
26703
|
subjectsMap,
|
|
26656
|
-
config:
|
|
26704
|
+
config: RECOMMENDED_CLASS_MODELS_CONFIG,
|
|
26657
26705
|
createTableColumns: (mapSubject, send, edit, del) => createModelsTableColumnsBase(
|
|
26658
26706
|
mapSubject,
|
|
26659
26707
|
send,
|
|
26660
26708
|
edit,
|
|
26661
26709
|
del,
|
|
26662
|
-
|
|
26710
|
+
RECOMMENDED_CLASS_COLUMNS_CONFIG
|
|
26663
26711
|
),
|
|
26664
|
-
createFiltersConfig:
|
|
26665
|
-
buildFiltersFromParams:
|
|
26666
|
-
createUseModels:
|
|
26712
|
+
createFiltersConfig: createRecommendedClassModelsFiltersConfig,
|
|
26713
|
+
buildFiltersFromParams: buildRecommendedClassModelsFiltersFromParams,
|
|
26714
|
+
createUseModels: createUseRecommendedClassModels
|
|
26667
26715
|
}
|
|
26668
26716
|
);
|
|
26669
26717
|
|
|
@@ -26675,7 +26723,7 @@ var getSubjectOptions2 = (data) => {
|
|
|
26675
26723
|
name: subject.name
|
|
26676
26724
|
}));
|
|
26677
26725
|
};
|
|
26678
|
-
var
|
|
26726
|
+
var createRecommendedClassDraftsFiltersConfig = (userData) => [
|
|
26679
26727
|
{
|
|
26680
26728
|
key: "content",
|
|
26681
26729
|
label: "CONTE\xDADO",
|
|
@@ -26690,34 +26738,34 @@ var createGoalDraftsFiltersConfig = (userData) => [
|
|
|
26690
26738
|
}
|
|
26691
26739
|
];
|
|
26692
26740
|
|
|
26693
|
-
// src/hooks/
|
|
26741
|
+
// src/hooks/useRecommendedClassDrafts.ts
|
|
26694
26742
|
import { useState as useState49, useCallback as useCallback28 } from "react";
|
|
26695
|
-
var
|
|
26743
|
+
var DEFAULT_RECOMMENDED_CLASS_DRAFTS_PAGINATION = {
|
|
26696
26744
|
total: 0,
|
|
26697
26745
|
page: 1,
|
|
26698
26746
|
limit: 10,
|
|
26699
26747
|
totalPages: 0
|
|
26700
26748
|
};
|
|
26701
|
-
var
|
|
26749
|
+
var handleRecommendedClassDraftFetchError = createFetchErrorHandler(
|
|
26702
26750
|
"Erro ao validar dados de rascunhos de aulas",
|
|
26703
26751
|
"Erro ao carregar rascunhos de aulas"
|
|
26704
26752
|
);
|
|
26705
|
-
var
|
|
26753
|
+
var createUseRecommendedClassDrafts = (fetchRecommendedClassDrafts, deleteRecommendedClassDraft) => {
|
|
26706
26754
|
return () => {
|
|
26707
26755
|
const [state, setState] = useState49({
|
|
26708
26756
|
models: [],
|
|
26709
26757
|
loading: false,
|
|
26710
26758
|
error: null,
|
|
26711
|
-
pagination:
|
|
26759
|
+
pagination: DEFAULT_RECOMMENDED_CLASS_DRAFTS_PAGINATION
|
|
26712
26760
|
});
|
|
26713
26761
|
const fetchModels = useCallback28(
|
|
26714
26762
|
async (filters, subjectsMap) => {
|
|
26715
26763
|
setState((prev) => ({ ...prev, loading: true, error: null }));
|
|
26716
26764
|
try {
|
|
26717
|
-
const responseData = await
|
|
26718
|
-
const validatedData =
|
|
26765
|
+
const responseData = await fetchRecommendedClassDrafts(filters);
|
|
26766
|
+
const validatedData = recommendedClassModelsApiResponseSchema.parse(responseData);
|
|
26719
26767
|
const tableItems = validatedData.data.drafts.map(
|
|
26720
|
-
(draft) =>
|
|
26768
|
+
(draft) => transformRecommendedClassModelToTableItem(draft, subjectsMap)
|
|
26721
26769
|
);
|
|
26722
26770
|
const limit = filters?.limit || 10;
|
|
26723
26771
|
const page = filters?.page || 1;
|
|
@@ -26735,7 +26783,7 @@ var createUseGoalDrafts = (fetchGoalDrafts, deleteGoalDraft) => {
|
|
|
26735
26783
|
}
|
|
26736
26784
|
});
|
|
26737
26785
|
} catch (error) {
|
|
26738
|
-
const errorMessage =
|
|
26786
|
+
const errorMessage = handleRecommendedClassDraftFetchError(error);
|
|
26739
26787
|
setState((prev) => ({
|
|
26740
26788
|
...prev,
|
|
26741
26789
|
loading: false,
|
|
@@ -26743,19 +26791,19 @@ var createUseGoalDrafts = (fetchGoalDrafts, deleteGoalDraft) => {
|
|
|
26743
26791
|
}));
|
|
26744
26792
|
}
|
|
26745
26793
|
},
|
|
26746
|
-
[
|
|
26794
|
+
[fetchRecommendedClassDrafts]
|
|
26747
26795
|
);
|
|
26748
26796
|
const deleteModel = useCallback28(
|
|
26749
26797
|
async (id) => {
|
|
26750
26798
|
try {
|
|
26751
|
-
await
|
|
26799
|
+
await deleteRecommendedClassDraft(id);
|
|
26752
26800
|
return true;
|
|
26753
26801
|
} catch (error) {
|
|
26754
26802
|
console.error("Erro ao deletar rascunho:", error);
|
|
26755
26803
|
return false;
|
|
26756
26804
|
}
|
|
26757
26805
|
},
|
|
26758
|
-
[
|
|
26806
|
+
[deleteRecommendedClassDraft]
|
|
26759
26807
|
);
|
|
26760
26808
|
return {
|
|
26761
26809
|
...state,
|
|
@@ -26764,27 +26812,27 @@ var createUseGoalDrafts = (fetchGoalDrafts, deleteGoalDraft) => {
|
|
|
26764
26812
|
};
|
|
26765
26813
|
};
|
|
26766
26814
|
};
|
|
26767
|
-
var
|
|
26815
|
+
var createRecommendedClassDraftsHook = createUseRecommendedClassDrafts;
|
|
26768
26816
|
|
|
26769
26817
|
// src/components/RecommendedLessonsHistory/tabs/DraftsTab.tsx
|
|
26770
26818
|
import { jsx as jsx119 } from "react/jsx-runtime";
|
|
26771
|
-
var
|
|
26819
|
+
var RECOMMENDED_CLASS_DRAFTS_CONFIG = {
|
|
26772
26820
|
entityName: "rascunho",
|
|
26773
26821
|
entityNamePlural: "rascunhos",
|
|
26774
|
-
testId: "
|
|
26822
|
+
testId: "recommendedClass-drafts-tab",
|
|
26775
26823
|
emptyStateTitle: "Voc\xEA n\xE3o tem aulas recomendadas em rascunho",
|
|
26776
26824
|
emptyStateDescription: "As aulas recomendadas que voc\xEA come\xE7ar a criar, aparecer\xE3o aqui automaticamente como rascunhos. Tudo \xE9 salvo enquanto voc\xEA cria, continue de onde parou quando quiser!",
|
|
26777
26825
|
searchPlaceholder: "Buscar rascunho"
|
|
26778
26826
|
};
|
|
26779
|
-
var
|
|
26827
|
+
var RECOMMENDED_CLASS_DRAFTS_COLUMNS_CONFIG = {
|
|
26780
26828
|
sendButtonLabel: "Enviar aula",
|
|
26781
26829
|
sendButtonAriaLabel: "Enviar rascunho",
|
|
26782
26830
|
deleteButtonAriaLabel: "Deletar rascunho",
|
|
26783
26831
|
editButtonAriaLabel: "Editar rascunho"
|
|
26784
26832
|
};
|
|
26785
|
-
var
|
|
26786
|
-
|
|
26787
|
-
|
|
26833
|
+
var RecommendedClassDraftsTab = ({
|
|
26834
|
+
fetchRecommendedClassDrafts,
|
|
26835
|
+
deleteRecommendedClassDraft,
|
|
26788
26836
|
onCreateDraft,
|
|
26789
26837
|
onSendDraft,
|
|
26790
26838
|
onEditDraft,
|
|
@@ -26796,8 +26844,8 @@ var GoalDraftsTab = ({
|
|
|
26796
26844
|
}) => /* @__PURE__ */ jsx119(
|
|
26797
26845
|
ModelsTabBase,
|
|
26798
26846
|
{
|
|
26799
|
-
fetchModels:
|
|
26800
|
-
deleteModel:
|
|
26847
|
+
fetchModels: fetchRecommendedClassDrafts,
|
|
26848
|
+
deleteModel: deleteRecommendedClassDraft,
|
|
26801
26849
|
onCreateModel: onCreateDraft,
|
|
26802
26850
|
onSend: onSendDraft,
|
|
26803
26851
|
onEditModel: onEditDraft,
|
|
@@ -26806,28 +26854,28 @@ var GoalDraftsTab = ({
|
|
|
26806
26854
|
mapSubjectNameToEnum: mapSubjectNameToEnum2,
|
|
26807
26855
|
userFilterData,
|
|
26808
26856
|
subjectsMap,
|
|
26809
|
-
config:
|
|
26857
|
+
config: RECOMMENDED_CLASS_DRAFTS_CONFIG,
|
|
26810
26858
|
createTableColumns: (mapSubject, send, edit, del) => createModelsTableColumnsBase(
|
|
26811
26859
|
mapSubject,
|
|
26812
26860
|
send,
|
|
26813
26861
|
edit,
|
|
26814
26862
|
del,
|
|
26815
|
-
|
|
26863
|
+
RECOMMENDED_CLASS_DRAFTS_COLUMNS_CONFIG
|
|
26816
26864
|
),
|
|
26817
|
-
createFiltersConfig:
|
|
26818
|
-
buildFiltersFromParams:
|
|
26819
|
-
createUseModels:
|
|
26865
|
+
createFiltersConfig: createRecommendedClassDraftsFiltersConfig,
|
|
26866
|
+
buildFiltersFromParams: buildRecommendedClassModelsFiltersFromParams,
|
|
26867
|
+
createUseModels: createUseRecommendedClassDrafts
|
|
26820
26868
|
}
|
|
26821
26869
|
);
|
|
26822
26870
|
|
|
26823
26871
|
// src/components/RecommendedLessonsHistory/RecommendedLessonsHistory.tsx
|
|
26824
26872
|
import { Fragment as Fragment26, jsx as jsx120, jsxs as jsxs94 } from "react/jsx-runtime";
|
|
26825
|
-
var
|
|
26826
|
-
|
|
26827
|
-
|
|
26828
|
-
|
|
26829
|
-
return
|
|
26830
|
-
})(
|
|
26873
|
+
var RecommendedClassPageTab = /* @__PURE__ */ ((RecommendedClassPageTab2) => {
|
|
26874
|
+
RecommendedClassPageTab2["HISTORY"] = "history";
|
|
26875
|
+
RecommendedClassPageTab2["DRAFTS"] = "drafts";
|
|
26876
|
+
RecommendedClassPageTab2["MODELS"] = "models";
|
|
26877
|
+
return RecommendedClassPageTab2;
|
|
26878
|
+
})(RecommendedClassPageTab || {});
|
|
26831
26879
|
var extractFilterValue = (param) => {
|
|
26832
26880
|
if (!Array.isArray(param) || param.length === 0) return {};
|
|
26833
26881
|
return param.length === 1 ? { single: param[0] } : { multiple: param };
|
|
@@ -26888,7 +26936,7 @@ var getClassOptions = (data) => {
|
|
|
26888
26936
|
name: cls.name
|
|
26889
26937
|
}));
|
|
26890
26938
|
};
|
|
26891
|
-
var
|
|
26939
|
+
var createRecommendedClassFiltersConfig = (userData) => [
|
|
26892
26940
|
{
|
|
26893
26941
|
key: "academic",
|
|
26894
26942
|
label: "DADOS ACAD\xCAMICOS",
|
|
@@ -26963,12 +27011,12 @@ var createGoalFiltersConfig = (userData) => [
|
|
|
26963
27011
|
key: "status",
|
|
26964
27012
|
label: "Status",
|
|
26965
27013
|
selectedIds: [],
|
|
26966
|
-
itens:
|
|
27014
|
+
itens: RECOMMENDED_CLASS_FILTER_STATUS_OPTIONS
|
|
26967
27015
|
}
|
|
26968
27016
|
]
|
|
26969
27017
|
}
|
|
26970
27018
|
];
|
|
26971
|
-
var createTableColumns2 = (mapSubjectNameToEnum2,
|
|
27019
|
+
var createTableColumns2 = (mapSubjectNameToEnum2, onDeleteRecommendedClass, onEditRecommendedClass) => [
|
|
26972
27020
|
{
|
|
26973
27021
|
key: "startDate",
|
|
26974
27022
|
label: "In\xEDcio",
|
|
@@ -27049,7 +27097,9 @@ var createTableColumns2 = (mapSubjectNameToEnum2, onDeleteGoal, onEditGoal) => [
|
|
|
27049
27097
|
Badge_default,
|
|
27050
27098
|
{
|
|
27051
27099
|
variant: "solid",
|
|
27052
|
-
action:
|
|
27100
|
+
action: getRecommendedClassStatusBadgeAction(
|
|
27101
|
+
status
|
|
27102
|
+
),
|
|
27053
27103
|
size: "small",
|
|
27054
27104
|
children: status
|
|
27055
27105
|
}
|
|
@@ -27080,11 +27130,11 @@ var createTableColumns2 = (mapSubjectNameToEnum2, onDeleteGoal, onEditGoal) => [
|
|
|
27080
27130
|
render: (_value, row) => {
|
|
27081
27131
|
const handleDelete = (e) => {
|
|
27082
27132
|
e.stopPropagation();
|
|
27083
|
-
|
|
27133
|
+
onDeleteRecommendedClass?.(row.id);
|
|
27084
27134
|
};
|
|
27085
27135
|
const handleEdit = (e) => {
|
|
27086
27136
|
e.stopPropagation();
|
|
27087
|
-
|
|
27137
|
+
onEditRecommendedClass?.(row.id);
|
|
27088
27138
|
};
|
|
27089
27139
|
return /* @__PURE__ */ jsxs94("div", { className: "flex justify-center gap-2", children: [
|
|
27090
27140
|
/* @__PURE__ */ jsx120(
|
|
@@ -27117,11 +27167,11 @@ var createTableColumns2 = (mapSubjectNameToEnum2, onDeleteGoal, onEditGoal) => [
|
|
|
27117
27167
|
}
|
|
27118
27168
|
];
|
|
27119
27169
|
var RecommendedLessonsHistory = ({
|
|
27120
|
-
|
|
27170
|
+
fetchRecommendedClassHistory,
|
|
27121
27171
|
onCreateLesson,
|
|
27122
27172
|
onRowClick,
|
|
27123
|
-
|
|
27124
|
-
|
|
27173
|
+
onDeleteRecommendedClass,
|
|
27174
|
+
onEditRecommendedClass,
|
|
27125
27175
|
emptyStateImage,
|
|
27126
27176
|
noSearchImage,
|
|
27127
27177
|
mapSubjectNameToEnum: mapSubjectNameToEnum2,
|
|
@@ -27129,14 +27179,14 @@ var RecommendedLessonsHistory = ({
|
|
|
27129
27179
|
title = "Hist\xF3rico de aulas recomendadas",
|
|
27130
27180
|
createButtonText = "Criar aula",
|
|
27131
27181
|
searchPlaceholder = "Buscar aula",
|
|
27132
|
-
|
|
27133
|
-
|
|
27182
|
+
fetchRecommendedClassModels,
|
|
27183
|
+
deleteRecommendedClassModel,
|
|
27134
27184
|
onCreateModel,
|
|
27135
27185
|
onSendLesson,
|
|
27136
27186
|
onEditModel,
|
|
27137
27187
|
subjectsMap,
|
|
27138
|
-
|
|
27139
|
-
|
|
27188
|
+
fetchRecommendedClassDrafts,
|
|
27189
|
+
deleteRecommendedClassDraft,
|
|
27140
27190
|
onSendDraft,
|
|
27141
27191
|
onEditDraft,
|
|
27142
27192
|
defaultTab,
|
|
@@ -27158,35 +27208,39 @@ var RecommendedLessonsHistory = ({
|
|
|
27158
27208
|
},
|
|
27159
27209
|
[onTabChange]
|
|
27160
27210
|
);
|
|
27161
|
-
const
|
|
27162
|
-
|
|
27163
|
-
const
|
|
27211
|
+
const fetchRecommendedClassHistoryRef = useRef32(fetchRecommendedClassHistory);
|
|
27212
|
+
fetchRecommendedClassHistoryRef.current = fetchRecommendedClassHistory;
|
|
27213
|
+
const useRecommendedClassHistory = useMemo28(
|
|
27164
27214
|
() => createUseRecommendedLessonsHistory(
|
|
27165
|
-
(filters) =>
|
|
27215
|
+
(filters) => fetchRecommendedClassHistoryRef.current(filters)
|
|
27166
27216
|
),
|
|
27167
27217
|
[]
|
|
27168
27218
|
);
|
|
27169
27219
|
const {
|
|
27170
|
-
|
|
27220
|
+
recommendedClass,
|
|
27171
27221
|
loading,
|
|
27172
27222
|
error,
|
|
27173
27223
|
pagination,
|
|
27174
|
-
|
|
27175
|
-
} =
|
|
27224
|
+
fetchRecommendedClass
|
|
27225
|
+
} = useRecommendedClassHistory();
|
|
27176
27226
|
const initialFilterConfigs = useMemo28(
|
|
27177
|
-
() =>
|
|
27227
|
+
() => createRecommendedClassFiltersConfig(userFilterData),
|
|
27178
27228
|
[userFilterData]
|
|
27179
27229
|
);
|
|
27180
27230
|
const tableColumns = useMemo28(
|
|
27181
|
-
() => createTableColumns2(
|
|
27182
|
-
|
|
27231
|
+
() => createTableColumns2(
|
|
27232
|
+
mapSubjectNameToEnum2,
|
|
27233
|
+
onDeleteRecommendedClass,
|
|
27234
|
+
onEditRecommendedClass
|
|
27235
|
+
),
|
|
27236
|
+
[mapSubjectNameToEnum2, onDeleteRecommendedClass, onEditRecommendedClass]
|
|
27183
27237
|
);
|
|
27184
27238
|
const handleParamsChange = useCallback29(
|
|
27185
27239
|
(params) => {
|
|
27186
27240
|
const filters = buildFiltersFromParams(params);
|
|
27187
|
-
|
|
27241
|
+
fetchRecommendedClass(filters);
|
|
27188
27242
|
},
|
|
27189
|
-
[
|
|
27243
|
+
[fetchRecommendedClass]
|
|
27190
27244
|
);
|
|
27191
27245
|
return /* @__PURE__ */ jsxs94(
|
|
27192
27246
|
"div",
|
|
@@ -27260,7 +27314,7 @@ var RecommendedLessonsHistory = ({
|
|
|
27260
27314
|
activeTab === "history" /* HISTORY */ && /* @__PURE__ */ jsx120(Fragment26, { children: error ? /* @__PURE__ */ jsx120("div", { className: "flex items-center justify-center bg-background rounded-xl w-full min-h-[705px]", children: /* @__PURE__ */ jsx120(Text_default, { size: "lg", color: "text-error-500", children: error }) }) : /* @__PURE__ */ jsx120("div", { className: "w-full", children: /* @__PURE__ */ jsx120(
|
|
27261
27315
|
TableProvider,
|
|
27262
27316
|
{
|
|
27263
|
-
data:
|
|
27317
|
+
data: recommendedClass,
|
|
27264
27318
|
headers: tableColumns,
|
|
27265
27319
|
loading,
|
|
27266
27320
|
variant: "borderless",
|
|
@@ -27327,11 +27381,11 @@ var RecommendedLessonsHistory = ({
|
|
|
27327
27381
|
}
|
|
27328
27382
|
}
|
|
27329
27383
|
) }) }),
|
|
27330
|
-
activeTab === "drafts" /* DRAFTS */ &&
|
|
27331
|
-
|
|
27384
|
+
activeTab === "drafts" /* DRAFTS */ && fetchRecommendedClassDrafts && deleteRecommendedClassDraft && onCreateLesson && /* @__PURE__ */ jsx120(
|
|
27385
|
+
RecommendedClassDraftsTab,
|
|
27332
27386
|
{
|
|
27333
|
-
|
|
27334
|
-
|
|
27387
|
+
fetchRecommendedClassDrafts,
|
|
27388
|
+
deleteRecommendedClassDraft,
|
|
27335
27389
|
onCreateDraft: onCreateLesson,
|
|
27336
27390
|
onSendDraft,
|
|
27337
27391
|
onEditDraft,
|
|
@@ -27342,11 +27396,11 @@ var RecommendedLessonsHistory = ({
|
|
|
27342
27396
|
subjectsMap
|
|
27343
27397
|
}
|
|
27344
27398
|
),
|
|
27345
|
-
activeTab === "models" /* MODELS */ &&
|
|
27346
|
-
|
|
27399
|
+
activeTab === "models" /* MODELS */ && fetchRecommendedClassModels && deleteRecommendedClassModel && onCreateModel && /* @__PURE__ */ jsx120(
|
|
27400
|
+
RecommendedClassModelsTab,
|
|
27347
27401
|
{
|
|
27348
|
-
|
|
27349
|
-
|
|
27402
|
+
fetchRecommendedClassModels,
|
|
27403
|
+
deleteRecommendedClassModel,
|
|
27350
27404
|
onCreateModel,
|
|
27351
27405
|
onSendLesson,
|
|
27352
27406
|
onEditModel,
|
|
@@ -27421,8 +27475,8 @@ var LessonHeader = ({
|
|
|
27421
27475
|
mapSubjectNameToEnum: mapSubjectNameToEnum2,
|
|
27422
27476
|
viewLessonLabel
|
|
27423
27477
|
}) => {
|
|
27424
|
-
const {
|
|
27425
|
-
const subjectName =
|
|
27478
|
+
const { recommendedClass, breakdown } = data;
|
|
27479
|
+
const subjectName = recommendedClass.lessons[0]?.supLessonsProgress?.lesson?.subject?.name || "";
|
|
27426
27480
|
const subjectEnum = mapSubjectNameToEnum2?.(subjectName);
|
|
27427
27481
|
const subjectInfo = subjectEnum ? getSubjectInfo(subjectEnum) : null;
|
|
27428
27482
|
return /* @__PURE__ */ jsx122("div", { className: "bg-background rounded-xl border border-border-50 p-6", children: /* @__PURE__ */ jsxs96("div", { className: "flex flex-col lg:flex-row lg:items-start lg:justify-between gap-4", children: [
|
|
@@ -27434,18 +27488,18 @@ var LessonHeader = ({
|
|
|
27434
27488
|
size: "xl",
|
|
27435
27489
|
weight: "bold",
|
|
27436
27490
|
className: "text-text-950 lg:text-2xl",
|
|
27437
|
-
children:
|
|
27491
|
+
children: recommendedClass.title
|
|
27438
27492
|
}
|
|
27439
27493
|
),
|
|
27440
27494
|
/* @__PURE__ */ jsxs96("div", { className: "flex flex-wrap items-center gap-2 text-sm text-text-600", children: [
|
|
27441
27495
|
/* @__PURE__ */ jsxs96(Text_default, { as: "span", size: "sm", className: "text-text-600", children: [
|
|
27442
27496
|
"In\xEDcio em ",
|
|
27443
|
-
formatDate(
|
|
27497
|
+
formatDate(recommendedClass.startDate)
|
|
27444
27498
|
] }),
|
|
27445
27499
|
/* @__PURE__ */ jsx122(Text_default, { as: "span", size: "sm", className: "text-text-400", children: "\u2022" }),
|
|
27446
27500
|
/* @__PURE__ */ jsxs96(Text_default, { as: "span", size: "sm", className: "text-text-600", children: [
|
|
27447
27501
|
"Prazo final ",
|
|
27448
|
-
formatDate(
|
|
27502
|
+
formatDate(recommendedClass.finalDate)
|
|
27449
27503
|
] }),
|
|
27450
27504
|
breakdown?.schoolName && /* @__PURE__ */ jsxs96(Fragment27, { children: [
|
|
27451
27505
|
/* @__PURE__ */ jsx122(Text_default, { as: "span", size: "sm", className: "text-text-400", children: "\u2022" }),
|
|
@@ -28000,7 +28054,7 @@ var StudentPerformanceModal = ({
|
|
|
28000
28054
|
// src/components/RecommendedLessonDetails/RecommendedLessonDetails.tsx
|
|
28001
28055
|
import { Fragment as Fragment28, jsx as jsx127, jsxs as jsxs101 } from "react/jsx-runtime";
|
|
28002
28056
|
var RecommendedLessonDetails = ({
|
|
28003
|
-
|
|
28057
|
+
recommendedClassId,
|
|
28004
28058
|
data,
|
|
28005
28059
|
loading = false,
|
|
28006
28060
|
error = null,
|
|
@@ -28022,13 +28076,16 @@ var RecommendedLessonDetails = ({
|
|
|
28022
28076
|
const [performanceError, setPerformanceError] = useState51(null);
|
|
28023
28077
|
const handleViewStudentPerformance = useCallback31(
|
|
28024
28078
|
async (studentId) => {
|
|
28025
|
-
if (!fetchStudentPerformance || !
|
|
28079
|
+
if (!fetchStudentPerformance || !recommendedClassId) return;
|
|
28026
28080
|
setPerformanceModalOpen(true);
|
|
28027
28081
|
setPerformanceLoading(true);
|
|
28028
28082
|
setPerformanceData(null);
|
|
28029
28083
|
setPerformanceError(null);
|
|
28030
28084
|
try {
|
|
28031
|
-
const result = await fetchStudentPerformance(
|
|
28085
|
+
const result = await fetchStudentPerformance(
|
|
28086
|
+
recommendedClassId,
|
|
28087
|
+
studentId
|
|
28088
|
+
);
|
|
28032
28089
|
setPerformanceData(result);
|
|
28033
28090
|
} catch (err) {
|
|
28034
28091
|
console.error("Error fetching student performance:", err);
|
|
@@ -28039,7 +28096,7 @@ var RecommendedLessonDetails = ({
|
|
|
28039
28096
|
setPerformanceLoading(false);
|
|
28040
28097
|
}
|
|
28041
28098
|
},
|
|
28042
|
-
[fetchStudentPerformance,
|
|
28099
|
+
[fetchStudentPerformance, recommendedClassId]
|
|
28043
28100
|
);
|
|
28044
28101
|
const handleClosePerformanceModal = useCallback31(() => {
|
|
28045
28102
|
setPerformanceModalOpen(false);
|
|
@@ -28049,18 +28106,18 @@ var RecommendedLessonDetails = ({
|
|
|
28049
28106
|
const defaultBreadcrumbs = useMemo30(
|
|
28050
28107
|
() => [
|
|
28051
28108
|
{ label: "Aulas recomendadas", path: "/aulas-recomendadas" },
|
|
28052
|
-
{ label: data?.
|
|
28109
|
+
{ label: data?.recommendedClass.title || "Detalhes" }
|
|
28053
28110
|
],
|
|
28054
|
-
[data?.
|
|
28111
|
+
[data?.recommendedClass.title]
|
|
28055
28112
|
);
|
|
28056
28113
|
const breadcrumbItems = breadcrumbs || defaultBreadcrumbs;
|
|
28057
28114
|
const displayStudents = useMemo30(() => {
|
|
28058
28115
|
if (!data?.details.students) return [];
|
|
28059
|
-
const deadline = data?.
|
|
28116
|
+
const deadline = data?.recommendedClass.finalDate;
|
|
28060
28117
|
return data.details.students.map(
|
|
28061
28118
|
(student) => transformStudentForDisplay(student, deadline)
|
|
28062
28119
|
);
|
|
28063
|
-
}, [data?.details.students, data?.
|
|
28120
|
+
}, [data?.details.students, data?.recommendedClass.finalDate]);
|
|
28064
28121
|
if (loading) {
|
|
28065
28122
|
return /* @__PURE__ */ jsx127(
|
|
28066
28123
|
"div",
|
|
@@ -28188,7 +28245,7 @@ var createUseRecommendedLessonsPage = (config) => {
|
|
|
28188
28245
|
mapSubjectNameToEnum: mapSubjectNameToEnum2
|
|
28189
28246
|
} = config;
|
|
28190
28247
|
return () => {
|
|
28191
|
-
const
|
|
28248
|
+
const recommendedClassMapRef = useRef33(/* @__PURE__ */ new Map());
|
|
28192
28249
|
const [sendModalOpen, setSendModalOpen] = useState52(false);
|
|
28193
28250
|
const [selectedModel, setSelectedModel] = useState52(null);
|
|
28194
28251
|
const [sendModalLoading, setSendModalLoading] = useState52(false);
|
|
@@ -28207,60 +28264,63 @@ var createUseRecommendedLessonsPage = (config) => {
|
|
|
28207
28264
|
subjects.forEach((s) => map.set(s.id, s.name));
|
|
28208
28265
|
return map;
|
|
28209
28266
|
}, [userData]);
|
|
28210
|
-
const
|
|
28267
|
+
const fetchRecommendedClassHistory = useCallback32(
|
|
28211
28268
|
async (filters) => {
|
|
28212
28269
|
const params = buildQueryParams2(filters);
|
|
28213
28270
|
const response = await api.get(
|
|
28214
|
-
endpoints.
|
|
28271
|
+
endpoints.recommendedClassHistory,
|
|
28215
28272
|
{ params }
|
|
28216
28273
|
);
|
|
28217
|
-
const
|
|
28218
|
-
|
|
28219
|
-
|
|
28274
|
+
const recommendedClass = response.data.data.recommendedClass;
|
|
28275
|
+
recommendedClass.forEach((recommendedClass2) => {
|
|
28276
|
+
recommendedClassMapRef.current.set(
|
|
28277
|
+
recommendedClass2.recommendedClass.id,
|
|
28278
|
+
recommendedClass2
|
|
28279
|
+
);
|
|
28220
28280
|
});
|
|
28221
28281
|
return response.data;
|
|
28222
28282
|
},
|
|
28223
|
-
[api, endpoints.
|
|
28283
|
+
[api, endpoints.recommendedClassHistory]
|
|
28224
28284
|
);
|
|
28225
|
-
const
|
|
28285
|
+
const fetchRecommendedClassModels = useCallback32(
|
|
28226
28286
|
async (filters) => {
|
|
28227
28287
|
const params = buildQueryParams2({
|
|
28228
28288
|
...filters,
|
|
28229
28289
|
type: "MODELO" /* MODELO */
|
|
28230
28290
|
});
|
|
28231
28291
|
const response = await api.get(
|
|
28232
|
-
endpoints.
|
|
28292
|
+
endpoints.recommendedClassDrafts,
|
|
28233
28293
|
{ params }
|
|
28234
28294
|
);
|
|
28235
28295
|
return response.data;
|
|
28236
28296
|
},
|
|
28237
|
-
[api, endpoints.
|
|
28297
|
+
[api, endpoints.recommendedClassDrafts]
|
|
28238
28298
|
);
|
|
28239
|
-
const
|
|
28299
|
+
const deleteRecommendedClassModel = useCallback32(
|
|
28240
28300
|
async (id) => {
|
|
28241
|
-
await api.delete(`${endpoints.
|
|
28301
|
+
await api.delete(`${endpoints.recommendedClassDrafts}/${id}`);
|
|
28242
28302
|
},
|
|
28243
|
-
[api, endpoints.
|
|
28303
|
+
[api, endpoints.recommendedClassDrafts]
|
|
28244
28304
|
);
|
|
28245
|
-
const
|
|
28305
|
+
const fetchRecommendedClassDrafts = useCallback32(
|
|
28246
28306
|
async (filters) => {
|
|
28247
28307
|
const params = buildQueryParams2({
|
|
28248
28308
|
...filters,
|
|
28249
28309
|
type: "RASCUNHO" /* RASCUNHO */
|
|
28250
28310
|
});
|
|
28251
28311
|
const response = await api.get(
|
|
28252
|
-
endpoints.
|
|
28312
|
+
endpoints.recommendedClassDrafts,
|
|
28253
28313
|
{ params }
|
|
28254
28314
|
);
|
|
28255
28315
|
return response.data;
|
|
28256
28316
|
},
|
|
28257
|
-
[api, endpoints.
|
|
28317
|
+
[api, endpoints.recommendedClassDrafts]
|
|
28258
28318
|
);
|
|
28259
|
-
const
|
|
28319
|
+
const deleteRecommendedClassDraft = useCallback32(
|
|
28260
28320
|
async (id) => {
|
|
28261
|
-
await api.delete(`${endpoints.
|
|
28321
|
+
await api.delete(`${endpoints.recommendedClassDrafts}/${id}`);
|
|
28262
28322
|
},
|
|
28263
|
-
[api, endpoints.
|
|
28323
|
+
[api, endpoints.recommendedClassDrafts]
|
|
28264
28324
|
);
|
|
28265
28325
|
const handleCreateLesson = useCallback32(() => {
|
|
28266
28326
|
navigate(paths.createLesson);
|
|
@@ -28269,17 +28329,20 @@ var createUseRecommendedLessonsPage = (config) => {
|
|
|
28269
28329
|
navigate(paths.createModel);
|
|
28270
28330
|
}, []);
|
|
28271
28331
|
const handleRowClick = useCallback32((row) => {
|
|
28272
|
-
const originalData =
|
|
28332
|
+
const originalData = recommendedClassMapRef.current.get(row.id);
|
|
28273
28333
|
navigate(`${paths.lessonDetails}/${row.id}`, {
|
|
28274
|
-
state: {
|
|
28334
|
+
state: { recommendedClassData: originalData }
|
|
28275
28335
|
});
|
|
28276
28336
|
}, []);
|
|
28277
|
-
const
|
|
28337
|
+
const handleEditRecommendedClass = useCallback32((id) => {
|
|
28278
28338
|
navigate(`${paths.editLesson}/${id}/editar`);
|
|
28279
28339
|
}, []);
|
|
28280
|
-
const handleEditModel = useCallback32(
|
|
28281
|
-
|
|
28282
|
-
|
|
28340
|
+
const handleEditModel = useCallback32(
|
|
28341
|
+
(model) => {
|
|
28342
|
+
navigate(`${paths.editModel}${model.id}`);
|
|
28343
|
+
},
|
|
28344
|
+
[]
|
|
28345
|
+
);
|
|
28283
28346
|
const handleSendLesson = useCallback32(
|
|
28284
28347
|
(model) => {
|
|
28285
28348
|
setSelectedModel(model);
|
|
@@ -28308,7 +28371,7 @@ var createUseRecommendedLessonsPage = (config) => {
|
|
|
28308
28371
|
if (!selectedModel) return;
|
|
28309
28372
|
setSendModalLoading(true);
|
|
28310
28373
|
try {
|
|
28311
|
-
await api.post(endpoints.
|
|
28374
|
+
await api.post(endpoints.submitRecommendedClass, {
|
|
28312
28375
|
draftId: selectedModel.id,
|
|
28313
28376
|
students: formData.students,
|
|
28314
28377
|
startDate: `${formData.startDate}T${formData.startTime}:00`,
|
|
@@ -28320,7 +28383,7 @@ var createUseRecommendedLessonsPage = (config) => {
|
|
|
28320
28383
|
setSendModalLoading(false);
|
|
28321
28384
|
}
|
|
28322
28385
|
},
|
|
28323
|
-
[api, endpoints.
|
|
28386
|
+
[api, endpoints.submitRecommendedClass, selectedModel]
|
|
28324
28387
|
);
|
|
28325
28388
|
const handleSendModalClose = useCallback32(() => {
|
|
28326
28389
|
setSendModalOpen(false);
|
|
@@ -28334,17 +28397,17 @@ var createUseRecommendedLessonsPage = (config) => {
|
|
|
28334
28397
|
);
|
|
28335
28398
|
return {
|
|
28336
28399
|
historyProps: {
|
|
28337
|
-
|
|
28338
|
-
|
|
28339
|
-
|
|
28400
|
+
fetchRecommendedClassHistory,
|
|
28401
|
+
fetchRecommendedClassModels,
|
|
28402
|
+
deleteRecommendedClassModel,
|
|
28340
28403
|
onCreateLesson: handleCreateLesson,
|
|
28341
28404
|
onCreateModel: handleCreateModel,
|
|
28342
28405
|
onRowClick: handleRowClick,
|
|
28343
|
-
|
|
28406
|
+
onEditRecommendedClass: handleEditRecommendedClass,
|
|
28344
28407
|
onEditModel: handleEditModel,
|
|
28345
28408
|
onSendLesson: handleSendLesson,
|
|
28346
|
-
|
|
28347
|
-
|
|
28409
|
+
fetchRecommendedClassDrafts,
|
|
28410
|
+
deleteRecommendedClassDraft,
|
|
28348
28411
|
onSendDraft: handleSendLesson,
|
|
28349
28412
|
onEditDraft: handleEditModel,
|
|
28350
28413
|
emptyStateImage,
|
|
@@ -28374,7 +28437,7 @@ var createRecommendedLessonsPageHook = createUseRecommendedLessonsPage;
|
|
|
28374
28437
|
// src/hooks/useRecommendedLessonDetails.ts
|
|
28375
28438
|
import { useState as useState53, useCallback as useCallback33, useEffect as useEffect52 } from "react";
|
|
28376
28439
|
import { z as z7 } from "zod";
|
|
28377
|
-
var
|
|
28440
|
+
var recommendedClassLessonSubjectSchema = z7.object({
|
|
28378
28441
|
id: z7.string(),
|
|
28379
28442
|
name: z7.string(),
|
|
28380
28443
|
color: z7.string(),
|
|
@@ -28384,38 +28447,38 @@ var lessonContentSchema = z7.object({
|
|
|
28384
28447
|
id: z7.string(),
|
|
28385
28448
|
name: z7.string()
|
|
28386
28449
|
});
|
|
28387
|
-
var
|
|
28450
|
+
var recommendedClassLessonSchema = z7.object({
|
|
28388
28451
|
id: z7.string(),
|
|
28389
28452
|
content: lessonContentSchema,
|
|
28390
28453
|
subtopic: lessonContentSchema,
|
|
28391
28454
|
topic: lessonContentSchema,
|
|
28392
|
-
subject:
|
|
28455
|
+
subject: recommendedClassLessonSubjectSchema
|
|
28393
28456
|
});
|
|
28394
|
-
var
|
|
28457
|
+
var recommendedClassLessonProgressSchema = z7.object({
|
|
28395
28458
|
id: z7.string(),
|
|
28396
28459
|
userId: z7.string(),
|
|
28397
28460
|
lessonId: z7.string(),
|
|
28398
28461
|
progress: z7.number(),
|
|
28399
|
-
lesson:
|
|
28462
|
+
lesson: recommendedClassLessonSchema
|
|
28400
28463
|
});
|
|
28401
|
-
var
|
|
28402
|
-
|
|
28464
|
+
var recommendedClassLessonsItemSchema = z7.object({
|
|
28465
|
+
recommendedClassId: z7.string(),
|
|
28403
28466
|
supLessonsProgressId: z7.string(),
|
|
28404
|
-
supLessonsProgress:
|
|
28467
|
+
supLessonsProgress: recommendedClassLessonProgressSchema
|
|
28405
28468
|
});
|
|
28406
|
-
var
|
|
28469
|
+
var recommendedClassMetadataSchema = z7.object({
|
|
28407
28470
|
id: z7.string(),
|
|
28408
28471
|
title: z7.string(),
|
|
28409
28472
|
startDate: z7.string(),
|
|
28410
28473
|
finalDate: z7.string(),
|
|
28411
28474
|
progress: z7.number(),
|
|
28412
|
-
|
|
28475
|
+
lessons: z7.array(recommendedClassLessonsItemSchema)
|
|
28413
28476
|
});
|
|
28414
|
-
var
|
|
28477
|
+
var recommendedClassApiResponseSchema = z7.object({
|
|
28415
28478
|
message: z7.string(),
|
|
28416
|
-
data:
|
|
28479
|
+
data: recommendedClassMetadataSchema
|
|
28417
28480
|
});
|
|
28418
|
-
var
|
|
28481
|
+
var recommendedClassDetailStudentSchema = z7.object({
|
|
28419
28482
|
userInstitutionId: z7.string(),
|
|
28420
28483
|
userId: z7.string(),
|
|
28421
28484
|
name: z7.string(),
|
|
@@ -28424,29 +28487,29 @@ var goalDetailStudentSchema = z7.object({
|
|
|
28424
28487
|
avgScore: z7.number().nullable(),
|
|
28425
28488
|
daysToComplete: z7.number().nullable()
|
|
28426
28489
|
});
|
|
28427
|
-
var
|
|
28490
|
+
var recommendedClassDetailAggregatedSchema = z7.object({
|
|
28428
28491
|
completionPercentage: z7.number(),
|
|
28429
28492
|
avgScore: z7.number().nullable()
|
|
28430
28493
|
});
|
|
28431
|
-
var
|
|
28494
|
+
var recommendedClassDetailContentPerformanceItemSchema = z7.object({
|
|
28432
28495
|
contentId: z7.string(),
|
|
28433
28496
|
contentName: z7.string(),
|
|
28434
28497
|
rate: z7.number()
|
|
28435
28498
|
}).nullable();
|
|
28436
|
-
var
|
|
28437
|
-
best:
|
|
28438
|
-
worst:
|
|
28499
|
+
var recommendedClassDetailContentPerformanceSchema = z7.object({
|
|
28500
|
+
best: recommendedClassDetailContentPerformanceItemSchema,
|
|
28501
|
+
worst: recommendedClassDetailContentPerformanceItemSchema
|
|
28439
28502
|
});
|
|
28440
|
-
var
|
|
28441
|
-
students: z7.array(
|
|
28442
|
-
aggregated:
|
|
28443
|
-
contentPerformance:
|
|
28503
|
+
var recommendedClassDetailsDataSchema = z7.object({
|
|
28504
|
+
students: z7.array(recommendedClassDetailStudentSchema),
|
|
28505
|
+
aggregated: recommendedClassDetailAggregatedSchema,
|
|
28506
|
+
contentPerformance: recommendedClassDetailContentPerformanceSchema
|
|
28444
28507
|
});
|
|
28445
|
-
var
|
|
28508
|
+
var recommendedClassDetailsApiResponseSchema = z7.object({
|
|
28446
28509
|
message: z7.string(),
|
|
28447
|
-
data:
|
|
28510
|
+
data: recommendedClassDetailsDataSchema
|
|
28448
28511
|
});
|
|
28449
|
-
var
|
|
28512
|
+
var recommendedClassBreakdownSchema2 = z7.object({
|
|
28450
28513
|
classId: z7.string().uuid(),
|
|
28451
28514
|
className: z7.string(),
|
|
28452
28515
|
schoolId: z7.string(),
|
|
@@ -28454,14 +28517,14 @@ var goalBreakdownSchema2 = z7.object({
|
|
|
28454
28517
|
studentCount: z7.number(),
|
|
28455
28518
|
completedCount: z7.number()
|
|
28456
28519
|
});
|
|
28457
|
-
var
|
|
28458
|
-
|
|
28459
|
-
breakdown: z7.array(
|
|
28520
|
+
var historyRecommendedClassItemSchema = z7.object({
|
|
28521
|
+
recommendedClass: z7.object({ id: z7.string().uuid() }),
|
|
28522
|
+
breakdown: z7.array(recommendedClassBreakdownSchema2)
|
|
28460
28523
|
});
|
|
28461
28524
|
var historyApiResponseSchema = z7.object({
|
|
28462
28525
|
message: z7.string(),
|
|
28463
28526
|
data: z7.object({
|
|
28464
|
-
|
|
28527
|
+
recommendedClass: z7.array(historyRecommendedClassItemSchema),
|
|
28465
28528
|
total: z7.number()
|
|
28466
28529
|
})
|
|
28467
28530
|
});
|
|
@@ -28492,23 +28555,23 @@ var createUseRecommendedLessonDetails = (apiClient) => {
|
|
|
28492
28555
|
setState((prev) => ({ ...prev, loading: true, error: null }));
|
|
28493
28556
|
try {
|
|
28494
28557
|
const promises = [
|
|
28495
|
-
apiClient.
|
|
28496
|
-
apiClient.
|
|
28558
|
+
apiClient.fetchRecommendedClass(lessonId),
|
|
28559
|
+
apiClient.fetchRecommendedClassDetails(lessonId),
|
|
28497
28560
|
apiClient.fetchBreakdown ? apiClient.fetchBreakdown(lessonId) : Promise.resolve(null)
|
|
28498
28561
|
];
|
|
28499
|
-
const [
|
|
28500
|
-
const
|
|
28501
|
-
const validatedDetails =
|
|
28562
|
+
const [recommendedClassResponse, detailsResponse, historyResponse] = await Promise.all(promises);
|
|
28563
|
+
const validatedRecommendedClass = recommendedClassApiResponseSchema.parse(recommendedClassResponse);
|
|
28564
|
+
const validatedDetails = recommendedClassDetailsApiResponseSchema.parse(detailsResponse);
|
|
28502
28565
|
let breakdown;
|
|
28503
28566
|
if (historyResponse) {
|
|
28504
28567
|
const validatedHistory = historyApiResponseSchema.parse(historyResponse);
|
|
28505
|
-
const historyItem = validatedHistory.data.
|
|
28506
|
-
(g) => g.
|
|
28568
|
+
const historyItem = validatedHistory.data.recommendedClass.find(
|
|
28569
|
+
(g) => g.recommendedClass.id === lessonId
|
|
28507
28570
|
);
|
|
28508
28571
|
breakdown = historyItem?.breakdown[0];
|
|
28509
28572
|
}
|
|
28510
28573
|
const lessonData = {
|
|
28511
|
-
|
|
28574
|
+
recommendedClass: validatedRecommendedClass.data,
|
|
28512
28575
|
details: validatedDetails.data,
|
|
28513
28576
|
breakdown
|
|
28514
28577
|
};
|
|
@@ -30445,9 +30508,9 @@ export {
|
|
|
30445
30508
|
CorrectActivityModal_default as CorrectActivityModal,
|
|
30446
30509
|
CreateActivity,
|
|
30447
30510
|
DEFAULT_ACTIVITIES_PAGINATION,
|
|
30448
|
-
DEFAULT_GOAL_DRAFTS_PAGINATION,
|
|
30449
|
-
DEFAULT_GOAL_MODELS_PAGINATION,
|
|
30450
30511
|
DEFAULT_MODELS_PAGINATION,
|
|
30512
|
+
DEFAULT_RECOMMENDED_CLASS_DRAFTS_PAGINATION,
|
|
30513
|
+
DEFAULT_RECOMMENDED_CLASS_MODELS_PAGINATION,
|
|
30451
30514
|
DIFFICULTY_LEVEL_ENUM,
|
|
30452
30515
|
DateTimeInput_default as DateTimeInput,
|
|
30453
30516
|
Divider_default as Divider,
|
|
@@ -30461,21 +30524,13 @@ export {
|
|
|
30461
30524
|
EmptyState_default as EmptyState,
|
|
30462
30525
|
FileAttachment_default as FileAttachment,
|
|
30463
30526
|
FilterModal,
|
|
30464
|
-
GOAL_ACTIVITY_STATUS,
|
|
30465
|
-
GOAL_FILTER_STATUS_OPTIONS,
|
|
30466
|
-
GOAL_STATUS_OPTIONS,
|
|
30467
30527
|
ActivityStatus2 as GeneralActivityStatus,
|
|
30468
|
-
GenericApiStatus as GoalApiStatus,
|
|
30469
|
-
BadgeActionType as GoalBadgeActionType,
|
|
30470
|
-
GenericDisplayStatus as GoalDisplayStatus,
|
|
30471
|
-
GoalDraftType,
|
|
30472
|
-
GoalDraftsTab,
|
|
30473
|
-
GoalPageTab,
|
|
30474
30528
|
IconButton_default as IconButton,
|
|
30475
30529
|
IconRender_default as IconRender,
|
|
30476
30530
|
IconRoundedButton_default as IconRoundedButton,
|
|
30477
30531
|
ImageUpload,
|
|
30478
30532
|
Input_default as Input,
|
|
30533
|
+
LESSON_AVAILABILITY,
|
|
30479
30534
|
LatexRenderer_default as LatexRenderer,
|
|
30480
30535
|
LessonPreview,
|
|
30481
30536
|
loadingModal_default as LoadingModal,
|
|
@@ -30529,10 +30584,19 @@ export {
|
|
|
30529
30584
|
QuizResultTitle,
|
|
30530
30585
|
QuizTitle,
|
|
30531
30586
|
QuizTrueOrFalse,
|
|
30587
|
+
RECOMMENDED_CLASS_ACTIVITY_STATUS,
|
|
30588
|
+
RECOMMENDED_CLASS_FILTER_STATUS_OPTIONS,
|
|
30589
|
+
RECOMMENDED_CLASS_STATUS_OPTIONS,
|
|
30532
30590
|
Radio_default as Radio,
|
|
30533
30591
|
RadioGroup,
|
|
30534
30592
|
RadioGroupItem,
|
|
30535
30593
|
RankingCard,
|
|
30594
|
+
GenericApiStatus as RecommendedClassApiStatus,
|
|
30595
|
+
BadgeActionType as RecommendedClassBadgeActionType,
|
|
30596
|
+
GenericDisplayStatus as RecommendedClassDisplayStatus,
|
|
30597
|
+
RecommendedClassDraftType,
|
|
30598
|
+
RecommendedClassDraftsTab,
|
|
30599
|
+
RecommendedClassPageTab,
|
|
30536
30600
|
RecommendedLessonDetails_default as RecommendedLessonDetails,
|
|
30537
30601
|
RecommendedLessonsHistory,
|
|
30538
30602
|
STUDENT_ACTIVITY_STATUS,
|
|
@@ -30586,16 +30650,17 @@ export {
|
|
|
30586
30650
|
activitiesHistoryApiResponseSchema,
|
|
30587
30651
|
activityModelsApiResponseSchema,
|
|
30588
30652
|
buildUserFilterData,
|
|
30653
|
+
checkLessonAvailability,
|
|
30589
30654
|
cn,
|
|
30590
30655
|
convertActivityFiltersToQuestionsFilter,
|
|
30591
30656
|
createActivitiesHistoryHook,
|
|
30592
30657
|
createActivityFiltersDataHook,
|
|
30593
30658
|
createActivityModelsHook,
|
|
30594
|
-
createGoalDraftsHook,
|
|
30595
|
-
createGoalModelsHook,
|
|
30596
30659
|
createNotificationStore,
|
|
30597
30660
|
createNotificationsHook,
|
|
30598
30661
|
createQuestionsListHook,
|
|
30662
|
+
createRecommendedClassDraftsHook,
|
|
30663
|
+
createRecommendedClassModelsHook,
|
|
30599
30664
|
createRecommendedLessonDetailsHook,
|
|
30600
30665
|
createRecommendedLessonsHistoryHook,
|
|
30601
30666
|
createRecommendedLessonsPageHook,
|
|
@@ -30604,17 +30669,17 @@ export {
|
|
|
30604
30669
|
createUseActivityModels,
|
|
30605
30670
|
createUseChat,
|
|
30606
30671
|
createUseChatRooms,
|
|
30607
|
-
createUseGoalDrafts,
|
|
30608
|
-
createUseGoalModels,
|
|
30609
30672
|
createUseNotificationStore,
|
|
30610
30673
|
createUseNotifications,
|
|
30611
30674
|
createUseQuestionsList,
|
|
30675
|
+
createUseRecommendedClassDrafts,
|
|
30676
|
+
createUseRecommendedClassModels,
|
|
30612
30677
|
createUseRecommendedLessonDetails,
|
|
30613
30678
|
createUseRecommendedLessonsHistory,
|
|
30614
30679
|
createUseRecommendedLessonsPage,
|
|
30615
30680
|
createZustandAuthAdapter,
|
|
30616
30681
|
deriveStudentStatus,
|
|
30617
|
-
|
|
30682
|
+
determineRecommendedClassStatus,
|
|
30618
30683
|
formatDateToBrazilian,
|
|
30619
30684
|
formatDaysToComplete,
|
|
30620
30685
|
formatFileSize,
|
|
@@ -30629,8 +30694,8 @@ export {
|
|
|
30629
30694
|
getChatWsUrl,
|
|
30630
30695
|
getClassOptionsFromUserData,
|
|
30631
30696
|
getDeviceType,
|
|
30632
|
-
getGoalStatusBadgeAction,
|
|
30633
30697
|
getQuestionStatusBadgeConfig,
|
|
30698
|
+
getRecommendedClassStatusBadgeAction,
|
|
30634
30699
|
getRootDomain,
|
|
30635
30700
|
getSchoolOptionsFromUserData,
|
|
30636
30701
|
getSchoolYearOptionsFromUserData,
|
|
@@ -30646,20 +30711,18 @@ export {
|
|
|
30646
30711
|
getSubjectInfo,
|
|
30647
30712
|
getSubjectName,
|
|
30648
30713
|
getSubjectOptionsFromUserData,
|
|
30649
|
-
goalApiResponseSchema,
|
|
30650
|
-
goalDetailsApiResponseSchema,
|
|
30651
|
-
goalModelsApiResponseSchema,
|
|
30652
|
-
goalsHistoryApiResponseSchema,
|
|
30653
30714
|
handleActivityFetchError,
|
|
30654
|
-
handleGoalDraftFetchError,
|
|
30655
|
-
handleGoalFetchError,
|
|
30656
|
-
handleGoalModelFetchError,
|
|
30657
30715
|
handleLessonDetailsFetchError,
|
|
30658
30716
|
handleModelFetchError,
|
|
30717
|
+
handleRecommendedClassDraftFetchError,
|
|
30718
|
+
handleRecommendedClassFetchError,
|
|
30719
|
+
handleRecommendedClassModelFetchError,
|
|
30659
30720
|
historyApiResponseSchema,
|
|
30660
30721
|
isChatUserInfoValid,
|
|
30661
30722
|
isDeadlinePassed,
|
|
30662
30723
|
isFormValid,
|
|
30724
|
+
isLessonExpired,
|
|
30725
|
+
isLessonNotYetAvailable,
|
|
30663
30726
|
isStepValid,
|
|
30664
30727
|
mapActivityStatusToDisplay,
|
|
30665
30728
|
mapApiStatusToInternal,
|
|
@@ -30669,6 +30732,10 @@ export {
|
|
|
30669
30732
|
mapSubjectEnumToName,
|
|
30670
30733
|
mapSubjectNameToEnum,
|
|
30671
30734
|
questionTypeLabels,
|
|
30735
|
+
recommendedClassApiResponseSchema,
|
|
30736
|
+
recommendedClassDetailsApiResponseSchema,
|
|
30737
|
+
recommendedClassHistoryApiResponseSchema,
|
|
30738
|
+
recommendedClassModelsApiResponseSchema,
|
|
30672
30739
|
renderSubjectCell,
|
|
30673
30740
|
studentActivityStatusSchema,
|
|
30674
30741
|
supportSchema,
|
|
@@ -30676,9 +30743,9 @@ export {
|
|
|
30676
30743
|
toggleArrayItem,
|
|
30677
30744
|
toggleSingleValue,
|
|
30678
30745
|
transformActivityToTableItem,
|
|
30679
|
-
transformGoalModelToTableItem,
|
|
30680
|
-
transformGoalToTableItem,
|
|
30681
30746
|
transformModelToTableItem,
|
|
30747
|
+
transformRecommendedClassModelToTableItem,
|
|
30748
|
+
transformRecommendedClassToTableItem,
|
|
30682
30749
|
useActivityDetails,
|
|
30683
30750
|
useAlertFormStore,
|
|
30684
30751
|
useApiConfig,
|