studyflow-ai / docs /design /legacy /script.js
ashish-soni08's picture
chore: establish StudyFlow project structure
ac53235
Raw
History Blame Contribute Delete
4.73 kB
const toast = document.querySelector("#toast");
const statusStrip = document.querySelector("#statusStrip");
const flowCopy = document.querySelectorAll("[data-flow-copy]");
function syncFlowCopyState() {
flowCopy.forEach((element) => {
element.classList.toggle(
"is-overflowing",
element.scrollWidth > element.clientWidth + 1
);
});
}
if (flowCopy.length) {
const resizeObserver = new ResizeObserver(syncFlowCopyState);
resizeObserver.observe(document.querySelector(".workspace"));
flowCopy.forEach((element) => {
new MutationObserver(syncFlowCopyState).observe(element, {
characterData: true,
childList: true,
subtree: true,
});
});
document.fonts?.ready.then(syncFlowCopyState);
syncFlowCopyState();
}
function showToast(message) {
toast.textContent = message;
toast.classList.add("show");
window.clearTimeout(showToast.timer);
showToast.timer = window.setTimeout(() => toast.classList.remove("show"), 2800);
}
document.querySelectorAll(".nav-item").forEach((item) => {
item.addEventListener("click", () => {
document.querySelectorAll(".nav-item").forEach((nav) => nav.classList.remove("active"));
item.classList.add("active");
const label = item.textContent.replace(/\s+/g, " ").trim();
showToast(`${label} geöffnet. Für den Demo-Mockup bleibt die Übersicht im Fokus.`);
});
});
document.querySelectorAll(".language-toggle button").forEach((button) => {
button.addEventListener("click", () => {
document.querySelectorAll(".language-toggle button").forEach((btn) => btn.classList.remove("selected"));
button.classList.add("selected");
const language = button.textContent.trim();
if (language === "DE") {
showToast("Deutsch bleibt die Hauptsprache der App.");
} else {
showToast(`${language} wird als Materialsprache erkannt. Die Oberfläche bleibt deutsch.`);
}
});
});
document.querySelectorAll(".action-row").forEach((button) => {
button.addEventListener("click", () => {
showToast(button.dataset.message);
});
});
document.querySelectorAll(".confirm-button").forEach((button) => {
button.addEventListener("click", () => {
const row = button.closest("tr");
row.classList.remove("pending-row");
row.querySelector("td:nth-child(7)").innerHTML = '<span class="chip green">Bestätigt</span>';
row.querySelector("td:nth-child(8)").innerHTML = '<button class="icon-button" type="button" aria-label="Termin bestätigt"><span class="material-symbols-rounded">check</span></button>';
showToast("Termin bestätigt und in Mayas Lernplan übernommen.");
});
});
document.querySelector("#linkCheckBtn").addEventListener("click", () => {
showToast("Verknüpfungen geprüft: Folien 10-15 passen zu Notizen 4-6.");
});
document.querySelector("#addEventBtn").addEventListener("click", () => {
const tbody = document.querySelector("#eventRows");
const row = document.createElement("tr");
row.innerHTML = `
<td>Fr, 30. Mai</td>
<td>11:30</td>
<td>Unterrichtsentwurf Abgabe</td>
<td><span class="chip red">Abgabe</span></td>
<td>Notizen_Seminar.pdf</td>
<td>84%</td>
<td><span class="chip amber">Ausstehend</span></td>
<td><button class="confirm-button" type="button" aria-label="Termin bestätigen">OK</button></td>
`;
row.querySelector(".confirm-button").addEventListener("click", () => {
row.querySelector("td:nth-child(7)").innerHTML = '<span class="chip green">Bestätigt</span>';
row.querySelector("td:nth-child(8)").innerHTML = '<button class="icon-button" type="button" aria-label="Termin bestätigt"><span class="material-symbols-rounded">check</span></button>';
showToast("Neuer Termin bestätigt.");
});
tbody.appendChild(row);
showToast("Neuer erkannter Termin wurde ergänzt.");
});
document.querySelector("#processBtn").addEventListener("click", () => {
const button = document.querySelector("#processBtn");
button.disabled = true;
button.innerHTML = '<span class="material-symbols-rounded">progress_activity</span> Prüfe...';
window.setTimeout(() => {
statusStrip.classList.remove("show");
button.disabled = false;
button.innerHTML = '<span class="material-symbols-rounded">task_alt</span> Jetzt prüfen';
showToast("Uploads geprüft: 2 Termine, 1 neue Wissenslücke und 12 Karteikarten gefunden.");
}, 650);
});
document.querySelectorAll(".focus-list input").forEach((checkbox) => {
checkbox.addEventListener("change", () => {
showToast(checkbox.checked ? "Lernblock als erledigt markiert." : "Lernblock wieder geöffnet.");
});
});
document.querySelector('[data-view="uploads"]').addEventListener("click", () => {
statusStrip.classList.add("show");
});