import { useEffect, useState } from 'react'
import { api } from '../utils/api'
function FileImportBlock({ label, kind, busy, onRun }) {
const [file, setFile] = useState(null)
return (
setFile(e.target.files?.[0] || null)}
/>
{file &&
{file.name}
}
)
}
export default function AdminBlsImportPage() {
const [status, setStatus] = useState(null)
const [msg, setMsg] = useState(null)
const [error, setError] = useState(null)
const [busy, setBusy] = useState(false)
const load = () => {
api.adminBlsStatus().then(setStatus).catch((e) => setError(e.message))
}
useEffect(() => { load() }, [])
const run = async (kind, file, dry) => {
setError(null)
setBusy(true)
setMsg(dry ? 'Prüfe…' : 'Importiere…')
try {
const fn = kind === 'components' ? api.adminBlsImportComponents : api.adminBlsImportFoods
const res = await fn(file, dry)
setMsg(JSON.stringify(res, null, 2))
if (!dry) load()
} catch (e) {
setError(e.message)
setMsg(null)
} finally {
setBusy(false)
}
}
return (
BLS 4.0 importieren
Offizielle Dateien von blsdb.de (frei verfügbar, MRI). Codes bleiben erhalten.
Zuerst Components, dann die Datendatei. Immer zuerst „Prüfen“.
{status && (
{status.official_foods} offizielle Lebensmittel · {status.official_attributes} Stoffe ·
{status.manual_foods} manuell · {status.source}
)}
{error &&
{error}
}
{msg &&
{msg}}
)
}