/** * Live Status Monitor for Container Creation * Provides real-time updates similar to Proxmox task viewer */ class LiveStatusMonitor { constructor(taskId, logContainer) { this.taskId = taskId; this.logContainer = logContainer; this.pollInterval = 1000; // Poll every second this.init(); } init() { console.log(`Initializing live status for task: ${this.taskId}`); // Initial request with error handling $.get(`/manager/task/${this.taskId}/status/`) .done((data) => { console.log('Initial status data received:', data); this.updateDisplay(data); // Start polling only after successful initial request this.startPolling(); }) .fail((xhr, status, error) => { console.error('Failed to get initial status:', error, xhr.responseText); this.showError(`Failed to connect to live status: ${error}`); // Still try to start polling in case it's a temporary issue setTimeout(() => { this.startPolling(); }, 2000); }); } startPolling() { setInterval(() => { $.get(`/manager/task/${this.taskId}/status/`) .done((data) => { this.updateDisplay(data); }) .fail((xhr, status, error) => { console.error('Polling error:', error); // Don't show error for every polling failure }); }, this.pollInterval); } showError(message) { const logContent = this.logContainer.querySelector('.live-log-content'); if (logContent) { logContent.innerHTML = `