src/autotrain/app/static/scripts/poll.js (55 lines of code) (raw):

document.addEventListener('DOMContentLoaded', (event) => { function pollAccelerators() { const numAcceleratorsElement = document.getElementById('num_accelerators'); if (autotrain_local_value === 0) { numAcceleratorsElement.innerText = 'Accelerators: Only available in local mode.'; numAcceleratorsElement.style.display = 'block'; // Ensure the element is visible return; } // Send a request to the /accelerators endpoint fetch('/ui/accelerators') .then(response => response.json()) // Assuming the response is in JSON format .then(data => { // Update the paragraph with the number of accelerators document.getElementById('num_accelerators').innerText = `Accelerators: ${data.accelerators}`; }) .catch(error => { console.error('Error:', error); // Update the paragraph to show an error message document.getElementById('num_accelerators').innerText = 'Accelerators: Error fetching data'; }); } function pollModelTrainingStatus() { // Send a request to the /is_model_training endpoint if (autotrain_local_value === 0) { const statusParagraph = document.getElementById('is_model_training'); statusParagraph.innerText = 'Running jobs: Only available in local mode.'; statusParagraph.style.display = 'block'; return; } fetch('/ui/is_model_training') .then(response => response.json()) // Assuming the response is in JSON format .then(data => { // Construct the message to display let message = data.model_training ? 'Running job PID(s): ' + data.pids.join(', ') : 'No running jobs'; // Update the paragraph with the status of model training let statusParagraph = document.getElementById('is_model_training'); statusParagraph.innerText = message; let stopTrainingButton = document.getElementById('stop-training-button'); let startTrainingButton = document.getElementById('start-training-button'); // Change the text color based on the model training status if (data.model_training) { // Set text color to red if jobs are running statusParagraph.style.color = 'red'; stopTrainingButton.style.display = 'block'; startTrainingButton.style.display = 'none'; } else { // Set text color to green if no jobs are running statusParagraph.style.color = 'green'; stopTrainingButton.style.display = 'none'; startTrainingButton.style.display = 'block'; } }) .catch(error => { console.error('Error:', error); // Update the paragraph to show an error message let statusParagraph = document.getElementById('is_model_training'); statusParagraph.innerText = 'Error fetching training status'; statusParagraph.style.color = 'red'; // Set error message color to red }); } setInterval(pollAccelerators, 10000); setInterval(pollModelTrainingStatus, 5000); pollAccelerators(); pollModelTrainingStatus(); });