From e930706eb1a6fc31d7901be7be784f3b244c5fb3 Mon Sep 17 00:00:00 2001 From: Zan1456 <62830223+Zan1456@users.noreply.github.com> Date: Mon, 9 Jun 2025 16:11:15 +0200 Subject: [PATCH] Fully working --- homework/homework.css | 41 ------------- homework/homework.js | 135 ++++++++++++++++++++++++++---------------- 2 files changed, 85 insertions(+), 91 deletions(-) diff --git a/homework/homework.css b/homework/homework.css index 1e92b34..f06dadd 100644 --- a/homework/homework.css +++ b/homework/homework.css @@ -381,47 +381,6 @@ body { font-style: italic; } - -.loading-overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.7); - display: flex; - justify-content: center; - align-items: center; - z-index: 9999; -} - -.loading-container { - background-color: var(--background); - padding: 2rem; - border-radius: 16px; - text-align: center; - max-width: 90%; - width: 300px; -} - -.loading-logo { - width: 80px; - margin-bottom: 1rem; -} - -.loading-text { - font-size: 18px; - font-weight: 600; - margin-bottom: 0.5rem; - color: var(--text-primary); -} - -.loading-text2 { - font-size: 14px; - color: var(--text-secondary); -} - - .empty-state { text-align: center; padding: 2rem; diff --git a/homework/homework.js b/homework/homework.js index 21302b6..2a14bdc 100644 --- a/homework/homework.js +++ b/homework/homework.js @@ -1,7 +1,32 @@ -async function collectHomeworkData() { - await helper.waitForElement('#TanulotHaziFeladatkGrid'); - await new Promise(resolve => setTimeout(resolve, 1000)); +async function fetchHomeworkData() { + try { + const currentDomain = window.location.hostname; + const apiUrl = `https://${currentDomain}/api/TanuloHaziFeladatApi/GetTanulotHaziFeladatGrid?sort=HaziFeladatHatarido-asc&page=1&pageSize=100&group=&filter=&data=%7B%22RegiHaziFeladatokElrejtese%22%3Afalse%7D&_=${Date.now()}`; + + const response = await fetch(apiUrl, { + method: 'GET', + credentials: 'include', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + } + }); + if (!response.ok) { + throw new Error('Network response was not ok'); + } + + const data = await response.json(); + return data; + } catch (error) { + console.error('Error fetching homework data:', error); + return { Data: [], Total: 0 }; + } +} + +async function collectHomeworkData() { + const apiData = await fetchHomeworkData(); + const basicData = { schoolInfo: { name: cookieManager.get('schoolName') || 'Iskola', @@ -14,25 +39,25 @@ async function collectHomeworkData() { }; 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() || '' - }); - } - }); - + if (apiData.Data && Array.isArray(apiData.Data)) { + apiData.Data.forEach(item => { + homeworkItems.push({ + id: item.ID, + subject: item.TantargyNev || '', + teacher: item.TanarNeve || '', + description: item.HaziFeladatSzoveg || '', + createdDate: formatApiDate(item.HaziFeladatRogzitesDatuma), + deadline: formatApiDate(item.HaziFeladatHatarido), + completed: item.MegoldottHF_BOOL || false, + classGroup: item.OsztalyCsoport || '' + }); + }); + } + const groupedHomework = {}; homeworkItems.forEach(homework => { - - const deadlineDate = homework.deadline.split(' ').slice(0, 3).join(' '); + const deadlineDate = homework.deadline.split(' ')[0]; if (!groupedHomework[deadlineDate]) { groupedHomework[deadlineDate] = []; } @@ -42,6 +67,23 @@ async function collectHomeworkData() { return { basicData, homeworkItems, groupedHomework }; } +function formatApiDate(dateString) { + if (!dateString) return ''; + + try { + const date = new Date(dateString); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + + const dayNames = ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat']; + const dayName = dayNames[date.getDay()]; + + return `${month}.${day}. (${dayName})`; + } catch (error) { + return dateString; + } +} + function isTomorrow(dateStr) { if (!dateStr) return false; @@ -136,11 +178,25 @@ async function transformHomeworkPage() { } function renderHomeworkList(groupedHomework) { - const sortedDates = Object.keys(groupedHomework).sort((a, b) => { - const dateA = new Date(a.replace(/\./g, '')); - const dateB = new Date(b.replace(/\./g, '')); - return dateA - dateB; + const partsA = a.split('.'); + const partsB = b.split('.'); + + const monthA = parseInt(partsA[0]) - 1; + const dayA = parseInt(partsA[1]); + const monthB = parseInt(partsB[0]) - 1; + const dayB = parseInt(partsB[1]); + + const currentYear = new Date().getFullYear(); + const currentMonth = new Date().getMonth(); + + const yearA = monthA < currentMonth ? currentYear + 1 : currentYear; + const yearB = monthB < currentMonth ? currentYear + 1 : currentYear; + + const dateA = new Date(yearA, monthA, dayA); + const dateB = new Date(yearB, monthB, dayB); + + return dateB - dateA; }); if (sortedDates.length === 0) { @@ -166,7 +222,7 @@ function renderHomeworkList(groupedHomework) {