// =====================================
// HoloLake DevBoard · API Init v1.0
// 负责：异步加载 + 加载动画 + 自动刷新
// 必须在 api.js 和 main.js 之后加载
// =====================================

(function(){
    // -------------- 加载动画 --------------
    function showLoader(show) {
        var el = document.getElementById('devboard-loader');
        if (!el && show) {
            el = document.createElement('div');
            el.id = 'devboard-loader';
            el.style.cssText = 'position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(10,14,23,0.92);display:flex;align-items:center;justify-content:center;z-index:10000';
            el.innerHTML = '<div style="display:flex;flex-direction:column;align-items:center;gap:16px;"><div style="width:40px;height:40px;border:3px solid rgba(96,165,250,0.3);border-top-color:#60a5fa;border-radius:50%;animation:dbspin 0.8s linear infinite;"></div><div style="font-size:14px;color:#60a5fa;">数据加载中...</div></div>';
            var style = document.createElement('style');
            style.textContent = '@keyframes dbspin{to{transform:rotate(360deg)}}';
            document.head.appendChild(style);
            document.body.appendChild(el);
        }
        if (el) el.style.display = show ? 'flex' : 'none';
    }

    // -------------- 数据加载+渲染 --------------
    async function loadAndRender() {
        try {
            var developers = await apiGetDevelopers();
            var stats = await apiGetStats();
            var leaderboard = await apiGetLeaderboard();

            // 用现有渲染函数（main.js / components.js 定义的）
            if (typeof renderDeveloperCards === 'function') renderDeveloperCards(developers);
            if (typeof renderStats === 'function') renderStats(stats);
            if (typeof renderLeaderboard === 'function') renderLeaderboard(leaderboard);
            if (typeof renderRankings === 'function') renderRankings(leaderboard);

            console.log('[DevBoard] 数据加载完成，共 ' + developers.length + ' 位开发者');
        } catch (err) {
            console.error('[DevBoard] 数据加载异常: ', err);
        }
    }

    // -------------- 初始化入口 --------------
    async function init() {
        showLoader(true);

        // 检测API状态
        var online = await apiHealthCheck();
        showApiStatus(online);
        console.log('[DevBoard] API状态: ' + (online ? '在线(实时)' : '离线(降级)'));

        // 加载+渲染
        await loadAndRender();
        showLoader(false);

        // 自动刷新（仅API在线时）
        if (online && API.REFRESH_MS > 0) {
            console.log('[DevBoard] 自动刷新已启动，间隔 ' + (API.REFRESH_MS/1000) + ' 秒');
            setInterval(async function() {
                try {
                    await loadAndRender();
                } catch (e) {
                    console.warn('[DevBoard] 自动刷新失败: ', e.message);
                }
            }, API.REFRESH_MS);
        }
    }

    // 等待DOM和所有脚本加载完成后启动
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', init);
    } else {
        init();
    }
})();
