/** * GitHub Sync Dashboard - Frontend JavaScript */ // State let repositories = []; let logs = []; let stats = {}; let currentRollbackRepoId = null; // Initialize app when DOM is loaded document.addEventListener('DOMContentLoaded', function() { loadDashboard(); // Auto-refresh every 30 seconds setInterval(loadDashboard, 30000); }); /** * Load complete dashboard */ async function loadDashboard() { await Promise.all([ loadRepositories(), loadLogs() ]); updateStats(); } /** * Load repositories */ async function loadRepositories() { try { const response = await fetch('api/repos.php'); const data = await response.json(); if (data.repositories) { repositories = data.repositories; renderRepositories(); } } catch (error) { console.error('Error loading repositories:', error); showToast('Fehler beim Laden der Repositories', 'error'); } } /** * Render repositories list */ function renderRepositories() { const container = document.getElementById('reposList'); if (repositories.length === 0) { container.innerHTML = '