// loading-start.js - Загружается первым в
(function() { // Конфигурация const CONFIG = { maxRetries: 3, retryDelay: 2000, timeout: 10000, showWarnings: true, maxLoadingTime: 15000, // Максимум 15 секунд minLoadingTime: 5000 // Минимум 5 секунд }; // Генерация случайных цветов для градиента function getRandomGradient() { // Базовая палитра цветов для школы/образования const colorPalettes = [ // Сине-фиолетовая гамма { start: '#667eea', end: '#764ba2' }, { start: '#6B73FF', end: '#000DFF' }, { start: '#5f72bd', end: '#9b23ea' }, // Зелено-голубая гамма { start: '#11998e', end: '#38ef7d' }, { start: '#0BA360', end: '#3CBBB2' }, { start: '#1D976C', end: '#93F9B9' }, // Оранжево-розовая гамма { start: '#f46b45', end: '#eea849' }, { start: '#FF512F', end: '#DD2476' }, { start: '#F09819', end: '#EDDE5D' }, // Красная гамма { start: '#cb2d3e', end: '#ef473a' }, { start: '#FF416C', end: '#FF4B2B' }, { start: '#DC2424', end: '#4A569D' }, // Фиолетовая гамма { start: '#8E2DE2', end: '#4A00E0' }, { start: '#A770EF', end: '#CF8BF3' }, { start: '#7F00FF', end: '#E100FF' }, // Морская гамма { start: '#00B4DB', end: '#0083B0' }, { start: '#00C9FF', end: '#92FE9D' }, { start: '#1FA2FF', end: '#12D8FA' }, // Осенняя гамма { start: '#FC4A1A', end: '#F7B733' }, { start: '#ED213A', end: '#93291E' }, { start: '#F12711', end: '#F5AF19' }, // Ночная гамма { start: '#141E30', end: '#243B55' }, { start: '#0F2027', end: '#203A43' }, { start: '#1c1c1c', end: '#3a3a3a' }, // Пастельная гамма { start: '#a8c0ff', end: '#3f2b96' }, { start: '#c84e89', end: '#F15F79' }, { start: '#b993d0', end: '#8ca6db' }, // Школьная гамма { start: '#56ab2f', end: '#a8e063' }, { start: '#1D976C', end: '#93F9B9' }, { start: '#4CA1AF', end: '#2C3E50' } ]; // Случайная палитра const palette = colorPalettes[Math.floor(Math.random() * colorPalettes.length)]; // Случайное смещение градиента const directions = [ '135deg', '90deg', '45deg', '180deg', '225deg', '270deg', '315deg' ]; const direction = directions[Math.floor(Math.random() * directions.length)]; return { background: `linear-gradient(${direction}, ${palette.start}, ${palette.end})`, start: palette.start, end: palette.end, direction: direction }; } // Генерация случайного цвета для прогресс-бара function getRandomProgressColor() { const colors = [ '#fff', '#ffd700', '#00ff87', '#00ffff', '#ff69b4', '#ffa500', '#ff6b6b', '#4ecdc4', '#45b7d1', '#96ceb4', '#ffeaa7', '#dfe6e9' ]; return colors[Math.floor(Math.random() * colors.length)]; } // Генерация случайного цвета для текста function getRandomTextColor() { const colors = [ 'white', '#f0f0f0', '#ffeaa7', '#dfe6e9', '#b2bec3', '#ffffff' ]; return colors[Math.floor(Math.random() * colors.length)]; } // Получаем случайные цвета для этой загрузки const gradientColors = getRandomGradient(); const progressColor = getRandomProgressColor(); const textColor = getRandomTextColor(); const accentColor = getRandomProgressColor(); // Статусы для динамического отображения const LOADING_STATUSES = [ { emoji: '📦', text: 'Загрузка компонентов...', weight: 10 }, { emoji: '🔧', text: 'Настройка модулей...', weight: 15 }, { emoji: '⚙️', text: 'Инициализация системы...', weight: 20 }, { emoji: '🔌', text: 'Подключение к серверу...', weight: 25 }, { emoji: '📊', text: 'Загрузка данных...', weight: 30 }, { emoji: '🧩', text: 'Сборка интерфейса...', weight: 35 }, { emoji: '🎨', text: 'Отрисовка элементов...', weight: 40 }, { emoji: '🔐', text: 'Проверка безопасности...', weight: 45 }, { emoji: '📁', text: 'Загрузка файлов...', weight: 50 }, { emoji: '🔄', text: 'Синхронизация...', weight: 55 }, { emoji: '🧪', text: 'Тестирование модулей...', weight: 60 }, { emoji: '📝', text: 'Подготовка задач...', weight: 65 }, { emoji: '👥', text: 'Загрузка пользователей...', weight: 70 }, { emoji: '📅', text: 'Обновление календаря...', weight: 75 }, { emoji: '🔔', text: 'Настройка уведомлений...', weight: 80 }, { emoji: '💾', text: 'Сохранение кэша...', weight: 85 }, { emoji: '✨', text: 'Финальная обработка...', weight: 90 }, { emoji: '🚀', text: 'Запуск приложения...', weight: 95 }, { emoji: '✅', text: 'Почти готово...', weight: 98 } ]; // Дополнительные случайные статусы const RANDOM_STATUSES = [ { emoji: '☕', text: 'Наливаем кофе...' }, { emoji: '🧹', text: 'Подметаем баги...' }, { emoji: '🎮', text: 'Играем в косынку...' }, { emoji: '📚', text: 'Читаем документацию...' }, { emoji: '🎵', text: 'Включаем музыку...' }, { emoji: '🧘', text: 'Медитируем...' }, { emoji: '🏋️', text: 'Качаем бицепс...' }, { emoji: '🍕', text: 'Заказываем пиццу...' }, { emoji: '🌴', text: 'Улетаем в отпуск...' }, { emoji: '🎪', text: 'Устраиваем цирк...' }, { emoji: '🎭', text: 'Играем спектакль...' }, { emoji: '🎯', text: 'Целимся в баги...' }, { emoji: '🎲', text: 'Бросаем кубик...' }, { emoji: '🎰', text: 'Крутим барабан...' }, { emoji: '🦄', text: 'Ловим единорога...' }, { emoji: '🌈', text: 'Красим радугу...' }, { emoji: '🪄', text: 'Колдуем...' }, { emoji: '🎩', text: 'Достаем кролика...' }, { emoji: '🕯️', text: 'Зажигаем свечи...' }, { emoji: '🔮', text: 'Гадаем на баги...' } ]; // Функция для инициализации после загрузки DOM function initializeLoadingOverlay() { // Проверяем, существует ли уже оверлей if (document.getElementById('loading-overlay')) { return; } // Создаем контейнер для анимации загрузки const loadingOverlay = document.createElement('div'); loadingOverlay.id = 'loading-overlay'; loadingOverlay.innerHTML = `Загрузка сервиса управления задачами...