From c14608dd7656c4a4214eabc804b1df6edef5b7fa Mon Sep 17 00:00:00 2001 From: Zan <62830223+Zan1456@users.noreply.github.com> Date: Thu, 13 Mar 2025 21:08:24 +0100 Subject: [PATCH] 1.1.0 --- .gitignore | 9 + .idea/Firkaextension.iml | 9 + .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + .idea/workspace.xml | 45 ++ LICENSE | 2 +- README.md | 95 ++++ absences/absences.css | 520 +++++++++++++++++++ absences/absences.js | 462 +++++++++++++++++ dashboard/dashboard.css | 238 +++++++++ dashboard/dashboard.js | 446 ++++++++++++++++ fonts/Figtree-Regular.woff2 | Bin 0 -> 23324 bytes fonts/Montserrat-Medium.woff2 | Bin 0 -> 127352 bytes fonts/Montserrat-Regular.woff2 | Bin 0 -> 126576 bytes fonts/Montserrat-SemiBold.woff2 | Bin 0 -> 128544 bytes forgotpassword/forgotpassword.css | 202 ++++++++ forgotpassword/forgotpassword.js | 152 ++++++ global/maintenance.css | 51 ++ global/maintenance.js | 65 +++ global/navigation.css | 257 ++++++++++ global/navigation.js | 103 ++++ global/theme.css | 160 ++++++ global/theme.js | 127 +++++ grades/chart.js | 20 + grades/grades.css | 716 ++++++++++++++++++++++++++ grades/grades.js | 586 +++++++++++++++++++++ homework/homework.css | 527 +++++++++++++++++++ homework/homework.js | 572 +++++++++++++++++++++ icons/absences-active.svg | 1 + icons/absences-inactive.svg | 5 + icons/close.svg | 1 + icons/dashboard-active.svg | 3 + icons/dashboard-inactive.svg | 5 + icons/dkt.svg | 5 + icons/eye-off.svg | 1 + icons/eye-on.svg | 1 + icons/grades-active.svg | 3 + icons/grades-inactive.svg | 5 + icons/logout.svg | 4 + icons/naplo.svg | 3 + icons/open-link.svg | 1 + icons/others.svg | 5 + icons/profile.svg | 1 + icons/settings.svg | 1 + icons/timetable-active.svg | 4 + icons/timetable-inactive.svg | 5 + images/firka_logo.png | Bin 0 -> 1427 bytes images/firka_logo_128.png | Bin 0 -> 10004 bytes images/loading.gif | Bin 0 -> 16742 bytes login/login.css | 385 ++++++++++++++ login/login.js | 201 ++++++++ logout/logout.css | 138 +++++ logout/logout.js | 97 ++++ manifest.json | 119 +++++ profile/profile.css | 487 ++++++++++++++++++ profile/profile.js | 506 ++++++++++++++++++ roleselect/roleselect.css | 380 ++++++++++++++ roleselect/roleselect.js | 183 +++++++ settings/index.css | 276 ++++++++++ settings/index.html | 103 ++++ settings/index.js | 141 +++++ timetable/timetable.css | 822 ++++++++++++++++++++++++++++++ timetable/timetable.js | 543 ++++++++++++++++++++ 64 files changed, 9818 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 .idea/Firkaextension.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 README.md create mode 100644 absences/absences.css create mode 100644 absences/absences.js create mode 100644 dashboard/dashboard.css create mode 100644 dashboard/dashboard.js create mode 100644 fonts/Figtree-Regular.woff2 create mode 100644 fonts/Montserrat-Medium.woff2 create mode 100644 fonts/Montserrat-Regular.woff2 create mode 100644 fonts/Montserrat-SemiBold.woff2 create mode 100644 forgotpassword/forgotpassword.css create mode 100644 forgotpassword/forgotpassword.js create mode 100644 global/maintenance.css create mode 100644 global/maintenance.js create mode 100644 global/navigation.css create mode 100644 global/navigation.js create mode 100644 global/theme.css create mode 100644 global/theme.js create mode 100644 grades/chart.js create mode 100644 grades/grades.css create mode 100644 grades/grades.js create mode 100644 homework/homework.css create mode 100644 homework/homework.js create mode 100644 icons/absences-active.svg create mode 100644 icons/absences-inactive.svg create mode 100644 icons/close.svg create mode 100644 icons/dashboard-active.svg create mode 100644 icons/dashboard-inactive.svg create mode 100644 icons/dkt.svg create mode 100644 icons/eye-off.svg create mode 100644 icons/eye-on.svg create mode 100644 icons/grades-active.svg create mode 100644 icons/grades-inactive.svg create mode 100644 icons/logout.svg create mode 100644 icons/naplo.svg create mode 100644 icons/open-link.svg create mode 100644 icons/others.svg create mode 100644 icons/profile.svg create mode 100644 icons/settings.svg create mode 100644 icons/timetable-active.svg create mode 100644 icons/timetable-inactive.svg create mode 100644 images/firka_logo.png create mode 100644 images/firka_logo_128.png create mode 100644 images/loading.gif create mode 100644 login/login.css create mode 100644 login/login.js create mode 100644 logout/logout.css create mode 100644 logout/logout.js create mode 100644 manifest.json create mode 100644 profile/profile.css create mode 100644 profile/profile.js create mode 100644 roleselect/roleselect.css create mode 100644 roleselect/roleselect.js create mode 100644 settings/index.css create mode 100644 settings/index.html create mode 100644 settings/index.js create mode 100644 timetable/timetable.css create mode 100644 timetable/timetable.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..489ba42 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ + + +*.zip +META-INF/mozilla.rsa +META-INF/cose.manifest +META-INF/cose.sig +META-INF/manifest.mf +META-INF/mozilla.sf +dashboard/KRÉTA Iskolai Alaprendszer.html diff --git a/.idea/Firkaextension.iml b/.idea/Firkaextension.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/Firkaextension.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c7e5038 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..3dfe923 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + 1741896394934 + + + + \ No newline at end of file diff --git a/LICENSE b/LICENSE index e20b431..0ad25db 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -GNU AFFERO GENERAL PUBLIC LICENSE + GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. diff --git a/README.md b/README.md new file mode 100644 index 0000000..bdda014 --- /dev/null +++ b/README.md @@ -0,0 +1,95 @@ +

+ +

Firxa

+

+ +

+ Modern, testre szabható felhasználói felület az e-KRÉTA rendszerhez +

+ +

+ + Downloads + + + Discord + + + License + +

+ +## 📱 Funkciók + +- **Modern Dizájn**: Teljesen újratervezett, modern felhasználói felület +- **Személyre Szabható Témák**: Világos és sötét módok, kék és zöld színsémákkal +- **Továbbfejlesztett Felületek**: + - Átdolgozott bejelentkezési képernyő + - Átláthatóbb jegynapló + - Modernizált órarend + - Fejlett hiányzás kezelés + - Egyszerűsített szerepkör választó + - Új kezdőlap elrendezés + - Továbbfejlesztett profilkezelő + +## 🚀 Telepítés + +1. Töltsd le a legfrissebb verziót a [Releases](https://github.com/Zan1456/filc-extension/releases) oldalról +2. Csomagold ki a letöltött fájlt +3. Chrome böngészőben navigálj a `chrome://extensions` oldalra +4. Kapcsold be a "Fejlesztői mód"-ot a jobb felső sarokban +5. Kattints a "Kicsomagolt bővítmény betöltése" gombra +6. Válaszd ki a kicsomagolt mappát +7. Kész! A bővítmény automatikusan működésbe lép, amikor megnyitod az e-KRÉTA oldalt + +## ⚙️ Beállítások + +A bővítmény beállításait a böngésző eszköztárán található Filx ikonra kattintva érheted el. Itt módosíthatod: + +- A felület színsémáját (Világos/Sötét) +- Az fő színeket (Kék/Zöld) + +## 💡 Támogatott Oldalak + +A bővítmény jelenleg az alábbi e-KRÉTA oldalakat támogatja: + +- Bejelentkezési oldal +- Kijelentkezési oldal +- Szerepkör választó +- Elfelejtett jelszó (részlegesen) +- Kezdőlap/Faliújság +- Jegyek/Értékelések +- Órarend +- Hiányzások +- Profil (csak dizájn) + +## 👥 Csapat + +- **[Zan1456](https://github.com/Zan1456)** - Vezető Fejlesztő +- **[BalazsManus](https://github.com/BalazsManus)** - Fejlesztő +- **[Xou](https://github.com/Xou)** - Designer + +## 🤝 Közreműködés + +Örömmel fogadunk minden fejlesztési javaslatot és hibajelentést! Ha szeretnél hozzájárulni a projekthez: + +1. Fork-old a repository-t +2. Hozz létre egy új branch-et a fejlesztésednek +3. Commit-old a változtatásaidat +4. Push-old a branch-et +5. Nyiss egy Pull Request-et + +## 📝 Licensz + +A projekt [GNU General Public License v3.0](LICENSE) alatt jelent meg. További információért lásd a LICENSE fájlt. + +## 💬 Kapcsolat + +- Discord: [dc.refilc.hu](https://dc.refilc.hu) +- GitHub: [github.com/refilc](https://github.com/refilc) + +--- + +

+ Készült ❤️-vel diákoktól diákoknak +

diff --git a/absences/absences.css b/absences/absences.css new file mode 100644 index 0000000..d31f76e --- /dev/null +++ b/absences/absences.css @@ -0,0 +1,520 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + margin: 0; + padding: 0; + color: var(--text-primary); + background-color: var(--background) !important; + font-family: "Montserrat", serif !important; + min-height: 100vh; + font-size: 16px; +} + +@media (max-width: 768px) { + body { + font-size: 14px; + } +} + +.kreta-container { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +.kreta-header { + padding: clamp(1rem, 3vw, 2rem); + display: grid; + grid-template-columns: minmax(300px, 400px) 1fr minmax(200px, 300px); + align-items: center; + gap: 1rem; +} + +@media (max-width: 1200px) { + .kreta-header { + grid-template-columns: minmax(250px, 350px) 1fr minmax(180px, 250px); + } +} + +@media (max-width: 768px) { + .kreta-header { + grid-template-columns: 1fr auto; + grid-template-areas: + "school user" + "nav nav"; + padding: 1rem; + gap: 0.5rem; + } +} + +.school-info { + margin: 0; +} + +@media (max-width: 768px) { + .school-info { + grid-area: school; + max-width: none; + display: flex; + align-items: center; + gap: 0.5rem; + } +} + +.logo-text { + color: var(--text-primary); + font-size: 24px; + font-weight: 600; + margin: 0 0 0.5rem; + display: flex; + align-items: center; +} + +@media (max-width: 768px) { + .logo-text { + margin: 0; + font-size: 20px; + } +} + +.logo { + width: 24px; + border-radius: 8px; + margin-right: 0.5rem; +} + +.school-details { + color: var(--text-secondary); + font-size: 14px; +} + +.school-details span { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 300px; +} + +@media (max-width: 768px) { + .school-details span { + max-width: 200px; + } + + .school-details { + font-size: 12px; + } +} + + +.kreta-nav { + padding: 0 clamp(0.5rem, 3vw, 1.5rem); + position: sticky; + top: 0; + z-index: 100; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + scrollbar-width: none; + -ms-overflow-style: none; + display: flex; + justify-content: center; +} + +@media (max-width: 768px) { + .kreta-nav { + grid-area: nav; + padding: 0; + margin-top: 0.5rem; + } +} + +.nav-links { + display: flex; + gap: clamp(0.5rem, 2vw, 1rem); + padding: 0.25rem; + justify-content: center; +} + +@media (max-width: 768px) { + .nav-links { + justify-content: flex-start; + width: 100%; + gap: 0.25rem; + } +} + +.nav-links a { + color: var(--text-secondary); + text-decoration: none; + padding: clamp(0.5rem, 1.5vw, 1rem) 0.5rem; + font-weight: 500; + white-space: nowrap; + transition: all 0.2s ease; + display: flex; + align-items: center; + gap: 0.5rem; + border-radius: 8px; +} + +@media (max-width: 768px) { + .nav-links a { + padding: 0.5rem; + font-size: 13px; + } + + .nav-links a .material-icons-round { + font-size: 20px; + } +} + +.nav-links a:hover { + color: var(--text-primary); + background-color: var(--card-card); +} + +.nav-links a.active { + color: var(--accent-accent); +} + + +.user-profile { + position: relative; + justify-self: flex-end; +} + +@media (max-width: 768px) { + .user-profile { + grid-area: user; + } +} + +.user-dropdown-btn { + display: flex; + align-items: center; + gap: 1rem; + background: none; + border: none; + cursor: pointer; + padding: 0.5rem; + border-radius: 8px; + transition: background-color 0.2s; +} + +.user-dropdown-btn:hover { + background: var(--card-card); +} + +.user-info { + text-align: right; +} + +.user-name { + display: block; + color: var(--text-primary); + font-size: 16px; + font-weight: 500; +} + +.user-time { + display: block; + color: var(--text-secondary); + font-size: 14px; +} + +.user-dropdown { + position: absolute; + top: 100%; + right: 0; + margin-top: 0.5rem; + background: var(--card-card); + border-radius: 12px; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); + width: 200px; + display: none; + z-index: 1000; +} + +.user-dropdown.show { + display: block; + animation: dropdownShow 0.2s ease; +} + +.dropdown-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.75rem 1rem; + color: var(--text-primary); + text-decoration: none; + transition: background-color 0.2s; +} + +.dropdown-item:hover { + background: var(--button-secondaryFill); +} + + +.kreta-main { + flex: 1; + padding: clamp(1rem, 3vw, 2rem); + max-width: 1200px; + margin: 0 auto; + width: 100%; +} + + +.filter-card { + background: var(--card-card); + border-radius: 24px; + padding: 20px; + margin-bottom: 24px; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} + +.filter-header { + margin-bottom: 16px; +} + +.filter-header h2 { + font-size: 18px; + font-weight: 600; + color: var(--text-primary); + background-color: var(--card-card); +} + +.filter-content { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 16px; +} + +.filter-group { + display: flex; + flex-direction: column; + gap: 8px; +} + +.filter-group label { + display: flex; + align-items: center; + gap: 8px; + color: var(--text-secondary); + font-size: 14px; +} + +.filter-input { + padding: 10px; + border: none; + border-radius: 8px; + background: var(--button-secondaryFill); + color: var(--text-primary); + font-family: inherit; + font-size: 14px; + transition: all 0.2s ease; +} + +.filter-input:focus { + outline: none; + box-shadow: 0 0 0 2px var(--accent-accent); +} + + +.absences-container { + display: flex; + flex-direction: column; + gap: 16px; +} + +.absence-group { + background: var(--card-card); + border-radius: 24px; + overflow: hidden; + animation: fadeIn 0.3s ease; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} + +.absence-date { + padding: 16px; + color: var(--text-primary); + font-weight: 600; + display: flex; + align-items: center; + gap: 8px; +} + +.absence-count { + margin-left: auto; + background: var(--accent-accent); + color: var(--button-secondaryFill); + padding: 4px 8px; + border-radius: 12px; + font-size: 14px; +} + +.absence-list { + padding: 16px; + display: flex; + flex-direction: column; + gap: 12px; +} + +.absence-item { + display: grid; + grid-template-columns: auto 1fr auto; + align-items: center; + gap: 16px; + padding: 12px; + background: var(--accent-15); + border-radius: 12px; + transition: transform 0.2s ease; +} + +.absence-item:hover { + transform: translateX(4px); +} + +.absence-time { + display: flex; + align-items: center; + gap: 4px; + color: var(--text-secondary); + font-size: 14px; +} + +.absence-details { + display: flex; + flex-direction: column; + gap: 4px; +} + +.absence-subject { + font-weight: 600; + color: var(--text-primary); +} + +.absence-topic { + color: var(--text-secondary); + font-size: 14px; +} + +.absence-status { + display: flex; + align-items: center; + gap: 4px; + font-size: 14px; + font-weight: 500; +} + +.absence-status.justified { + color: var(--grades-4); +} + +.absence-status.unjustified { + color: var(--grades-1); +} + +.absence-status.pending { + color: var(--grades-3); +} + + +.loading-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: var(--background); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + z-index: 9999; +} + +.loading-container { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; + padding: 2rem; + border-radius: 24px; +} + +.loading-text { + color: var(--Text-Primary); + text-align: center; + font-family: Montserrat; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +.loading-text2 { + align-self: stretch; + color: var(--Text-Secondary); + text-align: center; + font-family: Figtree; + font-size: 16px; + font-style: normal; + font-weight: 500; + line-height: 130%; +} + +.loading-logo { + width: 48px; + height: 48px; + margin-bottom: 1rem; + border-radius: 8px; +} + + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes dropdownShow { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + + +::-webkit-scrollbar { + width: clamp(4px, 1vw, 8px); + height: clamp(4px, 1vw, 8px); +} + +::-webkit-scrollbar-track { + background: var(--background); +} + +::-webkit-scrollbar-thumb { + background: var(--text-secondary); + border-radius: 4px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--text-primary); +} \ No newline at end of file diff --git a/absences/absences.js b/absences/absences.js new file mode 100644 index 0000000..76f5783 --- /dev/null +++ b/absences/absences.js @@ -0,0 +1,462 @@ +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 collectAbsencesData() { + await waitForElement('#HianyzasGrid'); + 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 absences = []; + const rows = document.querySelectorAll('#HianyzasGrid .k-grid-content tr'); + rows.forEach(row => { + const cells = row.querySelectorAll('td'); + if (cells.length >= 9) { + absences.push({ + date: cells[1]?.textContent?.trim() || '', + lesson: cells[2]?.textContent?.trim() || '', + subject: cells[3]?.textContent?.trim() || '', + topic: cells[4]?.textContent?.trim() || '', + type: cells[5]?.textContent?.trim() || '', + justified: cells[6]?.textContent?.trim() === 'Igen', + justificationStatus: cells[6]?.textContent?.trim() === 'Igen' ? 'justified' : + cells[6]?.textContent?.trim() === 'Nem' ? 'unjustified' : 'pending', + purposeful: cells[7]?.textContent?.trim() || '', + justificationType: cells[8]?.textContent?.trim() || '' + }); + } + }); + + const groupedAbsences = {}; + absences.forEach(absence => { + if (!groupedAbsences[absence.date]) { + groupedAbsences[absence.date] = []; + } + groupedAbsences[absence.date].push(absence); + }); + + return { basicData, absences, groupedAbsences }; +} + +function showLoadingScreen() { + const loadingHTML = ` +
+
+ +
Betöltés alatt...
+

Kis türelmet

+
+
+ `; + + 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); + } +} + +async function transformAbsencesPage() { + showLoadingScreen(); + const { basicData, absences, groupedAbsences } = await collectAbsencesData(); + + + const schoolNameFull = `${basicData.schoolInfo.id} - ${basicData.schoolInfo.name}`; + const shortenedSchoolName = shortenSchoolName(schoolNameFull); + + document.body.innerHTML = ` +
+
+
+

+ + Firka +

+
+ ${shortenedSchoolName} +
+
+ + + + +
+ +
+
+
+

Szűrés

+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+ ${Object.entries(groupedAbsences).map(([date, dayAbsences]) => ` +
+
+ event + ${date} + ${dayAbsences.length} óra +
+
+ ${dayAbsences.map(absence => ` +
+
+ schedule + ${absence.lesson}. óra +
+
+
${absence.subject}
+
${absence.topic}
+
+
+ ${absence.justificationStatus === 'justified' ? + `Igazolt check_circle` : + absence.justificationStatus === 'unjustified' ? + `Igazolatlan cancel` : + `Igazolásra vár pending`} +
+
+ `).join('')} +
+
+ `).join('')} +
+
+
+ `; + + + const links = [ + { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, + { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: true }, + { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap' }, + { rel: 'stylesheet', href: 'https://fonts.googleapis.com/icon?family=Material+Icons+Round' } + ]; + + links.forEach(link => { + const linkElement = document.createElement('link'); + Object.entries(link).forEach(([key, value]) => { + linkElement[key] = value; + }); + document.head.appendChild(linkElement); + }); + + setupEventListeners(); + setupFilters(); + + hideLoadingScreen(); +} + +function setupEventListeners(data) { + 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'); + }); + + const timerEl = document.getElementById('logoutTimer'); + if (timerEl) { + const startTime = parseInt(timerEl.textContent?.match(/\d+/)?.[0] || "30"); + let timeLeft = startTime * 60; + + const updateTimer = () => { + const minutes = Math.floor(timeLeft / 60); + const seconds = timeLeft % 60; + timerEl.textContent = `${minutes}:${seconds.toString().padStart(2, '0')}`; + + if (timeLeft <= 0) { + window.location.href = '/Home/Logout'; + } else { + timeLeft--; + } + }; + + updateTimer(); + setInterval(updateTimer, 1000); + } + + + 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 setupFilters() { + try { + const filters = { + dateFilter: document.getElementById('dateFilter'), + subject: document.getElementById('subjectFilter'), + justified: document.getElementById('justificationFilter') + }; + + + if (!filters.dateFilter || !filters.subject || !filters.justified) { + console.warn('Some filter elements were not found in the DOM'); + return; + } + + + if (filters.dateFilter) { + filters.dateFilter.disabled = true; + } + + const filterAbsences = () => { + try { + + const dateFilterValue = filters.dateFilter.value; + const subject = filters.subject.value; + const justified = filters.justified.value; + + + const selectedDate = dateFilterValue ? new Date(dateFilterValue) : null; + + document.querySelectorAll('.absence-group').forEach(group => { + const dateStr = group.dataset.date; + const dateParts = dateStr.split('.'); + + + if (dateParts.length < 3) { + console.error(`Invalid date format: ${dateStr}`); + return; + } + + + const parsedDay = parseInt(dateParts[0].trim(), 10); + const parsedMonth = parseInt(dateParts[1].trim(), 10) - 1; + const parsedYear = parseInt(dateParts[2].trim(), 10); + + + if (isNaN(parsedDay) || isNaN(parsedMonth) || isNaN(parsedYear)) { + console.error(`Invalid date components: ${dateStr}`); + return; + } + + + const groupDate = new Date(parsedYear, parsedMonth, parsedDay); + + let showGroup = true; + + + // if (selectedDate && dateFilterValue) { + // // Compare year, month, and day to ignore time + // showGroup = groupDate.getFullYear() === selectedDate.getFullYear() && + // groupDate.getMonth() === selectedDate.getMonth() && + // groupDate.getDate() === selectedDate.getDate(); + // + // console.log(`Comparing dates: ${groupDate.toDateString()} vs ${selectedDate.toDateString()}, match: ${showGroup}`); + // } + + const absenceItems = group.querySelectorAll('.absence-item'); + let visibleItems = 0; + + absenceItems.forEach(item => { + let showItem = true; + if (subject && item.dataset.subject !== subject) showItem = false; + + if (justified) { + const statusElement = item.querySelector('.absence-status'); + const hasStatus = statusElement.classList.contains(justified); + if (!hasStatus) showItem = false; + } + + item.style.display = showItem ? '' : 'none'; + if (showItem) visibleItems++; + }); + + group.style.display = (showGroup && visibleItems > 0) ? '' : 'none'; + }); + } catch (err) { + + console.error('Error during filtering absences:', err); + } + }; + + + // if (!filters.dateFilter.value) { + // const today = new Date(); + // filters.dateFilter.value = today.toISOString().split('T')[0]; // Set date to today by default + // } + + + Object.values(filters).forEach(filter => { + try { + if (filter && filter !== filters.dateFilter) { // Don't add event listener to dateFilter + filter.addEventListener('change', filterAbsences); + } + } catch (err) { + if (err.message && err.message.includes('Extension context invalidated')) { + console.warn('Extension context invalidated during event listener setup'); + } else { + console.error('Error setting up filter event listener:', err); + } + } + }); + + + filterAbsences(); + } catch (err) { + + if (err.message && err.message.includes('Extension context invalidated')) { + console.warn('Extension context invalidated during filter setup'); + } else { + console.error('Error setting up filters:', err); + } + } +} + + +if (window.location.href.includes('/Hianyzas/Hianyzasok')) { + transformAbsencesPage().catch(error => { + console.error('Hiba történt az oldal átalakítása során:', error); + }); +} \ No newline at end of file diff --git a/dashboard/dashboard.css b/dashboard/dashboard.css new file mode 100644 index 0000000..312f480 --- /dev/null +++ b/dashboard/dashboard.css @@ -0,0 +1,238 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + margin: 0; + padding: 0; + color: var(--text-primary); + background-color: var(--background) !important; + font-family: "Montserrat", serif !important; + min-height: 100vh; + font-size: 16px; +} + +.kreta-container { + min-height: 100vh; + display: flex; + flex-direction: column; +} + + +.kreta-main { + flex: 1; + padding: clamp(1rem, 3vw, 2rem); + max-width: 1400px; + margin: 0 auto; + width: 100%; +} + +.grid-container { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); + gap: 20px; +} + + +.card { + background: var(--card-card); + padding: 20px; + padding-top: 5px !important; + border-radius: 24px; + overflow: hidden; + animation: fadeIn 0.5s ease forwards; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); + display: flex; + flex-direction: column; + height: 100%; +} + +.card h2 { + font-size: 16px; + font-weight: 600; + color: var(--text-primary); + background-color: var(--card-card); +} + +.card:last-child { + grid-column: 1 / -1; +} + + +.grade-item, .absence-item, .note-item, .exam-item, .news-item { + border-radius: 6px; + transition: transform 0.2s ease, box-shadow 0.2s ease; + border: 1px solid var(--card-card); + display: flex; + flex-direction: column; + margin-bottom: 12px; + padding: 12px; +} + + +.grade { + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 16px; + font-weight: 700; + margin-right: 1rem; + color: var(--text-primary); + font-size: 22px; +} +.subject-name, .absence-type, .note-title, .exam-subject { + color: var(--text-primary); + font-weight: 600; + font-size: 16px; +} +.grade-type, .absence-date, .note-date, .exam-date { + color: var(--text-secondary); + font-weight: 500; + font-size: 14px; +} +.more-link { + margin-top: auto; + display: inline-flex; + align-items: center; + gap: 0.5rem; + color: var(--accent-accent); + text-decoration: none; + font-weight: 500; + padding-top: 16px; + transition: gap 0.2s ease; + font-size: clamp(0.875rem, 1.5vw, 1rem); +} +@media (hover: hover) { + .more-link:hover { + color: var(--accent-secondary); + gap: 0.75rem; + } +} +.more-link i { + font-size: 0.875rem; +} +.grade-1 {color: var(--grades-1); background-color: var(--grades-background-1);} +.grade-2 {color: var(--grades-2); background-color: var(--grades-background-2);} +.grade-3 {color: var(--grades-3); background-color: var(--grades-background-3);} +.grade-4 {color: var(--grades-4); background-color: var(--grades-background-4);} +.grade-5 {color: var(--grades-5); background-color: var(--grades-background-5);} + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} +.user-profile { + position: relative; +} + +.user-dropdown-btn { + background: none; + border: none; + cursor: pointer; + padding: 8px; + display: flex; + align-items: center; + color: var(--text-primary); +} + +.user-dropdown { + position: absolute; + top: 100%; + right: 0; + background: var(--card-card); + border-radius: 12px; + box-shadow: 0 4px 12px var(--accent-shadow); + min-width: 200px; + display: none; + z-index: 1000; +} + +.user-dropdown.active { + display: block; +} + +.dropdown-item { + display: flex; + align-items: center; + gap: 8px; + padding: 12px 16px; + color: var(--text-primary); + text-decoration: none; + transition: background-color 0.2s ease; +} + +.dropdown-item:hover { + background-color: var(--accent-15); +} + +.dropdown-item svg { + width: 20px; + height: 20px; +} +.subject-name, .absence-type, .note-title, .exam-subject { + color: var(--text-primary); + font-weight: 600; + font-size: 16px; +} +.grade-type, .absence-date, .note-date, .exam-date { + color: var(--text-secondary); + font-weight: 500; + font-size: 14px; +} +.more-link { + margin-top: auto; + display: inline-flex; + align-items: center; + gap: 0.5rem; + color: var(--accent-accent); + text-decoration: none; + font-weight: 500; + padding-top: 16px; + transition: gap 0.2s ease; + font-size: clamp(0.875rem, 1.5vw, 1rem); +} +@media (hover: hover) { + .more-link:hover { + color: var(--accent-secondary); + gap: 0.75rem; + } +} +.more-link i { + font-size: 0.875rem; +} + +.grade-row { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; +} + +.grade-details { + flex: 1; + margin-right: 10px; +} + +.grade-date, .exam-date { + color: var(--text-secondary); + font-size: 14px; + white-space: nowrap; +} + +.exam-info { + display: flex; + gap: 8px; + margin-top: 4px; + color: var(--text-secondary); + font-size: 14px; +} \ No newline at end of file diff --git a/dashboard/dashboard.js b/dashboard/dashboard.js new file mode 100644 index 0000000..93ad8de --- /dev/null +++ b/dashboard/dashboard.js @@ -0,0 +1,446 @@ +const utils = { + shortenSchoolName(name, maxLength = 50) { + if (!name || name.length <= maxLength) return name || ''; + + const [code, fullName] = name.split(' - '); + if (fullName) { + const maxFullNameLength = maxLength - code.length - 3; + if (fullName.length > maxFullNameLength) { + return `${code} - ${fullName.substring(0, maxFullNameLength)}...`; + } + } + return `${name.substring(0, maxLength - 3)}...`; + }, + + formatGradeValue(value) { + return value?.trim() || ''; + }, + + parseDate(dateStr) { + return dateStr?.trim() || ''; + }, + + formatHungarianDate(dateStr) { + if (!dateStr) return ''; + + const dateParts = dateStr.trim().split('.'); + if (dateParts.length < 3) return dateStr; + + + const month = parseInt(dateParts[1], 10); + const day = parseInt(dateParts[2], 10); + + + if (isNaN(month) || month < 1 || month > 12) return dateStr; + + const hungarianMonths = [ + 'január', 'február', 'március', 'április', 'május', 'június', + 'július', 'augusztus', 'szeptember', 'október', 'november', 'december' + ]; + + + return `${hungarianMonths[month - 1]} ${day}.`; + } +}; + + +class DashboardDataExtractor { + constructor() { + this.data = { + grades: [], + absences: [], + notes: [], + upcomingExams: [], + news: [] + }; + } + + extractGrades() { + const gradeRows = document.querySelectorAll('#legutobbiErtekelesek tr:not(:first-child)'); + + this.data.grades = Array.from(gradeRows).map(row => { + const gradeValue = row.querySelector('span[style*="font-size: 200%"]')?.textContent; + const gradeInfo = row.querySelector('span[style*="float: right"]')?.textContent; + + if (!gradeValue || !gradeInfo) return null; + + const [fullSubject, date] = gradeInfo.split('\n').map(str => str.trim()); + const { subject, type } = this.parseSubjectInfo(fullSubject); + + return { + value: utils.formatGradeValue(gradeValue), + subject, + date: utils.parseDate(date), + type: type || 'Értékelés' + }; + }).filter(Boolean); + } + + parseSubjectInfo(fullSubject) { + const months = ['január', 'február', 'március', 'április', 'május', 'június', + 'július', 'augusztus', 'szeptember', 'október', 'november', 'december']; + const monthPattern = new RegExp(months.join('|'), 'i'); + const monthMatch = fullSubject.match(monthPattern); + + if (!monthMatch) return { subject: fullSubject, type: '' }; + + const monthIndex = fullSubject.lastIndexOf(monthMatch[0]); + return { + subject: fullSubject.substring(0, monthIndex).trim(), + type: fullSubject.substring(monthIndex).trim() + }; + } + + extractAbsences() { + const absenceRows = document.querySelectorAll('#legutobbiMulasztasok tr:not(:first-child)'); + + this.data.absences = Array.from(absenceRows).map(row => { + const spans = row.querySelectorAll('span'); + if (spans.length < 4) return null; + + return { + date: spans[0]?.textContent?.trim() || '', + day: spans[2]?.textContent?.trim() || '', + type: spans[1]?.textContent?.trim() || '', + count: spans[3]?.textContent?.trim() || '' + }; + }).filter(Boolean); + } + + extractNotes() { + const noteRows = document.querySelectorAll('#legutobbiFeljegyzesek tr:not(:first-child)'); + + this.data.notes = Array.from(noteRows).map(row => { + const spans = row.querySelectorAll('span'); + if (spans.length < 3) return null; + + return { + title: spans[0]?.textContent?.trim() || '', + author: spans[1]?.textContent?.trim() || '', + date: spans[2]?.textContent?.trim() || '' + }; + }).filter(Boolean); + } + + extractExams() { + const examRows = document.querySelectorAll('#legutobbiBejelentettSzamonkeres tr:not(:first-child)'); + + this.data.upcomingExams = Array.from(examRows).map(row => { + const spans = row.querySelectorAll('span'); + if (spans.length < 4) return null; + + return { + date: spans[0]?.textContent?.trim() || '', + subject: spans[1]?.textContent?.trim() || '', + day: spans[2]?.textContent?.trim() || '', + type: spans[3]?.textContent?.trim() || '' + }; + }).filter(Boolean); + } + + extractNews() { + const newsContainer = document.querySelector('.faliujsag-lista, #faliujsagLista'); + if (!newsContainer) return; + + const newsItems = newsContainer.querySelectorAll('.nb-item, .news-item'); + + this.data.news = Array.from(newsItems).map(item => { + const titleElement = item.querySelector('.subject h4, .news-title'); + const contentElement = item.querySelector('.content, .news-content'); + + + const dateElement = item.querySelector('.nb-date, .news-date'); + let dateStr = ''; + + if (dateElement) { + const yearElement = dateElement.querySelector('.year'); + const monthElement = dateElement.querySelector('.month'); + const dayElement = dateElement.querySelector('.day'); + + if (yearElement && monthElement && dayElement) { + dateStr = `${yearElement.textContent} ${monthElement.textContent} ${dayElement.textContent}`; + } else { + dateStr = dateElement.textContent; + } + } + + + const authorElement = item.querySelector('.auth-name span, .news-author'); + + return { + title: titleElement?.textContent?.trim() || '', + date: dateStr.trim(), + content: contentElement?.textContent?.trim() || '', + author: authorElement?.textContent?.trim() || '' + }; + }).filter(news => news.title || news.content); + } + + extractAll() { + this.extractGrades(); + this.extractAbsences(); + this.extractNotes(); + this.extractExams(); + this.extractNews(); + return this.data; + } +} + + +class DashboardUI { + constructor(data) { + this.data = { + ...data, + schoolInfo: { + name: cookies.getCookie(COOKIE_KEYS.SCHOOL_NAME) || DEFAULT_VALUES.SCHOOL, + id: cookies.getCookie(COOKIE_KEYS.SCHOOL_CODE) || '' + }, + userData: { + name: cookies.getCookie(COOKIE_KEYS.USER_NAME) || DEFAULT_VALUES.USER, + time: document.querySelector('.usermenu_timer')?.textContent?.trim() || DEFAULT_VALUES.TIMER + } + }; + this.schoolNameFull = `${this.data.schoolInfo.id} - ${this.data.schoolInfo.name}`; + this.shortenedSchoolName = utils.shortenSchoolName(this.schoolNameFull); + } + + + static generateHeaderHTML(data, schoolNameFull, shortenedSchoolName) { + return ` +
+
+

+ + Firka +

+
+ ${shortenedSchoolName} +
+
+ + + + +
+ `; + } + generateMainContentHTML() { + return ` +
+
+ ${this.generateGradeCard()} + ${this.generateAbsenceCard()} + ${this.generateNoteCard()} + ${this.generateExamCard()} + ${this.generateNewsCard()} +
+
+ `; + } + generateNewsCard() { + const newsItems = this.data.news.map(news => ` +
+
+
${news.date}
+ ${news.author ? `
${news.author}
` : ''} +
+
+

${news.title}

+
${news.content}
+
+
+ `).join(''); + + return this.generateCard('Hírek', newsItems || 'Jelenleg ez egy nem támogatott funkció', '/Intezmeny/Faliujsag', 'Összes hír'); + } + generateGradeCard() { + const gradeItems = this.data.grades.map(grade => ` +
+
+
${grade.value}
+
+
${grade.subject}
+
${grade.type}
+
+ ${grade.date ? `
${grade.date}
` : ''} +
+
+ `).join(''); + + return this.generateCard('Értékeléseid', gradeItems, '/TanuloErtekeles/Osztalyzatok', 'Összes jegyed'); + } + generateAbsenceCard() { + const absenceItems = this.data.absences.map(absence => ` +
+
+
${absence.type}
+
${absence.date}
+
+
+ `).join(''); + + return this.generateCard('Mulasztások', absenceItems, '/Hianyzas/Hianyzasok', 'Összes mulasztás'); + } + generateNoteCard() { + const noteItems = this.data.notes.map(note => ` +
+
+
${note.title}
+
${note.date}
+
+
+ `).join(''); + + return this.generateCard('Feljegyzések', noteItems, '/TanuloErtekeles/InformaciokFeljegyzesek', 'Összes üzeneted'); + } + generateExamCard() { + const examItems = this.data.upcomingExams.map(exam => ` +
+
+
${exam.subject}
+
${utils.formatHungarianDate(exam.date)}
+
+
+ `).join(''); + + return this.generateCard('Bejelentett dolgozatok', examItems, '/Tanulo/TanuloBejelentettSzamonkeresek', 'Összes dolgozat'); + } + generateCard(title, content, linkHref, linkText) { + return ` +
+

${title}

+
+ ${content || `Jelenleg ez egy nem támogatott funkció`} + + ${linkText} + + + + +
+
+ `; + } + + render() { + document.body.innerHTML = ` +
+ ${DashboardUI.generateHeaderHTML(this.data, this.schoolNameFull, this.shortenedSchoolName)} + ${this.generateMainContentHTML()} +
+ `; + setupUserDropdown(); + setupLogoutTimer(); + } +} + + +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); +} + +class FontLoader { + static loadFonts() { + const links = [ + { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, + { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: true }, + { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap' }, + { rel: 'stylesheet', href: 'https://fonts.googleapis.com/icon?family=Material+Icons+Round' } + ]; + + links.forEach(link => { + const linkElement = document.createElement('link'); + Object.entries(link).forEach(([key, value]) => { + linkElement[key] = value; + }); + document.head.appendChild(linkElement); + }); + } +} + + +class DashboardApp { + constructor() { + this.initialize(); + } + + async initialize() { + if (!window.location.href.includes('/Intezmeny/Faliujsag')) return; + + try { + const dataExtractor = new DashboardDataExtractor(); + const dashboardData = dataExtractor.extractAll(); + FontLoader.loadFonts(); + const ui = new DashboardUI(dashboardData); + ui.render(); + } catch (error) { + console.error('Error initializing dashboard:', error); + } + } +} + + +new DashboardApp(); \ No newline at end of file diff --git a/fonts/Figtree-Regular.woff2 b/fonts/Figtree-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e2f70358ca84e434a9d256f46080d59729156750 GIT binary patch literal 23324 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 AYybcN literal 0 HcmV?d00001 diff --git a/fonts/Montserrat-Medium.woff2 b/fonts/Montserrat-Medium.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e3ffa4924d1f39a0b71e4b0796a25c6552012c10 GIT binary patch literal 127352 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 -gPz7#4j$=HbNue0&Fvb`5u%5dTGz0d9! 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 + `; + + setupFormValidation(); + }; + + const setupFormValidation = () => { + const form = document.getElementById('forgotForm'); + const inputs = form.querySelectorAll('.form-control'); + + inputs.forEach(input => { + + input.addEventListener('input', () => { + validateInput(input); + }); + + + input.addEventListener('blur', () => { + validateInput(input, true); + }); + }); + + form.addEventListener('submit', handleSubmit); + }; + + const validateInput = (input, showError = false) => { + const isValid = input.value.trim().length > 0; + const errorElement = input.nextElementSibling; + + if (!isValid && showError) { + input.classList.add('error'); + errorElement?.classList.add('show'); + } else { + input.classList.remove('error'); + errorElement?.classList.remove('show'); + } + + return isValid; + }; + + const handleSubmit = async (event) => { + event.preventDefault(); + + const form = event.target; + const inputs = form.querySelectorAll('.form-control[required]'); + let isValid = true; + + + inputs.forEach(input => { + if (!validateInput(input, true)) { + isValid = false; + } + }); + + if (!isValid) { + return; + } + + const submitButton = form.querySelector('.btn-submit'); + submitButton.disabled = true; + + try { + const formData = new FormData(form); + const response = await fetch('/Adminisztracio/ElfelejtettJelszo/LinkKuldes', { + method: 'POST', + body: formData, + headers: { + 'X-Requested-With': 'XMLHttpRequest' + } + }); + + const result = await response.json(); + + if (result.Success) { + window.location.href = '/Adminisztracio/Login'; + } else { + + alert(result.Message || 'Hiba történt a jelszó visszaállítása során. (Kérlek használd az eredeti kréta oldalt erre)'); + grecaptcha.reset(); + } + } catch (error) { + //alert('Hiba történt a jelszó visszaállítása során.'); + grecaptcha.reset(); + } finally { + submitButton.disabled = false; + } + }; + + + if (window.location.href.includes('/Adminisztracio/ElfelejtettJelszo')) { + transformForgotPasswordPage(); + } + })(); \ No newline at end of file diff --git a/global/maintenance.css b/global/maintenance.css new file mode 100644 index 0000000..4cc9452 --- /dev/null +++ b/global/maintenance.css @@ -0,0 +1,51 @@ +body.maintenance-mode { + margin: 0; + padding: 0; + height: 100vh; + display: flex; + align-items: center; + justify-content: center; + background-color: var(--background); + color: var(--text-primary); + font-family: 'Inter', sans-serif; +} + +body { + background-color: var(--background) !important; +} + +.maintenance-container { + text-align: center; + padding: 2rem; + border-radius: 8px; + background-color: var(--card-card); + box-shadow: 0 var(--shadow-blur) 6px var(--accent-shadow); + max-width: 600px; + width: 90%; +} + +.maintenance-logo { + width: 128px; + height: 128px; + margin: 0 auto 2rem; +} + +.maintenance-title { + font-size: 1.5rem; + font-weight: 600; + margin-bottom: 1rem; + color: var(--accent-accent); +} + +.maintenance-message { + font-size: 1rem; + line-height: 1.5; + margin-bottom: 1.5rem; + color: var(--text-primary); +} + +.maintenance-footer { + font-size: 0.875rem; + color: var(--text-secondary); + margin-top: 2rem; +} \ No newline at end of file diff --git a/global/maintenance.js b/global/maintenance.js new file mode 100644 index 0000000..d9b172b --- /dev/null +++ b/global/maintenance.js @@ -0,0 +1,65 @@ +function loadMaintenanceCSS() { + const maintenanceCSS = document.createElement('link'); + maintenanceCSS.rel = 'stylesheet'; + maintenanceCSS.href = chrome.runtime.getURL('global/maintenance.css'); + document.head.appendChild(maintenanceCSS); +} + +function checkMaintenancePage() { + const maintenanceContent = document.querySelector('.login_content'); + if (maintenanceContent && maintenanceContent.textContent.includes('frissítés alatt')) { + const body = document.body; + const mainLogo = chrome.runtime.getURL('images/firka_logo_128.png'); + + + const existingStyles = document.querySelectorAll('link[rel="stylesheet"], style'); + existingStyles.forEach(style => style.remove()); + + + body.innerHTML = ''; + body.classList.add('maintenance-mode'); + body.classList.add('theme-enabled'); + + + loadMaintenanceCSS(); + + + const container = document.createElement('div'); + container.className = 'maintenance-container'; + + const logo = document.createElement('img'); + logo.src = mainLogo; + logo.alt = 'Firka Logo'; + logo.className = 'maintenance-logo'; + + const title = document.createElement('h1'); + title.className = 'maintenance-title'; + title.textContent = 'Karbantartás'; + + const messageDiv = document.createElement('div'); + messageDiv.className = 'maintenance-message'; + + const paragraph1 = document.createElement('p'); + paragraph1.textContent = 'A KRÉTA rendszer jelenleg frissítés alatt van, hamarosan újra elérhetővé válik.'; + + const paragraph2 = document.createElement('p'); + paragraph2.textContent = 'Köszönjük türelmüket és megértésüket!'; + + const footer = document.createElement('div'); + footer.className = 'maintenance-footer'; + footer.textContent = 'KRÉTA Csapat'; + + + messageDiv.appendChild(paragraph1); + messageDiv.appendChild(paragraph2); + + container.appendChild(logo); + container.appendChild(title); + container.appendChild(messageDiv); + container.appendChild(footer); + + body.appendChild(container); + } +} + +document.addEventListener('DOMContentLoaded', checkMaintenancePage); \ No newline at end of file diff --git a/global/navigation.css b/global/navigation.css new file mode 100644 index 0000000..1dca466 --- /dev/null +++ b/global/navigation.css @@ -0,0 +1,257 @@ +.kreta-header { + padding: clamp(1rem, 3vw, 2rem); + display: grid; + grid-template-columns: minmax(300px, 400px) 1fr minmax(200px, 300px); + align-items: center; + gap: 1rem; + background-color: var(--background); +} + + +.school-info { + margin: 0; + display: flex; + flex-direction: column; +} + +.logo-text { + color: var(--text-primary); + font-size: 24px; + font-weight: 600; + margin: 0 0 0.5rem; + display: flex; + align-items: center; +} + +.logo { + width: 24px; + height: 24px; + border-radius: 8px; + margin-right: 0.5rem; +} + +.school-details { + color: var(--text-secondary); + font-size: 14px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + + +.kreta-nav { + padding: 0 clamp(0.5rem, 3vw, 1.5rem); + position: sticky; + top: 0; + z-index: 100; + display: flex; + justify-content: center; +} + +.nav-links { + display: flex; + gap: clamp(0.5rem, 2vw, 1rem); + padding: 0.25rem; + align-items: center; +} + +.nav-item { + display: flex; + align-items: center; + padding: clamp(0.5rem, 1.5vw, 1rem) 0.5rem; + color: var(--text-secondary); + text-decoration: none; + font-weight: 500; + white-space: nowrap; + border-radius: 8px; + transition: all 0.2s ease; + gap: 0.5rem; + text-decoration: none; +} +.nav-item.active { + display: flex; + padding: 8px 14px 8px 12px; + align-items: center; + gap: 8px; + border-radius: 20px; + background: var(--button-secondaryFill); + box-shadow: 0px 1px var(--shadow-blur, 2px) 0px var(--accent-shadow); +} + +.nav-item:hover { + color: var(--text-primary); + background-color: var(--hover); + border-radius: 8px; + text-decoration: none; +} +.nav-item.active:hover { + color: var(--accent-accent); + background-color: var(--accent-hover); + text-decoration: none; +} + +.nav-item img, +.nav-item svg { + width: 24px; + height: 24px; +} + +.nav-item.active svg path { + fill: var(--accent-accent); +} + + +.user-profile { + position: relative; + justify-self: flex-end; +} + +.user-dropdown-btn { + display: flex; + align-items: center; + gap: 1rem; + background: none; + border: none; + cursor: pointer; + padding: 0.5rem; + border-radius: 8px; + transition: background-color 0.2s; +} + +.user-dropdown-btn:hover { + background: var(--hover); +} + +.user-info { + text-align: right; +} + +.user-name { + display: block; + color: var(--text-primary); + font-size: 16px; +} + +.nav-logout-timer { + display: block; + color: var(--text-secondary); + font-size: 14px; +} + +.user-dropdown { + position: absolute; + top: 100%; + right: 0; + margin-top: 0.5rem; + background: var(--card-card); + border-radius: 12px; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); + width: 200px; + display: none; + z-index: 1000; +} + +.user-dropdown.show { + display: block; + animation: dropdownShow 0.2s ease; +} + +.dropdown-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.75rem 1rem; + color: var(--text-primary); + text-decoration: none; + transition: background-color 0.2s; +} + +.dropdown-item:hover { + background: var(--hover); + color: var(--accent-accent); + border-radius: 8px; +} + + +@keyframes dropdownShow { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + + +@media (max-width: 1200px) { + .kreta-header { + grid-template-columns: minmax(250px, 350px) 1fr minmax(180px, 250px); + } +} + +@media (max-width: 768px) { + .kreta-header { + grid-template-columns: 1fr auto; + grid-template-areas: + "school user" + "nav nav"; + padding: 1rem; + gap: 0.5rem; + } + + .school-info { + grid-area: school; + max-width: none; + display: flex; + align-items: center; + gap: 0.5rem; + } + + .logo-text { + margin: 0; + font-size: 20px; + } + + .school-details { + font-size: 12px; + } + + .kreta-nav { + grid-area: nav; + padding: 0; + margin-top: 0.5rem; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + scrollbar-width: none; + -ms-overflow-style: none; + } + + .kreta-nav::-webkit-scrollbar { + display: none; + } + + .nav-links { + justify-content: flex-start; + width: 100%; + gap: 0.25rem; + } + + .nav-item { + padding: 0.5rem; + font-size: 13px; + } + + .user-profile { + grid-area: user; + } + + .user-name { + font-size: 14px; + } + + .nav-logout-timer { + font-size: 12px; + } +} \ No newline at end of file diff --git a/global/navigation.js b/global/navigation.js new file mode 100644 index 0000000..f4c4c24 --- /dev/null +++ b/global/navigation.js @@ -0,0 +1,103 @@ +const COOKIE_KEYS = { + SCHOOL_NAME: 'schoolName', + SCHOOL_CODE: 'schoolCode', + USER_NAME: 'userName', + SCHOOL_SUBDOMAIN: 'schoolSubdomain' +}; + +const DEFAULT_VALUES = { + SCHOOL: 'Iskola', + USER: 'Felhasználó', + TIMER: '45:00' +}; + +const cookies = { + getCookie(name) { + const value = `; ${document.cookie}`; + const parts = value.split(`; ${name}=`); + return parts.length === 2 ? parts.pop().split(';').shift() : null; + } +}; + + + + +function updateHeaderInfo() { + const schoolName = document.querySelector('.nav-school-name'); + const userName = document.querySelector('.nav-user-name'); + const logoutTimer = document.querySelector('.nav-logout-timer'); + + const userData = { + schoolName: cookies.getCookie(COOKIE_KEYS.SCHOOL_NAME) || DEFAULT_VALUES.SCHOOL, + schoolId: cookies.getCookie(COOKIE_KEYS.SCHOOL_CODE) || '', + name: cookies.getCookie(COOKIE_KEYS.USER_NAME) || DEFAULT_VALUES.USER, + time: document.querySelector('.usermenu_timer')?.textContent?.trim() || DEFAULT_VALUES.TIMER + }; + + if (schoolName) { + schoolName.textContent = `${userData.schoolId} - ${userData.schoolName}`; + } + + if (userName) { + userName.textContent = userData.name; + } + + if (logoutTimer) { + startLogoutTimer(userData.time); + } +} + +function startLogoutTimer(timeString) { + const startTime = parseInt(timeString?.match(/\d+/)?.[0] || "45"); + let timeLeft = startTime * 60; + const timerElement = document.querySelector('.nav-logout-timer'); + + 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); +} + + +document.addEventListener('DOMContentLoaded', () => { + updateHeaderInfo(); +}); + +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'); + }); +} + +function setupSettingsButton() { + 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'); + }); +} + + +document.addEventListener('DOMContentLoaded', () => { + updateHeaderInfo(); + setupUserDropdown(); + setupSettingsButton(); +}); diff --git a/global/theme.css b/global/theme.css new file mode 100644 index 0000000..2dbb279 --- /dev/null +++ b/global/theme.css @@ -0,0 +1,160 @@ +:root { + --background: #DAE4F7; + --background-0: #dae4f700; + --success: var(--grades-4); + --shadow-blur: 2px; + --text-primary: #050B15; + --text-secondary: #050b15cc; + --text-teritary: #050b1580; + --card-card: #EDF3FF; + --card-translucent: #edf3ff80; + --button-secondaryFill: #FBFCFF; + --accent-accent: #3673EE; + --accent-secondary: #1C469A; + --accent-shadow: #1c469a26; + --accent-15: #3673ee26; + --warning-accent: var(--grades-2); + --warning-text: #8F531B; + --warning-15: #ffa04626; + --warning-card: #FAEBDC; + --error-accent: var(--grades-1); + --error-text: #8F1B4F; + --error-15: #FF54A126; + --error-card: #FADCE9; + --grades-1: #FF54A1; + --grades-2: #FFA046; + --grades-3: #F9CF00; + --grades-4: #92EA3B; + --grades-5: #22CCAD; + --grades-background-1: #FF54A126; + --grades-background-2: #FFA04626; + --grades-background-3: #F9CF0026; + --grades-background-4: #92EA3B26; + --grades-background-5: #22CCAD26; +} + + +:root[data-theme="light-green"] { + --background: #FAFFF0; + --background-0: #fafff000; + --success: var(--grades-4); + --shadow-blur: 2px; + --text-primary: #394C0A; + --text-secondary: #394c0acc; + --text-teritary: #394c0a80; + --card-card: #F3FBDE; + --card-translucent: #f3fbde80; + --button-secondaryFill: #FEFFFD; + --accent-accent: #A7DC22; + --accent-secondary: #6E8F1B; + --accent-shadow: #647e2226; + --accent-15: #a7dc2226; + --warning-accent: var(--grades-2); + --warning-text: #8F531B; + --warning-15: #ffa04626; + --warning-card: #FAEBDC; + --error-accent: var(--grades-1); + --error-text: #8F1B4F; + --error-15: #FF54A126; + --error-card: #FADCE9; + --grades-1: #FF54A1; + --grades-2: #FFA046; + --grades-3: #F9CF00; + --grades-4: #92EA3B; + --grades-5: #22CCAD; + --grades-background-1: #FF54A126; + --grades-background-2: #FFA04626; + --grades-background-3: #F9CF0026; + --grades-background-4: #92EA3B26; + --grades-background-5: #22CCAD26; +} + + +:root[data-theme="dark-blue"] { + --background: #070A0E; + --background-0: #070a0e00; + --success: var(--grades-4); + --shadow-blur: 0; + --text-primary: #EBF1FD; + --text-secondary: #ebf1fdcc; + --text-teritary: #ebf1fd80; + --card-card: #0F131B; + --card-translucent: #0f131b80; + --button-secondaryFill: #131822; + --accent-accent: #3673EE; + --accent-secondary: #AEC8FC; + --accent-shadow: #0000; + --accent-15: #3673ee26; + --warning-accent: var(--grades-2); + --warning-text: #f0b37a; + --warning-15: #ffa04626; + --warning-card: #201203; + --error-accent: var(--grades-1); + --error-text: #f59ec5; + --error-15: #ff54a126; + --error-card: #1e030f; + --grades-1: #FF54A1; + --grades-2: #FFA046; + --grades-3: #F9CF00; + --grades-4: #92EA3B; + --grades-5: #22CCAD; + --grades-background-1: #FF54A126; + --grades-background-2: #FFA04626; + --grades-background-3: #F9CF0026; + --grades-background-4: #92EA3B26; + --grades-background-5: #22CCAD26; +} + + +:root[data-theme="dark-green"] { + --background: #0D1202; + --background-0: #0E130200; + --success: var(--grades-4); + --shadow-blur: 0; + --text-primary: #EAF7CC; + --text-secondary: #EAF7CCCC; + --text-teritary: #EAF7CC80; + --card-card: #141905; + --card-translucent: #14190580; + --button-secondaryFill: #20290b; + --accent-accent: #A7DC22; + --accent-secondary: #CBEE71; + --accent-shadow: #0000; + --accent-15: #a7dc2226; + --warning-accent: var(--grades-2); + --warning-text: #f0b37a; + --warning-15: #ffa04626; + --warning-card: #201203; + --error-accent: var(--grades-1); + --error-text: #f59ec5; + --error-15: #ff54a126; + --error-card: #1e030f; + --grades-1: #FF54A1; + --grades-2: #FFA046; + --grades-3: #F9CF00; + --grades-4: #92EA3B; + --grades-5: #22CCAD; + --grades-background-1: #FF54A126; + --grades-background-2: #FFA04626; + --grades-background-3: #F9CF0026; + --grades-background-4: #92EA3B26; + --grades-background-5: #22CCAD26; +} + + +html { + background-color: var(--background) !important; + color: var(--text-primary) !important; +} + +body { + background-color: var(--background) !important; + color: var(--text-primary) !important; + transition: background-color 0.2s ease, color 0.2s ease; + min-height: 100vh; +} + + +* { + transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease; +} \ No newline at end of file diff --git a/global/theme.js b/global/theme.js new file mode 100644 index 0000000..c207134 --- /dev/null +++ b/global/theme.js @@ -0,0 +1,127 @@ +(() => { + + function setCookie(name, value, days = 365) { + const date = new Date(); + date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); + const expires = `expires=${date.toUTCString()}`; + document.cookie = `${name}=${value}; ${expires}; path=/; domain=.e-kreta.hu`; + } + + 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 setTheme(theme) { + try { + + const actualTheme = theme === 'default' ? 'light-blue' : theme; + + document.documentElement.setAttribute('data-theme', actualTheme); + setCookie('themePreference', actualTheme); + localStorage.setItem('themePreference', actualTheme); + + + chrome.runtime.sendMessage({ + action: 'themeChanged', + theme: actualTheme + }).catch(() => { + + console.log('Extension context not available for theme sync'); + }); + + console.log('Theme set to:', actualTheme); + } catch (error) { + console.error('Error setting theme:', error); + } + } + + + function initializeTheme() { + + const cookieTheme = getCookie('themePreference'); + const localStorageTheme = localStorage.getItem('themePreference'); + + + const theme = cookieTheme || localStorageTheme || 'light-blue'; + + + setTheme(theme); + + + if (cookieTheme !== localStorageTheme) { + if (cookieTheme) { + localStorage.setItem('themePreference', cookieTheme); + } else if (localStorageTheme) { + setCookie('themePreference', localStorageTheme); + } + } + } + + + if (document.readyState === 'loading') { + + document.addEventListener('DOMContentLoaded', () => { + initializeTheme(); + }); + + + initializeTheme(); + } else { + + initializeTheme(); + } + + + chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { + if (message.action === 'changeTheme') { + setTheme(message.theme); + sendResponse({ success: true }); + } + + if (message.action === 'getTheme') { + const currentTheme = document.documentElement.getAttribute('data-theme') || 'light-blue'; + sendResponse({ theme: currentTheme }); + } + + return true; + }); + + + const observer = new MutationObserver((mutations) => { + const currentTheme = document.documentElement.getAttribute('data-theme'); + const savedTheme = getCookie('themePreference') || localStorage.getItem('themePreference'); + + if ((!currentTheme && savedTheme) || (currentTheme !== savedTheme && savedTheme)) { + setTheme(savedTheme); + } + }); + + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', () => { + observer.observe(document.documentElement, { + attributes: true, + attributeFilter: ['data-theme'] + }); + }); + } else { + observer.observe(document.documentElement, { + attributes: true, + attributeFilter: ['data-theme'] + }); + } +})(); \ No newline at end of file diff --git a/grades/chart.js b/grades/chart.js new file mode 100644 index 0000000..9d6df8e --- /dev/null +++ b/grades/chart.js @@ -0,0 +1,20 @@ +/** + * Skipped minification because the original files appears to be already minified. + * Original file: /npm/chart.js@4.4.8/dist/chart.umd.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +/*! + * Chart.js v4.4.8 + * https://www.chartjs.org + * (c) 2025 Chart.js Contributors + * Released under the MIT License + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return Go},get Decimation(){return Qo},get Filler(){return ma},get Legend(){return ya},get SubTitle(){return ka},get Title(){return Ma},get Tooltip(){return Ba}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;at,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)t-e)).pop(),e}function N(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return nt[s][e]et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ht="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const n=e.length;let o=0,a=n;if(t._sorted){const{iScale:r,vScale:l,_parsed:h}=t,c=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,d=r.axis,{min:u,max:f,minDefined:g,maxDefined:p}=r.getUserBounds();if(g){if(o=Math.min(it(h,d,u).lo,i?n:it(e,d,r.getPixelForValue(u)).lo),c){const t=h.slice(0,o+1).reverse().findIndex((t=>!s(t[l.axis])));o-=Math.max(0,t)}o=J(o,0,n-1)}if(p){let t=Math.max(it(h,r.axis,f,!0).hi+1,i?0:it(e,d,r.getPixelForValue(f),!0).hi+1);if(c){const e=h.slice(t-1).findIndex((t=>!s(t[l.axis])));t+=Math.max(0,e)}a=J(t,o,n)-o}else a=n-o}return{start:o,count:a}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class xt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var bt=new xt; +/*! + * @kurkle/color v0.3.2 + * https://github.com/kurkle/color#readme + * (c) 2023 Jukka Kurkela + * Released under the MIT License + */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Zt{constructor(t){if(t instanceof Zt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Zt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Jt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Jt(t)?t:new Zt(t)}function te(t){return Jt(t)?t:new Zt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function xe(t,e){return me(t).getPropertyValue(e)}const be=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=be[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const ye=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function ve(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(ye(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const Me=t=>Math.round(10*t)/10;function we(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=t&&ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=Me(Math.min(h,a,l.maxWidth)),c=Me(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Me(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=Me(Math.floor(c*s))),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};fe()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Pe(t,e){const i=xe(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Ce(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Oe(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;hi.length){for(h=0;h0&&t.stroke()}}function Re(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),s(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;ct[0])){const o=i||t;void 0===s&&(s=ti("_fallback",t));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:s,_getTarget:n,override:i=>je([i,...t],e,o,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>qe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=ti(Ue(o,t),i),void 0!==n)return Xe(t,n)?Je(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ei(t).includes(e),ownKeys:t=>ei(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function $e(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ye(t,s),setContext:e=>$e(t,e,i,s),override:n=>$e(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>qe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(o,a||s);r.delete(t),Xe(t,l)&&(l=Je(n._scopes,n,t,l));return l}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(void 0!==a.index&&s(t))return e[a.index%e.length];if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Je(s,n,t,o);e.push($e(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Xe(e,h)&&(h=$e(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ye(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ue=(t,e)=>t?t+w(e):e,Xe=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function qe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const s=i();return t[e]=s,s}function Ke(t,e,i){return S(t)?t(e,i):t}const Ge=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Ze(t,e,i,s,n){for(const o of e){const e=Ge(i,o);if(e){t.add(e);const o=Ke(e._fallback,i,n);if(void 0!==o&&o!==i&&o!==s)return o}else if(!1===e&&void 0!==s&&i!==s)return null}return!1}function Je(t,e,i,s){const a=e._rootScopes,r=Ke(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Qe(h,l,i,r||i,s);return null!==c&&((void 0===r||r===i||(c=Qe(h,l,r,c,s),null!==c))&&je(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Qe(t,e,i,s,n){for(;i;)i=Ze(t,e,i,s,n);return i}function ti(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function ei(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ii(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;re"x"===t?"y":"x";function ai(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ri(t,e="x"){const i=oi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=ni(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)ri(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,fi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return ci(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5};function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function mi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=gi(t,n,i),r=gi(n,o,i),l=gi(o,e,i),h=gi(a,r,i),c=gi(r,l,i);return gi(h,c,i)}const xi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function _i(t,e){const i=(""+t).match(xi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const yi=t=>+t||0;function vi(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=yi(a(t));return i}function Mi(t){return vi(t,{top:"y",right:"x",bottom:"y",left:"x"})}function wi(t){return vi(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ki(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Si(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:_i(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=De(n),n}function Pi(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;oi&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ci(t,e){return Object.assign(Object.create(t),e)}function Oi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ai(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Ti(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Li(t){return"angle"===t?{between:Z,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ei({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Ri(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Li(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Li(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hb||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ei({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Ei({start:_,end:d,loop:u,count:a,style:f})),g}function Ii(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Fi(t,[{start:a,end:r,loop:o}],i,e);return Fi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r!s(t[e.axis])));n.lo-=Math.max(0,a);const r=i.slice(n.hi).findIndex((t=>!s(t[e.axis])));n.hi+=Math.max(0,r)}return n}if(o._sharedOptions){const t=a[0],s="function"==typeof t.getRange&&t.getRange(e);if(s){const t=r(a,e,i-s),n=r(a,e,i+s);return{lo:t.lo,hi:n.hi}}}}return{lo:0,hi:a.length-1}}function Hi(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t{t[a]&&t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Xi={evaluateInteractionItems:Hi,modes:{index(t,e,i,s){const n=ve(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?ji(t,n,o,s,a):Yi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?ji(t,n,o,s,a):Yi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;tji(t,ve(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return Yi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>Ui(t,ve(e,t),"x",i.intersect,s),y:(t,e,i,s)=>Ui(t,ve(e,t),"y",i.intersect,s)}};const qi=["left","top","right","bottom"];function Ki(t,e){return t.filter((t=>t.pos===e))}function Gi(t,e){return t.filter((t=>-1===qi.indexOf(t.pos)&&t.box.axis===e))}function Zi(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Ji(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!qi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function ss(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Zi(Ki(e,"left"),!0),n=Zi(Ki(e,"right")),o=Zi(Ki(e,"top"),!0),a=Zi(Ki(e,"bottom")),r=Gi(e,"x"),l=Gi(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Ki(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);ts(f,ki(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=Ji(l.concat(h),d);ss(r.fullSize,g,d,p),ss(l,g,d,p),ss(h,g,d,p)&&ss(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),os(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,os(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class rs{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class ls extends rs{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const hs="$chartjs",cs={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},ds=t=>null===t||""===t;const us=!!Se&&{passive:!0};function fs(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,us)}function gs(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function ps(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||gs(i.addedNodes,s),e=e&&!gs(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function ms(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||gs(i.removedNodes,s),e=e&&!gs(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const xs=new Map;let bs=0;function _s(){const t=window.devicePixelRatio;t!==bs&&(bs=t,xs.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function ys(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){xs.size||window.addEventListener("resize",_s),xs.set(t,e)}(t,o),a}function vs(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){xs.delete(t),xs.size||window.removeEventListener("resize",_s)}(t)}function Ms(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=cs[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t&&t.addEventListener(e,i,us)}(s,e,n),n}class ws extends rs{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t[hs]={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",ds(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(ds(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[hs])return!1;const i=e[hs].initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e[hs],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:ps,detach:ms,resize:ys}[e]||Ms;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:vs,detach:vs,resize:vs}[e]||fs)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return we(t,e,i,s)}isAttached(t){const e=t&&ge(t);return!(!e||!e.isConnected)}}function ks(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?ls:ws}var Ss=Object.freeze({__proto__:null,BasePlatform:rs,BasicPlatform:ls,DomPlatform:ws,_detectPlatform:ks});const Ps="transparent",Ds={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||Ps),n=s.valid&&Qt(e||Ps);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class Cs{constructor(t,e,i,s){const n=e[i];s=Pi([t.to,s,n,t.from]);const o=Pi([t.from,n,s]);this._active=!0,this._fn=t.fn||Ds[t.type||typeof o],this._easing=fi[t.easing]||fi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=Pi([t.to,e,s,t.from]),this._from=Pi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new Cs(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(bt.add(this._chart,i),!0):void 0}}function As(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Ts(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function zs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Vs(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const Bs=t=>"reset"===t||"none"===t,Ws=(t,e)=>e?t:Object.assign({},t);class Ns{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Es(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Vs(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Fs(t,"x")),o=e.yAxisID=l(i.yAxisID,Fs(t,"y")),a=e.rAxisID=l(i.rAxisID,Fs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Vs(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:s}=e,n="x"===i.axis?"x":"y",o="x"===s.axis?"x":"y",a=Object.keys(t),r=new Array(a.length);let l,h,c;for(l=0,h=a.length;l0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]t&&!e.hidden&&e._stacked&&{keys:Ts(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Ws(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Os(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Bs(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){Bs(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Bs(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function js(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;io)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for($s(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t"top"===e||"left"===e?t[e]+i:t[e]-i,Us=(t,e)=>Math.min(e||t,t);function Xs(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Ks(t){return t.drawTicks?t.tickLength:0}function Gs(t,e){if(!t.display)return 0;const i=Si(t.font,e),s=ki(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function Zs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class Js extends Hs{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Di(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=J(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Ks(t.grid)-e.padding-Gs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(J((h.highest.height+6)/o,-1,1)),Math.asin(J(a/r,-1,1))-Math.asin(J(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Gs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Ks(n)+o):(t.height=this.maxHeight,t.width=Ks(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Ae(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Ks(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,x=function(t){return Ae(i,t,p)};let b,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)b=x(this.bottom),w=this.bottom-u,S=b-m,D=x(t.top)+m,O=t.bottom;else if("bottom"===a)b=x(this.top),D=t.top,O=x(t.bottom)-m,w=b+m,S=this.top+u;else if("left"===a)b=x(this.right),M=this.right-u,k=b-m,P=x(t.left)+m,C=t.right;else if("right"===a)b=x(this.left),P=t.left,C=x(t.right)-m,M=b+m,k=this.left+u;else if("x"===e){if("center"===a)b=x((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=b+m,S=w+u}else if("y"===e){if("center"===a)b=x((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}M=b-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_0&&(o-=s/2)}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}x.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return x}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class tn{constructor(){this.controllers=new Qs(Ns,"datasets",!0),this.elements=new Qs(Hs,"elements"),this.plugins=new Qs(Object,"plugins"),this.scales=new Qs(Js,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function nn(t,e){return e||!1!==t?!0===t?{}:t:null}function on(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function an(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function rn(t){if("x"===t||"y"===t||"r"===t)return t}function ln(t,...e){if(rn(t))return t;for(const s of e){const e=s.axis||("top"===(i=s.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&rn(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function hn(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function cn(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=an(t.type,e),a=Object.create(null);return Object.keys(s).forEach((e=>{const r=s[e];if(!o(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const l=ln(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return hn(t,"x",i[0])||hn(t,"y",i[0])}return{}}(e,t),ue.scales[r.type]),h=function(t,e){return t===e?"_index_":"_value_"}(l,n),c=i.scales||{};a[e]=b(Object.create(null),[{axis:l},r,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||an(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),b(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];b(e,[ue.scales[e.type],ue.scale])})),a}function dn(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=cn(t,e)}function un(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const fn=new Map,gn=new Set;function pn(t,e){let i=fn.get(t);return i||(i=e(),fn.set(t,i),gn.add(i)),i}const mn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class xn{constructor(t){this._config=function(t){return(t=t||{}).data=un(t.data),dn(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=un(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),dn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return pn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return pn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return pn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return pn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>mn(r,t,e)))),e.forEach((t=>mn(r,s,t))),e.forEach((t=>mn(r,re[n]||{},t))),e.forEach((t=>mn(r,ue,t))),e.forEach((t=>mn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),gn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=bn(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=Ye(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||_n(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=$e(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=bn(this._resolverCache,t,i);return o(e)?$e(n,e,void 0,s):n}}function bn(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:je(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const _n=t=>o(t)&&Object.getOwnPropertyNames(t).some((e=>S(t[e])));const yn=["top","bottom","left","right","chartArea"];function vn(t,e){return"top"===t||"bottom"===t||-1===yn.indexOf(t)&&"x"===e}function Mn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function wn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function kn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function Sn(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Pn={},Dn=t=>{const e=Sn(t);return Object.values(Pn).filter((t=>t.canvas===e)).pop()};function Cn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}function On(t,e,i){return t.options.clip?t[i]:e[i]}class An{static defaults=ue;static instances=Pn;static overrides=re;static registry=en;static version="4.4.8";static getChart=Dn;static register(...t){en.add(...t),Tn()}static unregister(...t){en.remove(...t),Tn()}constructor(t,e){const s=this.config=new xn(e),n=Sn(t),o=Dn(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||ks(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new sn,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],Pn[this.id]=this,r&&l?(bt.listen(this,"complete",wn),bt.listen(this,"progress",kn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return en}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Te(this.canvas,this.ctx),this}stop(){return bt.stop(this),this}resize(t,e){bt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=ln(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=ln(o,n),r=l(n.type,e.dtype);void 0!==n.position&&vn(n.position,a)===vn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(en.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{as.configure(this,t,t.options),as.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Mn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{as.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){Cn(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;as.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=function(t,e){const{xScale:i,yScale:s}=t;return i&&s?{left:On(i,e,"left"),right:On(i,e,"right"),top:On(s,e,"top"),bottom:On(s,e,"bottom")}:e}(t,this.chartArea),o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(s&&Ie(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&ze(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(t){return Re(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Xi.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ci(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),bt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function Tn(){return u(An.instances,(t=>t._plugins.invalidate()))}function Ln(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class En{static override(t){Object.assign(En.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return Ln()}parse(){return Ln()}format(){return Ln()}add(){return Ln()}diff(){return Ln()}startOf(){return Ln()}endOf(){return Ln()}}var Rn={_date:En};function In(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function Fn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.base"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;nZ(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Z(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),x=g(C,h,d),b=g(C+E,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),x=(i.width-o)/f,b=(i.height-o)/g,_=Math.max(Math.min(x,b)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(se.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Yn=Object.freeze({__proto__:null,BarController:class extends Ns{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return Fn(t,e,i,s)}parseArrayData(t,e,i,s){return Fn(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;dt.controller.options.grouped)),o=i.options.stacked,a=[],r=this._cachedMeta.controller.getParsed(e),l=r&&r[i.axis],h=t=>{const e=t._parsed.find((t=>t[i.axis]===l)),n=e&&e[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!h(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n=i?1:-1)}(u,e,r)*a,f===r&&(x-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);x=Math.max(Math.min(x,h),o),d=x+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(x))}if(x===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;x+=t,u-=t}return{size:u,base:x,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,l="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=x?g:{};if(i=b){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),x||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends jn{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:$n,RadarController:class extends Ns{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a0&&this.getParsed(e-1);for(let c=e;c0&&Math.abs(i[f]-_[f])>x,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),b||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Un(t,e,i,s){const n=vi(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return J(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:J(n.innerStart,0,a),innerEnd:J(n.innerEnd,0,a)}}function Xn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function qn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,x=n-p-f,{outerStart:b,outerEnd:_,innerStart:y,innerEnd:v}=Un(e,u,d,x-m),M=d-b,w=d-_,k=m+b/M,S=x-_/w,P=u+y,D=u+v,O=m+y/P,A=x-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=Xn(w,S,a,r);t.arc(e.x,e.y,_,S,x+E)}const i=Xn(D,x,a,r);if(t.lineTo(i.x,i.y),v>0){const e=Xn(D,A,a,r);t.arc(e.x,e.y,v,x+E,A+Math.PI)}const s=(x-v/u+(m+y/u))/2;if(t.arc(a,r,u,x-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=Xn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=Xn(M,m,a,r);if(t.lineTo(n.x,n.y),b>0){const e=Xn(M,k,a,r);t.arc(e.x,e.y,b,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Kn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c,borderDash:d,borderDashOffset:u}=l,f="inner"===l.borderAlign;if(!h)return;t.setLineDash(d||[]),t.lineDashOffset=u,f?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let g=e.endAngle;if(o){qn(t,e,i,s,g,n);for(let e=0;en?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,g),o||(qn(t,e,i,s,g,n),t.stroke())}function Gn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function Zn(t,e,i){t.lineTo(i.x,i.y)}function Jn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=nr&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function eo(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?to:Qn}const io="function"==typeof Path2D;function so(t,e,i,s){io&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Gn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=eo(e);for(const r of n)Gn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class no extends Hs{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;hi(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=zi(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ii(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?pi:t.tension||"monotone"===t.cubicInterpolationMode?mi:gi}(i);let l,h;for(l=0,h=o.length;l"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),u=(this.options.spacing+this.options.borderWidth)/2,f=l(d,r-a),g=Z(n,a,r)&&a!==r,p=f>=O||g,m=tt(o,h+u,c+u);return p&&m}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){qn(t,e,i,s,l,n);for(let e=0;e("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function po(t){const e=this.getLabels();return t>=0&&ts=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,x=!s(a),b=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!x&&!b)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),x&&b&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=x?a:M,w=b?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(x&&(u&&M!==a?(i.push({value:a}),Mr)break;i.push({value:t})}return b&&u&&w!==r?i.length&&V(i[i.length-1].value,r,mo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):b&&w!==r||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&j(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class bo extends xo{static id="linear";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const _o=t=>Math.floor(z(t)),yo=(t,e)=>Math.pow(10,_o(t)+e);function vo(t){return 1===t/Math.pow(10,_o(t))}function Mo(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function wo(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=_o(e);let o=function(t,e){let i=_o(e-t);for(;Mo(t,e,i)>10;)i++;for(;Mo(t,e,i)<10;)i--;return Math.min(i,_o(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:vo(g),significand:u}),s}class ko extends Js{static id="logarithmic";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=xo.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===yo(this.min,0)?yo(this.min,-1):yo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(yo(i,-1)),o(yo(s,1)))),i<=0&&n(yo(s,-1)),s<=0&&o(yo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=wo({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function So(t){const e=t.ticks;if(e.display&&t.display){const t=ki(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function Po(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:tn?{start:e-i,end:e}:{start:e,end:e+i}}function Do(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;ue.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Oo(t,e,i){const s=t.drawingArea,{extra:n,additionalAngle:o,padding:a,size:r}=i,l=t.getPointPosition(e,s+n+a,o),h=Math.round(Y(G(l.angle+E))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,r.h,h),d=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(h),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,r.w,d);return{visible:!0,x:l.x,y:c,textAlign:d,left:u,top:c,right:u+r.w,bottom:c+r.h}}function Ao(t,e){if(!e)return!0;const{left:i,top:s,right:n,bottom:o}=t;return!(Re({x:i,y:s},e)||Re({x:i,y:o},e)||Re({x:n,y:s},e)||Re({x:n,y:o},e))}function To(t,e,i){const{left:n,top:o,right:a,bottom:r}=i,{backdropColor:l}=e;if(!s(l)){const i=wi(e.borderRadius),s=ki(e.backdropPadding);t.fillStyle=l;const h=n-s.left,c=o-s.top,d=a-n+s.width,u=r-o+s.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),He(t,{x:h,y:c,w:d,h:u,radius:i}),t.fill()):t.fillRect(h,c,d,u)}}function Lo(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;ot,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=ki(So(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/So(this.options))}generateTickLabels(t){xo.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Do(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const o=s.setContext(t.getPointLabelContext(n));To(i,o,e);const a=Si(o.font),{x:r,y:l,textAlign:h}=e;Ne(i,t._pointLabels[n],r,l+a.lineHeight/2,a,{color:o.color,textAlign:h,textBaseline:"middle"})}}(this,o),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e||0===e&&this.min<0){r=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),a=s.setContext(i),l=n.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash||[]),o.lineDashOffset=n.dashOffset,o.beginPath(),Lo(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,a,r,o,l)}})),i.display){for(t.save(),a=o-1;a>=0;a--){const s=i.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,r=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&this.min>=0&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=Si(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=ki(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ne(t,s.label,0,-n,l,{color:r.color,strokeColor:r.textStrokeColor,strokeWidth:r.textStrokeWidth})})),t.restore()}drawTitle(){}}const Ro={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Io=Object.keys(Ro);function zo(t,e){return t-e}function Fo(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!N(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function Vo(t,e,i,s){const n=Io.length;for(let o=Io.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function Wo(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class No extends Js{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new Rn._date(t.adapters.date);s.init(e),b(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Fo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?Vo(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=Io.length-1;o>=Io.indexOf(i);o--){const i=Io[o];if(Ro[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return Io[i?Io.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=Io.indexOf(t)+1,i=Io.length;e+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=J(s,0,o),n=J(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||Vo(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=N(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var jo=Object.freeze({__proto__:null,CategoryScale:class extends Js{static id="category";static defaults={ticks:{callback:po}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:J(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:go(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return po.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:bo,LogarithmicScale:ko,RadialLinearScale:Eo,TimeScale:No,TimeSeriesScale:class extends No{static id="timeseries";static defaults=No.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Ho(e,this.min),this._tableRange=Ho(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;ot-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(Ho(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return Ho(this._table,i*this._tableRange+this._minPos,!0)}}});const $o=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Yo=$o.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Uo(t){return $o[t%$o.length]}function Xo(t){return Yo[t%Yo.length]}function qo(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof jn?e=function(t,e){return t.backgroundColor=t.data.map((()=>Uo(e++))),e}(i,e):n instanceof $n?e=function(t,e){return t.backgroundColor=t.data.map((()=>Xo(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Uo(e),t.backgroundColor=Xo(e),++e}(i,e))}}function Ko(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var Go={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n,a=Ko(s)||(r=n)&&(r.borderColor||r.backgroundColor)||o&&Ko(o)||"rgba(0,0,0,0.1)"!==ue.borderColor||"rgba(0,0,0,0.1)"!==ue.backgroundColor;var r;if(!i.forceOverride&&a)return;const l=qo(t);s.forEach(l)}};function Zo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Jo(t){t.data.datasets.forEach((t=>{Zo(t)}))}var Qo={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Jo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===Pi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=J(it(e,o.axis,a).lo,0,i-1)),s=h?J(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void Zo(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const x=[],b=e+i-1,_=t[e].x,y=t[b].x-_;for(o=e;og&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&x.push({...t[e],x:p}),s!==u&&s!==i&&x.push({...t[s],x:p})}o>0&&i!==u&&x.push(t[i]),x.push(a),h=e,m=0,f=g=l,c=d=u=o}}return x}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Jo(t)}};function ta(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function ea(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function ia(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function sa(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=ea(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new no({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function na(t){return t&&!1!==t.fill}function oa(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function aa(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function ra(t,e,i){const s=[];for(let n=0;n=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&da(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;na(i)&&da(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;na(s)&&"beforeDatasetDraw"===i.drawTime&&da(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const xa=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class ba extends Hs{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=Si(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=xa(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=_a(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Oi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Ie(t,this),this._draw(),ze(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Oi(t.rtl,this.left,this.width),h=Si(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=xa(o,d),x=this.isHorizontal(),b=this._computeTitleHeight();f=x?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+b,line:0}:{x:this.left+c,y:ft(n,this.top+b+c,this.bottom-e[0].height),line:0},Ai(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),x?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+b+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Ee(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=wi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?He(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,x?S+k:this.right,t.rtl),function(t,e,i){Ne(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),x)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=_a(y,t)+c}else f.y+=_})),Ti(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=Si(e.font),s=ki(e.padding);if(!e.display)return;const n=Oi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ne(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=Si(t.font),i=ki(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=ki(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class va extends Hs{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=ki(i.padding);const o=s*Si(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=Si(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ne(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var Ma={id:"title",_element:va,start(t,e,i){!function(t,e){const i=new va({ctx:t.ctx,options:e,chart:t});as.configure(t,i,e),as.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;as.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;as.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const wa=new WeakMap;var ka={id:"subtitle",start(t,e,i){const s=new va({ctx:t.ctx,options:i,chart:t});as.configure(t,s,i),as.addBox(t,s),wa.set(t,s)},stop(t){as.removeBox(t,wa.get(t)),wa.delete(t)},beforeUpdate(t,e,i){const s=wa.get(t);as.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Sa={average(t){if(!t.length)return!1;let e,i,s=new Set,n=0,o=0;for(e=0,i=t.length;et+e))/s.size,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i-1?t.split("\n"):t}function Ca(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Oa(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=Si(e.bodyFont),h=Si(e.titleFont),c=Si(e.footerFont),d=o.length,f=n.length,g=s.length,p=ki(e.padding);let m=p.height,x=0,b=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(b-g)*l.lineHeight+(b-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){x=Math.max(x,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),x+=p.width,{width:x,height:m}}function Aa(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Ta(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||Aa(t,e,i,s),yAlign:s}}function La(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:J(g,0,s.width-e.width),y:J(p,0,s.height-e.height)}}function Ea(t,e,i){const s=ki(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Ra(t){return Pa([],Da(t))}function Ia(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const za={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex{const e={before:[],lines:[],after:[]},n=Ia(i,t);Pa(e.before,Da(Fa(n,"beforeLabel",this,t))),Pa(e.lines,Fa(n,"label",this,t)),Pa(e.after,Da(Fa(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return Ra(Fa(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Fa(i,"beforeFooter",this,t),n=Fa(i,"footer",this,t),o=Fa(i,"afterFooter",this,t);let a=[];return a=Pa(a,Da(s)),a=Pa(a,Da(n)),a=Pa(a,Da(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=Ia(t.callbacks,e);s.push(Fa(i,"labelColor",this,e)),n.push(Fa(i,"labelPointStyle",this,e)),o.push(Fa(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Sa[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Oa(this,i),a=Object.assign({},t,e),r=Ta(this.chart,i,a),l=La(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=wi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Oi(i.rtl,this.x,this.width);for(t.x=Ea(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=Si(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,He(t,{x:e,y:g,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),He(t,{x:i,y:g+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,h,l),t.strokeRect(e,g,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,g+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=Si(i.bodyFont);let d=c.lineHeight,f=0;const g=Oi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let x,b,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Ea(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Sa[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Oa(this,t),a=Object.assign({},i,this._size),r=Ta(e,t,a),l=La(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=ki(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ai(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Ti(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Sa[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var Ba={id:"tooltip",_element:Va,positioners:Sa,afterInit(t,e,i){i&&(t.tooltip=new Va({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:za},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return An.register(Yn,jo,fo,t),An.helpers={...Wi},An._adapters=Rn,An.Animation=Cs,An.Animations=Os,An.animator=bt,An.controllers=en.controllers.items,An.DatasetController=Ns,An.Element=Hs,An.elements=fo,An.Interaction=Xi,An.layouts=as,An.platforms=Ss,An.Scale=Js,An.Ticks=ae,Object.assign(An,Yn,jo,fo,t,Ss),An.Chart=An,"undefined"!=typeof window&&(window.Chart=An),An})); +//# sourceMappingURL=chart.umd.js.map diff --git a/grades/grades.css b/grades/grades.css new file mode 100644 index 0000000..d37474f --- /dev/null +++ b/grades/grades.css @@ -0,0 +1,716 @@ +@font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 400; + src: url(chrome-extension://__MSG_@@extension_id__/fonts/Montserrat-SemiBold.woff2) format('woff2'); +} + +@font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 500; + src: url(chrome-extension://__MSG_@@extension_id__/fonts/Montserrat-Regular.woff2) format('woff2'); +} + +@font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 600; + src: url(chrome-extension://__MSG_@@extension_id__/fonts/Montserrat-Medium.woff2) format('woff2'); +} + +@font-face { + font-family: 'Figtree'; + src: url('chrome-extension://__MSG_@@extension_id__/fonts/Figtree-Regular.woff2') format('woff2'); + font-weight: 400; + font-style: normal; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + margin: 0; + padding: 0; + color: var(--text-primary); + background-color: var(--background) !important; + font-family: "Montserrat", serif !important; + min-height: 100vh; + font-size: 16px; +} +.kreta-container { + min-height: 100vh; + display: flex; + flex-direction: column; +} +.grades-chart { + width: 100%; + height: 250px; + margin-bottom: 1.5rem; + padding: 1rem; + display: flex; + flex-direction: column; + overflow-y: auto; +} +.overall-averages { + margin-bottom: 2rem; + padding: 1.5rem; + background: var(--card-card); + border-radius: 24px; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.average-details { + display: flex; + gap: 2rem; + justify-content: center; +} +.average-item { + display: flex; + align-items: center; + gap: 1rem; +} +.average-label { + color: var(--text-secondary); + font-size: 1.1rem; + font-weight: 500; +} +.average-value { + font-size: 1.5rem; + font-weight: 600; +} +.average-value.warning { + color: var(--error-accent); +} + +.grades-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(100%, 400px), 1fr)); + gap: 1.5rem; +} +.subject-card { + background: var(--card-card); + border-radius: 24px; + padding: 1.5rem; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.subject-title { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0.5rem; + width: 100%; +} + +.subject-header { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; +} +.subject-title h3 { + padding: 1rem; + margin-bottom: 0px !important; + margin-top: 0px !important; + color: var(--text-primary); + font-family: Montserrat; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: normal; +} +.subject-averages .average-circle { + display: flex; + width: 48px; + height: 26px; + padding: 6px 8px; + justify-content: center; + align-items: center; + gap: 14px; + border-radius: 16px; + background-color: var(--background-secondary); +} +.subject-averages .class-average[data-grade="1"] { + border: 2px solid var(--grades-1); + color: var(--grades-1); +} +.subject-averages .class-average[data-grade="2"] { + border: 2px solid var(--grades-2); + color: var(--grades-2); +} +.subject-averages .class-average[data-grade="3"] { + border: 2px solid var(--grades-3); + color: var(--grades-3); +} +.subject-averages .class-average[data-grade="4"] { + border: 2px solid var(--grades-4); + color: var(--grades-4); +} +.subject-averages .class-average[data-grade="5"] { + border: 2px solid var(--grades-5); + color: var(--grades-5); +}.subject-averages .average-label { + font-size: 0.625rem; + color: var(--text-secondary); +} +.subject-averages .average-value { + font-size: 0.875rem; + font-weight: 600; +} + +.subject-averages .my-average[data-grade] .average-value, +.subject-averages .class-average[data-grade] .average-value { + color: inherit; +} + +.subject-averages { + display: flex; + gap: 0.75rem; + align-items: center; +} + +.grades-list { + display: flex; + flex-direction: column; + gap: 1rem; +} +.grade-item { + display: grid; + grid-template-columns: auto 1fr auto; + gap: 1rem; + padding: 1rem; + border-radius: 12px; + align-items: start; + position: relative; + background-color: var(--card-card); +} +.grade-value { + display: flex; + width: 24px; + height: 24px; + padding: 7.5px 0px; + flex-direction: column; + justify-content: center; + align-items: center; + border-radius: 12px; + font-family: Montserrat; + font-size: 18px; + font-style: normal; + font-weight: 700; + line-height: normal; + text-align: center; +} +.grade-details { + display: flex; + flex-direction: column; + gap: 0.25rem; +} +.grade-theme { + overflow: hidden; + color: var(--text-primary); + text-overflow: ellipsis; + font-family: Figtree; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: 130%; +} +.grade-meta, .grade-date { + overflow: hidden; + color: var(--text-secondary); + text-overflow: ellipsis; + font-family: Figtree; + font-size: 14px; + font-style: normal; + font-weight: 500; + line-height: 130%; +} + +.grade-date { + position: absolute; + top: 1rem; + right: 1rem; + text-align: center; +} + +.grade-1 .grade-value { + background-color: var(--grades-background-1); + color: var(--grades-1); +} +.grade-2 .grade-value { + background-color: var(--grades-background-2); + color: var(--grades-2); +} +.grade-3 .grade-value { + background-color: var(--grades-background-3); + color: var(--grades-3); +} +.grade-4 .grade-value { + background-color: var(--grades-background-4); + color: var(--grades-4); +} +.grade-5 .grade-value { + background-color: var(--grades-background-5); + color: var(--grades-5); +} + +.semester-grade { + background-color: var(--button-secondaryFill) !important; + border: 2px solid var(--accent-accent) !important; + position: relative; + padding-top: 1.5rem !important; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} +.semester-grade::before { + content: "Félévi értékelés"; + position: absolute; + top: 0.25rem; + left: 50%; + transform: translateX(-50%); + background: var(--accent-accent); + color: var(--button-secondaryFill); + padding: 2px 12px; + border-radius: 12px; + font-size: 12px; + font-weight: 500; + white-space: nowrap; + z-index: 1; +} + +.user-profile { + position: relative; + justify-self: flex-end; +} +.user-dropdown-btn { + display: flex; + align-items: center; + gap: 1rem; + background: none; + border: none; + cursor: pointer; + padding: 0.5rem; + border-radius: 8px; + transition: background-color 0.2s; +} +.user-dropdown-btn:hover { + background: var(--card-card); +} +.user-info { + text-align: right; +} +.user-name { + display: block; + color: var(--text-primary); + font-size: 16px; + font-weight: 500; +} +.user-time { + display: block; + color: var(--text-secondary); + font-size: 14px; +} +.user-dropdown { + position: absolute; + top: 100%; + right: 0; + margin-top: 0.5rem; + background: var(--card-card); + border-radius: 12px; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); + width: 200px; + display: none; + z-index: 1000; +} +.user-dropdown.show { + display: block; + animation: dropdownShow 0.2s ease; +} +.dropdown-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.75rem 1rem; + color: var(--text-primary); + text-decoration: none; + transition: background-color 0.2s; +} +.dropdown-item:hover { + background: var(--button-secondaryFill); +} + +.nav-links { + display: flex; + gap: clamp(0.5rem, 2vw, 1rem); + padding: 0.25rem; + justify-content: center; +} +.nav-links a { + color: var(--text-secondary); + text-decoration: none; + padding: clamp(0.5rem, 1.5vw, 1rem) 0.5rem; + font-weight: 500; + white-space: nowrap; + transition: all 0.2s ease; + display: flex; + align-items: center; + gap: 0.5rem; + border-radius: 8px; +} +.nav-links a:hover { + color: var(--text-primary); + background-color: var(--card-card); +} +.nav-links a.active { + color: var(--accent-accent); +} + +.kreta-main { + flex: 1; + padding: clamp(1rem, 3vw, 2rem); + max-width: 1400px; + margin: 0 auto; + width: 100%; +} + +@keyframes dropdownShow { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@media (max-width: 768px) { + body { + font-size: 14px; + } +.average-details { + flex-direction: column; + align-items: center; + gap: 1rem; + } +.nav-links { + justify-content: flex-start; + width: 100%; + gap: 0.25rem; + } +.nav-links a { + padding: 0.5rem; + font-size: 13px; + } +} + +.loading-screen { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: var(--background); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + z-index: 9999; +} + +.loading-content { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; +} + +.loading-logo { + width: 48px; + height: 48px; + border-radius: 16px; +} + +.loading-text { + color: var(--text-primary); + text-align: center; + font-family: Montserrat; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +.loading-text2 { + align-self: stretch; + color: var(--text-secondary); + text-align: center; + font-family: Figtree; + font-size: 16px; + font-style: normal; + font-weight: 500; + line-height: 130%; +} + +.material-icons-round { + font-size: 20px; + vertical-align: middle; +} + +::-webkit-scrollbar { + width: 8px; + height: 8px; +} +::-webkit-scrollbar-track { + background: var(--background); +} +::-webkit-scrollbar-thumb { + background: var(--text-secondary); + border-radius: 4px; +} +::-webkit-scrollbar-thumb:hover { + background: var(--text-primary); +} + +.chart-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + padding: 1rem; + position: relative; +} + +.chart-title { + white-space: nowrap; + color: var(--text-primary); + font-family: Montserrat; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: normal; +} + +.chart-averages { + display: flex; + gap: 1rem; + position: absolute; + top: 1rem; + right: 1rem; +} + +.average-circle { + display: flex; + width: 48px; + height: 26px; + padding: 6px 8px; + justify-content: center; + align-items: center; + gap: 14px; + border-radius: 16px; +} +.average-circle[data-grade="1"], +.my-average[data-grade="1"] { + background-color: var(--grades-background-1); + color: var(--grades-1); +} +.class-average[data-grade="1"] { + background-color: transparent; + border: 2px solid var(--grades-1); + color: var(--grades-1); +} + +.average-circle[data-grade="2"], +.my-average[data-grade="2"] { + background-color: var(--grades-background-2); + color: var(--grades-2); +} +.class-average[data-grade="2"] { + background-color: transparent; + border: 2px solid var(--grades-2); + color: var(--grades-2); +} + +.average-circle[data-grade="3"], +.my-average[data-grade="3"] { + background-color: var(--grades-background-3); + color: var(--grades-3); +} +.class-average[data-grade="3"] { + background-color: transparent; + border: 2px solid var(--grades-3); + color: var(--grades-3); +} + +.average-circle[data-grade="4"], +.my-average[data-grade="4"] { + background-color: var(--grades-background-4); + color: var(--grades-4); +} +.class-average[data-grade="4"] { + background-color: transparent; + border: 2px solid var(--grades-4); + color: var(--grades-4); +} + +.average-circle[data-grade="5"], +.my-average[data-grade="5"] { + background-color: var(--grades-background-5); + color: var(--grades-5); +} +.class-average[data-grade="5"] { + background-color: transparent; + border: 2px solid var(--grades-5); + color: var(--grades-5); +} +.average-circle .average-label { + font-size: 0.75rem; + color: var(--text-secondary); +} + +.average-circle .average-value { + text-align: center; + font-family: Figtree; + font-size: 14px; + font-style: normal; + font-weight: 500; + line-height: 130%; +} + +.grade-distribution { + display: flex; + gap: 1rem; + padding: 1rem; +} + +.grade-count { + display: flex; + align-items: center; + gap: 6px; + padding: 4px 8px 4px 4px; + border-radius: 16px; + border: 1px solid var(--accent-15); +} + +.grade-count .grade-value { + font-weight: 700; + text-align: center; + font-family: Montserrat; + font-size: 18px; + font-style: normal; + line-height: 130%; +} +.grade-count .grade-amount { + color: var(--text-primary); + text-align: center; + font-family: Montserrat; + font-size: 14px; + font-style: normal; + font-weight: 500; + line-height: 130%; +} + +.grade-count.grade-1 { color: var(--grades-1); } +.grade-count.grade-2 { color: var(--grades-2); } +.grade-count.grade-3 { color: var(--grades-3); } +.grade-count.grade-4 { color: var(--grades-4); } +.grade-count.grade-5 { color: var(--grades-5); } + +.grades-overview { + display: grid; + grid-template-columns: 1fr auto; + gap: 1.5rem; + margin-bottom: 2rem; + align-items: stretch; +} +.semester-grades { + width: 300px; + height: 400px; + padding: 1.5rem; + background: var(--card-card); + border-radius: 24px; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); + display: flex; + flex-direction: column; +} +.semester-grades h3 { + padding: 1rem; + margin-bottom: 0px !important; + margin-top: 0px !important; + color: var(--text-primary); + font-family: Montserrat; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: normal; +} +.semester-grade-item { + display: grid; + grid-template-columns: auto 1fr auto; + gap: 1rem; + padding: 1rem; + border-radius: 12px; + align-items: center; +} +.semester-grade-item:hover { + background: var(--button-secondaryFill); +} +.semester-grades-list { + display: flex; + flex-direction: column; + gap: 1rem; + overflow-y: auto; + padding-right: 0.5rem; + flex: 1; + margin: -0.5rem 0; +} +.semester-grade-subject { + overflow: hidden; + color: var(--text-primary); + text-overflow: ellipsis; + font-family: Figtree; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: 130%; +} +.semester-grade-value { + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 16px; + font-weight: 700; + font-size: 22px; +} +.semester-grade-item.grade-1 .semester-grade-value { + background-color: var(--grades-background-1); + color: var(--grades-1); +} +.semester-grade-item.grade-2 .semester-grade-value { + background-color: var(--grades-background-2); + color: var(--grades-2); +} +.semester-grade-item.grade-3 .semester-grade-value { + background-color: var(--grades-background-3); + color: var(--grades-3); +} +.semester-grade-item.grade-4 .semester-grade-value { + background-color: var(--grades-background-4); + color: var(--grades-4); +} +.semester-grade-item.grade-5 .semester-grade-value { + background-color: var(--grades-background-5); + color: var(--grades-5); +} + +@media (max-width: 1024px) { + .grades-overview { + grid-template-columns: 1fr; + } + + .semester-grades { + width: 100%; + } +} \ No newline at end of file diff --git a/grades/grades.js b/grades/grades.js new file mode 100644 index 0000000..69d57f9 --- /dev/null +++ b/grades/grades.js @@ -0,0 +1,586 @@ +(() => { + 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 showLoadingScreen() { + const existingLoadingScreen = document.querySelector('.loading-screen'); + if (existingLoadingScreen) return; + + const loadingScreen = document.createElement('div'); + loadingScreen.className = 'loading-screen'; + loadingScreen.innerHTML = ` +
+ +
Betöltés alatt...
+
Kis türelmet!
+
+ `; + document.body.appendChild(loadingScreen); + } + + function hideLoadingScreen() { + const loadingScreen = document.querySelector('.loading-screen'); + if (loadingScreen) { + loadingScreen.style.opacity = '0'; + loadingScreen.addEventListener('transitionend', () => { + loadingScreen.remove(); + }); + } + } + + async function transformGradesPage() { + try { + showLoadingScreen(); + + await waitForElement('#Osztalyzatok_7895TanuloErtekelesByTanuloGrid'); + await new Promise(resolve => setTimeout(resolve, 1000)); + + const gradesData = extractGradesData(); + const studentAverage = calculateOverallAverage(gradesData.subjects); + const classAverage = calculateOverallClassAverage(gradesData.subjects); + + document.body.innerHTML = generatePageHTML(gradesData, studentAverage, classAverage); + + const links = [ + { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, + { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: true }, + { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap' }, + { rel: 'stylesheet', href: 'https://fonts.googleapis.com/icon?family=Material+Icons+Round' } + ]; + + + const script = document.createElement('script'); + script.src = chrome.runtime.getURL('grades/chart.js'); + document.head.appendChild(script); + + links.forEach(link => { + const linkElement = document.createElement('link'); + Object.entries(link).forEach(([key, value]) => { + linkElement[key] = value; + }); + document.head.appendChild(linkElement); + }); + + script.onload = () => { + setupGradesChart(gradesData.subjects); + }; + + setupEventListeners(); + hideLoadingScreen(); + + } catch (error) { + console.error('Error transforming grades page:', error); + hideLoadingScreen(); + } +} + + function extractGradesData() { + const subjects = []; + const rows = document.querySelectorAll('#Osztalyzatok_7895TanuloErtekelesByTanuloGrid tbody tr'); + + rows.forEach(row => { + const cells = row.querySelectorAll('td'); + if (cells.length >= 17) { + const subjectName = cells[2].textContent.trim(); + if (subjectName && subjectName !== 'Magatartás/Szorgalom') { + const grades = []; + const months = ['Szeptember', 'Oktober', 'November', 'December', 'JanuarI', 'JanuarII', 'Februar', 'Marcius', 'Aprilis', 'Majus', 'JuniusI', 'JuniusII']; + + months.forEach((month, index) => { + const gradeElements = cells[index + 3].querySelectorAll('span[data-tanuloertekelesid]'); + gradeElements.forEach(element => { + const gradeText = element.textContent.trim(); + if (gradeText && gradeText !== '-') { + grades.push({ + value: gradeText, + date: element.getAttribute('data-datum'), + type: element.getAttribute('data-tipusmod'), + theme: element.getAttribute('data-ertekelestema').replace('Téma: ', ''), + weight: element.getAttribute('data-suly'), + teacher: element.getAttribute('data-ertekelonyomtatasinev'), + isSemesterGrade: (element.getAttribute('data-tipusmod') || '').toLowerCase().includes('félévi') || + (element.getAttribute('data-ertekelestema') || '').toLowerCase().includes('félévi') || + (element.getAttribute('data-tipus') || '').toLowerCase().includes('félévi') + }); + } + }); + }); + + + const avgText = cells[16].textContent.trim(); + const classAvgText = cells[17].textContent.trim(); + + const average = avgText !== '-' ? parseFloat(avgText.replace(',', '.')) : 0; + const classAvg = classAvgText !== '-' ? parseFloat(classAvgText.replace(',', '.')) : 0; + + if (grades.length > 0) { + + subjects.push({ + name: subjectName, + grades: grades, + average: average || 0, + classAverage: classAvg || 0 + }); + } + } + } + }); + + return { + schoolInfo: { + id: getCookie('schoolCode') || '', + name: getCookie('schoolName') || 'Iskola' + }, + userData: { + name: getCookie('userName') || 'Felhasználó', + time: document.querySelector('.usermenu_timer')?.textContent?.trim() || '45:00' + }, + subjects: subjects + }; + } + + function calculateOverallAverage(subjects) { + const validSubjects = subjects.filter(s => s.average > 0); + if (validSubjects.length === 0) return 0; + + + const weightedSum = validSubjects.reduce((sum, subject) => { + const validGrades = subject.grades.filter(grade => !isNaN(parseInt(grade.value))); + const subjectWeightedSum = validGrades.reduce((gradeSum, grade) => { + const value = parseInt(grade.value); + const weight = parseInt(grade.weight?.match(/\d+/)?.[0] || '100') / 100; + return gradeSum + (value * weight); + }, 0); + + const totalWeight = validGrades.reduce((weightSum, grade) => { + const weight = parseInt(grade.weight?.match(/\d+/)?.[0] || '100') / 100; + return weightSum + weight; + }, 0); + + return sum + (subjectWeightedSum / totalWeight); + }, 0); + + return weightedSum / validSubjects.length; + } + + function calculateOverallClassAverage(subjects) { + const validSubjects = subjects.filter(s => s.classAverage > 0); + if (validSubjects.length === 0) return 0; + return validSubjects.reduce((sum, s) => sum + s.classAverage, 0) / validSubjects.length; + } + + function shortenEvaluationName(name, maxLength = 30) { + if (!name) return ''; + if (name.length <= maxLength) return name; + return name.substring(0, maxLength - 3) + '...'; + } + + function generateGradeItem(grade) { + const semesterClass = grade.isSemesterGrade ? 'semester-grade' : ''; + const dateObj = new Date(grade.date); + const monthNames = ['Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December']; + const formattedDate = `${monthNames[dateObj.getMonth()]} ${dateObj.getDate()}`; + const shortenedTheme = shortenEvaluationName(grade.theme); + return ` +
+
${grade.value}
+
+
${shortenedTheme}
+
${grade.type}
+
+
${formattedDate}
+
+ `; + } + + function calculateGradeDistribution(subjects) { + const distribution = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0}; + subjects.forEach(subject => { + subject.grades.forEach(grade => { + const value = parseInt(grade.value); + if (value >= 1 && value <= 5) { + distribution[value]++; + } + }); + }); + return distribution; +} + +function generatePageHTML(data, studentAverage, classAverage) { + const totalGrades = data.subjects.reduce((sum, subject) => sum + subject.grades.length, 0); + const gradeDistribution = calculateGradeDistribution(data.subjects); + const semesterGrades = extractSemesterGrades(data.subjects); + + + const studentGradeLevel = Math.floor(studentAverage) || 0; + const classGradeLevel = Math.floor(classAverage) || 0; + + return ` +
+
+
+

+ + Firka +

+
+ ${data.schoolInfo.id} - ${data.schoolInfo.name} +
+
+ + +
+ +
+
+
+
+
Jegyek (${totalGrades}db)
+
+
+ ${studentAverage > 0 ? studentAverage.toFixed(2) : '-'} +
+ ${classAverage > 0 ? ` +
+ ${classAverage.toFixed(2)} +
+ ` : ''} +
+
+
+ +
+
+ ${Object.entries(gradeDistribution) + .map(([grade, count]) => ` +
+ ${grade} + ${count} +
+ `).join('')} +
+
+ ${semesterGrades.length > 0 ? ` +
+

Félévi értékelések

+
+ ${semesterGrades.map(grade => ` +
+
${grade.value}
+
${grade.subject}
+
+ `).join('')} +
+
+ ` : ''} +
+
+ ${generateSubjectCards(data.subjects)} +
+
+
+ `; +} + +function extractSemesterGrades(subjects) { + const semesterGrades = []; + subjects.forEach(subject => { + const semesterGrade = subject.grades.find(grade => grade.isSemesterGrade); + if (semesterGrade) { + semesterGrades.push({ + subject: subject.name, + value: semesterGrade.value, + date: semesterGrade.date + }); + } + }); + return semesterGrades; +} + +function calculateGradePoints(subjects) { + const allGrades = []; + + subjects.forEach(subject => { + subject.grades.forEach(grade => { + const date = new Date(grade.date); + const value = parseInt(grade.value); + const weight = parseInt(grade.weight?.match(/\d+/)?.[0] || '100') / 100; + allGrades.push({ + date, + value, + weight + }); + }); + }); + + + allGrades.sort((a, b) => a.date - b.date); + + + let totalWeight = 0; + let weightedSum = 0; + return allGrades.map(grade => { + totalWeight += grade.weight; + weightedSum += grade.value * grade.weight; + return { + date: grade.date.toISOString(), + grade: grade.value, + average: weightedSum / totalWeight + }; + }); +} + +function setupGradesChart(subjects) { + const ctx = document.getElementById('gradesChart'); + if (!ctx) return; + + const gradePoints = calculateGradePoints(subjects); + + new Chart(ctx, { + type: 'line', + data: { + labels: gradePoints.map((_, index) => ''), + datasets: [{ + label: 'Átlag', + data: gradePoints.map(p => p.average), + borderWidth: 5, + tension: 0.5, + segment: { + borderColor: ctx => { + const curr = ctx.p1.parsed.y; + if (!curr) return 'transparent'; + const color = getComputedStyle(document.documentElement).getPropertyValue( + curr < 2 ? '--grades-1' : + curr < 2.5 ? '--grades-2' : + curr < 3.5 ? '--grades-3' : + curr < 4.5 ? '--grades-4' : '--grades-5' + ).trim() + '80'; + return color; + } + }, + fill: true, + backgroundColor: function(context) { + const chart = context.chart; + const {ctx, chartArea} = chart; + if (!chartArea) return null; + + const gradientBg = ctx.createLinearGradient(0, chartArea.bottom, 0, chartArea.top); + + + gradientBg.addColorStop(0, getComputedStyle(document.documentElement).getPropertyValue('--grades-1').trim() + '30'); + gradientBg.addColorStop(0.2, getComputedStyle(document.documentElement).getPropertyValue('--grades-2').trim() + '30'); + gradientBg.addColorStop(0.4, getComputedStyle(document.documentElement).getPropertyValue('--grades-3').trim() + '30'); + gradientBg.addColorStop(0.6, getComputedStyle(document.documentElement).getPropertyValue('--grades-4').trim() + '30'); + gradientBg.addColorStop(0.8, getComputedStyle(document.documentElement).getPropertyValue('--grades-5').trim() + '30'); + + return gradientBg; + }, + pointBackgroundColor: context => { + const value = context.raw; + return getComputedStyle(document.documentElement).getPropertyValue( + value < 2 ? '--grades-1' : + value < 2.5 ? '--grades-2' : + value < 3.5 ? '--grades-3' : + value < 4.5 ? '--grades-4' : '--grades-5' + ).trim(); + }, + pointRadius: 0, + pointHoverRadius: 0 + }] + }, + options: { + responsive: true, + maintainAspectRatio: false, + scales: { + y: { + min: 1, + max: 5, + ticks: { + stepSize: 1, + color: getComputedStyle(document.documentElement).getPropertyValue('--text-secondary') + }, + grid: { + color: getComputedStyle(document.documentElement).getPropertyValue('--text-teritary') + '20', + lineWidth: 1, + borderDash: [5, 5] + } + }, + x: { + display: false + } + }, + plugins: { + legend: { + display: false + }, + tooltip: { + backgroundColor: getComputedStyle(document.documentElement).getPropertyValue('--card-card'), + titleColor: getComputedStyle(document.documentElement).getPropertyValue('--text-primary'), + bodyColor: getComputedStyle(document.documentElement).getPropertyValue('--text-primary'), + borderColor: getComputedStyle(document.documentElement).getPropertyValue('--text-teritary') + '20', + borderWidth: 1, + padding: 12, + displayColors: false, + callbacks: { + title: () => '', + label: context => `Átlag: ${context.raw.toFixed(2)}` + } + } + } + } + }); +} + +function generateSubjectCards(subjects) { + const sortedSubjects = [...subjects].sort((a, b) => a.grades.length - b.grades.length); + + return sortedSubjects.map(subject => { + const regularGrades = subject.grades.filter(grade => !grade.isSemesterGrade); + const myGrade = Math.floor(subject.average) || 0; + const classGrade = Math.floor(subject.classAverage) || 0; + + return ` +
+
+
+

${subject.name}

+
+
+
+ ${subject.average > 0 ? subject.average.toFixed(2) : '-'} +
+ ${subject.classAverage > 0 ? ` +
+ ${subject.classAverage.toFixed(2)} +
+ ` : ''} +
+
+
+ ${regularGrades.map(generateGradeItem).join('')} +
+
+ `; + }).join(''); +} + + function setupEventListeners() { + + 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'); + }); + + + const timerEl = document.getElementById('logoutTimer'); + if (timerEl) { + const startTime = parseInt(timerEl.textContent?.match(/\d+/)?.[0] || "45"); + let timeLeft = startTime * 60; + + const updateTimer = () => { + const minutes = Math.floor(timeLeft / 60); + const seconds = timeLeft % 60; + timerEl.textContent = `${minutes}:${seconds.toString().padStart(2, '0')}`; + + if (timeLeft <= 0) { + window.location.href = '/Home/Logout'; + } else { + timeLeft--; + } + }; + + updateTimer(); + setInterval(updateTimer, 1000); + } + } + + 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 + }); + }); + } + + + if (window.location.href.includes('/TanuloErtekeles/Osztalyzatok')) { + transformGradesPage(); + } +})(); \ No newline at end of file diff --git a/homework/homework.css b/homework/homework.css new file mode 100644 index 0000000..cbce5e3 --- /dev/null +++ b/homework/homework.css @@ -0,0 +1,527 @@ +@font-face { + font-family: 'Montserrat'; + src: url('chrome-extension://__MSG_@@extension_id__/fonts/Montserrat-Regular.woff2') format('woff2'); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: 'Montserrat'; + src: url('chrome-extension://__MSG_@@extension_id__/fonts/Montserrat-Medium.woff2') format('woff2'); + font-weight: 500; + font-style: normal; +} +@font-face { + font-family: 'Montserrat'; + src: url('chrome-extension://__MSG_@@extension_id__/fonts/Montserrat-SemiBold.woff2') format('woff2'); + font-weight: 600; + font-style: normal; +} +@font-face { + font-family: 'Figtree'; + src: url('chrome-extension://__MSG_@@extension_id__/fonts/Figtree-Regular.woff2') format('woff2'); + font-weight: 400; + font-style: normal; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + margin: 0; + padding: 0; + color: var(--text-primary); + background-color: var(--background) !important; + font-family: "Montserrat", serif !important; + min-height: 100vh; + font-size: 16px; +} + +@media (max-width: 768px) { + body { + font-size: 14px; + } +} + +.kreta-container { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +.kreta-header { + padding: clamp(1rem, 3vw, 2rem); + display: grid; + grid-template-columns: minmax(300px, 400px) 1fr minmax(200px, 300px); + align-items: center; + gap: 1rem; +} + +@media (max-width: 1200px) { + .kreta-header { + grid-template-columns: minmax(250px, 350px) 1fr minmax(180px, 250px); + } +} + +@media (max-width: 768px) { + .kreta-header { + grid-template-columns: 1fr auto; + grid-template-areas: + "school user" + "nav nav"; + padding: 1rem; + gap: 0.5rem; + } +} + +.school-info { + margin: 0; +} + +@media (max-width: 768px) { + .school-info { + grid-area: school; + max-width: none; + display: flex; + align-items: center; + gap: 0.5rem; + } +} + +.logo-text { + color: var(--text-primary); + font-size: 24px; + font-weight: 600; + margin: 0 0 0.5rem; + display: flex; + align-items: center; +} + +@media (max-width: 768px) { + .logo-text { + margin: 0; + font-size: 20px; + } +} + +.logo { + width: 24px; + border-radius: 8px; + margin-right: 0.5rem; +} + +.school-details { + color: var(--text-secondary); + font-size: 14px; +} + +.school-details span { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 300px; +} + +@media (max-width: 768px) { + .school-details span { + max-width: 200px; + } + + .school-details { + font-size: 12px; + } +} + + +.kreta-nav { + padding: 0 clamp(0.5rem, 3vw, 1.5rem); + position: sticky; + top: 0; + z-index: 100; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + scrollbar-width: none; + -ms-overflow-style: none; + display: flex; + justify-content: center; +} + +@media (max-width: 768px) { + .kreta-nav { + grid-area: nav; + padding: 0; + margin-top: 0.5rem; + } +} + +.nav-links { + display: flex; + gap: clamp(0.5rem, 2vw, 1rem); + padding: 0.25rem; + justify-content: center; +} + +@media (max-width: 768px) { + .nav-links { + justify-content: flex-start; + width: 100%; + gap: 0.25rem; + } +} + +.nav-links a { + color: var(--text-secondary); + text-decoration: none; + padding: clamp(0.5rem, 1.5vw, 1rem) 0.5rem; + font-weight: 500; + white-space: nowrap; + transition: all 0.2s ease; + display: flex; + align-items: center; + gap: 0.5rem; + border-radius: 8px; +} + +@media (max-width: 768px) { + .nav-links a { + padding: 0.5rem; + font-size: 13px; + } + + .nav-links a .material-icons-round { + font-size: 20px; + } +} + +.nav-links a:hover { + color: var(--text-primary); + background-color: var(--card-card); +} + +.nav-links a.active { + color: var(--accent-accent); +} + + +.user-profile { + position: relative; + justify-self: flex-end; +} + +@media (max-width: 768px) { + .user-profile { + grid-area: user; + } +} + +.user-dropdown-btn { + display: flex; + align-items: center; + gap: 1rem; + background: none; + border: none; + cursor: pointer; + padding: 0.5rem; + color: var(--text-primary); +} + +.user-info { + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 0.25rem; +} + +.user-name { + font-weight: 600; + font-size: 14px; +} + +.nav-logout-timer { + font-size: 12px; + color: var(--text-secondary); +} + +.user-dropdown { + position: absolute; + top: 100%; + right: 0; + background: var(--card-card); + border-radius: 12px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + min-width: 200px; + display: none; + z-index: 1000; + overflow: hidden; +} + +.user-dropdown.show { + display: block; +} + +.dropdown-item { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.75rem 1rem; + color: var(--text-primary); + text-decoration: none; + transition: background-color 0.2s ease; +} + +.dropdown-item:hover { + background-color: var(--accent-15); +} + + +.kreta-main { + flex: 1; + padding: clamp(1rem, 3vw, 2rem); + max-width: 1400px; + margin: 0 auto; + width: 100%; +} + + +.filter-card { + background: var(--card-card); + border-radius: 24px; + padding: 1.5rem; + margin-bottom: 1.5rem; + box-shadow: 0px 1px 3px 0px var(--accent-shadow); +} + +.filter-header { + margin-bottom: 1rem; +} + +.filter-header h2 { + font-size: 18px; + font-weight: 600; + color: var(--text-primary); + background-color: var(--card-card); +} + +.filter-content { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); + gap: 1rem; + width: 100%; +} + +.filter-group { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.filter-group label { + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 14px; + color: var(--text-secondary); +} + +.filter-group select, +.filter-group input { + padding: 0.75rem; + border-radius: 12px; + border: 1px solid var(--accent-15); + background-color: var(--background); + color: var(--text-primary); + font-family: inherit; + font-size: 14px; + width: 100%; + transition: border-color 0.2s ease, box-shadow 0.2s ease; +} + +.filter-group select:focus, +.filter-group input:focus { + outline: none; + border-color: var(--accent-accent); + box-shadow: 0 0 0 2px var(--accent-15); +} + +.filter-actions { + display: flex; + justify-content: flex-end; + gap: 1rem; + margin-top: 1rem; +} + +.filter-button { + padding: 0.5rem 1rem; + border-radius: 8px; + border: none; + font-family: inherit; + font-weight: 500; + cursor: pointer; + transition: all 0.2s ease; +} + +.filter-button.primary { + background-color: var(--accent-accent); + color: white; +} + +.filter-button.secondary { + background-color: var(--accent-15); + color: var(--text-primary); +} + +.filter-button:hover { + opacity: 0.9; +} + + +.homework-list { + display: grid; + grid-template-columns: 1fr; + gap: 1rem; +} + +.homework-date-group { + margin-bottom: 2rem; +} + +.date-header { + display: flex; + align-items: center; + gap: 0.5rem; + margin-bottom: 0.5rem; + padding-bottom: 0.5rem; + border-bottom: 1px solid var(--accent-15); +} + +.date-header h3 { + font-size: 16px; + font-weight: 600; + color: var(--text-primary); +} + +.homework-item { + background: var(--card-card); + border-radius: 12px; + padding: 1rem; + margin-bottom: 0.5rem; + box-shadow: 0px 1px 2px 0px var(--accent-shadow); + transition: transform 0.2s ease; +} + +.homework-item:hover { + transform: translateY(-2px); +} + +.homework-item.due-tomorrow { + border-left: 4px solid var(--accent-accent); + background-color: var(--accent-5); +} + +.homework-header { + display: flex; + justify-content: space-between; + margin-bottom: 0.5rem; +} + +.homework-subject { + font-weight: 600; + font-size: 16px; + color: var(--text-primary); +} + +.homework-deadline { + font-size: 14px; + color: var(--text-secondary); +} + +.homework-deadline.urgent { + color: var(--accent-accent); + font-weight: 500; +} + +.homework-content { + margin-bottom: 0.5rem; + color: var(--text-primary); + font-size: 14px; +} + +.homework-footer { + display: flex; + justify-content: space-between; + align-items: center; + font-size: 12px; + color: var(--text-secondary); +} + +.homework-teacher { + 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; + color: var(--text-secondary); + display: none; +} + +.empty-state p { + margin-bottom: 1rem; + font-size: 16px; +} + + +@media (max-width: 768px) { + .filter-content { + grid-template-columns: 1fr; + } + + .homework-header { + flex-direction: column; + gap: 0.25rem; + } +} \ No newline at end of file diff --git a/homework/homework.js b/homework/homework.js new file mode 100644 index 0000000..cf86424 --- /dev/null +++ b/homework/homework.js @@ -0,0 +1,572 @@ +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 = ` +
+
+ +
Betöltés alatt...
+

Kis türelmet

+
+
+ `; + + 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 +

+
+ ${shortenedSchoolName} +
+
+ + + + +
+ +
+
+
+

Szűrés

+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+ ${renderHomeworkList(groupedHomework)} +
+
+
+ `; + + setupFilters(homeworkItems, groupedHomework); + setupUserDropdown(); + setupLogoutTimer(); + hideLoadingScreen(); +} + +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; + }); + + if (sortedDates.length === 0) { + return ` +
+

Nincs megjeleníthető házi feladat.

+
+ `; + } + + return sortedDates.map(date => { + const homeworkItems = groupedHomework[date]; + return ` +
+
+

${formatDateHeader(date)}

+
+ ${homeworkItems.map(homework => { + const isTomorrowClass = isTomorrow(homework.deadline) ? 'due-tomorrow' : ''; + const urgentClass = isTomorrow(homework.deadline) ? 'urgent' : ''; + + return ` +
+
+
${homework.subject}
+
${formatDeadline(homework.deadline)}
+
+
${formatHomeworkDescription(homework.description)}
+ +
+ `; + }).join('')} +
+ `; + }).join(''); +} + +function formatDateHeader(dateStr) { + if (!dateStr) return ''; + + const today = new Date(); + today.setHours(0, 0, 0, 0); + + const tomorrow = new Date(today); + tomorrow.setDate(tomorrow.getDate() + 1); + + const parts = dateStr.split('.'); + if (parts.length < 3) return dateStr; + + const year = parseInt(parts[0].trim()); + const month = parseInt(parts[1].trim()) - 1; + const day = parseInt(parts[2].trim()); + + const date = new Date(year, month, day); + + + if (date.toDateString() === today.toDateString()) { + return 'Ma - ' + dateStr; + } else if (date.toDateString() === tomorrow.toDateString()) { + return 'Holnap - ' + dateStr; + } + + + const weekdays = ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat']; + return `${weekdays[date.getDay()]} - ${dateStr}`; +} + +function formatDeadline(dateStr) { + if (!dateStr) return ''; + + + if (isTomorrow(dateStr)) { + return `Határidő: ${dateStr} (holnap!)`; + } + + return `Határidő: ${dateStr}`; +} + +function formatDate(dateStr) { + if (!dateStr) return ''; + return dateStr; +} + +function formatHomeworkDescription(description) { + if (!description) return ''; + + + description = description.replace(/(\d+\.)\s*(\w[^\n.]*)/g, '$1 $2'); + + + description = description.replace(/(Határidő:)\s*([^\n]+)/g, '
$1 $2
'); + description = description.replace(/(MS\s+[^\n.]+szerint\s+adható\s+be\.)/g, '
Beadás: $1
'); + + + description = description.replace(/\n/g, '
'); + + return description; +} + +function setupFilters(homeworkItems, groupedHomework) { + const subjectFilter = document.getElementById('subjectFilter'); + const teacherFilter = document.getElementById('teacherFilter'); + const deadlineFilter = document.getElementById('deadlineFilter'); + const applyFilterBtn = document.getElementById('applyFilterBtn'); + const resetFilterBtn = document.getElementById('resetFilterBtn'); + + + const applyFilters = () => { + const selectedSubject = subjectFilter.value; + const selectedTeacher = teacherFilter.value; + const selectedDeadline = deadlineFilter.value; + + + const homeworkElements = document.querySelectorAll('.homework-item'); + const dateGroups = document.querySelectorAll('.homework-date-group'); + + + dateGroups.forEach(group => { + group.style.display = 'none'; + }); + + + homeworkElements.forEach(item => { + const subject = item.getAttribute('data-subject'); + const teacher = item.getAttribute('data-teacher'); + const dateGroup = item.closest('.homework-date-group'); + const dateStr = dateGroup.getAttribute('data-date'); + + let showItem = true; + + + if (selectedSubject && subject !== selectedSubject) { + showItem = false; + } + + + if (selectedTeacher && teacher !== selectedTeacher) { + showItem = false; + } + + + if (selectedDeadline) { + const parts = dateStr.split('.'); + if (parts.length >= 3) { + const year = parseInt(parts[0].trim()); + const month = parseInt(parts[1].trim()) - 1; + const day = parseInt(parts[2].trim()); + const date = new Date(year, month, day); + + const today = new Date(); + today.setHours(0, 0, 0, 0); + + const tomorrow = new Date(today); + tomorrow.setDate(tomorrow.getDate() + 1); + + + const startOfWeek = new Date(today); + const dayOfWeek = today.getDay() || 7; // Convert Sunday from 0 to 7 + startOfWeek.setDate(today.getDate() - dayOfWeek + 1); // Monday + + const endOfWeek = new Date(startOfWeek); + endOfWeek.setDate(startOfWeek.getDate() + 6); // Sunday + + + const startOfNextWeek = new Date(endOfWeek); + startOfNextWeek.setDate(endOfWeek.getDate() + 1); + + const endOfNextWeek = new Date(startOfNextWeek); + endOfNextWeek.setDate(startOfNextWeek.getDate() + 6); + + if (selectedDeadline === 'tomorrow' && date.toDateString() !== tomorrow.toDateString()) { + showItem = false; + } else if (selectedDeadline === 'thisWeek' && (date < startOfWeek || date > endOfWeek)) { + showItem = false; + } else if (selectedDeadline === 'nextWeek' && (date < startOfNextWeek || date > endOfNextWeek)) { + showItem = false; + } + } + } + + + item.style.display = showItem ? 'block' : 'none'; + + + if (showItem) { + dateGroup.style.display = 'block'; + } + }); + + + const visibleItems = document.querySelectorAll('.homework-item[style="display: block"]'); + const homeworkList = document.getElementById('homeworkList'); + + + let emptyState = homeworkList.querySelector('.empty-state'); + if (!emptyState) { + emptyState = document.createElement('div'); + emptyState.className = 'empty-state'; + emptyState.innerHTML = '

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); + }); +} \ No newline at end of file diff --git a/icons/absences-active.svg b/icons/absences-active.svg new file mode 100644 index 0000000..d67438d --- /dev/null +++ b/icons/absences-active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/absences-inactive.svg b/icons/absences-inactive.svg new file mode 100644 index 0000000..2d127f7 --- /dev/null +++ b/icons/absences-inactive.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/close.svg b/icons/close.svg new file mode 100644 index 0000000..24b71a8 --- /dev/null +++ b/icons/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/dashboard-active.svg b/icons/dashboard-active.svg new file mode 100644 index 0000000..3e0fa00 --- /dev/null +++ b/icons/dashboard-active.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dashboard-inactive.svg b/icons/dashboard-inactive.svg new file mode 100644 index 0000000..7007744 --- /dev/null +++ b/icons/dashboard-inactive.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/dkt.svg b/icons/dkt.svg new file mode 100644 index 0000000..29f01d8 --- /dev/null +++ b/icons/dkt.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/eye-off.svg b/icons/eye-off.svg new file mode 100644 index 0000000..e1b437f --- /dev/null +++ b/icons/eye-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/eye-on.svg b/icons/eye-on.svg new file mode 100644 index 0000000..cba5af7 --- /dev/null +++ b/icons/eye-on.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/grades-active.svg b/icons/grades-active.svg new file mode 100644 index 0000000..59bda98 --- /dev/null +++ b/icons/grades-active.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grades-inactive.svg b/icons/grades-inactive.svg new file mode 100644 index 0000000..1448963 --- /dev/null +++ b/icons/grades-inactive.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/logout.svg b/icons/logout.svg new file mode 100644 index 0000000..00ec2a8 --- /dev/null +++ b/icons/logout.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/naplo.svg b/icons/naplo.svg new file mode 100644 index 0000000..5b65937 --- /dev/null +++ b/icons/naplo.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/open-link.svg b/icons/open-link.svg new file mode 100644 index 0000000..ed7ef75 --- /dev/null +++ b/icons/open-link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/others.svg b/icons/others.svg new file mode 100644 index 0000000..666094f --- /dev/null +++ b/icons/others.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/profile.svg b/icons/profile.svg new file mode 100644 index 0000000..b750730 --- /dev/null +++ b/icons/profile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/settings.svg b/icons/settings.svg new file mode 100644 index 0000000..0f23909 --- /dev/null +++ b/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/timetable-active.svg b/icons/timetable-active.svg new file mode 100644 index 0000000..54f0cb6 --- /dev/null +++ b/icons/timetable-active.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/timetable-inactive.svg b/icons/timetable-inactive.svg new file mode 100644 index 0000000..58dd202 --- /dev/null +++ b/icons/timetable-inactive.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/images/firka_logo.png b/images/firka_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..19f5d49da975d480163e32cf9157f9a6739cbdeb GIT binary patch literal 1427 zcmeAS@N?(olHy`uVBq!ia0y~yV9)?z4mJh`hMs>rav2yHI14-?iy0WWg+Z8+Vb&Z8 z1_lPk;vjb?hIQv;UNSH+u%tWsIx;Y9?C1WI$jZRLs^RJ47*fIbHo`wcCRF18y_B_= zvUXc)B#Cd@yp=tA$;pGWXT024aYBrhSFTK4hr_GprBW-J3o0`|SI_|K)b{ z6|}f>JGOIozh#P^@iu*%(rjmb$%kg|PHvcbGllu|CfAn@j6uosTnlwJ^qNJSxt4P1 z;RYYI$)|Kqf10Fok#Vw4V6y3-RX3_~YHDJB1!_%AF_F4@UgsjCVyF0{qdQ~#`uh5` zOfS9M;-ezO%jxgucS@l_Wy;!nvomJ9ZWCGidF{-r5ou+n(`*Y*1-we#9C`Ep{djkl z=x_~@R~=0i+7Fahe;2={G(EYXl@; z!rIVq;kujt*~Q)6-C23HwR3;{`ZeX$8>SeFMC2QkJ9>M10=Q>92{xSY;7$Gax}D`JlJ%kqy+YTLLyC}ykKi@V#` z3pPomm}u%7uo+ntRW0&bx@eoI`wH&V!oK|E+3&j)7($OGE2(>4kRV5@i2nQWt4_*K9_!_z0hm9vr`1_N8xoXj)L%*~?-RU+w8GXy-e4wd2 zlgE=Q3guN<#kY3PbDVo{-{<3hFY4d>+3nY&^ySGl?=62$N9B48s#x(?Eqp$)Nnopi z{)V$LwO^LH#vW3O&%K(pAnV1fE~&Tdrxw+TrSd*VSlO$qtGjZN$L`)^|4vq(p1E8( z@TzDR;u&+T4rs{RQ>;G?V=mY=BkA(W$mATWx;2Opw{hsYAwZ=?^YL=+V^Go&ic%E ztBanVJ63C<9@oJBa8K})?gwcslS96?D-^{kSiaUeWaqm7`yTgCKi)oIZz89NdTadqr5UI9c8K|wIys3 zn6#a@>JIRGaQAo*i)Z-R*SdbZ7E}E=qGrj|6zqSJHR01PwWq3oj(9H4WHD1(@lEva zoyLiaWkqKO2rgNc@AkX8N~Ni(`RLmn#f~>t8Huo*smw~h{k8a6n2vGr=@_TmZoeC% zM2_D7y;(rDr}@}#<>=cIvPN7H5=Z6i4@e7K+8@6#D%-w-!{NoM+;4(RA4^LAT@VQI tT(sr(w*?)K>nrbWf9P)EWFW`z_|%4bucub1GcYhPc)I$ztaD0e0s#GvqjmrQ literal 0 HcmV?d00001 diff --git a/images/firka_logo_128.png b/images/firka_logo_128.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b579386248c6578c172e096a04b752bac6b7e3 GIT binary patch literal 10004 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 M)78&qol`;+0H$$n5dZ)H literal 0 HcmV?d00001 diff --git a/images/loading.gif b/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c4d0f694f6f47c3b4faf7a48fd43002f049873a GIT binary patch literal 16742 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 { + window.addEventListener('load', resolve); + }); + } + + + const existingForm = document.querySelector('form'); + const formData = { + action: existingForm?.getAttribute('action') || '', + returnUrl: document.querySelector('#ReturnUrl')?.value || '', + instituteCode: document.querySelector('#instituteCode')?.value || '', + requestToken: document.querySelector('input[name="__RequestVerificationToken"]')?.value || '' + }; + + + const titleElement = document.querySelector('.page-title'); + const schoolInfo = { + name: titleElement?.querySelector('b')?.textContent?.trim() || '', + kretaId: '', + omCode: '' + }; + + + const spanElement = titleElement?.querySelector('span'); + if (spanElement) { + const lines = spanElement.textContent?.split('\n').map(line => line.trim()) || []; + schoolInfo.kretaId = lines[0] || ''; + schoolInfo.omCode = (lines[1] || '').replace('KRÉTA azonosító: ', ''); + } + + + const rawSystemMessage = document.querySelector('.alert-primary')?.textContent?.trim() || ''; + const systemMessage = rawSystemMessage.replace('Rendszerértesítés', '').trim(); + + + const newHTML = ` + + `; + + + document.body.innerHTML = newHTML; + + + setupEventListeners(); + + } catch (error) { + console.error('Error transforming page:', error); + } +} + +function setupEventListeners() { + const loginForm = document.getElementById('loginForm'); + const passwordInput = document.getElementById('Password'); + const togglePasswordBtn = document.querySelector('.show-password'); + const formInputs = document.querySelectorAll('.form-control'); + + + if (togglePasswordBtn && passwordInput) { + togglePasswordBtn.addEventListener('click', () => { + const isPassword = passwordInput.type === 'password'; + passwordInput.type = isPassword ? 'text' : 'password'; + const icon = togglePasswordBtn.querySelector('.icon-eye'); + icon.src = chrome.runtime.getURL(`icons/${isPassword ? 'eye-on' : 'eye-off'}.svg`); + }); +} + + + formInputs.forEach(input => { + + input.addEventListener('input', () => { + validateInput(input); + }); + + + input.addEventListener('blur', () => { + validateInput(input, true); + }); + }); + + + if (loginForm) { + loginForm.addEventListener('submit', handleSubmit); + } +} + +function validateInput(input, showError = false) { + const isValid = input.value.trim().length > 0; + const errorElement = input.nextElementSibling; + + if (!isValid && showError) { + input.classList.add('error'); + errorElement?.classList.add('show'); + } else { + input.classList.remove('error'); + errorElement?.classList.remove('show'); + } + + return isValid; +} + +function handleSubmit(event) { + event.preventDefault(); + + const form = event.target; + const inputs = form.querySelectorAll('.form-control[required]'); + let isValid = true; + + + inputs.forEach(input => { + if (!validateInput(input, true)) { + isValid = false; + } + }); + + if (!isValid) { + return; + } + + + const submitButton = form.querySelector('.btn-login'); + const spinner = submitButton.querySelector('.spinner'); + const buttonText = submitButton.querySelector('.btn-text'); + + submitButton.disabled = true; + spinner.style.display = 'inline-block'; + buttonText.style.opacity = '0'; + + + form.submit(); +} + + +if (window.location.href.includes('idp.e-kreta.hu/Account/Login')) { + transformLoginPage().catch(error => { + console.error('Error:', error); + }); +} \ No newline at end of file diff --git a/logout/logout.css b/logout/logout.css new file mode 100644 index 0000000..b0fc0e6 --- /dev/null +++ b/logout/logout.css @@ -0,0 +1,138 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + margin: 0; + padding: 0; + color: var(--text-primary); + background-color: var(--background) !important; + font-family: "Montserrat", serif !important; + min-height: 100vh; + font-size: 16px; + display: flex; + align-items: center; + justify-content: center; +} + +.logout-container { + width: 100%; + max-width: 500px; + padding: 20px; + margin: 0 auto; +} + +.logout-header { + text-align: center; + margin-bottom: 24px; +} + +.logo-text { + color: var(--text-primary); + font-size: 24px; + font-weight: 600; + margin: 16px 0; + display: flex; + align-items: center; + justify-content: center; +} + +.logo { + width: 24px; + border-radius: 8px; + margin-right: 8px; +} + +.logout-card { + background: var(--card-card); + padding: 24px; + border-radius: 24px; + text-align: center; + margin-bottom: 16px; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} + +.logout-message { + margin-bottom: 24px; +} + +.logout-message strong { + font-size: 18px; + color: var(--text-primary); + font-weight: 600; +} + +.redirect-timer { + font-size: 48px; + font-weight: 700; + color: var(--accent-accent); + margin-bottom: 24px; +} + +.btn-continue { + display: inline-block; + padding: 12px 24px; + background: var(--accent-accent); + color: var(--button-secondaryFill); + text-decoration: none; + border-radius: 12px; + font-weight: 600; + transition: background 0.2s ease, color 0.2s ease; +} + +.btn-continue:hover { + background: var(--accent-secondary) !important; + color: var(--button-secondaryFill) !important; +} + +.logout-footer { + text-align: center; +} + +.privacy-link { + color: var(--text-secondary); + text-decoration: none; + font-size: 14px; + display: inline-block; + margin-bottom: 8px; + transition: color 0.2s ease; +} + +.privacy-link:hover { + color: var(--text-primary); +} + +@media (max-width: 600px) { + .logout-container { + padding: 16px; + } + + .logout-card { + padding: 20px; + } + + .redirect-timer { + font-size: 36px; + } + + .logo-text { + font-size: 20px; + } + + .logo { + width: 20px; + } +} + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} \ No newline at end of file diff --git a/logout/logout.js b/logout/logout.js new file mode 100644 index 0000000..08048f3 --- /dev/null +++ b/logout/logout.js @@ -0,0 +1,97 @@ +(() => { + 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 loadFonts() { + // Create a new style element + const style = document.createElement('style'); + style.textContent = ` + @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap'); + @import url('https://fonts.googleapis.com/icon?family=Material+Icons+Round'); + `; + document.head.appendChild(style); + } + function transformLogoutPage() { + // Get current theme and school ID from cookies + const theme = getCookie('themePreference') || localStorage.getItem('themePreference') || 'light-blue'; + const instituteCode = getCookie('schoolSubdomain'); + document.documentElement.setAttribute('data-theme', theme); + + // Create new HTML structure + const newHTML = ` +
+
+

+ + Firka +

+
+ +
+
+ Sikeres kijelentkezés! +
+ +
5
+ + Tovább +
+ + +
+ `; + + // Replace body content + document.body.innerHTML = newHTML; + + // Start countdown timer + const timerElement = document.getElementById('automaticRedirectTimer'); + let remainingTime = 5; + + const countdownInterval = setInterval(() => { + remainingTime--; + if (timerElement) { + timerElement.textContent = remainingTime; + } + + if (remainingTime <= 0) { + clearInterval(countdownInterval); + window.location.href = `https://${instituteCode}.e-kreta.hu`; + } + }, 1000); + + // Handle manual redirect click + document.querySelector('.btn-continue')?.addEventListener('click', (e) => { + e.preventDefault(); + clearInterval(countdownInterval); + window.location.href = `https://${instituteCode}.e-kreta.hu`; + }); + } + // Load fonts immediately + loadFonts(); + // Run the transformation + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', transformLogoutPage); + } else { + transformLogoutPage(); + } +})(); \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..4b285af --- /dev/null +++ b/manifest.json @@ -0,0 +1,119 @@ +{ + "manifest_version": 3, + "name": "Firxa", + "version": "1.1.0", + "description": "KRÉTA webes verziójának újraírása", + "icons": { + "128": "images/firka_logo_128.png" + }, + "action": { + "default_popup": "settings/index.html", + "default_icon": { + "128": "images/firka_logo_128.png" + } + }, + "web_accessible_resources": [{ + "resources": [ + "settings/*", + "images/*", + "fonts/*.woff2", + "icons/*.svg", + "grades/chart.js" + ], + "matches": ["https://*.e-kreta.hu/*"] + }], + "content_scripts": [ + { + "matches": [ + "https://*.e-kreta.hu/*" + ], + "js": ["global/maintenance.js", "global/theme.js", "global/navigation.js"], + "css": ["global/theme.css", "global/navigation.css"], + "run_at": "document_start" + }, + { + "matches": [ + "https://*.e-kreta.hu/*" + ], + "css": ["global/maintenance.css"], + "run_at": "document_end" + }, + { + "matches": ["https://idp.e-kreta.hu/Account/Login*"], + "js": ["login/login.js"], + "css": ["login/login.css"] + }, + { + "matches": [ + "https://*.e-kreta.hu/Hianyzas/Hianyzasok*" + ], + "js": ["absences/absences.js"], + "css": ["absences/absences.css"], + "run_at": "document_end" + }, + { + "matches": [ + "https://idp.e-kreta.hu/Account/Logout*" + ], + "js": ["logout/logout.js"], + "css": ["logout/logout.css"], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/Adminisztracio/BelepesKezelo*" + ], + "js": ["roleselect/roleselect.js"], + "css": ["roleselect/roleselect.css"], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/Adminisztracio/ElfelejtettJelszo*" + ], + "js": ["forgotpassword/forgotpassword.js"], + "css": ["forgotpassword/forgotpassword.css"], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/Intezmeny/Faliujsag*" + ], + "js": ["dashboard/dashboard.js"], + "css": ["dashboard/dashboard.css"], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/TanuloErtekeles/Osztalyzatok*" + ], + "js": ["grades/grades.js", "grades/chart.js"], + "css": ["grades/grades.css"], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/Orarend/InformaciokOrarend*" + ], + "js": ["timetable/timetable.js"], + "css": ["timetable/timetable.css"], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/Adminisztracio/Profil*" + ], + "js": ["profile/profile.js"], + "css": ["profile/profile.css"], + "run_at": "document_end" + }, + { + "matches": [ + "https://*.e-kreta.hu/Tanulo/TanuloHaziFeladat*" + ], + "js": ["homework/homework.js"], + "css": ["homework/homework.css"], + "run_at": "document_end" + } + ] +} \ No newline at end of file diff --git a/profile/profile.css b/profile/profile.css new file mode 100644 index 0000000..ef4ea38 --- /dev/null +++ b/profile/profile.css @@ -0,0 +1,487 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + margin: 0; + padding: 0; + color: var(--text-primary); + background-color: var(--background) !important; + font-family: "Montserrat", serif !important; + min-height: 100vh; + font-size: 16px; +} + +.kreta-container { + min-height: 100vh; + display: flex; + flex-direction: column; +} + + +.kreta-header { + padding: clamp(1rem, 3vw, 2rem); + display: grid; + grid-template-columns: minmax(300px, 400px) 1fr minmax(200px, 300px); + align-items: center; + gap: 1rem; +} + +.school-info { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.logo-text { + color: var(--text-primary); + font-size: 24px; + font-weight: 600; + display: flex; + align-items: center; + margin: 0; +} + +.logo { + width: 24px; + border-radius: 8px; + margin-right: 8px; +} + +.school-details { + color: var(--text-secondary); + font-size: 14px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 300px; +} + + +.nav-links { + display: flex; + gap: clamp(0.5rem, 2vw, 1rem); + padding: 0.25rem; + justify-content: center; +} + +.nav-links a { + color: var(--text-secondary); + text-decoration: none; + padding: clamp(0.5rem, 1.5vw, 1rem) 0.5rem; + font-weight: 500; + white-space: nowrap; + transition: all 0.2s ease; + display: flex; + align-items: center; + gap: 0.5rem; + border-radius: 8px; +} + +.nav-links a:hover { + color: var(--text-primary); + background-color: var(--card-card); +} + +.nav-links a.active { + color: var(--accent-accent); +} + + +.user-profile { + position: relative; + justify-self: flex-end; +} + +.user-dropdown-btn { + display: flex; + align-items: center; + gap: 1rem; + background: none; + border: none; + cursor: pointer; + padding: 0.5rem; + border-radius: 8px; + transition: background-color 0.2s; +} + +.user-dropdown-btn:hover { + background: var(--card-card); +} + +.user-info { + text-align: right; +} + +.user-name { + display: block; + color: var(--text-primary); + font-size: 16px; + font-weight: 500; +} + +.user-time { + display: block; + color: var(--text-secondary); + font-size: 14px; +} + +.user-dropdown { + position: absolute; + top: 100%; + right: 0; + margin-top: 0.5rem; + background: var(--card-card); + border-radius: 12px; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); + width: 200px; + display: none; + z-index: 1000; +} + +.user-dropdown.show { + display: block; + animation: dropdownShow 0.2s ease; +} + +.dropdown-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.75rem 1rem; + color: var(--text-primary); + text-decoration: none; + transition: background-color 0.2s; +} + +.dropdown-item:hover { + background: var(--button-secondaryFill); +} + + +.kreta-main { + flex: 1; + padding: clamp(1rem, 3vw, 2rem); + max-width: 800px; + margin: 0 auto; + width: 100%; +} + +.card { + background: var(--card-card); + border-radius: 24px; + overflow: hidden; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} + +.card h2 { + font-size: 18px; + font-weight: 600; + color: var(--text-primary); + padding: 1.5rem; + padding-bottom: 0.5rem; + background-color: var(--card-card); +} + + +.profile-tabs { + padding: 1.5rem; +} + +.tab-headers { + display: flex; + gap: 0.5rem; + margin-bottom: 1.5rem; + border-bottom: 1px solid var(--card-translucent); + overflow-x: auto; + scrollbar-width: none; +} + +.tab-headers::-webkit-scrollbar { + display: none; +} + +.tab-header { + padding: 0.75rem 1rem; + background: none; + border: none; + color: var(--text-secondary); + font-weight: 500; + cursor: pointer; + white-space: nowrap; + border-bottom: 2px solid transparent; + font-size: 14px; +} + +.tab-header.active { + color: var(--accent-accent); + border-bottom-color: var(--accent-accent); +} + +.tab-content { + display: none; + background: var(--button-secondaryFill); + border-radius: 8px; + padding: 1.5rem; +} + +.tab-content.active { + display: block; +} + + +.form-group { + margin-bottom: 1rem; +} + +.form-label { + display: block; + color: var(--text-secondary); + font-size: 14px; + margin-bottom: 0.5rem; +} + +.form-control { + width: 100%; + padding: 0.75rem; + border: 1px solid var(--accent-15); + border-radius: 8px; + background: var(--accent-15); + color: var(--text-primary); + font-size: 14px; +} + +.form-control:focus { + outline: none; + border-color: var(--accent-accent); +} + +.form-text { + font-size: 12px; + color: var(--text-secondary); + margin-top: 0.25rem; +} + + +.security-content { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.step-card { + background: var(--button-secondaryFill); + border-radius: 12px; + padding: 1.5rem; + animation: fadeIn 0.3s ease; +} + +.step-card h3 { + color: var(--text-primary); + font-size: 16px; + font-weight: 600; + margin-bottom: 1rem; +} + +.step-card p { + color: var(--text-secondary); + font-size: 14px; + margin-bottom: 1rem; + line-height: 1.5; +} + +.app-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1.5rem; + margin-top: 1rem; +} + +.app-section h4 { + color: var(--text-primary); + font-size: 14px; + font-weight: 600; + margin-bottom: 0.75rem; +} + +.app-links { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.app-link { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.75rem; + background: var(--card-card); + border-radius: 8px; + color: var(--text-primary); + text-decoration: none; + font-size: 14px; + transition: background-color 0.2s; +} + +.app-link:hover { + background: var(--button-secondaryFill); +} + +.qr-container { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; + margin: 1.5rem 0; +} + +.qr-container img { + background: white; + padding: 1rem; + border-radius: 8px; + max-width: 200px; +} + +.setup-key { + display: flex; + flex-direction: column; + gap: 0.5rem; + width: 100%; +} + +.key-display { + display: flex; + align-items: center; + gap: 0.5rem; + background: var(--card-card); + padding: 0.75rem; + border-radius: 8px; +} + +.key-display code { + font-family: monospace; + color: var(--text-primary); + font-size: 14px; + flex-grow: 1; + text-align: center; +} + +.btn-copy { + background: none; + border: none; + color: var(--text-secondary); + cursor: pointer; + padding: 0.25rem; + border-radius: 4px; + transition: all 0.2s; +} + +.btn-copy:hover { + color: var(--text-primary); + background: var(--button-secondaryFill); +} + + +.btn-save { + padding: 0.75rem 1.5rem; + background: var(--accent-accent); + color: var(--button-secondaryFill); + border: none; + border-radius: 8px; + font-weight: 500; + cursor: pointer; + font-size: 14px; + transition: background-color 0.2s; +} + +.btn-save:hover { + background: var(--accent-secondary); +} + + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes dropdownShow { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + + +@media (max-width: 768px) { + .kreta-header { + grid-template-columns: 1fr auto; + grid-template-areas: + "school user" + "nav nav"; + padding: 1rem; + gap: 0.5rem; + } + + .school-info { + grid-area: school; + } + + .nav-links { + grid-area: nav; + margin-top: 0.5rem; + justify-content: flex-start; + } + + .user-profile { + grid-area: user; + } + + .app-grid { + grid-template-columns: 1fr; + } + + .profile-tabs { + padding: 1rem; + } + + .tab-content { + padding: 1rem; + } +} + + +.material-icons-round { + font-size: 20px; + vertical-align: middle; +} + + +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-track { + background: var(--background); +} + +::-webkit-scrollbar-thumb { + background: var(--text-secondary); + border-radius: 4px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--text-primary); +} \ No newline at end of file diff --git a/profile/profile.js b/profile/profile.js new file mode 100644 index 0000000..49820da --- /dev/null +++ b/profile/profile.js @@ -0,0 +1,506 @@ +(() => { + 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) { + if (!name) return ''; + const maxLength = 30; + if (name.length <= maxLength) return name; + + const parts = name.split(' - '); + if (parts.length === 2) { + const [code, fullName] = parts; + return `${code} - ${fullName.substring(0, maxLength - code.length - 5)}...`; + } + return name.substring(0, maxLength - 3) + '...'; + } + + function createSecurityTab() { + return ` +
+
+
+

1. lépés: Hitelesítési alkalmazás telepítése

+

A kétfaktoros hitelesítés használatához telepítsen egy időalapú, egyszer használatos jelszó (TOTP) alkalmazást:

+ + +
+ +
+

2. lépés: Kétfaktoros azonosítás beállítása

+
+
+ +
+ + +
+
+ + +
+
+ `; + } + + function createContactTab() { + return ` +
+
+ + + Az e-mail cím megadása a jelszó emlékeztető miatt szükséges. +
+
+ + + A telefonszám megadása nem kötelező. +
+
+ +
+
+ `; + } + + function createPasswordTab() { + return ` +
+
+ + +
+
+ + + A jelszónak legalább 8 karakter hosszúnak kell lennie. +
+
+ + +
+
+ +
+
+ `; + } + + function createSettingsTab() { + return ` +
+
+ + A tippek megjelenítésének ki/be kapcsolása. +
+
+ +
+
+ `; + } + + function setupContactForm() { + const form = document.querySelector('.contact-form'); + if (!form) return; + + const emailInput = form.querySelector('#email'); + const phoneInput = form.querySelector('#phone'); + const saveButton = form.querySelector('#saveContacts'); + + + emailInput.value = getCookie('userEmail') || ''; + phoneInput.value = getCookie('userPhone') || ''; + + saveButton?.addEventListener('click', async () => { + const email = emailInput.value.trim(); + const phone = phoneInput.value.trim(); + + if (!email) { + alert('Az e-mail cím megadása kötelező!'); + return; + } + + if (email && !isValidEmail(email)) { + alert('Kérjük, adjon meg egy érvényes e-mail címet!'); + return; + } + + if (phone && !isValidPhone(phone)) { + alert('Kérjük, adjon meg egy érvényes telefonszámot!'); + return; + } + + try { + const response = await fetch('/Adminisztracio/Profil/SaveElerhetosegek', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value + }, + body: JSON.stringify({ email, phone }) + }); + + if (response.ok) { + alert('Elérhetőségek sikeresen mentve!'); + } else { + throw new Error('Hiba történt a mentés során.'); + } + } catch (error) { + console.error('Error saving contacts:', error); + alert('Hiba történt a mentés során. Kérjük, próbálja újra később.'); + } + }); + } + + function isValidEmail(email) { + return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); + } + + function isValidPhone(phone) { + return /^\+?[0-9\s-]{9,}$/.test(phone); + } + + function setupEventListeners() { + + document.querySelectorAll('.tab-header').forEach(header => { + header.addEventListener('click', () => { + document.querySelectorAll('.tab-header').forEach(h => h.classList.remove('active')); + document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active')); + + header.classList.add('active'); + const targetId = header.dataset.tab; + document.getElementById(`${targetId}-content`).classList.add('active'); + }); + }); + + + 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('saveSettings')?.addEventListener('click', async () => { + const hideTips = document.getElementById('hideTips').checked; + + try { + const response = await fetch('/Adminisztracio/Profil/SaveTippekBeallitasa', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value + }, + body: JSON.stringify({ hideTips }) + }); + + if (response.ok) { + alert('Beállítások sikeresen mentve! A változtatások érvényesítéséhez jelentkezzen be újra.'); + } else { + throw new Error('Hiba történt a mentés során.'); + } + } catch (error) { + console.error('Error saving settings:', error); + alert('Hiba történt a mentés során. Kérjük, próbálja újra később.'); + } + }); + + + document.getElementById('savePassword')?.addEventListener('click', async () => { + const currentPassword = document.getElementById('currentPassword').value; + const newPassword = document.getElementById('newPassword').value; + const confirmPassword = document.getElementById('confirmPassword').value; + + if (!currentPassword || !newPassword || !confirmPassword) { + alert('Kérjük, töltse ki az összes mezőt!'); + return; + } + + if (newPassword !== confirmPassword) { + alert('Az új jelszavak nem egyeznek!'); + return; + } + + if (newPassword.length < 8) { + alert('Az új jelszónak legalább 8 karakter hosszúnak kell lennie!'); + return; + } + + try { + const response = await fetch('/Adminisztracio/Profil/SaveJelszoModositas', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value + }, + body: JSON.stringify({ + currentPassword, + newPassword, + confirmPassword + }) + }); + + if (response.ok) { + alert('Jelszó sikeresen módosítva!'); + document.getElementById('currentPassword').value = ''; + document.getElementById('newPassword').value = ''; + document.getElementById('confirmPassword').value = ''; + } else { + throw new Error('Hiba történt a jelszó módosítása során.'); + } + } catch (error) { + console.error('Error changing password:', error); + alert('Hiba történt a jelszó módosítása során. Kérjük, próbálja újra később.'); + } + }); + + + const timerEl = document.getElementById('logoutTimer'); + if (timerEl) { + const startTime = parseInt(timerEl.textContent?.match(/\d+/)?.[0] || "45"); + let timeLeft = startTime * 60; + + const updateTimer = () => { + const minutes = Math.floor(timeLeft / 60); + const seconds = timeLeft % 60; + timerEl.textContent = `${minutes}:${seconds.toString().padStart(2, '0')}`; + + if (timeLeft <= 0) { + window.location.href = '/Home/Logout'; + } else { + timeLeft--; + } + }; + + updateTimer(); + setInterval(updateTimer, 1000); + } + } + + function createProfileHTML(data) { + const schoolNameFull = `${data.schoolInfo.id} - ${data.schoolInfo.name}`; + const shortenedSchoolName = shortenSchoolName(schoolNameFull); + + return ` +
+
+
+

+ + Firka +

+
+ ${shortenedSchoolName} +
+
+ + + + +
+ +
+
+

Profil beállítások

+
+
+ + + + +
+ +
+ ${createSettingsTab()} +
+ +
+ ${createPasswordTab()} +
+ +
+ ${createSecurityTab()} +
+ +
+ ${createContactTab()} +
+
+
+
+
+ `; + } + + async function init() { + if (window.location.pathname.includes('/Adminisztracio/Profil')) { + + const links = [ + { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, + { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: true }, + { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap' }, + { rel: 'stylesheet', href: 'https://fonts.googleapis.com/icon?family=Material+Icons+Round' } + ]; + + links.forEach(link => { + const linkElement = document.createElement('link'); + Object.entries(link).forEach(([key, value]) => { + linkElement[key] = value; + }); + document.head.appendChild(linkElement); + }); + + const userData = { + schoolInfo: { + name: getCookie('schoolName') || 'Iskola', + id: getCookie('schoolCode') || '' + }, + userData: { + name: getCookie('userName') || 'Felhasználó', + time: document.querySelector('.usermenu_timer')?.textContent?.trim() || '45:00', + email: getCookie('userEmail') || '' + } + }; + + document.body.innerHTML = createProfileHTML(userData); + setupEventListeners(); + setupContactForm(); + } + } + + init(); +})(); \ No newline at end of file diff --git a/roleselect/roleselect.css b/roleselect/roleselect.css new file mode 100644 index 0000000..8c3bb16 --- /dev/null +++ b/roleselect/roleselect.css @@ -0,0 +1,380 @@ +@font-face { + font-family: 'Montserrat'; + src: url('chrome-extension://__MSG_@@extension_id__/fonts/Montserrat-Regular.woff2') format('woff2'); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: 'Montserrat'; + src: url('chrome-extension://__MSG_@@extension_id__/fonts/Montserrat-Medium.woff2') format('woff2'); + font-weight: 500; + font-style: normal; +} +@font-face { + font-family: 'Montserrat'; + src: url('chrome-extension://__MSG_@@extension_id__/fonts/Montserrat-SemiBold.woff2') format('woff2'); + font-weight: 600; + font-style: normal; +} +@font-face { + font-family: 'Figtree'; + src: url('chrome-extension://__MSG_@@extension_id__/fonts/Figtree-Regular.woff2') format('woff2'); + font-weight: 400; + font-style: normal; +} + + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + color: var(--text-primary); + background-color: var(--background) !important; + font-family: "Montserrat", serif !important; + min-height: 100vh; + font-size: 16px; +} + + +.kreta-container { + width: 100%; + min-height: 100vh; + display: flex; + flex-direction: column; + padding: clamp(1rem, 3vw, 2rem); + max-width: 1200px; + margin: 0 auto; +} + + +.kreta-header { + display: grid; + grid-template-columns: auto 1fr auto; + align-items: center; + gap: 2rem; + margin-bottom: clamp(2rem, 5vw, 3rem); +} + + +.school-info { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.logo-text { + display: flex; + align-items: center; + font-size: 1.5rem; + font-weight: 600; + color: var(--text-primary); + margin: 0; +} + +.logo { + width: 32px; + height: 32px; + border-radius: 8px; + margin-right: 0.75rem; +} + +.school-details { + color: var(--text-secondary); + font-size: 1.1rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 300px; + padding-left: 2px; +} + + +.user-profile { + justify-self: flex-end; + text-align: right; +} + +.user-info { + display: flex; + flex-direction: column; + align-items: flex-end; + gap: 4px; +} + + +.user-name, .role-text { + color: var(--text-primary); + font-family: Montserrat; + font-weight: 600; +} + +.user-name { + font-size: 16px; +} + +.role-text { + font-size: 20px; + text-align: center; +} + +.logout-timer, .role-description { + color: var(--text-secondary); + font-family: Figtree; + font-weight: 500; + line-height: 130%; +} + +.logout-timer { + font-size: 14px; + text-align: right; +} + +.role-description { + font-size: 16px; + text-align: center; +} + + +.role-container { + flex: 1; + display: flex; + align-items: center; +} + +.role-grid { + display: grid; + grid-template-columns: 1fr minmax(300px, 1fr); + gap: 1.5rem; + width: 100%; +} + +.side-roles { + display: grid; + grid-template-rows: 1fr auto; + gap: 1.5rem; +} + + +.role-card { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1.5rem; + padding: 2rem; + background: var(--card-card); + border-radius: 1rem; + cursor: pointer; + text-align: center; + border: none; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); + transition: all 0.2s ease; +} + + +.role-card[data-role="Ellenorzo"] { + height: 480px; + background: var(--card-card); +} + +.role-card[data-role="DKT"] { + height: 280px; + background: var(--card-card); + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} + +.logout-card { + height: 180px; + background: var(--error-card); + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} + + +.role-icon { + width: 48px; + height: 48px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 12px; + transition: transform 0.2s ease; + background: var(--accent-15); +} + +.role-icon img { + width: 32px; + height: 32px; + transition: transform 0.2s ease; +} + +.role-card[data-role="DKT"] .role-icon { + background: var(--warning-15); +} + +.logout-card .role-icon { + background: var(--error-15); +} + +.role-icon img { + width: 32px; + height: 32px; + transition: transform 0.2s ease; +} + + +.role-card:hover { + transform: translateY(-2px); +} + +.role-card:hover .role-icon img { + transform: scale(1.2); +} + +.role-card:active { + transform: translateY(1px); + box-shadow: 0px 0px var(--shadow-blur) 0px var(--accent-shadow); +} + + +.role-card[data-role="Ellenorzo"]:hover { + background-color: var(--accent-15); +} + +.role-card[data-role="DKT"]:hover { + background-color: var(--accent-15); +} + +.role-card[data-role="DKT"]:active { + box-shadow: 0px 0px var(--shadow-blur) 0px var(--accent-shadow); +} + +.logout-card:hover { + background-color: var(--error-15); +} + +.logout-card:active { + box-shadow: 0px 0px var(--shadow-blur) 0px var(--error-shadow); +} + + +:root[data-theme="light-blue"] .role-card:hover, +:root[data-theme="light-green"] .role-card:hover { + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} + + +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-track { + background: var(--background); +} + +::-webkit-scrollbar-thumb { + background: var(--text-secondary); + border-radius: 4px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--text-primary); +} + + +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(-10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + + +@media (max-width: 1200px) { + .role-grid { + grid-template-columns: 1fr 280px; + } +} + +@media (max-width: 900px) { + .role-grid { + grid-template-columns: 1fr; + } + + .side-roles { + grid-template-columns: 1fr 1fr; + grid-template-rows: none; + } + + .role-card[data-role="Ellenorzo"], + .role-card[data-role="DKT"], + .logout-card { + height: 300px; + } +} + +@media (max-width: 768px) { + .kreta-header { + grid-template-columns: 1fr auto; + gap: 1rem; + } + + .school-info { + max-width: 60%; + } + + .school-details { + max-width: 200px; + font-size: 1rem; + } + + .logo-text { + font-size: 1.2rem; + } + + .logo { + width: 24px; + height: 24px; + } +} + +@media (max-width: 640px) { + .kreta-container { + padding: 1rem; + } + + .side-roles { + grid-template-columns: 1fr; + gap: 1rem; + } + + .role-card { + padding: 1.5rem; + } + + .role-icon { + width: 40px; + height: 40px; + } + + .role-icon img { + width: 24px; + height: 24px; + } + + .role-text { + font-size: 1.2rem; + } + + .role-description { + font-size: 1rem; + } +} \ No newline at end of file diff --git a/roleselect/roleselect.js b/roleselect/roleselect.js new file mode 100644 index 0000000..17fbe65 --- /dev/null +++ b/roleselect/roleselect.js @@ -0,0 +1,183 @@ +(() => { + + const setCookie = (name, value, days = 365) => { + const date = new Date(); + date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); + document.cookie = `${name}=${value}; expires=${date.toUTCString()}; path=/; domain=.e-kreta.hu`; + }; + + const startLogoutTimer = () => { + let timeLeft = 45 * 60; + const timerElement = document.getElementById('logoutTimer'); + + const updateTimer = () => { + const minutes = Math.floor(timeLeft / 60); + const seconds = timeLeft % 60; + + if (timerElement) { + timerElement.textContent = `${minutes}:${seconds.toString().padStart(2, '0')}`; + } + + timeLeft <= 0 ? window.location.href = '/Home/Logout' : timeLeft--; + }; + + updateTimer(); + return setInterval(updateTimer, 1000); + }; + + const handleRoleChange = async (role) => { + try { + const response = await fetch('/Adminisztracio/SzerepkorValaszto/ChangeRole', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ Role: role }) + }); + + const data = await response.json(); + if (data.Success) { + window.location.assign(data.Url); + } else { + throw new Error('Role change failed'); + } + } catch (error) { + console.error('Error changing role:', error); + alert('Hiba történt a szerepkör váltása közben.'); + } + }; + + const createHTML = (schoolCode, fullSchoolName, userName) => ` +
+
+
+

+ + Firka +

+
+ ${schoolCode || ''} - ${fullSchoolName || 'Iskola'} +
+
+ +
+ +
+
+
+
+
+ Napló ikon +
+
+ Ellenőrzőkönyv +
Jegyek, hiányzások, órarended és egyéb információk megtekintése.
+
+
+
+ +
+
+
+ DKT ikon +
+
+ Digitális Kollaborációs Tér (DKT) +
Osztálytermi kommunikáció és feladatok.
+
+
+ +
+
+ Kijelentkezés ikon +
+
+ Kijelentkezés +
Kilépés a rendszerből
+
+
+
+
+
+
+ `; + + const transformRoleSelectPage = async () => { + try { + if (document.readyState !== 'complete') { + await new Promise(resolve => window.addEventListener('load', resolve)); + } + + + const schoolNameEl = document.querySelector('.IntezmenyNev'); + const schoolName = schoolNameEl?.textContent.trim() || 'Iskola neve'; + const [schoolCode, fullSchoolName] = schoolName.split(' - '); + + + const schoolSubdomain = window.location.hostname.split('.')[0]; + + const userNameEl = document.querySelector('.UserName'); + const userName = userNameEl?.textContent.trim() || 'Felhasználónév'; + + + if (schoolCode && fullSchoolName) { + setCookie('schoolCode', schoolCode); + setCookie('schoolName', fullSchoolName); + setCookie('schoolSubdomain', schoolSubdomain); + } + if (userName) { + setCookie('userName', userName); + } + + + document.body.innerHTML = createHTML(schoolCode, fullSchoolName, userName); + + + const links = [ + { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, + { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: true }, + { href: 'https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Figtree:wght@300..900&display=swap', rel: 'stylesheet' } + ]; + + links.forEach(link => { + const linkElement = document.createElement('link'); + Object.entries(link).forEach(([key, value]) => linkElement[key] = value); + document.head.appendChild(linkElement); + }); + + + const timerInterval = startLogoutTimer(); + + + document.querySelector('.role-card[data-role="Ellenorzo"]')?.addEventListener('click', () => { + handleRoleChange('Ellenorzo'); + }); + + document.querySelector('.role-card[data-role="DKT"]')?.addEventListener('click', () => { + window.location.href = '/Adminisztracio/BelepesKezelo/DKTTanuloOrGondviselo'; + }); + + document.querySelector('.logout-card')?.addEventListener('click', async () => { + try { + clearInterval(timerInterval); + await fetch('/Home/LogOut', { method: 'POST' }); + } catch { + window.location.replace("https://idp.e-kreta.hu/Account/Logout"); + } finally { + window.location.replace("https://idp.e-kreta.hu/Account/Logout"); + } + }); + + } catch (error) { + console.error('Error transforming page:', error); + } + }; + + + if (window.location.href.includes('/Adminisztracio/BelepesKezelo')) { + transformRoleSelectPage(); + } +})(); \ No newline at end of file diff --git a/settings/index.css b/settings/index.css new file mode 100644 index 0000000..f64ab79 --- /dev/null +++ b/settings/index.css @@ -0,0 +1,276 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + width: 400px; + margin: 0; + padding: 0; + color: var(--text-primary); + background-color: var(--background) !important; + font-family: "Montserrat", serif; + font-size: 14px; +} + + +* { + scrollbar-width: none; + -ms-overflow-style: none; +} + +*::-webkit-scrollbar { + display: none; +} + +.popup-container { + padding: 16px; +} + +.popup-header { + text-align: center; + margin-bottom: 16px; +} + +.logo-text { + color: var(--text-primary); + font-size: 20px; + font-weight: 600; + margin: 8px 0; + display: flex; + align-items: center; + justify-content: center; +} + +.logo { + width: 20px; + border-radius: 6px; + margin-right: 8px; +} + +.settings-card, +.about-card, +.support-card { + background: var(--card-card); + border-radius: 16px; + padding: 16px; + margin-bottom: 16px; + box-shadow: 0px 1px var(--shadow-blur) 0px var(--accent-shadow); +} + +h2 { + font-size: 16px; + font-weight: 600; + color: var(--text-primary); + margin-bottom: 12px; + background-color: var(--card-card); +} + +.settings-group { + display: flex; + flex-direction: column; + gap: 16px; +} + +.setting-section { + display: flex; + flex-direction: column; + gap: 12px; +} + +.setting-header { + display: flex; + align-items: center; + gap: 8px; + color: var(--text-primary); + font-weight: 500; +} + + +.theme-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 12px; +} +.theme-option { + background: none; + border: none; + padding: 0; + cursor: pointer; + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + transition: transform 0.2s ease; +} +.theme-option:hover { + transform: translateY(-2px); +} +.theme-option.active .theme-preview { + outline: 2px solid var(--accent-accent); + outline-offset: 2px; +} +.theme-preview { + width: 100%; + height: 100px; + border-radius: 8px; + overflow: hidden; + position: relative; +} +.theme-option.disabled { + opacity: 0.5; + cursor: not-allowed; + position: relative; +} + +.theme-option.disabled::after { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.1); + border-radius: 8px; +} + + +.theme-preview.light-blue { + background: #DAE4F7; +} + +.theme-preview.light-blue .preview-header { + background: #EDF3FF; +} + +.theme-preview.light-blue .preview-card { + background: #FBFCFF; +} + + +.theme-preview.light-green { + background: #FAFFF0; +} + +.theme-preview.light-green .preview-header { + background: #F3FBDE; +} + +.theme-preview.light-green .preview-card { + background: #FEFFFD; +} + + +.theme-preview.dark-blue { + background: #070A0E; +} + +.theme-preview.dark-blue .preview-header { + background: #0F131B; +} + +.theme-preview.dark-blue .preview-card { + background: #131822; +} + + +.theme-preview.dark-green { + background: #0D1202; +} + +.theme-preview.dark-green .preview-header { + background: #141905; +} + +.theme-preview.dark-green .preview-card { + background: #20290b; +} + +.preview-header { + height: 30%; + width: 100%; +} + +.preview-content { + padding: 8px; +} + +.preview-card { + height: 30px; + border-radius: 4px; +} + +.theme-name { + color: var(--text-primary); + font-size: 12px; + font-weight: 500; +} + +.about-content, +.support-content { + color: var(--text-secondary); + font-size: 14px; + line-height: 1.5; +} + +.about-content p, +.support-content p { + margin-bottom: 12px; +} + +.github-link { + display: inline-flex; + align-items: center; + gap: 6px; + color: var(--accent-accent); + text-decoration: none; + font-weight: 500; + transition: color 0.2s; +} + +.github-link:hover { + color: var(--accent-secondary); +} + +.support-buttons { + display: flex; + gap: 8px; + margin-top: 12px; +} + +.support-button { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + gap: 6px; + padding: 8px; + background: var(--accent-15); + color: var(--text-primary); + text-decoration: none; + border-radius: 8px; + font-weight: 500; + transition: all 0.2s; +} + +.support-button:hover { + background: var(--accent-accent); + color: var(--button-secondaryFill); +} + +.popup-footer { + text-align: center; + margin-top: 16px; +} + +.version-info { + color: var(--text-secondary); + font-size: 12px; +} + + +.material-icons-round { + font-size: 18px; + vertical-align: middle; +} \ No newline at end of file diff --git a/settings/index.html b/settings/index.html new file mode 100644 index 0000000..974f18f --- /dev/null +++ b/settings/index.html @@ -0,0 +1,103 @@ + + + + + + Firxa Beállítások + + + + + + + + + + + + \ No newline at end of file diff --git a/settings/index.js b/settings/index.js new file mode 100644 index 0000000..06daaa2 --- /dev/null +++ b/settings/index.js @@ -0,0 +1,141 @@ +document.addEventListener('DOMContentLoaded', async () => { + + 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 setCookie(name, value, days = 365) { + const date = new Date(); + date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); + const expires = `expires=${date.toUTCString()}`; + document.cookie = `${name}=${value}; ${expires}; path=/; domain=.e-kreta.hu`; + } + + async function getCurrentTheme() { + try { + const [tab] = await chrome.tabs.query({ active: true, currentWindow: true }); + const response = await chrome.tabs.sendMessage(tab.id, { action: 'getTheme' }); + return response.theme; + } catch (error) { + console.error('Error getting current theme:', error); + return 'default'; + } + } + + function updateThemeButtons(currentTheme) { + document.querySelectorAll('.theme-option').forEach(button => { + const theme = button.dataset.theme; + button.classList.toggle('active', theme === currentTheme); + + + /*if (theme === 'light-blue' || theme === 'dark-blue' || theme === 'default') { + button.classList.add('disabled'); + button.setAttribute('disabled', 'true'); + }*/ + }); + } + + + function isThemeDisabled(theme) { + return theme === 'default' || theme === 'dark-blue'; + } + + async function applyTheme(theme) { + + if (isThemeDisabled(theme)) { + alert('Ez a téma jelenleg nem elérhető.'); + return; + } + + + setCookie('themePreference', theme); + localStorage.setItem('themePreference', theme); + + + document.documentElement.setAttribute('data-theme', theme); + + + updateThemeButtons(theme); + + + const tabs = await chrome.tabs.query({}); + tabs.forEach(tab => { + chrome.tabs.sendMessage(tab.id, { + action: 'changeTheme', + theme: theme + }).catch(() => { + + console.log('Tab not ready for theme change:', tab.id); + }); + }); + } + + + const themeButtons = document.querySelectorAll('.theme-option'); + themeButtons.forEach(button => { + button.addEventListener('click', () => { + const theme = button.dataset.theme; + + + if (button.hasAttribute('disabled')) { + alert('Ez a téma jelenleg nem elérhető.'); + return; + } + + applyTheme(theme); + }); + }); + + + let initialTheme = localStorage.getItem('themePreference') || + getCookie('themePreference') || + await getCurrentTheme() || + 'light-green'; + + + if (isThemeDisabled(initialTheme)) { + initialTheme = 'light-green'; + } + + + await applyTheme(initialTheme); + + + chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { + if (message.action === 'themeChanged') { + updateThemeButtons(message.theme); + document.documentElement.setAttribute('data-theme', message.theme); + } + }); + + + const manifest = chrome.runtime.getManifest(); + document.getElementById('version').textContent = `v${manifest.version}`; + + + themeButtons.forEach(button => { + button.addEventListener('mouseover', () => { + if (!button.hasAttribute('disabled')) { + button.style.transform = 'translateY(-2px)'; + } + }); + + button.addEventListener('mouseout', () => { + button.style.transform = 'translateY(0)'; + }); + }); +}); \ No newline at end of file diff --git a/timetable/timetable.css b/timetable/timetable.css new file mode 100644 index 0000000..bc0b779 --- /dev/null +++ b/timetable/timetable.css @@ -0,0 +1,822 @@ +@font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 400; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw5aXp-p7K4KLg.woff2) format('woff2'); +} + +@font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 500; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Hw5aXp-p7K4KLg.woff2) format('woff2'); +} + +@font-face { + font-family: 'Montserrat'; + font-style: normal; + font-weight: 600; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCu173w5aXp-p7K4KLg.woff2) format('woff2'); +} + +@font-face { + font-family: 'Figtree'; + src: url('chrome-extension://__MSG_@@extension_id__/fonts/Figtree-Regular.woff2') format('woff2'); + font-weight: 400; + font-style: normal; +} + + +* { + box-sizing: border-box; + margin: 0; + padding: 0; + font-family: 'Montserrat', sans-serif; +} + +body { + margin: 0; + padding: 0; + color: var(--text-primary); + background-color: var(--background) !important; + min-height: 100vh; + font-size: 16px; +} + +/* Loading Screen */ +.loading-screen { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: var(--background); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + z-index: 9999; +} + +.loading-logo { + width: 48px; + height: 48px; + border-radius: 16px; +} + +.loading-text { + color: var(--text-primary); + text-align: center; + font-family: Montserrat; + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +.loading-text2 { + align-self: stretch; + color: var(--text-secondary); + text-align: center; + font-family: Figtree; + font-size: 16px; + font-style: normal; + font-weight: 500; + line-height: 130%; +} + +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (max-width: 768px) { + body { + font-size: 14px; + } +} + +.kreta-container { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +/* Update header styles to match dashboard */ +.kreta-header { + padding: clamp(1rem, 3vw, 2rem); + display: grid; + grid-template-columns: minmax(300px, 400px) 1fr minmax(200px, 300px); + align-items: center; + gap: 1rem; +} + +@media (max-width: 1200px) { + .kreta-header { + grid-template-columns: minmax(250px, 350px) 1fr minmax(180px, 250px); + } +} + +@media (max-width: 768px) { + .kreta-header { + grid-template-columns: 1fr auto; + grid-template-areas: + "school user" + "nav nav"; + padding: 1rem; + gap: 0.5rem; + } +} + +.school-info { + margin: 0; +} + +@media (max-width: 768px) { + .school-info { + grid-area: school; + max-width: none; + display: flex; + align-items: center; + gap: 0.5rem; + } +} + +.logo-text { + color: var(--text-primary); + font-size: 24px; + font-weight: 600; + margin: 0 0 0.5rem; + display: flex; + align-items: center; +} + +@media (max-width: 768px) { + .logo-text { + margin: 0; + font-size: 20px; + } +} + +.logo { + width: 24px; + border-radius: 8px; + margin-right: 0.5rem; +} + +.school-details { + color: var(--text-secondary); + font-size: 14px; +} + +.school-details span { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 300px; +} + +@media (max-width: 768px) { + .school-details span { + max-width: 200px; + } + + .school-details { + font-size: 12px; + } +} + +/* Updated navigation styles */ +.kreta-nav { + padding: 0 clamp(0.5rem, 3vw, 1.5rem); + position: sticky; + top: 0; + z-index: 100; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + scrollbar-width: none; + -ms-overflow-style: none; + display: flex; + justify-content: center; +} + +@media (max-width: 768px) { + .kreta-nav { + grid-area: nav; + padding: 0; + margin-top: 0.5rem; + } +} + +.kreta-nav::-webkit-scrollbar { + display: none; +} + +.nav-links { + display: flex; + gap: clamp(0.5rem, 2vw, 1rem); + padding: 0.25rem; + justify-content: center; +} + +@media (max-width: 768px) { + .nav-links { + justify-content: flex-start; + width: 100%; + gap: 0.25rem; + } +} + +.nav-links a { + color: var(--text-secondary); + text-decoration: none; + padding: clamp(0.5rem, 1.5vw, 1rem) 0.5rem; + font-weight: 500; + white-space: nowrap; + transition: all 0.2s ease; + display: flex; + align-items: center; + gap: 0.5rem; + border-radius: 8px; +} + +@media (max-width: 768px) { + .nav-links a { + padding: 0.5rem; + font-size: 13px; + } + + .nav-links a .material-icons-round { + font-size: 20px; + } +} + +.nav-links a:hover { + color: var(--text-primary); + text-decoration: none; + background-color: var(--card-card); +} + +.nav-links a.active { + color: var(--accent-accent); +} + +/* User profile styles */ +.user-profile { + position: relative; + justify-self: flex-end; +} + +@media (max-width: 768px) { + .user-profile { + grid-area: user; + } +} + +.user-dropdown-btn { + display: flex; + align-items: center; + gap: 1rem; + background: none; + border: none; + cursor: pointer; + padding: 0.5rem; + border-radius: 8px; + transition: background-color 0.2s; +} + +.user-dropdown-btn:hover { + background: var(--card-card); +} + +.user-info { + text-align: right; +} + +.user-name { + display: block; + color: var(--text-primary); + font-size: 16px; + font-weight: 500; +} + +.user-time { + display: block; + color: var(--text-secondary); + font-size: 14px; +} + +.user-dropdown { + position: absolute; + top: 100%; + right: 0; + margin-top: 0.5rem; + background: var(--card-card); + border-radius: 12px; + box-shadow: 0 4px 6px -1px var(--accent-shadow); + width: 200px; + display: none; + z-index: 1000; +} + +.user-dropdown.show { + display: block; + animation: dropdownShow 0.2s ease; +} + +.dropdown-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.75rem 1rem; + color: var(--text-primary); + text-decoration: none; + transition: background-color 0.2s; +} + +.dropdown-item:hover { + background: var(--button-secondaryFill); +} + +/* Main content styles */ +.kreta-main { + flex: 1; + padding: clamp(1rem, 3vw, 2rem); + max-width: 1400px; + margin: 0 auto; + width: 100%; +} + +/* Card styles */ +.card { + border-radius: 24px; + overflow: hidden; + animation: fadeIn 0.3s ease; + margin-bottom: 1rem; +} + +/* Timetable specific styles */ +.timetable-grid { + display: grid; + grid-template-columns: 80px repeat(5, 1fr); + overflow-x: auto; +} + +.grid-header { + padding: 12px; + text-align: center; + font-weight: 600; + color: var(--text-primary); + border-radius: 12px; + min-width: 120px; +} + +.grid-header:first-child { + min-width: 80px; +} + +.grid-header { + display: flex; + justify-content: space-between; + padding: 0 10px; +} + +.day-name { + text-align: left; + color: var(--text-primary); + font-family: Montserrat; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: normal; +} + +.day-date { + text-align: right; + color: var(--text-secondary); + font-family: Figtree; + font-size: 16px; + font-style: normal; + font-weight: 500; + line-height: 130%; +} + +.time-slot { + padding: 12px; + text-align: center; + color: var(--text-secondary); + font-size: 14px; + border-radius: 12px; +} + +.lesson-slot { + min-height: 100px; + border-radius: 12px; + padding: 8px; + transition: transform 0.2s ease; +} + +.lesson-slot:hover { + transform: scale(1.02); +} + +.lesson-card { + display: flex; + padding: 16px; + flex-direction: column; + align-items: flex-start; + gap: 10px; + align-self: stretch; + border-radius: 16px; + background: var(--card-card); + box-shadow: 0px 1px var(--shadow-blur, 2px) 0px var(--accent-shadow); + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + transform: translateY(0); +} + +.lesson-card:hover { + transform: translateY(-4px); + box-shadow: 0 8px 12px var(--accent-shadow); +} + +.lesson-card.substituted { + background: var(--warning-card); +} + +.lesson-card.cancelled { + border-radius: 16px; + background: var(--card-translucent); +} + +.lesson-card.cancelled .lesson-subject, .lesson-card.cancelled .lesson-teacher, .lesson-card.cancelled .lesson-room { + opacity: 0.5; + text-decoration: line-through; +} + +.lesson-subject { + align-self: stretch; + color: var(--text-primary); + font-family: Montserrat; + font-size: 16px; + font-style: normal; + font-weight: 600; + line-height: normal; +} + +.lesson-teacher { + color: var(--text-secondary); + font-family: Figtree; + font-size: 16px; + font-style: normal; + font-weight: 500; + line-height: 130%; +} +.lesson-bottom { + margin-top: auto; + display: flex; + justify-content: space-between; + align-items: flex-end; + width: 100%; +} + +.lesson-room { + background: var(--accent-15); + color: var(--text-secondary); + padding: 4px 8px; + border-radius: 12px; + font-size: 12px; + font-weight: 500; +} + +.lesson-card.substituted .lesson-bottom .lesson-room { + background: var(--warning-15); +} +.lesson-time { + color: var(--text-secondary); + font-size: 12px; + font-weight: 500; + margin-left: auto; + text-align: right; + min-width: 45px; +} +.lesson-indicators { + position: absolute; + top: 8px; + right: 8px; + display: flex; + gap: 4px; +} + +.lesson-indicator { + display: flex; + align-items: center; + justify-content: center; + width: 20px; + height: 20px; + border-radius: 50%; + background: var(--accent-15); + color: var(--accent-accent); +} + +.lesson-indicator.homework-indicator { + background: var(--accent-15); + color: var(--accent-accent); +} + +.lesson-indicator.test-indicator { + background: var(--warning-15); + color: var(--warning-accent); +} + +.lesson-indicator .material-icons-round { + font-size: 14px; +} + +/* Week selector styling */ +.week-controls { + display: flex; + gap: 16px; + align-items: center; + margin: 16px; + background: var(--card-card); + border-radius: 24px; + max-width: 400px; +} + +.week-select { + flex: 1; + padding: 12px; + border: none; + border-radius: 12px; + background: var(--button-secondaryFill); + color: var(--text-primary); + font-family: inherit; + cursor: pointer; +} + +.week-nav-btn { + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + border: none; + border-radius: 12px; + background: var(--button-secondaryFill); + color: var(--text-secondary); + cursor: pointer; + transition: all 0.2s ease; +} + +.week-nav-btn:hover { + background: var(--accent-15); + color: var(--accent-accent); +} + +/* Responsive adjustments */ +@media (max-width: 1024px) { + .timetable-grid { + grid-template-columns: 60px repeat(5, minmax(200px, 1fr)); + } + + .lesson-slot { + min-height: 80px; + } +} + +@media (max-width: 768px) { + .timetable-container { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + + .lesson-card { + padding: 8px; + } + + .lesson-subject { + font-size: 14px; + } + + .lesson-teacher, + .lesson-room { + font-size: 12px; + } +} + +/* Modal styles */ +.lesson-modal { + display: none; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0,0,0,0.5); + z-index: 1000; + padding: 1rem; + align-items: center; + justify-content: center; + opacity: 0; + transition: opacity 0.3s ease; +} + +.lesson-modal.show { + display: flex; + opacity: 1; +} + +.modal-content { + background: var(--card-card); + border-radius: 24px; + border-width: 0 !important; + width: 100%; + max-width: 500px; + max-height: 90vh; + overflow-y: auto; + position: relative; + transform: translateY(20px); + opacity: 0; + transition: all 0.3s ease; +} + +.lesson-modal.show .modal-content { + transform: translateY(0); + opacity: 1; +} + +.modal-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1.5rem; + background: var(--button-secondaryFill); +} + +.modal-title { + font-size: 18px; + font-weight: 600; + color: var(--text-primary); +} + +.modal-close { + background: none; + border: none; + color: var(--text-secondary); + cursor: pointer; + padding: 0.5rem; + border-radius: 8px; + transition: all 0.2s ease; +} + +.modal-close:hover { + background: var(--background); + color: var(--text-primary); +} + +.modal-body { + padding: 1.5rem; + background-color: var(--button-secondaryFill); +} + +.lesson-details { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.detail-item { + display: flex; + align-items: center; + gap: 0.75rem; +} + +.detail-label { + color: var(--text-secondary); + font-weight: 500; + min-width: 80px; +} + +.detail-value { + color: var(--text-primary); +} + +.modal-section { + margin-top: 1.5rem; + padding-top: 1.5rem; + border-top: 1px solid var(--background-0); +} + +.modal-section h4 { + display: flex; + align-items: center; + gap: 0.5rem; + color: var(--text-primary); + font-size: 16px; + margin-bottom: 0.75rem; +} + +.homework-section h4 { + color: var(--accent-accent); +} + +.test-section h4 { + color: var(--warning-accent); +} + +.homework-content, .test-content { + background: var(--card-translucent); + padding: 1rem; + border-radius: 8px; + color: var(--text-primary); +} + +/* Animations */ +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(-20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes dropdownShow { + from { + opacity: 0; + transform: translateY(-10px) scale(0.95); + } + to { + opacity: 1; + transform: translateY(0) scale(1); + } +} + +@keyframes modalShow { + from { + opacity: 0; + transform: scale(0.9); + } + to { + opacity: 1; + transform: scale(1); + } +} + +/* Responsive adjustments */ +@media (max-width: 768px) { + .kreta-header { + flex-direction: column; + text-align: center; + } + + .user-info { + text-align: center; + } + + .nav-links { + justify-content: start; + overflow-x: auto; + padding-bottom: 0.5rem; + } + + .nav-links::-webkit-scrollbar { + display: none; + } + + .lesson-cell { + min-width: 200px; + } +} + +/* Material Icons */ +.material-icons-round { + font-size: 20px; + vertical-align: middle; +} + +/* Scrollbar styling */ +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-track { + background: var(--background); +} + +::-webkit-scrollbar-thumb { + background: var(--text-secondary); + border-radius: 4px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--text-primary); +} \ No newline at end of file diff --git a/timetable/timetable.js b/timetable/timetable.js new file mode 100644 index 0000000..5e4286e --- /dev/null +++ b/timetable/timetable.js @@ -0,0 +1,543 @@ +(() => { + // Segédfüggvények + function convertTimeToMinutes(timeStr) { + const [hours, minutes] = timeStr.split(':').map(Number); + return hours * 60 + minutes; + } + 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) + '...'; + } + + function showLoadingScreen() { + const loadingScreen = document.createElement('div'); + loadingScreen.className = 'loading-screen'; + loadingScreen.innerHTML = ` + +
Betöltés alatt...
+

Kis türelmet!

+ `; + document.body.appendChild(loadingScreen); + } + + function hideLoadingScreen() { + const loadingScreen = document.querySelector('.loading-screen'); + if (loadingScreen) { + loadingScreen.style.opacity = '0'; + loadingScreen.style.transition = 'opacity 0.3s ease'; + setTimeout(() => loadingScreen.remove(), 300); + } + } + + // DOM elemek várása + 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 + }); + }); + } + + // Órarendi adatok gyűjtése + async function collectTimetableData() { + await waitForElement('#Calendar'); + await new Promise(resolve => setTimeout(resolve, 1000)); + + const calendar = document.querySelector('#Calendar'); + const dates = Array.from(document.querySelectorAll('.fc-day-header')).map(header => { + const fullText = header.textContent.trim(); + // Remove the day name from the beginning and clean up the format + const dateText = fullText.replace(/^(hétfő|kedd|szerda|csütörtök|péntek)/, '').trim(); + return { + date: fullText, + formattedDate: dateText + }; + }); + // Fix the Thursday issue by ensuring we have all 5 days + if (dates.length === 4) { + // Get Wednesday's date parts + const wedDate = dates[2].formattedDate; + const [month, day] = wedDate.split(' '); + const dayNum = parseInt(day.replace('.', '')); + + // Create Thursday's date + const thursdayDate = `${month} ${dayNum + 1}.`; + + dates.splice(3, 0, { + date: `csütörtök${thursdayDate}`, + formattedDate: thursdayDate + }); + } + // Set week selector based on the current date + const weekOptions = Array.from(document.querySelectorAll('#Calendar_tanevHetek_listbox li')); + const currentDate = dates[0]?.formattedDate; // Using Monday's date + const matchingWeek = weekOptions.find(opt => opt.textContent.includes(currentDate)); + + if (matchingWeek) { + const kendoCombo = document.querySelector('#Calendar_tanevHetek')?.__kendoWidget; + if (kendoCombo) { + const weekIndex = weekOptions.indexOf(matchingWeek); + kendoCombo.value(weekIndex.toString()); + kendoCombo.trigger('change'); + } + } + const timetableData = { + schoolInfo: { + name: getCookie('schoolName') || 'Iskola', + id: getCookie('schoolCode') || '' + }, + userData: { + name: getCookie('userName') || 'Felhasználó', + time: document.querySelector('.usermenu_timer')?.textContent?.trim() || '45:00' + }, + weekInfo: { + title: document.querySelector('.fc-center h2')?.textContent?.trim() || 'Hét', + options: Array.from(document.querySelectorAll('#Calendar_tanevHetek_listbox li')) + .map((li, i) => ({ + text: li.textContent.trim(), + value: i.toString(), + selected: li.classList.contains('k-state-selected') + })) + }, + weekDates: dates, // Add the dates to the data object + lessons: [] + }; + + // Órák adatainak gyűjtése + document.querySelectorAll('.fc-event').forEach(event => { + const timeEl = event.querySelector('.fc-time'); + const titleEl = event.querySelector('.fc-title'); + + if (timeEl && titleEl) { + const [startTime, endTime] = (timeEl.getAttribute('data-full') || timeEl.textContent || '').split(' - '); + const [fullSubject, teacher, room] = titleEl.innerHTML.split('
').map(str => str.trim()); + const subject = fullSubject.split('-')[0].trim(); + + timetableData.lessons.push({ + startTime, + endTime, + subject: subject || '', + teacher: teacher || '', + room: (room || '').replace(/[()]/g, ''), + day: event.closest('td').cellIndex - 1, + isSubstituted: event.querySelector('.fc-bg2') !== null, + isCancelled: event.classList.contains('fc-textline-through'), + hasHomework: titleEl.querySelector('.hasCalendarIcon') !== null, + testInfo: event.getAttribute('data-tooltiptext') || '', + homeworkDetails: event.getAttribute('data-homework') || '' + }); + } + }); + + return timetableData; + } + + // Grid generálása + function generateTimeGrid(lessons, weekDates) { + const times = [...new Set(lessons.map(l => l.startTime))].sort((a, b) => { + const timeA = convertTimeToMinutes(a); + const timeB = convertTimeToMinutes(b); + return timeA - timeB; + }); + const days = ['Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek']; + + return ` +
+ ${days.map((day, index) => ` +
+ ${day} + ${weekDates[index]?.formattedDate || ''} +
+ `).join('')} + ${times.map(time => ` +
${time}
+ ${Array(5).fill().map((_, dayIndex) => { + const dayLessons = lessons.filter(l => l.startTime === time && l.day === dayIndex); + return ` +
+ ${dayLessons.map(lesson => ` +
+
${lesson.subject}
+
${lesson.teacher}
+
+
${lesson.room}
+
${lesson.isCancelled ? 'Elmarad' : lesson.startTime}
+
+ ${lesson.hasHomework || lesson.testInfo ? ` +
+ ${lesson.hasHomework ? ` + + assignment + + ` : ''} + ${lesson.testInfo ? ` + + quiz + + ` : ''} +
+ ` : ''} +
+ `).join('')} +
+ `; + }).join('')} + `).join('')} + `; + } + // Óra részletek modal + function showLessonModal(lesson) { + const modal = document.createElement('div'); + modal.className = 'lesson-modal'; + modal.innerHTML = ` + + `; + + document.body.appendChild(modal); + + // Modal bezárás + const closeModal = () => { + modal.classList.remove('show'); + setTimeout(() => modal.remove(), 300); + }; + + modal.querySelector('.modal-close').addEventListener('click', closeModal); + modal.addEventListener('click', (e) => { + if (e.target === modal) closeModal(); + }); + + // ESC gomb kezelése + const handleEscape = (e) => { + if (e.key === 'Escape') { + closeModal(); + document.removeEventListener('keydown', handleEscape); + } + }; + document.addEventListener('keydown', handleEscape); + + // Animáció + requestAnimationFrame(() => { + modal.classList.add('show'); + }); + } + + // Eseménykezelők beállítása + function setupEventListeners(data) { + // Órakártyák + document.querySelectorAll('.lesson-card').forEach(card => { + card.addEventListener('click', () => { + const lessonData = JSON.parse(card.dataset.lesson); + showLessonModal(lessonData); + }); + }); + + // Felhasználói menü + 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'); + }); + + // Hét navigáció + const prevBtn = document.querySelector('.prev-week'); + const nextBtn = document.querySelector('.next-week'); + const weekSelect = document.querySelector('.week-select'); + + prevBtn?.addEventListener('click', async () => { + showLoadingScreen(); + const kendoCalendar = document.querySelector('#Calendar')?.__kendoWidget; + if (kendoCalendar) { + kendoCalendar.prev(); + await new Promise(resolve => setTimeout(resolve, 500)); + await transformTimetablePage(); + } + }); + + nextBtn?.addEventListener('click', async () => { + showLoadingScreen(); + const kendoCalendar = document.querySelector('#Calendar')?.__kendoWidget; + if (kendoCalendar) { + kendoCalendar.next(); + await new Promise(resolve => setTimeout(resolve, 500)); + await transformTimetablePage(); + } + }); + + weekSelect?.addEventListener('change', async function() { + showLoadingScreen(); + const kendoCombo = document.querySelector('#Calendar_tanevHetek')?.__kendoWidget; + if (kendoCombo) { + kendoCombo.value(this.value); + kendoCombo.trigger('change'); + await new Promise(resolve => setTimeout(resolve, 500)); + await transformTimetablePage(); + } + }); + + // Kijelentkezés időzítő + const startTime = parseInt(data.userData.time?.match(/\d+/)?.[0] || "45"); + let timeLeft = startTime * 60; + + const updateTimer = () => { + const minutes = Math.floor(timeLeft / 60); + const seconds = timeLeft % 60; + const timerEl = document.getElementById('logoutTimer'); + if (timerEl) { + timerEl.textContent = `${minutes}:${seconds.toString().padStart(2, '0')}`; + } + + if (timeLeft <= 0) { + window.location.href = '/Home/Logout'; + } else { + timeLeft--; + } + }; + + updateTimer(); + setInterval(updateTimer, 1000); + } + + // Oldal transzformáció + async function transformTimetablePage() { + try { + showLoadingScreen(); + + const data = await collectTimetableData(); + if (!data) { + hideLoadingScreen(); + return; + } + + const schoolNameFull = `${data.schoolInfo.id} - ${data.schoolInfo.name}`; + const shortenedSchoolName = shortenSchoolName(schoolNameFull); + + document.body.innerHTML = ` +
+
+
+

+ + Firka +

+
+ ${shortenedSchoolName} +
+
+ + + + +
+ +
+
+ + + +
+ +
+
+ ${generateTimeGrid(data.lessons, data.weekDates)} +
+
+
+
+ `; + + // Szükséges fontok hozzáadása + const links = [ + { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, + { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: true }, + { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap' }, + { rel: 'stylesheet', href: 'https://fonts.googleapis.com/icon?family=Material+Icons+Round' } + ]; + + links.forEach(link => { + const linkElement = document.createElement('link'); + Object.entries(link).forEach(([key, value]) => { + linkElement[key] = value; + }); + document.head.appendChild(linkElement); + }); + + setupEventListeners(data); + hideLoadingScreen(); + + } catch (error) { + console.error('Hiba az oldal átalakítása során:', error); + hideLoadingScreen(); + } + } + + // Beállítások gomb kezelése + 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'); + }); + + if (window.location.href.includes('/Orarend/')) { + transformTimetablePage(); + } +})(); \ No newline at end of file

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 W^Io_8_WkL;>!adB1G|sf%nSh6jJF#A literal 0 HcmV?d00001 diff --git a/fonts/Montserrat-SemiBold.woff2 b/fonts/Montserrat-SemiBold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1b8c6e335879c3e14dac305769ea960d7755cda4 GIT binary patch literal 128544 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∈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 { + const transformForgotPasswordPage = () => { + + const isDarkMode = localStorage.getItem('darkMode') === 'true'; + document.documentElement.setAttribute('data-theme', isDarkMode ? 'dark' : 'light'); + + + chrome.runtime.onMessage.addListener((message) => { + if (message.action === 'toggleTheme') { + document.documentElement.setAttribute('data-theme', message.darkMode ? 'dark' : 'light'); + localStorage.setItem('darkMode', message.darkMode); + } + }); + + + document.body.innerHTML = ` +