29 lines
1.5 KiB
JavaScript
29 lines
1.5 KiB
JavaScript
// ═══════════════════════════════════════════════════════
|
|
// 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]) =>
|
|
`<div class="result-row"><div class="label">${k}</div><div class="value">${v}</div></div>`
|
|
).join('');
|
|
document.getElementById('cronNextRuns').innerHTML = d.nextRuns.map((t, i) =>
|
|
`<div class="result-row"><div class="label">Run #${i + 1}</div><div class="value" onclick="copyText(this.textContent)" title="Click to copy">${t}</div></div>`
|
|
).join('');
|
|
setStatus('cronStatus', 'success', 'Parsed ✓');
|
|
} else {
|
|
document.getElementById('cronResult').style.display = 'none';
|
|
setStatus('cronStatus', 'error', d.error);
|
|
}
|
|
}
|
|
|