import { useState, useEffect, useRef } from 'react' import { useSearchParams } from 'react-router-dom' import { api } from '../api' const FIELD_TYPES = ['text', 'numeric', 'date'] function SampleTable({ rows }) { if (!rows || rows.length === 0) return null const cols = Object.keys(rows[0]) return (
| {c} | )}
|---|
| {row[c] == null ? — : String(row[c])} | ))}
No sources yet. Create one to get started.
)} {/* Source detail */} {sourceObj && !creating && (| setFieldSort(s => ({ col, dir: s.col === col && s.dir === 'asc' ? 'desc' : 'asc' }))} className={`pb-1 font-medium cursor-pointer select-none hover:text-gray-600 ${center ? 'text-center' : ''}`} > {label} {fieldSort.col === col ? (fieldSort.dir === 'asc' ? '▲' : '▼') : '⇅'} | ))}|||||
|---|---|---|---|---|---|
| {f.key} | {f.origins.join(', ')} |
{inView && (
setSchemaFields(sf =>
sf.map(s => s.name === f.key ? { ...s, expression: e.target.value || undefined } : s)
)}
/>
)}
|
{isRaw && ( { const current = constraintFields.split(',').map(s => s.trim()).filter(Boolean) const next = e.target.checked ? [...current, f.key] : current.filter(k => k !== f.key) setConstraintFields(next.join(', ')) }} /> )} | { if (e.target.checked) { const nextSeq = schemaFields.length > 0 ? Math.max(...schemaFields.map(s => s.seq ?? 0)) + 1 : 1 setSchemaFields(sf => [...sf, { name: f.key, type: 'text', seq: nextSeq }]) } else { setSchemaFields(sf => sf.filter(s => s.name !== f.key)) } }} /> | {inView && ( setSchemaFields(sf => sf.map(s => s.name === f.key ? { ...s, seq: parseInt(e.target.value) || 0 } : s) )} /> )} |
{viewName}
)}
>
)}
{result}
} {error &&{error}
}