analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
270 lines (250 loc) • 10.8 kB
JavaScript
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
var _chunkRE755MRLjs = require('./chunk-RE755MRL.js');
var _chunkZMQUE73Ujs = require('./chunk-ZMQUE73U.js');
var _chunkGIE6B7RGjs = require('./chunk-GIE6B7RG.js');
var _chunkFCCPBAAQjs = require('./chunk-FCCPBAAQ.js');
var _chunkBJMKBBN3js = require('./chunk-BJMKBBN3.js');
var _chunkTCLRDUMFjs = require('./chunk-TCLRDUMF.js');
var _chunkANT66KVKjs = require('./chunk-ANT66KVK.js');
// src/components/PerformanceReportModal/PerformanceReportModal.tsx
var _jsxruntime = require('react/jsx-runtime');
function getStatusVariant(status) {
return _nullishCoalesce(_optionalChain([Object, 'access', _ => _.values, 'call', _2 => _2(_chunkRE755MRLjs.PERFORMANCE_TAG_CONFIG), 'access', _3 => _3.find, 'call', _4 => _4((c) => c.label === status), 'optionalAccess', _5 => _5.variant]), () => ( "info"));
}
function buildQuestionsSlices(stats) {
return [
{
label: "Quest\xF5es corretas",
value: stats.correctQuestions,
colorClass: "bg-success-200"
},
{
label: "Quest\xF5es incorretas",
value: stats.incorrectQuestions,
colorClass: "bg-warning-400"
},
{
label: "Quest\xF5es em branco",
value: stats.blankQuestions,
colorClass: "bg-background-300"
}
];
}
function buildMaterialSlices(stats) {
return [
{
label: "Aulas recomendadas",
value: stats.totalRecommendedLessons,
colorClass: "bg-warning-300",
color: "var(--Indicator-Indicator-Positive, #F8CC2E)"
},
{
label: "Atividades",
value: stats.totalActivities,
colorClass: "bg-success-700",
color: "var(--Success-success700, #206F3E)"
}
];
}
var QuestionsSection = ({
title,
totalLabel,
stats,
count,
countLabel
}) => {
const displayTotal = stats.correctQuestions + stats.incorrectQuestions + stats.blankQuestions;
const slices = buildQuestionsSlices(stats);
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZMQUE73Ujs.SectionTitle, { children: title }),
count !== void 0 && countLabel ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-3", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGIE6B7RGjs.MetricBox, { className: "flex-1", label: countLabel, value: count }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_chunkGIE6B7RGjs.MetricBox,
{
className: "flex-1",
label: totalLabel,
value: displayTotal
}
)
] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGIE6B7RGjs.MetricBox, { label: totalLabel, value: displayTotal }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCCPBAAQjs.LegendPieCard, { slices })
] });
};
var LessonsTable = ({
lessons,
getLessonIcon
}) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZMQUE73Ujs.SectionTitle, { children: "Aulas baixadas" }),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-background border border-border-50 rounded-xl overflow-hidden", children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between px-4 py-2 border-b border-border-100", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "xs", weight: "bold", className: "text-text-600", children: "Aula" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "xs", weight: "bold", className: "text-text-600", children: "BNCC" })
] }),
lessons.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center py-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "sm", className: "text-text-400", children: "Nenhuma aula baixada" }) }) : lessons.map((lesson) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
"div",
{
className: "flex items-center justify-between px-4 py-3 border-b border-border-50 last:border-b-0",
children: [
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 min-w-0", children: [
getLessonIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "shrink-0 [&>svg]:w-5 [&>svg]:h-5", children: getLessonIcon(lesson) }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "sm", className: "text-text-950 truncate", children: lesson.lessonName })
] }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "sm", className: "text-text-500 shrink-0 ml-3", children: _nullishCoalesce(lesson.bnccCode, () => ( "\u2014")) })
]
},
lesson.lessonId
))
] })
] });
var StudentModalContent = ({
data,
getLessonIcon,
activityCounts
}) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_chunkZMQUE73Ujs.UserHeader,
{
name: data.user.name,
school: data.school.schoolName,
className: data.class.className,
year: data.schoolYear.schoolYearName,
statusBadge: data.status ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_chunkBJMKBBN3js.Badge_default,
{
variant: "solid",
action: getStatusVariant(data.status),
size: "small",
children: data.status.toUpperCase()
}
) : void 0
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
QuestionsSection,
{
title: "Dados gerais",
totalLabel: "Total de quest\xF5es respondidas",
stats: data.generalStats
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
QuestionsSection,
{
title: "Dados de atividades",
totalLabel: "Total de quest\xF5es",
stats: data.activityStats,
count: _optionalChain([activityCounts, 'optionalAccess', _6 => _6.activities]),
countLabel: "Atividades realizadas"
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
QuestionsSection,
{
title: "Dados de question\xE1rios",
totalLabel: "Total de quest\xF5es",
stats: data.questionnaireStats,
count: _optionalChain([activityCounts, 'optionalAccess', _7 => _7.questionnaires]),
countLabel: "Question\xE1rios realizados"
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
QuestionsSection,
{
title: "Dados de simulados",
totalLabel: "Total de quest\xF5es",
stats: data.simulationStats,
count: _optionalChain([activityCounts, 'optionalAccess', _8 => _8.simulations]),
countLabel: "Simulados realizados"
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
LessonsTable,
{
lessons: data.downloadedLessons,
getLessonIcon
}
)
] });
var ProfessionalModalContent = ({
data,
userInfo
}) => {
const slices = buildMaterialSlices(data.generalStats);
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6", children: [
userInfo && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_chunkZMQUE73Ujs.UserHeader,
{
name: userInfo.userName,
school: userInfo.schoolName,
className: userInfo.className,
year: userInfo.year
}
),
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZMQUE73Ujs.SectionTitle, { children: "Dados gerais" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_chunkGIE6B7RGjs.MetricBox,
{
label: "Total de material produzido",
value: data.generalStats.totalMaterialProduced
}
),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCCPBAAQjs.LegendPieCard, { slices })
] })
] });
};
var LoadingSkeleton = () => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-4 animate-pulse", children: [
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-16 bg-background-200 rounded-xl" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 bg-background-200 rounded w-32 mt-2" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-12 bg-background-200 rounded-xl" }),
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-32 bg-background-200 rounded-xl" })
] });
var PerformanceReportModal = ({
isOpen,
onClose,
title = "Desempenho em 1 ano",
loading = false,
error = null,
...variantProps
}) => {
let content;
if (loading) {
content = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadingSkeleton, {});
} else if (error) {
content = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZMQUE73Ujs.ErrorContent, { message: error });
} else if (variantProps.data !== null) {
if (variantProps.variant === "student" /* STUDENT */) {
content = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
StudentModalContent,
{
data: variantProps.data,
getLessonIcon: variantProps.getLessonIcon,
activityCounts: variantProps.studentActivityCounts
}
);
} else {
content = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
ProfessionalModalContent,
{
data: variantProps.data,
userInfo: variantProps.professionalUserInfo
}
);
}
}
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
_chunkTCLRDUMFjs.Modal_default,
{
isOpen,
onClose,
title,
size: "lg",
contentClassName: "max-h-[80vh] overflow-y-auto",
children: content
}
);
};
var PerformanceReportModal_default = PerformanceReportModal;
exports.PerformanceReportModal = PerformanceReportModal; exports.PerformanceReportModal_default = PerformanceReportModal_default;
//# sourceMappingURL=chunk-CCDKQZRL.js.map