// ============================================ // SQL для новачків - Інтерактивність дашборду // ============================================ // Ініціалізація при завантаженні сторінки document.addEventListener('DOMContentLoaded', function() { initTabs(); initCopyButtons(); initSmoothScroll(); }); // ============================================ // ФУНКЦІЯ: Ініціалізація табів // ============================================ function initTabs() { const tabButtons = document.querySelectorAll('.tab-button'); const tabContents = document.querySelectorAll('.tab-content'); tabButtons.forEach(button => { button.addEventListener('click', function() { const tabName = this.getAttribute('data-tab'); // Видалення активного класу з усіх кнопок та контенту tabButtons.forEach(btn => btn.classList.remove('active')); tabContents.forEach(content => content.classList.remove('active')); // Додавання активного класу до вибраного таба this.classList.add('active'); document.getElementById(tabName).classList.add('active'); // Плавна прокрутка до контенту smoothScrollToElement('#' + tabName); }); }); } // ============================================ // ФУНКЦІЯ: Копіювання коду в буфер обміну // ============================================ function initCopyButtons() { const codeBlocks = document.querySelectorAll('pre code'); codeBlocks.forEach(codeBlock => { // Створення кнопки копіювання const copyButton = document.createElement('button'); copyButton.textContent = '📋 Копіювати'; copyButton.className = 'copy-button'; copyButton.style.cssText = ` position: absolute; top: 5px; right: 5px; padding: 5px 10px; background: #2563eb; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 0.8rem; opacity: 0; transition: opacity 0.2s; `; // Огортання pre в контейнер з позицією const preElement = codeBlock.parentElement; preElement.style.position = 'relative'; preElement.appendChild(copyButton); // Показ кнопки при наведенні preElement.addEventListener('mouseenter', function() { copyButton.style.opacity = '1'; }); preElement.addEventListener('mouseleave', function() { copyButton.style.opacity = '0'; }); // Функція копіювання copyButton.addEventListener('click', function() { const text = codeBlock.textContent; navigator.clipboard.writeText(text).then(function() { copyButton.textContent = '✅ Скопійовано!'; setTimeout(function() { copyButton.textContent = '📋 Копіювати'; }, 2000); }).catch(function(err) { console.error('Помилка копіювання:', err); copyButton.textContent = '❌ Помилка'; setTimeout(function() { copyButton.textContent = '📋 Копіювати'; }, 2000); }); }); }); } // ============================================ // ФУНКЦІЯ: Плавна прокрутка // ============================================ function smoothScrollToElement(selector) { const element = document.querySelector(selector); if (element) { const elementPosition = element.getBoundingClientRect().top + window.scrollY; const offsetPosition = elementPosition - 100; window.scrollBy({ top: offsetPosition - window.scrollY, behavior: 'smooth' }); } } function initSmoothScroll() { document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function(e) { e.preventDefault(); const target = document.querySelector(this.getAttribute('href')); if (target) { smoothScrollToElement(this.getAttribute('href')); } }); }); } // ============================================ // ФУНКЦІЯ: Логування версії // ============================================ console.log('%c📊 SQL для новачків', 'font-size: 20px; color: #2563eb; font-weight: bold;'); console.log('%cДашборд успішно завантажено!', 'font-size: 14px; color: #1e40af;'); console.log('%cПочніть з вкладки "Базові запити"', 'font-size: 12px; color: #718096;');