mirror of
https://github.com/QwIT-Development/firka-extension.git
synced 2026-06-12 03:41:39 +02:00
145 lines
4.6 KiB
JavaScript
145 lines
4.6 KiB
JavaScript
function initializeTransformation() {
|
|
const form = document.querySelector("form");
|
|
const autocomplete = document.querySelector(".autocomplete");
|
|
|
|
if (form && autocomplete) {
|
|
applyFirkaStyling();
|
|
} else {
|
|
setTimeout(initializeTransformation, 500);
|
|
}
|
|
}
|
|
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
setTimeout(initializeTransformation, 1000);
|
|
});
|
|
|
|
if (
|
|
document.readyState === "complete" ||
|
|
document.readyState === "interactive"
|
|
) {
|
|
setTimeout(initializeTransformation, 1000);
|
|
}
|
|
|
|
async function applyFirkaStyling() {
|
|
try {
|
|
const theme =
|
|
await storageManager.get("themePreference") ||
|
|
localStorage.getItem("themePreference") ||
|
|
"light-green";
|
|
document.documentElement.setAttribute("data-theme", theme);
|
|
if (typeof loadingScreen !== "undefined") {
|
|
loadingScreen.hide();
|
|
}
|
|
const originalForm = document.querySelector("form");
|
|
const instituteInput = document.querySelector(".autocomplete");
|
|
const redirectButton = document.getElementById("redirectToInstitute");
|
|
const instituteCodeInput = document.querySelector(".autocomplete-value");
|
|
const requestToken = document.querySelector(
|
|
'input[name="__RequestVerificationToken"]',
|
|
);
|
|
const searchWrapper = document.createElement("div");
|
|
searchWrapper.className = "firka-search-wrapper";
|
|
const firkaHeader = document.createElement("div");
|
|
firkaHeader.className = "firka-header";
|
|
const logoText = document.createElement('p');
|
|
logoText.className = 'logo-text';
|
|
|
|
const logoImg = document.createElement('img');
|
|
logoImg.src = chrome.runtime.getURL('images/firka_logo.png');
|
|
logoImg.alt = 'Firka';
|
|
logoImg.className = 'logos';
|
|
|
|
logoText.appendChild(logoImg);
|
|
logoText.appendChild(document.createTextNode('Firka'));
|
|
|
|
const searchTitle = document.createElement('h1');
|
|
searchTitle.className = 'search-title';
|
|
searchTitle.textContent = 'Válassz iskolát';
|
|
|
|
firkaHeader.appendChild(logoText);
|
|
firkaHeader.appendChild(searchTitle);
|
|
const formContainer = document.createElement("div");
|
|
formContainer.className = "firka-form-container";
|
|
const firkaFooter = document.createElement("div");
|
|
firkaFooter.className = "firka-footer";
|
|
const privacyLink = document.createElement('a');
|
|
privacyLink.href = 'https://tudasbazis.ekreta.hu/pages/viewpage.action?pageId=4064926';
|
|
privacyLink.target = '_blank';
|
|
privacyLink.className = 'privacy-link';
|
|
privacyLink.textContent = 'Adatkezelési tájékoztató';
|
|
|
|
firkaFooter.appendChild(privacyLink);
|
|
const existingWrapper = document.querySelector(".firka-search-wrapper");
|
|
if (existingWrapper) {
|
|
existingWrapper.remove();
|
|
}
|
|
searchWrapper.appendChild(firkaHeader);
|
|
if (originalForm) {
|
|
formContainer.appendChild(originalForm);
|
|
searchWrapper.appendChild(formContainer);
|
|
}
|
|
searchWrapper.appendChild(firkaFooter);
|
|
document.body.appendChild(searchWrapper);
|
|
setupAutocompleteListeners();
|
|
if (redirectButton) {
|
|
redirectButton.addEventListener("click", function (event) {
|
|
if (!instituteCodeInput.value) {
|
|
event.preventDefault();
|
|
alert(LanguageManager.t("search.select_institution"));
|
|
}
|
|
});
|
|
}
|
|
observeAutocompleteValue(instituteCodeInput, redirectButton);
|
|
} catch (error) {
|
|
}
|
|
}
|
|
|
|
function setupAutocompleteListeners() {
|
|
const autocompleteInput = document.querySelector(".autocomplete");
|
|
const autocompleteValue = document.querySelector(".autocomplete-value");
|
|
const redirectButton = document.getElementById("redirectToInstitute");
|
|
|
|
if (autocompleteInput && autocompleteValue) {
|
|
const observer = new MutationObserver((mutations) => {
|
|
const dropdown = document.querySelector(".autocomplete-dropdown");
|
|
if (dropdown) {
|
|
dropdown.classList.add("dropdown-menu");
|
|
const items = dropdown.querySelectorAll("li");
|
|
items.forEach((item) => {
|
|
item.classList.add("dropdown-item");
|
|
item.addEventListener("click", () => {
|
|
if (redirectButton) {
|
|
redirectButton.disabled = false;
|
|
}
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
observer.observe(document.body, {
|
|
childList: true,
|
|
subtree: true,
|
|
});
|
|
}
|
|
}
|
|
|
|
function observeAutocompleteValue(valueInput, button) {
|
|
if (!valueInput || !button) return;
|
|
|
|
const observer = new MutationObserver((mutations) => {
|
|
button.disabled = !valueInput.value;
|
|
});
|
|
|
|
observer.observe(valueInput, {
|
|
attributes: true,
|
|
attributeFilter: ["value"],
|
|
});
|
|
|
|
const checkInterval = setInterval(() => {
|
|
if (valueInput.value) {
|
|
button.disabled = false;
|
|
clearInterval(checkInterval);
|
|
}
|
|
}, 500);
|
|
}
|