| 1 |
/** |
| 2 |
* Admin status auto-update functionality |
| 3 |
*/ |
| 4 |
(function($) { |
| 5 |
'use strict'; |
| 6 |
|
| 7 |
// Status update interval ID |
| 8 |
let statusInterval = null; |
| 9 |
const refreshInterval = 3000; // 3 seconds |
| 10 |
|
| 11 |
/** |
| 12 |
* Updates the status cards with fresh data |
| 13 |
*/ |
| 14 |
function updateStatus() { |
| 15 |
$.ajax({ |
| 16 |
url: mxchat_status_data.ajax_url, |
| 17 |
type: 'POST', |
| 18 |
data: { |
| 19 |
action: 'mxchat_get_status_updates', |
| 20 |
nonce: mxchat_status_data.nonce |
| 21 |
}, |
| 22 |
success: function(response) { |
| 23 |
// Update sitemap status if it exists |
| 24 |
if (response.sitemap_status) { |
| 25 |
// Update progress bar |
| 26 |
$('.mxchat-status-card:contains("Sitemap Processing") .mxchat-progress-fill') |
| 27 |
.css('width', response.sitemap_status.percentage + '%'); |
| 28 |
|
| 29 |
// Update status text |
| 30 |
$('.mxchat-status-card:contains("Sitemap Processing") .mxchat-status-details p:first') |
| 31 |
.text('Progress: ' + response.sitemap_status.processed_urls + ' of ' + |
| 32 |
response.sitemap_status.total_urls + ' URLs (' + |
| 33 |
response.sitemap_status.percentage + '%)'); |
| 34 |
|
| 35 |
// If complete, refresh the page to clean up |
| 36 |
if (response.sitemap_status.status === 'complete') { |
| 37 |
location.reload(); |
| 38 |
} |
| 39 |
} else { |
| 40 |
// If no more sitemap status, remove the card with animation |
| 41 |
$('.mxchat-status-card:contains("Sitemap Processing")').fadeOut(300); |
| 42 |
} |
| 43 |
|
| 44 |
// Update PDF status if it exists |
| 45 |
if (response.pdf_status) { |
| 46 |
// Update progress bar |
| 47 |
$('.mxchat-status-card:contains("PDF Processing") .mxchat-progress-fill') |
| 48 |
.css('width', response.pdf_status.percentage + '%'); |
| 49 |
|
| 50 |
// Update status text |
| 51 |
$('.mxchat-status-card:contains("PDF Processing") .mxchat-status-details p:first') |
| 52 |
.text('Progress: ' + response.pdf_status.processed_pages + ' of ' + |
| 53 |
response.pdf_status.total_pages + ' pages (' + |
| 54 |
response.pdf_status.percentage + '%)'); |
| 55 |
|
| 56 |
// If complete, refresh the page to clean up |
| 57 |
if (response.pdf_status.status === 'complete') { |
| 58 |
location.reload(); |
| 59 |
} |
| 60 |
} else { |
| 61 |
// If no more PDF status, remove the card with animation |
| 62 |
$('.mxchat-status-card:contains("PDF Processing")').fadeOut(300); |
| 63 |
} |
| 64 |
|
| 65 |
// If nothing is processing anymore, stop checking |
| 66 |
if (!response.is_processing) { |
| 67 |
clearInterval(statusInterval); |
| 68 |
// Maybe reload the page to refresh the table with new data |
| 69 |
location.reload(); |
| 70 |
} |
| 71 |
} |
| 72 |
}); |
| 73 |
} |
| 74 |
|
| 75 |
// Initialize when the document is ready |
| 76 |
$(document).ready(function() { |
| 77 |
// Change the text in the status headers |
| 78 |
$('.mxchat-status-header h4:contains("Refresh for update")').each(function() { |
| 79 |
$(this).text($(this).text().replace('(Refresh for update)', '(Auto-updating)')); |
| 80 |
}); |
| 81 |
|
| 82 |
// Start auto-updating if we have status cards |
| 83 |
if ($('.mxchat-status-card').length > 0) { |
| 84 |
updateStatus(); // Run once immediately |
| 85 |
statusInterval = setInterval(updateStatus, refreshInterval); |
| 86 |
} |
| 87 |
|
| 88 |
// Monitor for form submissions to start the updates |
| 89 |
$('#mxchat-sitemap-form').on('submit', function() { |
| 90 |
// We'll start the updating when the page reloads and shows a status card |
| 91 |
}); |
| 92 |
}); |
| 93 |
|
| 94 |
})(jQuery); |