UNPKG

analytica-frontend-lib

Version:

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

1 lines 5.59 kB
{"version":3,"sources":["../src/utils/activityDetailsUtils.ts"],"sourcesContent":["/**\n * Activity Details Utilities\n * Helper functions for activity details components\n */\n\nimport dayjs from 'dayjs';\nimport type {\n StudentActivityStatus,\n StatusBadgeConfig,\n} from '../types/activityDetails';\nimport { STUDENT_ACTIVITY_STATUS } from '../types/activityDetails';\n\n/**\n * Get status badge configuration\n * @param status - Student activity status\n * @returns Status badge configuration with label and colors\n */\nexport const getStatusBadgeConfig = (\n status: StudentActivityStatus\n): StatusBadgeConfig => {\n const configs: Record<StudentActivityStatus, StatusBadgeConfig> = {\n [STUDENT_ACTIVITY_STATUS.CONCLUIDO]: {\n label: 'Concluído',\n bgColor: 'bg-green-50',\n textColor: 'text-green-800',\n },\n [STUDENT_ACTIVITY_STATUS.AGUARDANDO_CORRECAO]: {\n label: 'Aguardando Correção',\n bgColor: 'bg-yellow-50',\n textColor: 'text-yellow-800',\n },\n [STUDENT_ACTIVITY_STATUS.AGUARDANDO_RESPOSTA]: {\n label: 'Aguardando Resposta',\n bgColor: 'bg-blue-50',\n textColor: 'text-blue-800',\n },\n [STUDENT_ACTIVITY_STATUS.NAO_ENTREGUE]: {\n label: 'Não Entregue',\n bgColor: 'bg-red-50',\n textColor: 'text-red-800',\n },\n [STUDENT_ACTIVITY_STATUS.AWAITING_ANSWER_SHEET]: {\n label: 'Aguardando Gabarito',\n bgColor: 'bg-sky-50',\n textColor: 'text-sky-700',\n },\n [STUDENT_ACTIVITY_STATUS.ANSWER_SHEET_RECEIVED]: {\n label: 'Gabarito Recebido',\n bgColor: 'bg-emerald-50',\n textColor: 'text-emerald-800',\n },\n };\n\n return (\n configs[status] ?? {\n label: status,\n bgColor: 'bg-gray-50',\n textColor: 'text-gray-700',\n }\n );\n};\n\n/**\n * Format time spent in seconds to HH:MM:SS\n * @param seconds - Time in seconds\n * @returns Formatted time string in HH:MM:SS format\n */\nexport const formatTimeSpent = (seconds: number): string => {\n const totalSeconds = Math.floor(Math.abs(seconds));\n const hours = Math.floor(totalSeconds / 3600);\n const minutes = Math.floor((totalSeconds % 3600) / 60);\n const secs = totalSeconds % 60;\n\n return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(secs).padStart(2, '0')}`;\n};\n\n/**\n * Format question numbers to display\n * @param numbers - Array of question numbers (1-indexed from API)\n * @returns Formatted string with question numbers (padded)\n */\nexport const formatQuestionNumbers = (numbers: number[]): string => {\n if (numbers.length === 0) return '-';\n\n return numbers.map((n) => String(n).padStart(2, '0')).join(', ');\n};\n\n/**\n * Format date string to Brazilian format (DD/MM/YYYY)\n * @param dateString - ISO date string\n * @returns Formatted date string\n */\nexport const formatDateToBrazilian = (dateString: string): string => {\n const date = new Date(dateString);\n const day = String(date.getUTCDate()).padStart(2, '0');\n const month = String(date.getUTCMonth() + 1).padStart(2, '0');\n const year = date.getUTCFullYear();\n return `${day}/${month}/${year}`;\n};\n\n/**\n * Format an ACTIVITY date (start/deadline) to Brazilian DD/MM/YYYY in LOCAL\n * time. Activity dates are stored in local-time terms — a deadline \"ends on\n * day X\" is persisted as 23:59 local (e.g. 02:59Z of day X+1). Formatting in\n * UTC (see formatDateToBrazilian) would show the day after for such values,\n * disagreeing with the calendar dots and the activities list. Use this for\n * activity start/final dates so all three stay on the same local day.\n *\n * NOTE: this is intentionally separate from formatDateToBrazilian, which is\n * also used for lesson dates stored as UTC midnight ('2024-01-01T00:00:00Z')\n * where the UTC day is the intended one.\n * @param dateString - ISO date string\n * @returns Formatted date string (DD/MM/YYYY) in local time\n */\nexport const formatActivityDateToBrazilian = (dateString: string): string => {\n return dayjs(dateString).format('DD/MM/YYYY');\n};\n"],"mappings":";;;;;AAKA,OAAO,WAAW;AAYX,IAAM,uBAAuB,CAClC,WACsB;AACtB,QAAM,UAA4D;AAAA,IAChE,CAAC,wBAAwB,SAAS,GAAG;AAAA,MACnC,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,CAAC,wBAAwB,mBAAmB,GAAG;AAAA,MAC7C,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,CAAC,wBAAwB,mBAAmB,GAAG;AAAA,MAC7C,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,CAAC,wBAAwB,YAAY,GAAG;AAAA,MACtC,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,CAAC,wBAAwB,qBAAqB,GAAG;AAAA,MAC/C,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,CAAC,wBAAwB,qBAAqB,GAAG;AAAA,MAC/C,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,EACF;AAEA,SACE,QAAQ,MAAM,KAAK;AAAA,IACjB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,WAAW;AAAA,EACb;AAEJ;AAOO,IAAM,kBAAkB,CAAC,YAA4B;AAC1D,QAAM,eAAe,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC;AACjD,QAAM,QAAQ,KAAK,MAAM,eAAe,IAAI;AAC5C,QAAM,UAAU,KAAK,MAAO,eAAe,OAAQ,EAAE;AACrD,QAAM,OAAO,eAAe;AAE5B,SAAO,GAAG,OAAO,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,OAAO,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,OAAO,IAAI,EAAE,SAAS,GAAG,GAAG,CAAC;AAC/G;AAOO,IAAM,wBAAwB,CAAC,YAA8B;AAClE,MAAI,QAAQ,WAAW,EAAG,QAAO;AAEjC,SAAO,QAAQ,IAAI,CAAC,MAAM,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,IAAI;AACjE;AAOO,IAAM,wBAAwB,CAAC,eAA+B;AACnE,QAAM,OAAO,IAAI,KAAK,UAAU;AAChC,QAAM,MAAM,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG;AACrD,QAAM,QAAQ,OAAO,KAAK,YAAY,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AAC5D,QAAM,OAAO,KAAK,eAAe;AACjC,SAAO,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI;AAChC;AAgBO,IAAM,gCAAgC,CAAC,eAA+B;AAC3E,SAAO,MAAM,UAAU,EAAE,OAAO,YAAY;AAC9C;","names":[]}