AVIS / frontend /src /components /violation /EChallanCard.jsx
X2-0's picture
HF Clean Deploy
1c0c94d
Raw
History Blame Contribute Delete
1.81 kB
import { fmtDate } from '../../lib/format.js'
import { typeInfo } from '../../lib/constants.js'
import EvidenceHash from './EvidenceHash.jsx'
const HEADERS = {
auto_confirmed: 'AUTOMATED e-CHALLAN (DRAFT)',
vlm_confirmed: 'AUTOMATED e-CHALLAN (DRAFT)',
human_review: 'e-CHALLAN — PENDING REVIEW',
abstain: 'e-CHALLAN — NOT ISSUED (ABSTAINED)',
}
export default function EChallanCard({ v }) {
const t = typeInfo(v.type)
const dispo = (v.review_status && v.review_status !== '' ? v.review_status : v.route) || v.route
return (
<div className="challan">
<div className="hd">{HEADERS[v.route] || 'e-CHALLAN'}</div>
<div className="grid">
<span className="k">Violation</span>
<span className="v">
{t.label} <span className="muted">({v.type})</span>
</span>
<span className="k">Plate</span>
<span className="v">
{v.plate && v.plate.text ? (
<span className="plate">{v.plate.text}</span>
) : (
<span className="muted">not captured</span>
)}
</span>
<span className="k">Law</span>
<span className="v">
{v.legal ? `${v.legal.act} · §${v.legal.section}` : '—'}
</span>
<span className="k">Fine</span>
<span className="v">{v.legal ? v.legal.fine : '—'}</span>
<span className="k">Disposition</span>
<span className="v">{dispo}</span>
<span className="k">Date</span>
<span className="v">{fmtDate(v.created_at)} UTC</span>
<span className="k">Evidence</span>
<span className="v">
<EvidenceHash hash={v.evidence_hash} />
</span>
<span className="k">Image ID</span>
<span className="v hash">{v.image_id}</span>
</div>
</div>
)
}