diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx new file mode 100644 index 0000000..71834b5 --- /dev/null +++ b/src/components/Footer.tsx @@ -0,0 +1,28 @@ +import React from 'react' +import Link from 'next/link' + +const Footer: React.FC = () => { + return ( +
+

+ + albert + + {' | '} + + github + +

+
+ ) +} + +export default Footer diff --git a/src/pages/api/erettsegi.ts b/src/pages/api/erettsegi.ts index 4505898..ef0c67a 100644 --- a/src/pages/api/erettsegi.ts +++ b/src/pages/api/erettsegi.ts @@ -1,7 +1,7 @@ import { NextApiRequest, NextApiResponse } from 'next' export default function handler(req: NextApiRequest, res: NextApiResponse) { - const { ev, szint, vizsgatargy, idoszak, tipus, file } = req.query + const { ev, szint, vizsgatargy, idoszak } = req.query const baseUrl = 'https://dload-oktatas.educatio.hu/erettsegi/feladatok_' const missingParams = [] @@ -9,7 +9,6 @@ export default function handler(req: NextApiRequest, res: NextApiResponse) { if (!szint) missingParams.push('szint') if (!idoszak) missingParams.push('idoszak') if (!vizsgatargy) missingParams.push('vizsgatargy') - if (!tipus) missingParams.push('tipus') if (missingParams.length > 0) { return res @@ -34,14 +33,6 @@ export default function handler(req: NextApiRequest, res: NextApiResponse) { return res.status(400).json({ error: 'Érvénytelen vizsgatárgy' }) } - switch (tipus) { - case 'fl': - case 'ut': - break - default: - return res.status(400).json({ error: 'Érvénytelen típus' }) - } - let honap switch (idoszak) { case 'osz': @@ -66,51 +57,32 @@ export default function handler(req: NextApiRequest, res: NextApiResponse) { return res.status(400).json({ error: 'Érvénytelen szint' }) } + const feladat = 'fl' + const utmutato = 'ut' const forras = 'for' const megoldas = 'meg' const shortev = ev!.slice(-2) - let pdfUrl, zipUrl + let flPdfUrl, utPdfUrl, flZipUrl, utZipUrl, ZipUrl switch (vizsgatargy) { case 'inf': case 'infoism': - switch (file) { - case 'forras': - switch (tipus) { - case 'fl': - zipUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}${forras}_${shortev}${honap}_${tipus}.zip` - pdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${tipus}.pdf` - break - case 'ut': - zipUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}${forras}_${shortev}${honap}_fl.zip` - pdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${tipus}.pdf` - break - default: - return res.status(400).json({ error: 'Érvénytelen fájl' }) - } - break - case 'megoldas': - switch (tipus) { - case 'ut': - zipUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}${megoldas}_${shortev}${honap}_${tipus}.zip` - pdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${tipus}.pdf` - break - case 'fl': - zipUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}${megoldas}_${shortev}${honap}_ut.zip` - pdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${tipus}.pdf` - break - default: - return res.status(400).json({ error: 'Érvénytelen fájl' }) - } + switch (ZipUrl) { + case ZipUrl: + flZipUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}${forras}_${shortev}${honap}_${feladat}.zip` + flPdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${utmutato}.pdf` + utZipUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}${megoldas}_${shortev}${honap}_${utmutato}.zip` + utPdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${utmutato}.pdf` break default: return res.status(400).json({ error: 'Érvénytelen fájl' }) } break default: - pdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${tipus}.pdf` + flPdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${feladat}.pdf` + utPdfUrl = `${baseUrl}${ev}${idoszak}_${szint}/${prefix}_${shortev}${honap}_${utmutato}.pdf` break } - res.status(200).json({ pdfUrl, zipUrl }) + res.status(200).json({ flPdfUrl, utPdfUrl, flZipUrl, utZipUrl }) } diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 1cb02f5..9d5aac4 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,57 +1,44 @@ import { useState, useEffect } from 'react' +import { useAvailableYears } from '@/utils/years' import { subjects } from '@/utils/subjects' -import Link from 'next/link' +import Footer from '@/components/Footer' export default function Home() { - const [pdfLink, setPdfLink] = useState('') - const [zipLink, setZipLink] = useState('') + const [flPdfLink, setflPdfLink] = useState('') + const [utPdfLink, setutPdfLink] = useState('') + const [flZipLink, setflZipLink] = useState('') + const [utZipLink, setutZipLink] = useState('') const [selectedSubject, setSelectedSubject] = useState('') const [selectedYear, setSelectedYear] = useState('') const [selectedPeriod, setSelectedPeriod] = useState('') const [selectedLevel, setSelectedLevel] = useState('') - const [selectedType, setSelectedType] = useState('') - const [selectedFile, setSelectedFile] = useState('') const [years, setYears] = useState([]) - useEffect(() => { - const currentYear = new Date().getFullYear() - const availableYears: string[] = [] - for (let year = currentYear; year >= 2013; year--) { - availableYears.push(year.toString()) - } - setYears(availableYears) - }, []) + useAvailableYears(setYears) useEffect(() => { const fetchData = async () => { try { - let url = `/api/erettsegi?vizsgatargy=${selectedSubject}&ev=${selectedYear}&idoszak=${selectedPeriod}&szint=${selectedLevel}&tipus=${selectedType}` - - switch (selectedSubject) { - case 'inf': - case 'infoism': - url += `&file=${selectedFile}` - break - default: - break - } + let url = `/api/erettsegi?vizsgatargy=${selectedSubject}&ev=${selectedYear}&idoszak=${selectedPeriod}&szint=${selectedLevel}` const response = await fetch(url) if (response.ok) { const data = await response.json() - if (data.pdfUrl) { - setPdfLink(data.pdfUrl) - } else { - console.error('Nincs érvényes PDF link a válaszban.') - } - - if (data.zipUrl) { - setZipLink(data.zipUrl) + if (data.utZipUrl && data.flZipUrl) { + setflZipLink(data.flZipUrl) + setutZipLink(data.utZipUrl) } else { console.error('Nincs érvényes ZIP link a válaszban.') } + + if (data.utPdfUrl && data.flPdfUrl) { + setflPdfLink(data.flPdfUrl) + setutPdfLink(data.utPdfUrl) + } else { + console.error('Nincs érvényes PDF link a válaszban.') + } } else { console.error('Hiba történt az API hívás során.') } @@ -65,8 +52,10 @@ export default function Home() { selectedYear, selectedPeriod, selectedLevel, - selectedType, - selectedFile, + setflPdfLink, + setutPdfLink, + setflZipLink, + setutZipLink, ]) return ( @@ -77,7 +66,7 @@ export default function Home() { setSelectedYear(e.target.value)} - className="bg-[#181a1b] text-[#efefef] w-56 max-w-lg h-10 px-4 text-sm border border-[#3C4143] rounded-lg focus:outline-none" + className="bg-[#181a1b] text-[#efefef] w-56 max-w-lg h-10 px-4 text-sm border border-[#3C4143] rounded-lg focus:outline-none hover:bg-[#3C4143] transition-colors duration-150" > {years.map((year) => ( @@ -105,7 +94,7 @@ export default function Home() { setSelectedLevel(e.target.value)} - className="bg-[#181a1b] text-[#efefef] w-56 max-w-lg h-10 px-4 text-sm border border-[#3C4143] rounded-lg focus:outline-none" + className="bg-[#181a1b] text-[#efefef] w-56 max-w-lg h-10 px-4 text-sm border border-[#3C4143] rounded-lg focus:outline-none hover:bg-[#3C4143] transition-colors duration-150" > -
- -
- {selectedSubject === 'inf' || selectedSubject === 'infoism' ? ( -
- -
- ) : null} - - {selectedSubject === 'inf' || selectedSubject === 'infoism' ? ( + +
- ) : null} -
-
-

- window.open(utPdfLink) : () => {}} > - albert - - {' | '} - - github - -

+ Útmutató + +
+
+ {selectedSubject === 'inf' || selectedSubject === 'infoism' ? ( + + ) : null} + {selectedSubject === 'inf' || selectedSubject === 'infoism' ? ( + + ) : null} +
+