// ═══════════════════════════════════════════════════════ // Cron Parser // ═══════════════════════════════════════════════════════ function setCronPreset(expr) { document.getElementById('cronInput').value = expr; parseCron(); } async function parseCron() { const expr = document.getElementById('cronInput').value.trim(); if (!expr) return setStatus('cronStatus', 'error', 'Enter a cron expression.'); const d = await apiPost('/api/cron/parse', { expression: expr }); if (d.success) { document.getElementById('cronResult').style.display = 'block'; document.getElementById('cronDescription').textContent = d.description; document.getElementById('cronFields').innerHTML = Object.entries(d.fields).map(([k, v]) => `
${k}
${v}
` ).join(''); document.getElementById('cronNextRuns').innerHTML = d.nextRuns.map((t, i) => `
Run #${i + 1}
${t}
` ).join(''); setStatus('cronStatus', 'success', 'Parsed ✓'); } else { document.getElementById('cronResult').style.display = 'none'; setStatus('cronStatus', 'error', d.error); } }