UNPKG

analytica-frontend-lib

Version:

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

268 lines (252 loc) 9.93 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } var _chunkZMQUE73Ujs = require('./chunk-ZMQUE73U.js'); var _chunkGIE6B7RGjs = require('./chunk-GIE6B7RG.js'); var _chunkATDZDVZ2js = require('./chunk-ATDZDVZ2.js'); var _chunkFCCPBAAQjs = require('./chunk-FCCPBAAQ.js'); var _chunkTCLRDUMFjs = require('./chunk-TCLRDUMF.js'); // src/components/AccessReportModal/AccessReportModal.tsx var _jsxruntime = require('react/jsx-runtime'); function buildPlatformSlices(platform) { return [ { label: "Web", value: platform.web.percentage, displayValue: platform.web.time, colorClass: "bg-success-700", color: "var(--Success-success700, #206F3E)" }, { label: "Celular", value: platform.mobile.percentage, displayValue: platform.mobile.time, colorClass: "bg-success-300", color: "var(--Success-success300, #66B584)" } ]; } function buildStudentHoursSlices(hoursByItem) { return [ { label: "Atividades", value: hoursByItem.activities.percentage, colorClass: "bg-success-700" }, { label: "Simulados", value: hoursByItem.simulations.percentage, colorClass: "bg-warning-300" }, { label: "Question\xE1rios", value: hoursByItem.questionnaires.percentage, colorClass: "bg-indicator-info" }, { label: "Videoaulas", value: hoursByItem.content.percentage, colorClass: "bg-success-300" }, { label: "Aulas recomendadas", value: hoursByItem.recommendedLessons.percentage, colorClass: "bg-indicator-positive" } ]; } var ReportContentLayout = ({ user, metricBoxes, platformSlices, hoursSlices, accessCountByPeriod }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZMQUE73Ujs.UserHeader, { name: user.name, school: user.school, className: _nullishCoalesce(user.class, () => ( "")), year: user.year } ), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-3", children: metricBoxes }), accessCountByPeriod && accessCountByPeriod.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkATDZDVZ2js.SimpleBarChart, { data: accessCountByPeriod.map((item) => ({ label: item.label, value: item.count })), title: "Quantidade de acessos por per\xEDodo", barColor: "bg-info-500", chartHeight: 150 } ), /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZMQUE73Ujs.SectionTitle, { children: "Dados de acesso por plataforma" }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCCPBAAQjs.LegendPieCard, { slices: platformSlices }) ] }), /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZMQUE73Ujs.SectionTitle, { children: "Dados de horas por item" }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCCPBAAQjs.LegendPieCard, { slices: hoursSlices }) ] }) ] }); var StudentModalContent = ({ data, accessCountByPeriod }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ReportContentLayout, { user: data.user, platformSlices: buildPlatformSlices(data.accessByPlatform), hoursSlices: buildStudentHoursSlices(data.hoursByItem), accessCountByPeriod, metricBoxes: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGIE6B7RGjs.MetricBox, { label: "Tempo total", value: data.accessData.totalTime }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGIE6B7RGjs.MetricBox, { label: "Videoaulas", value: data.accessData.contentTime }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGIE6B7RGjs.MetricBox, { label: "Aulas recomendadas", value: data.accessData.recommendedLessonsTime } ), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGIE6B7RGjs.MetricBox, { label: "Simulados", value: data.accessData.simulationsTime }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGIE6B7RGjs.MetricBox, { label: "Quantidade de acessos", value: data.accessData.accessCount } ), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGIE6B7RGjs.MetricBox, { label: "\xDAltimo acesso", value: _nullishCoalesce(data.accessData.lastAccess, () => ( "\u2014")) } ) ] }) } ); var ProfessionalModalContent = ({ data, accessCountByPeriod }) => /* @__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.user.school, className: _nullishCoalesce(data.user.class, () => ( "")), year: data.user.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 de acesso" }), /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-3", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGIE6B7RGjs.MetricBox, { label: "Tempo total", value: data.accessData.totalTime }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGIE6B7RGjs.MetricBox, { label: "Acessos", value: data.accessData.accessCount }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGIE6B7RGjs.MetricBox, { label: "\xDAltimo acesso", value: _nullishCoalesce(data.accessData.lastAccess, () => ( "\u2014")) } ) ] }) ] }), accessCountByPeriod && accessCountByPeriod.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkATDZDVZ2js.SimpleBarChart, { data: accessCountByPeriod.map((item) => ({ label: item.label, value: item.count })), title: "Quantidade de acessos por per\xEDodo", barColor: "bg-info-500", chartHeight: 150 } ), /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZMQUE73Ujs.SectionTitle, { children: "Dados de acesso por plataforma" }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFCCPBAAQjs.LegendPieCard, { slices: buildPlatformSlices(data.accessByPlatform) }) ] }) ] }); var LoadingSkeleton = ({ metricCount, showSecondaryChart = true }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-4 animate-pulse", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-3", children: Array.from({ length: metricCount }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-16 bg-background-200 rounded-xl" }, `skeleton-${String(i)}` )) }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 bg-background-200 rounded w-40 mt-2" }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-32 bg-background-200 rounded-xl" }), showSecondaryChart && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 bg-background-200 rounded w-32" }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-32 bg-background-200 rounded-xl" }) ] }) ] }); var AccessReportModal = ({ isOpen, onClose, title = "Relat\xF3rio de acesso", loading = false, error = null, accessCountByPeriod, ...variantProps }) => { let content; const isStudent = variantProps.variant === "student" /* STUDENT */; const metricCount = isStudent ? 6 : 3; const showSecondaryChart = isStudent; if (loading) { content = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadingSkeleton, { metricCount, showSecondaryChart } ); } else if (error) { content = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZMQUE73Ujs.ErrorContent, { message: error }); } else if (variantProps.data === null) { content = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZMQUE73Ujs.ErrorContent, { message: "Nenhum dado dispon\xEDvel." }); } else if (variantProps.variant === "student" /* STUDENT */) { content = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StudentModalContent, { data: variantProps.data, accessCountByPeriod } ); } else if (variantProps.variant === "professional" /* PROFESSIONAL */) { content = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProfessionalModalContent, { data: variantProps.data, accessCountByPeriod } ); } else { content = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZMQUE73Ujs.ErrorContent, { message: "Variante de relat\xF3rio inv\xE1lida." }); } 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 AccessReportModal_default = AccessReportModal; exports.AccessReportModal = AccessReportModal; exports.AccessReportModal_default = AccessReportModal_default; //# sourceMappingURL=chunk-56NXTRKS.js.map