/** * Scheduler Admin JavaScript * Handles dynamic loading of scheduler status in admin panel */ (function() { 'use strict'; // Wait for DOM to be ready document.addEventListener('DOMContentLoaded', function() { // Check if we're on the scheduler config page const healthStatusEl = document.getElementById('scheduler-health-status'); const triggersEl = document.getElementById('scheduler-triggers'); if (!healthStatusEl && !triggersEl) { return; // Not on scheduler page } // Load scheduler status loadSchedulerStatus(); // Refresh every 30 seconds if page is visible let refreshInterval = setInterval(function() { if (!document.hidden) { loadSchedulerStatus(); } }, 30000); // Clean up interval when leaving page window.addEventListener('beforeunload', function() { clearInterval(refreshInterval); }); }); /** * Load scheduler status via AJAX */ function loadSchedulerStatus() { const healthStatusEl = document.getElementById('scheduler-health-status'); const triggersEl = document.getElementById('scheduler-triggers'); // Get the admin base URL const adminBase = GravAdmin ? GravAdmin.config.base_url_relative : '/admin'; const nonce = GravAdmin ? GravAdmin.config.admin_nonce : ''; // Make AJAX request fetch(adminBase + '/scheduler/status', { method: 'GET', headers: { 'Accept': 'application/json', 'X-Requested-With': 'XMLHttpRequest', 'Admin-Nonce': nonce }, credentials: 'same-origin' }) .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(data => { // Update health status if (healthStatusEl && data.health) { healthStatusEl.innerHTML = data.health; healthStatusEl.classList.remove('text-muted'); } // Update triggers if (triggersEl && data.triggers) { triggersEl.innerHTML = data.triggers; triggersEl.classList.remove('text-muted'); } }) .catch(error => { console.error('Error loading scheduler status:', error); // Show error message if (healthStatusEl) { healthStatusEl.innerHTML = '