"use client"; import { useEffect, useState } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Badge } from "@/components/ui/badge"; import { getTerraTechFacilitySummary, TerraTechSummaryRow } from "@/app/actions/imports"; import { Fuel, AlertTriangle } from "lucide-react"; interface TerraTechSummaryDialogProps { open: boolean; onOpenChange: (open: boolean) => void; importId: number; } interface SummaryData { importId: number; importName: string; layoutName: string; rows: TerraTechSummaryRow[]; } export function TerraTechSummaryDialog({ open, onOpenChange, importId }: TerraTechSummaryDialogProps) { const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [summaryData, setSummaryData] = useState(null); useEffect(() => { if (open && importId) { loadSummary(); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [open, importId]); async function loadSummary() { setLoading(true); setError(null); try { const result = await getTerraTechFacilitySummary(importId); if (result.success && result.data) { setSummaryData(result.data); } else { setError(result.error || 'Failed to load summary'); } } catch { setError('An unexpected error occurred'); } finally { setLoading(false); } } function formatNumber(value: number | string | null | undefined, decimals: number = 2): string { if (value === null || value === undefined) return '-'; const num = typeof value === 'string' ? parseFloat(value) : value; if (isNaN(num)) return '-'; return num.toLocaleString('en-US', { minimumFractionDigits: decimals, maximumFractionDigits: decimals }); } function formatPercent(value: number | string | null | undefined): string { if (value === null || value === undefined) return '-'; const num = typeof value === 'string' ? parseFloat(value) : value; if (isNaN(num)) return '-'; return `${num.toFixed(1)}%`; } return (
Facility Summary {summaryData && ( {summaryData.importName} )}
{loading && (
)} {error && (

{error}

)} {!loading && !error && summaryData && (
Total records: {summaryData.rows.length}
Well Name CorpID Facility ID Gas Oil Water State County Days Q1 Days Q2 Days Q3 Days Q4 Q1 % Q2 % Q3 % Q4 % Gas-corr Oil-corr Water-corr Missing Facility ID Missing County {summaryData.rows.length === 0 ? ( No summary data available for this import. ) : ( summaryData.rows.map((row, index) => ( {row.wellName || '-'} {row.corpId || '-'} {row.facilityId || ( - )} {formatNumber(row.gas)} {formatNumber(row.oil)} {formatNumber(row.water)} {row.state || '-'} {row.county || ( - )} {formatNumber(row.daysQ1, 0)} {formatNumber(row.daysQ2, 0)} {formatNumber(row.daysQ3, 0)} {formatNumber(row.daysQ4, 0)} {formatPercent(row.daysQ1Pct)} {formatPercent(row.daysQ2Pct)} {formatPercent(row.daysQ3Pct)} {formatPercent(row.daysQ4Pct)} {formatNumber(row.gasCorr)} {formatNumber(row.oilCorr)} {formatNumber(row.waterCorr)} {row.isMissingFacilityId && ( Yes )} {row.isMissingCounty && ( Yes )} )) )}
)}
); }