function getCookie(name) { const cookieName = `${name}=`; const decodedCookie = decodeURIComponent(document.cookie); const cookieArray = decodedCookie.split(';'); for(let i = 0; i < cookieArray.length; i++) { let cookie = cookieArray[i]; while (cookie.charAt(0) === ' ') { cookie = cookie.substring(1); } if (cookie.indexOf(cookieName) === 0) { return cookie.substring(cookieName.length, cookie.length); } } return null; } function shortenSchoolName(name, maxLength = 50) { if (!name) return ''; if (name.length <= maxLength) return name; const parts = name.split(' - '); if (parts.length === 2) { const [code, fullName] = parts; if (fullName.length > maxLength - code.length - 3) { return `${code} - ${fullName.substring(0, maxLength - code.length - 6)}...`; } } return name.substring(0, maxLength - 3) + '...'; } async function waitForElement(selector) { return new Promise(resolve => { if (document.querySelector(selector)) { return resolve(document.querySelector(selector)); } const observer = new MutationObserver(mutations => { if (document.querySelector(selector)) { observer.disconnect(); resolve(document.querySelector(selector)); } }); observer.observe(document.body, { childList: true, subtree: true }); }); } async function collectHomeworkData() { await waitForElement('#TanulotHaziFeladatkGrid'); await new Promise(resolve => setTimeout(resolve, 1000)); const basicData = { schoolInfo: { name: getCookie('schoolName') || 'Iskola', id: getCookie('schoolCode') || '' }, userData: { name: getCookie('userName') || 'Felhasználó', time: document.querySelector('.usermenu_timer')?.textContent?.trim() || '45:00' } }; const homeworkItems = []; const rows = document.querySelectorAll('#TanulotHaziFeladatkGrid .k-grid-content tr'); rows.forEach(row => { const cells = row.querySelectorAll('td'); if (cells.length >= 7) { homeworkItems.push({ subject: cells[3]?.textContent?.trim() || '', teacher: cells[4]?.textContent?.trim() || '', description: cells[5]?.textContent?.trim() || '', createdDate: cells[6]?.textContent?.trim() || '', deadline: cells[7]?.textContent?.trim() || '' }); } }); const groupedHomework = {}; homeworkItems.forEach(homework => { const deadlineDate = homework.deadline.split(' ').slice(0, 3).join(' '); if (!groupedHomework[deadlineDate]) { groupedHomework[deadlineDate] = []; } groupedHomework[deadlineDate].push(homework); }); return { basicData, homeworkItems, groupedHomework }; } function showLoadingScreen() { const loadingHTML = `
`; document.body.insertAdjacentHTML('beforeend', loadingHTML); } function hideLoadingScreen() { const loadingOverlay = document.querySelector('.loading-overlay'); if (loadingOverlay) { loadingOverlay.style.opacity = '0'; loadingOverlay.style.transition = 'opacity 0.3s ease'; setTimeout(() => loadingOverlay.remove(), 300); } } function isTomorrow(dateStr) { if (!dateStr) return false; const parts = dateStr.split('.'); if (parts.length < 3) return false; const year = parseInt(parts[0].trim()); const month = parseInt(parts[1].trim()) - 1; // JS months are 0-indexed const day = parseInt(parts[2].trim()); const homeworkDate = new Date(year, month, day); const tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1); tomorrow.setHours(0, 0, 0, 0); const dayAfterTomorrow = new Date(tomorrow); dayAfterTomorrow.setDate(dayAfterTomorrow.getDate() + 1); return homeworkDate >= tomorrow && homeworkDate < dayAfterTomorrow; } async function transformHomeworkPage() { showLoadingScreen(); const { basicData, homeworkItems, groupedHomework } = await collectHomeworkData(); const schoolNameFull = `${basicData.schoolInfo.id} - ${basicData.schoolInfo.name}`; const shortenedSchoolName = shortenSchoolName(schoolNameFull); document.body.innerHTML = `
Firka
Nincs megjeleníthető házi feladat.
Nincs a szűrési feltételeknek megfelelő házi feladat.
'; homeworkList.appendChild(emptyState); } if (visibleItems.length === 0) { emptyState.style.display = 'block'; } else { emptyState.style.display = 'none'; } }; const resetFilters = () => { subjectFilter.value = ''; teacherFilter.value = ''; deadlineFilter.value = ''; document.querySelectorAll('.homework-item').forEach(item => { item.style.display = 'block'; }); document.querySelectorAll('.homework-date-group').forEach(group => { group.style.display = 'block'; }); const homeworkList = document.getElementById('homeworkList'); const existingEmptyState = homeworkList.querySelector('.empty-state'); if (existingEmptyState) { homeworkList.removeChild(existingEmptyState); } }; subjectFilter.addEventListener('change', applyFilters); teacherFilter.addEventListener('change', applyFilters); deadlineFilter.addEventListener('change', applyFilters); } function setupUserDropdown() { const userBtn = document.querySelector('.user-dropdown-btn'); const userDropdown = document.querySelector('.user-dropdown'); userBtn?.addEventListener('click', (e) => { e.stopPropagation(); userDropdown?.classList.toggle('show'); }); document.addEventListener('click', () => { userDropdown?.classList.remove('show'); }); document.getElementById('settingsBtn')?.addEventListener('click', (e) => { e.preventDefault(); e.stopPropagation(); const url = chrome.runtime.getURL('settings/index.html'); window.open(url, '_blank', 'width=400,height=600'); }); } function setupLogoutTimer() { const timerElement = document.querySelector('.nav-logout-timer'); if (!timerElement) return; const timeString = timerElement.textContent; const startTime = parseInt(timeString?.match(/\d+/)?.[0] || "45"); let timeLeft = startTime * 60; const updateTimer = () => { const minutes = Math.floor(timeLeft / 60); const seconds = timeLeft % 60; timerElement.textContent = `${minutes}:${seconds.toString().padStart(2, '0')}`; if (timeLeft <= 0) { window.location.href = '/Home/Logout'; } timeLeft--; }; updateTimer(); setInterval(updateTimer, 1000); } if (window.location.href.includes('/Tanulo/TanuloHaziFeladat')) { transformHomeworkPage().catch(error => { console.error('Error transforming homework page:', error); }); }