UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

270 lines (250 loc) 10.8 kB
"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