import { useState } from 'react'; import axios from '../services/api'; const sectionBox = { marginTop: '14px', padding: '14px', background: 'var(--surface-2)', border: '1px solid var(--border)', borderRadius: '12px', }; const EXAMPLES = [ { label: '* * * * *', value: '* * * * *' }, { label: '0 9 * * 1-5', value: '0 9 * * 1-5' }, { label: '0 0 1 * *', value: '0 0 1 * *' }, { label: '*/15 * * * *', value: '*/15 * * * *' }, ]; const FIELD_LABELS = [ { key: 'minute', label: 'Minute' }, { key: 'hour', label: 'Stunde' }, { key: 'day', label: 'Tag' }, { key: 'month', label: 'Monat' }, { key: 'weekday', label: 'Wochentag' }, ]; function CronExplainerTool() { const [expression, setExpression] = useState(''); const [result, setResult] = useState(null); const [error, setError] = useState(''); const explain = async (expr) => { const val = expr !== undefined ? expr : expression; setError(''); setResult(null); if (!val.trim()) { setError('Bitte Cron-Ausdruck eingeben.'); return; } try { const res = await axios.post('/api/cron/explain', { expression: val }); setResult(res.data); } catch (err) { setError(err.response?.data?.error || err.response?.data?.message || 'Ungültiger Cron-Ausdruck'); } }; const useExample = (val) => { setExpression(val); setError(''); setResult(null); explain(val); }; const formatDate = (iso) => { const d = new Date(iso); return d.toLocaleString('de-DE', { weekday: 'short', day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit', }); }; return (
Cron-Ausdrücke (5 Felder) analysieren und auf Deutsch erklären.
{error}
} {result && ( <>Erklärung
{result.explanation}
Felder
| Feld | Ausdruck | Bedeutung |
|---|---|---|
| {label} | {expression.split(/\s+/)[i] || '—'} | {result.fields[key]} |
Nächste 5 Ausführungen