mirror of
https://github.com/QwIT-Development/firka-extension.git
synced 2026-06-12 03:41:39 +02:00
Online ora
This commit is contained in:
1
icons/contact.svg
Normal file
1
icons/contact.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 3.223a9.003 9.003 0 0 0-5.605 13.592L3 21l4.185-1.395A9.003 9.003 0 0 0 20.777 14m0-4A9.01 9.01 0 0 0 14 3.223M17 12a5 5 0 0 0-5-5m1 5a1 1 0 0 0-1-1"/></svg>
|
||||||
|
After Width: | Height: | Size: 353 B |
|
Before Width: | Height: | Size: 365 B After Width: | Height: | Size: 365 B |
@@ -655,16 +655,28 @@
|
|||||||
lesson.testInfo
|
lesson.testInfo
|
||||||
? (() => {
|
? (() => {
|
||||||
const testType = lesson.testId ? testTypeMap[lesson.testId] : null;
|
const testType = lesson.testId ? testTypeMap[lesson.testId] : null;
|
||||||
if (testType === "KONTAKT ÓRA") {
|
const isKontaktOra = testType === "KONTAKT ÓRA";
|
||||||
return "";
|
|
||||||
}
|
|
||||||
const isProjektOra = testType === "PROJEKT ÓRA";
|
const isProjektOra = testType === "PROJEKT ÓRA";
|
||||||
const indicatorClass = isProjektOra ? "homework-indicator" : "test-indicator";
|
let indicatorClass = "test-indicator";
|
||||||
const iconPath = isProjektOra ? "icons/online.svg" : "icons/assigment.svg";
|
let iconPath = "icons/assigment.svg";
|
||||||
const titleText = isProjektOra ? "Online óra" : LanguageManager.t("timetable.test_indicator");
|
let titleText = LanguageManager.t("timetable.test_indicator");
|
||||||
|
let altText = "Teszt";
|
||||||
|
|
||||||
|
if (isKontaktOra) {
|
||||||
|
indicatorClass = "homework-indicator";
|
||||||
|
iconPath = "icons/contact.svg";
|
||||||
|
titleText = "Kontakt óra";
|
||||||
|
altText = "Kontakt óra";
|
||||||
|
} else if (isProjektOra) {
|
||||||
|
indicatorClass = "homework-indicator";
|
||||||
|
iconPath = "icons/project.svg";
|
||||||
|
titleText = "Projekt óra";
|
||||||
|
altText = "Projekt óra";
|
||||||
|
}
|
||||||
|
|
||||||
return `
|
return `
|
||||||
<span class="lesson-indicator ${indicatorClass}" title="${titleText}">
|
<span class="lesson-indicator ${indicatorClass}" title="${titleText}">
|
||||||
<img src="${chrome.runtime.getURL(iconPath)}" alt="${isProjektOra ? 'Online óra' : 'Teszt'}" style="width: 20px; height: 20px;">
|
<img src="${chrome.runtime.getURL(iconPath)}" alt="${altText}" style="width: 20px; height: 20px;">
|
||||||
</span>
|
</span>
|
||||||
`;
|
`;
|
||||||
})()
|
})()
|
||||||
@@ -1249,195 +1261,209 @@
|
|||||||
if (lesson.testId) {
|
if (lesson.testId) {
|
||||||
testDetails = await loadTestDetailsFromAPI(lesson.testId);
|
testDetails = await loadTestDetailsFromAPI(lesson.testId);
|
||||||
}
|
}
|
||||||
|
|
||||||
const isKontaktOra = testDetails && testDetails.type === "KONTAKT ÓRA";
|
const isKontaktOra = testDetails && testDetails.type === "KONTAKT ÓRA";
|
||||||
const isProjektOra = testDetails && testDetails.type === "PROJEKT ÓRA";
|
const isProjektOra = testDetails && testDetails.type === "PROJEKT ÓRA";
|
||||||
|
const isSpecialType = isKontaktOra || isProjektOra;
|
||||||
|
|
||||||
if (!isKontaktOra) {
|
const testSection = document.createElement('div');
|
||||||
const testSection = document.createElement('div');
|
testSection.className = isSpecialType ? 'modal-section homework-section' : 'modal-section test-section';
|
||||||
testSection.className = isProjektOra ? 'modal-section homework-section' : 'modal-section test-section';
|
|
||||||
|
|
||||||
const testH4 = document.createElement('h4');
|
const testH4 = document.createElement('h4');
|
||||||
const testIcon = document.createElement('img');
|
const testIcon = document.createElement('img');
|
||||||
testIcon.src = chrome.runtime.getURL(isProjektOra ? 'icons/online.svg' : 'icons/assigment.svg');
|
|
||||||
testIcon.alt = isProjektOra ? 'Online óra' : 'Teszt';
|
|
||||||
testIcon.style.width = '20px';
|
|
||||||
testIcon.style.height = '20px';
|
|
||||||
testH4.appendChild(testIcon);
|
|
||||||
testH4.appendChild(document.createTextNode(isProjektOra ? 'Online óra' : LanguageManager.t('timetable.test_indicator')));
|
|
||||||
if (isProjektOra) {
|
|
||||||
testH4.style.color = 'var(--accent-accent)';
|
|
||||||
}
|
|
||||||
|
|
||||||
const testContent = document.createElement('div');
|
let iconPath = 'icons/assigment.svg';
|
||||||
testContent.className = 'test-content';
|
let sectionTitle = LanguageManager.t('timetable.test_indicator');
|
||||||
|
let altText = 'Teszt';
|
||||||
|
|
||||||
if (testDetails) {
|
if (isKontaktOra) {
|
||||||
const detailsDiv = document.createElement('div');
|
iconPath = 'icons/contact.svg';
|
||||||
detailsDiv.className = 'test-details';
|
sectionTitle = 'Kontakt óra';
|
||||||
|
altText = 'Kontakt óra';
|
||||||
|
} else if (isProjektOra) {
|
||||||
|
iconPath = 'icons/project.svg';
|
||||||
|
sectionTitle = 'Projekt óra';
|
||||||
|
altText = 'Projekt óra';
|
||||||
|
}
|
||||||
|
|
||||||
const nameP = document.createElement('p');
|
testIcon.src = chrome.runtime.getURL(iconPath);
|
||||||
const nameStrong = document.createElement('strong');
|
testIcon.alt = altText;
|
||||||
nameStrong.textContent = 'Megnevezés: ';
|
testIcon.style.width = '20px';
|
||||||
nameP.appendChild(nameStrong);
|
testIcon.style.height = '20px';
|
||||||
nameP.appendChild(document.createTextNode(testDetails.name));
|
testH4.appendChild(testIcon);
|
||||||
detailsDiv.appendChild(nameP);
|
testH4.appendChild(document.createTextNode(sectionTitle));
|
||||||
|
if (isSpecialType) {
|
||||||
|
testH4.style.color = 'var(--accent-accent)';
|
||||||
|
}
|
||||||
|
|
||||||
const typeP = document.createElement('p');
|
const testContent = document.createElement('div');
|
||||||
const typeStrong = document.createElement('strong');
|
testContent.className = 'test-content';
|
||||||
typeStrong.textContent = 'Típus: ';
|
|
||||||
typeP.appendChild(typeStrong);
|
|
||||||
typeP.appendChild(document.createTextNode(testDetails.type));
|
|
||||||
detailsDiv.appendChild(typeP);
|
|
||||||
|
|
||||||
const dateP = document.createElement('p');
|
if (testDetails) {
|
||||||
const dateStrong = document.createElement('strong');
|
const detailsDiv = document.createElement('div');
|
||||||
dateStrong.textContent = 'Bejelentés dátuma: ';
|
detailsDiv.className = 'test-details';
|
||||||
dateP.appendChild(dateStrong);
|
|
||||||
dateP.appendChild(document.createTextNode(testDetails.announceDate));
|
|
||||||
detailsDiv.appendChild(dateP);
|
|
||||||
|
|
||||||
testContent.appendChild(detailsDiv);
|
const nameP = document.createElement('p');
|
||||||
} else if (lesson.testId) {
|
const nameStrong = document.createElement('strong');
|
||||||
const errorP = document.createElement('p');
|
nameStrong.textContent = 'Megnevezés: ';
|
||||||
errorP.className = 'test-details-error';
|
nameP.appendChild(nameStrong);
|
||||||
errorP.textContent = 'Nem sikerült betölteni a számonkérés részleteit.';
|
nameP.appendChild(document.createTextNode(testDetails.name));
|
||||||
testContent.appendChild(errorP);
|
detailsDiv.appendChild(nameP);
|
||||||
}
|
|
||||||
|
|
||||||
const lessonKey = getLessonKey(lesson);
|
const typeP = document.createElement('p');
|
||||||
const customTests = await getCustomTests();
|
const typeStrong = document.createElement('strong');
|
||||||
const customTestItems = customTests[lessonKey] || [];
|
typeStrong.textContent = 'Típus: ';
|
||||||
|
typeP.appendChild(typeStrong);
|
||||||
|
typeP.appendChild(document.createTextNode(testDetails.type));
|
||||||
|
detailsDiv.appendChild(typeP);
|
||||||
|
|
||||||
if (customTestItems.length > 0) {
|
const dateP = document.createElement('p');
|
||||||
const customTestsDiv = document.createElement('div');
|
const dateStrong = document.createElement('strong');
|
||||||
customTestsDiv.className = 'custom-tests-in-section';
|
dateStrong.textContent = 'Bejelentés dátuma: ';
|
||||||
customTestsDiv.style.marginTop = '1rem';
|
dateP.appendChild(dateStrong);
|
||||||
customTestsDiv.style.paddingTop = '1rem';
|
dateP.appendChild(document.createTextNode(testDetails.announceDate));
|
||||||
customTestsDiv.style.borderTop = '1px solid var(--background-0)';
|
detailsDiv.appendChild(dateP);
|
||||||
|
|
||||||
const customTestsTitle = document.createElement('h5');
|
testContent.appendChild(detailsDiv);
|
||||||
customTestsTitle.textContent = 'Saját számonkérések:';
|
} else if (lesson.testId) {
|
||||||
customTestsTitle.style.fontSize = '14px';
|
const errorP = document.createElement('p');
|
||||||
customTestsTitle.style.fontWeight = '600';
|
errorP.className = 'test-details-error';
|
||||||
customTestsTitle.style.color = 'var(--warning-accent)';
|
errorP.textContent = 'Nem sikerült betölteni a számonkérés részleteit.';
|
||||||
customTestsTitle.style.marginBottom = '0.5rem';
|
testContent.appendChild(errorP);
|
||||||
customTestsDiv.appendChild(customTestsTitle);
|
}
|
||||||
|
|
||||||
const customTestsList = document.createElement('div');
|
const lessonKey = getLessonKey(lesson);
|
||||||
customTestsList.className = 'custom-tests-list-integrated';
|
const customTests = await getCustomTests();
|
||||||
|
const customTestItems = customTests[lessonKey] || [];
|
||||||
|
|
||||||
customTestItems.forEach(test => {
|
if (customTestItems.length > 0) {
|
||||||
const testItem = document.createElement('div');
|
const customTestsDiv = document.createElement('div');
|
||||||
testItem.className = `custom-test-item-integrated ${test.completed ? 'completed' : ''}`;
|
customTestsDiv.className = 'custom-tests-in-section';
|
||||||
testItem.style.display = 'flex';
|
customTestsDiv.style.marginTop = '1rem';
|
||||||
testItem.style.alignItems = 'center';
|
customTestsDiv.style.paddingTop = '1rem';
|
||||||
testItem.style.justifyContent = 'space-between';
|
customTestsDiv.style.borderTop = '1px solid var(--background-0)';
|
||||||
testItem.style.padding = '0.5rem';
|
|
||||||
testItem.style.marginBottom = '0.5rem';
|
|
||||||
testItem.style.background = 'var(--background)';
|
|
||||||
testItem.style.borderRadius = '6px';
|
|
||||||
testItem.style.border = '1px solid var(--background-0)';
|
|
||||||
|
|
||||||
const testText = document.createElement('span');
|
const customTestsTitle = document.createElement('h5');
|
||||||
testText.className = 'test-text-integrated';
|
customTestsTitle.textContent = 'Saját számonkérések:';
|
||||||
testText.textContent = test.text;
|
customTestsTitle.style.fontSize = '14px';
|
||||||
testText.style.flex = '1';
|
customTestsTitle.style.fontWeight = '600';
|
||||||
testText.style.color = 'var(--text-primary)';
|
customTestsTitle.style.color = 'var(--warning-accent)';
|
||||||
if (test.completed) {
|
customTestsTitle.style.marginBottom = '0.5rem';
|
||||||
|
customTestsDiv.appendChild(customTestsTitle);
|
||||||
|
|
||||||
|
const customTestsList = document.createElement('div');
|
||||||
|
customTestsList.className = 'custom-tests-list-integrated';
|
||||||
|
|
||||||
|
customTestItems.forEach(test => {
|
||||||
|
const testItem = document.createElement('div');
|
||||||
|
testItem.className = `custom-test-item-integrated ${test.completed ? 'completed' : ''}`;
|
||||||
|
testItem.style.display = 'flex';
|
||||||
|
testItem.style.alignItems = 'center';
|
||||||
|
testItem.style.justifyContent = 'space-between';
|
||||||
|
testItem.style.padding = '0.5rem';
|
||||||
|
testItem.style.marginBottom = '0.5rem';
|
||||||
|
testItem.style.background = 'var(--background)';
|
||||||
|
testItem.style.borderRadius = '6px';
|
||||||
|
testItem.style.border = '1px solid var(--background-0)';
|
||||||
|
|
||||||
|
const testText = document.createElement('span');
|
||||||
|
testText.className = 'test-text-integrated';
|
||||||
|
testText.textContent = test.text;
|
||||||
|
testText.style.flex = '1';
|
||||||
|
testText.style.color = 'var(--text-primary)';
|
||||||
|
if (test.completed) {
|
||||||
|
testText.style.textDecoration = 'line-through';
|
||||||
|
testText.style.opacity = '0.6';
|
||||||
|
}
|
||||||
|
|
||||||
|
const testActions = document.createElement('div');
|
||||||
|
testActions.className = 'test-actions-integrated';
|
||||||
|
testActions.style.display = 'flex';
|
||||||
|
testActions.style.gap = '0.5rem';
|
||||||
|
|
||||||
|
const completeBtn = document.createElement('button');
|
||||||
|
completeBtn.className = 'test-complete-btn-integrated';
|
||||||
|
completeBtn.title = test.completed ? 'Megoldva - kattints a visszavonáshoz' : 'Megoldottként jelöl';
|
||||||
|
completeBtn.style.background = 'none';
|
||||||
|
completeBtn.style.border = 'none';
|
||||||
|
completeBtn.style.cursor = 'pointer';
|
||||||
|
completeBtn.style.padding = '4px';
|
||||||
|
completeBtn.style.borderRadius = '4px';
|
||||||
|
completeBtn.style.display = 'flex';
|
||||||
|
completeBtn.style.alignItems = 'center';
|
||||||
|
completeBtn.style.justifyContent = 'center';
|
||||||
|
|
||||||
|
const completeIcon = document.createElement('img');
|
||||||
|
completeIcon.src = chrome.runtime.getURL('icons/pipa.svg');
|
||||||
|
completeIcon.alt = 'Megoldva';
|
||||||
|
completeIcon.style.width = '16px';
|
||||||
|
completeIcon.style.height = '16px';
|
||||||
|
if (test.completed) {
|
||||||
|
completeIcon.style.opacity = '1';
|
||||||
|
completeBtn.style.background = 'var(--warning-accent)';
|
||||||
|
} else {
|
||||||
|
completeIcon.style.opacity = '0.5';
|
||||||
|
}
|
||||||
|
completeBtn.appendChild(completeIcon);
|
||||||
|
|
||||||
|
const deleteBtn = document.createElement('button');
|
||||||
|
deleteBtn.className = 'test-delete-btn-integrated';
|
||||||
|
deleteBtn.title = 'Törlés';
|
||||||
|
deleteBtn.style.background = 'none';
|
||||||
|
deleteBtn.style.border = 'none';
|
||||||
|
deleteBtn.style.cursor = 'pointer';
|
||||||
|
deleteBtn.style.padding = '4px';
|
||||||
|
deleteBtn.style.borderRadius = '4px';
|
||||||
|
deleteBtn.style.display = 'flex';
|
||||||
|
deleteBtn.style.alignItems = 'center';
|
||||||
|
deleteBtn.style.justifyContent = 'center';
|
||||||
|
|
||||||
|
const deleteIcon = document.createElement('img');
|
||||||
|
deleteIcon.src = chrome.runtime.getURL('icons/delete.svg');
|
||||||
|
deleteIcon.alt = 'Törlés';
|
||||||
|
deleteIcon.style.width = '16px';
|
||||||
|
deleteIcon.style.height = '16px';
|
||||||
|
deleteIcon.style.opacity = '0.5';
|
||||||
|
deleteBtn.appendChild(deleteIcon);
|
||||||
|
|
||||||
|
completeBtn.addEventListener('click', async () => {
|
||||||
|
const newCompleted = await toggleCustomTestCompletion(lessonKey, test.id);
|
||||||
|
if (newCompleted) {
|
||||||
testText.style.textDecoration = 'line-through';
|
testText.style.textDecoration = 'line-through';
|
||||||
testText.style.opacity = '0.6';
|
testText.style.opacity = '0.6';
|
||||||
}
|
|
||||||
|
|
||||||
const testActions = document.createElement('div');
|
|
||||||
testActions.className = 'test-actions-integrated';
|
|
||||||
testActions.style.display = 'flex';
|
|
||||||
testActions.style.gap = '0.5rem';
|
|
||||||
|
|
||||||
const completeBtn = document.createElement('button');
|
|
||||||
completeBtn.className = 'test-complete-btn-integrated';
|
|
||||||
completeBtn.title = test.completed ? 'Megoldva - kattints a visszavonáshoz' : 'Megoldottként jelöl';
|
|
||||||
completeBtn.style.background = 'none';
|
|
||||||
completeBtn.style.border = 'none';
|
|
||||||
completeBtn.style.cursor = 'pointer';
|
|
||||||
completeBtn.style.padding = '4px';
|
|
||||||
completeBtn.style.borderRadius = '4px';
|
|
||||||
completeBtn.style.display = 'flex';
|
|
||||||
completeBtn.style.alignItems = 'center';
|
|
||||||
completeBtn.style.justifyContent = 'center';
|
|
||||||
|
|
||||||
const completeIcon = document.createElement('img');
|
|
||||||
completeIcon.src = chrome.runtime.getURL('icons/pipa.svg');
|
|
||||||
completeIcon.alt = 'Megoldva';
|
|
||||||
completeIcon.style.width = '16px';
|
|
||||||
completeIcon.style.height = '16px';
|
|
||||||
if (test.completed) {
|
|
||||||
completeIcon.style.opacity = '1';
|
completeIcon.style.opacity = '1';
|
||||||
completeBtn.style.background = 'var(--warning-accent)';
|
completeBtn.style.background = 'var(--warning-accent)';
|
||||||
|
completeBtn.title = 'Megoldva - kattints a visszavonáshoz';
|
||||||
} else {
|
} else {
|
||||||
|
testText.style.textDecoration = 'none';
|
||||||
|
testText.style.opacity = '1';
|
||||||
completeIcon.style.opacity = '0.5';
|
completeIcon.style.opacity = '0.5';
|
||||||
|
completeBtn.style.background = 'none';
|
||||||
|
completeBtn.title = 'Megoldottként jelöl';
|
||||||
}
|
}
|
||||||
completeBtn.appendChild(completeIcon);
|
|
||||||
|
|
||||||
const deleteBtn = document.createElement('button');
|
|
||||||
deleteBtn.className = 'test-delete-btn-integrated';
|
|
||||||
deleteBtn.title = 'Törlés';
|
|
||||||
deleteBtn.style.background = 'none';
|
|
||||||
deleteBtn.style.border = 'none';
|
|
||||||
deleteBtn.style.cursor = 'pointer';
|
|
||||||
deleteBtn.style.padding = '4px';
|
|
||||||
deleteBtn.style.borderRadius = '4px';
|
|
||||||
deleteBtn.style.display = 'flex';
|
|
||||||
deleteBtn.style.alignItems = 'center';
|
|
||||||
deleteBtn.style.justifyContent = 'center';
|
|
||||||
|
|
||||||
const deleteIcon = document.createElement('img');
|
|
||||||
deleteIcon.src = chrome.runtime.getURL('icons/delete.svg');
|
|
||||||
deleteIcon.alt = 'Törlés';
|
|
||||||
deleteIcon.style.width = '16px';
|
|
||||||
deleteIcon.style.height = '16px';
|
|
||||||
deleteIcon.style.opacity = '0.5';
|
|
||||||
deleteBtn.appendChild(deleteIcon);
|
|
||||||
|
|
||||||
completeBtn.addEventListener('click', async () => {
|
|
||||||
const newCompleted = await toggleCustomTestCompletion(lessonKey, test.id);
|
|
||||||
if (newCompleted) {
|
|
||||||
testText.style.textDecoration = 'line-through';
|
|
||||||
testText.style.opacity = '0.6';
|
|
||||||
completeIcon.style.opacity = '1';
|
|
||||||
completeBtn.style.background = 'var(--warning-accent)';
|
|
||||||
completeBtn.title = 'Megoldva - kattints a visszavonáshoz';
|
|
||||||
} else {
|
|
||||||
testText.style.textDecoration = 'none';
|
|
||||||
testText.style.opacity = '1';
|
|
||||||
completeIcon.style.opacity = '0.5';
|
|
||||||
completeBtn.style.background = 'none';
|
|
||||||
completeBtn.title = 'Megoldottként jelöl';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
deleteBtn.addEventListener('click', async () => {
|
|
||||||
if (confirm('Biztosan törölni szeretnéd ezt a számonkérést?')) {
|
|
||||||
await removeCustomTest(lessonKey, test.id);
|
|
||||||
testItem.remove();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
testActions.appendChild(completeBtn);
|
|
||||||
testActions.appendChild(deleteBtn);
|
|
||||||
testItem.appendChild(testText);
|
|
||||||
testItem.appendChild(testActions);
|
|
||||||
customTestsList.appendChild(testItem);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
customTestsDiv.appendChild(customTestsList);
|
deleteBtn.addEventListener('click', async () => {
|
||||||
testContent.appendChild(customTestsDiv);
|
if (confirm('Biztosan törölni szeretnéd ezt a számonkérést?')) {
|
||||||
}
|
await removeCustomTest(lessonKey, test.id);
|
||||||
|
testItem.remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
testSection.appendChild(testH4);
|
testActions.appendChild(completeBtn);
|
||||||
testSection.appendChild(testContent);
|
testActions.appendChild(deleteBtn);
|
||||||
body.appendChild(testSection);
|
testItem.appendChild(testText);
|
||||||
|
testItem.appendChild(testActions);
|
||||||
|
customTestsList.appendChild(testItem);
|
||||||
|
});
|
||||||
|
|
||||||
|
customTestsDiv.appendChild(customTestsList);
|
||||||
|
testContent.appendChild(customTestsDiv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testSection.appendChild(testH4);
|
||||||
|
testSection.appendChild(testContent);
|
||||||
|
body.appendChild(testSection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user