import React, { useState } from 'react'; import type { FlaggedItem, ResolvedItem, ErrorItem } from '../types'; interface AuditingProps { flaggedItems: FlaggedItem[]; resolvedItems: ResolvedItem[]; errorItems: ErrorItem[]; onNavigate: (item: { campaignName: string, proofName: string, version: number }) => void; } const formatDate = (isoString: string) => { try { return new Date(isoString).toLocaleDateString('en-GB', { day: '2-digit', month: 'short', year: 'numeric', }); } catch (e) { return 'Invalid Date'; } }; const FlagsTable: React.FC<{ items: FlaggedItem[], onNavigate: AuditingProps['onNavigate'] }> = ({ items, onNavigate }) => (
{items.length > 0 ? items.map((item, index) => ( onNavigate(item)} title={`Click to view Version ${item.version} of ${item.proofName}`} > )) : ( )}
Proof Name Proof Version Submitter Submit Agency Agent Flagged User Comments Date
{item.proofName} Version {item.version} {item.submitter} {item.submitAgency} {item.agentFlagged}
{item.comments || No comment}
{formatDate(item.timestamp)}
There are currently no flagged items to audit.
); const ResolutionsTable: React.FC<{ items: ResolvedItem[], onNavigate: AuditingProps['onNavigate'] }> = ({ items, onNavigate }) => (
{items.length > 0 ? items.map((item, index) => ( onNavigate(item)} title={`Click to view Version ${item.version} of ${item.proofName}`} > )) : ( )}
Proof Name Proof Version Submitter Submit Agency Agent Agent Issue User Comments Date
{item.proofName} Version {item.version} {item.submitter} {item.submitAgency} {item.agent}
{item.issue}
{item.resolution}
{formatDate(item.timestamp)}
There are currently no resolved items to audit.
); const ErrorsTable: React.FC<{ items: ErrorItem[], onNavigate: AuditingProps['onNavigate'] }> = ({ items, onNavigate }) => (
{items.length > 0 ? items.map((item, index) => ( onNavigate(item)} title={`Click to view Version ${item.version} of ${item.proofName}`} > )) : ( )}
Proof Name Proof Version Submitter Submit Agency Error Summary Date
{item.proofName} Version {item.version} {item.submitter} {item.submitAgency}
{item.errorSummary}
{formatDate(item.timestamp)}
There are currently no analysis errors to audit.
); export const Auditing: React.FC = ({ flaggedItems, resolvedItems, errorItems, onNavigate }) => { const [activeTab, setActiveTab] = useState<'Flags' | 'Resolutions' | 'Errors'>('Flags'); return (

Auditing

Review and investigate all user-flagged feedback.

{activeTab === 'Flags' && } {activeTab === 'Resolutions' && } {activeTab === 'Errors' && }
); };