/** * Logs Table Component * Displays logs in a table format similar to tasks */ import React, { useEffect } from 'react'; import { useContentPlan } from '../context/ContentPlanContext'; import { Log } from '../types'; const LogsTable: React.FC = () => { const { logs, logsLoading, logsError, fetchLogs, getString } = useContentPlan(); useEffect(() => { // Fetch logs on mount fetchLogs({ limit: 100 }); }, []); // Empty dependency array - only fetch on mount const getLevelBadgeClasses = (level: Log['level']): string => { switch (level) { case 'error': return 'text-red-600 bg-red-50'; case 'warning': return 'text-yellow-600 bg-yellow-50'; case 'info': return 'text-blue-600 bg-blue-50'; case 'debug': return 'text-gray-600 bg-gray-50'; default: return 'text-gray-600 bg-gray-50'; } }; const formatDate = (dateString: string): string => { try { const date = new Date(dateString); return date.toLocaleString(); } catch { return dateString; } }; const formatContext = (context: string | null | undefined): string => { if (!context) return ''; try { const parsed = JSON.parse(context); return JSON.stringify(parsed, null, 2); } catch { return context; } }; if (logsLoading && logs.length === 0) { return (

{getString('log', 'loading', 'Loading logs...')}

); } if (logsError) { return (

{getString('log', 'error_loading', 'Error loading logs:')}{' '} {logsError}

); } if (!logsLoading && logs.length === 0) { return (

{getString('log', 'no_logs', 'No logs found')}

); } return (
{logs.map(log => ( ))}
{getString('log', 'date', 'Date')} {getString('log', 'level', 'Level')} {getString('log', 'event', 'Event')} {getString('log', 'message', 'Message')} {getString('log', 'tokens_spent', 'Tokens Spent')} {getString('log', 'task_id', 'Task ID')}
{formatDate(log.created_at)} {log.level.toUpperCase()} {log.event || '-'}
{log.message || '-'} {log.context && (
{getString( 'log', 'show_context', 'Show context' )}
                                                {formatContext(log.context)}
                                            
)}
{log.tokens_spent !== null && log.tokens_spent !== undefined ? log.tokens_spent : '-'} {log.task_id || '-'}
); }; export default LogsTable;