/**
 * Обновление виджетов на dashboard (FR-075).
 * Вынесено из dashboard.html для соблюдения правил проекта.
 */
(function () {
    'use strict';

    async function updateDashboardWidgets() {
        // Сервисы
        try {
            var servicesResponse = await fetch('/api/v1/admin/services/list');
            var servicesData = await servicesResponse.json();
            if (servicesData.success) {
                var count = Object.keys(servicesData.services || {}).length;
                var el = document.getElementById('dashboardServicesCount');
                if (el) el.textContent = count;
            }
        } catch (error) {
            console.error('Ошибка загрузки сервисов:', error);
        }

        // Плагины
        try {
            var pluginsResponse = await fetch('/api/v1/admin/plugins');
            var pluginsData = await pluginsResponse.json();
            if (pluginsData.success) {
                var pcount = Object.keys(pluginsData.plugins || {}).length;
                var pel = document.getElementById('dashboardPluginsCount');
                if (pel) pel.textContent = pcount;
            }
        } catch (error) {
            console.error('Ошибка загрузки плагинов:', error);
        }

        // Контейнеры
        try {
            var containersResponse = await fetch('/api/admin/containers/list');
            var containersData = await containersResponse.json();
            if (containersData.success) {
                var ccount = (containersData.containers || []).length;
                var cel = document.getElementById('dashboardContainersCount');
                if (cel) cel.textContent = ccount;
            }
        } catch (error) {
            console.error('Ошибка загрузки контейнеров:', error);
        }

        // RPS
        try {
            var metricsResponse = await fetch('/api/metrics/summary');
            var metricsData = await metricsResponse.json();
            if (metricsData.success && metricsData.metrics) {
                var throughput = metricsData.metrics.performance ? metricsData.metrics.performance.throughput || {} : {};
                var values = Object.values(throughput);
                var maxRPS = values.length > 0 ? Math.max.apply(null, values) : 0;
                var mel = document.getElementById('dashboardRPS');
                if (mel) mel.textContent = maxRPS.toFixed(1);
            }
        } catch (error) {
            console.error('Ошибка загрузки метрик:', error);
        }
    }

    document.addEventListener('DOMContentLoaded', function () {
        updateDashboardWidgets();
        // Автообновление каждые 30 секунд
        setInterval(updateDashboardWidgets, 30000);
    });
})();
