您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
An assistant for exams in Easistent
// ==UserScript== // @name TAssistant // @name:sk TAsistent // @namespace TAssistant // @version 1.2 // @description An assistant for exams in Easistent // @description:sk Pomočnik za teste v Easistentu // @author Nejc Živic // @grant none // @match https://www.easistent.com/urniki/* // @license MIT // ==/UserScript== (function () { function GetExam(subject) { let exam; switch (subject) { case "M": { exam = "MAT" break; } case "F": { exam = "FIZ" break; } case "K": { exam = "KEM" break; } case "B": { exam = "BIO" break; } case "Z": { exam = "ZGO" break; } case "S": { exam = "SLO" break; } case "N": { exam = "NEM" break; } case "A": { exam = "ANG" break; } case "P": { exam = "PSH" break; } case "Š": { exam = "ŠVZ" break; } case "G": { exam = "GEO" break; } case "S": { exam = "SOC" break; } case "I": { exam = "INF" break; } case "FI": { exam = "FIL" break; } case "PE": { exam = "PED" break; } case "T": { exam = "TSV-Pra" break; } case "IT": { exam = "ITA" break; } case "O": { exam = "OTI-Ekn" break; } case "IK": { exam = "IKT-Pok" break; } case "ŠI": { exam = "ŠIS" break; } case "TS": { exam = "TSV-Nem" break; } } return exam; } function MarkRed(date, subject) { const elements = []; for (let i = 0; i <= 12; i++) { elements.push(document.getElementById(`ednevnik-seznam_ur_teden-td-${i}-${date}`)); } elements.forEach(el => { if (el) { if (el.innerText.includes(subject)) { const child1 = el.children.item(0).children.item(0); const child2 = el.children.item(0).children.item(1); child1.style.color = "red"; child2.style.color = "red"; } } }); } function MarkBlue(date, subject) { const elements = [] for (let i = 0; i <= 12; i++) { elements.push(document.getElementById(`ednevnik-seznam_ur_teden-td-${i}-${date}`)); } elements.forEach(el => { if (el) { if (el.innerText.includes(subject)) { const child1 = el.children.item(0).children.item(0); const child2 = el.children.item(0).children.item(1); child1.style.color = "blue"; child2.style.color = "blue"; } } }); } function Download(file) { const a = document.createElement("a"); a.href = file; a.download = "testi.json"; a.click(); } function Export() { const data = { exams: [], spra: [] }; const exams = localStorage.getItem("exams"); const spra = localStorage.getItem("spra"); if (exams) { data.exams = JSON.parse(exams); } if (spra) { data.spra = JSON.parse(spra); } const json = JSON.stringify(data); const file = URL.createObjectURL(new Blob([json], { type: "application/json" })); Download(file); } function Import() { const input = document.createElement("input"); input.type = "file"; input.accept = ".json"; input.onchange = e => { const file = e.target.files[0]; const reader = new FileReader(); reader.onload = e => { const data = JSON.parse(e.target.result); localStorage.setItem("exams", JSON.stringify(data.exams)); localStorage.setItem("spra", JSON.stringify(data.spra)); }; reader.readAsText(file); }; input.click(); } const tabs = document.getElementsByClassName("horizontal_tabs"); const subject = document.createElement("input"); subject.placeholder = "Predmet"; subject.classList.add("horizontal_tab"); subject.classList.add("subject"); subject.hidden = true; const date = document.createElement("input"); date.type = "date"; date.classList.add("horizontal_tab"); date.classList.add("date"); date.hidden = true; const confirm = document.createElement("button"); confirm.classList.add("horizontal_tab"); confirm.classList.add("confirm"); confirm.innerText = "Potrdi"; confirm.hidden = true; confirm.onclick = () => { const addButton = document.getElementById("addButton"); if (addButton.innerText == "Dodaj Test") { if (subject.value && date.value) { let predmet; if (subject.value.toUpperCase().startsWith("PE") || subject.value.toUpperCase().startsWith("FI") || subject.value.toUpperCase().startsWith("IK") || subject.value.toUpperCase().startsWith("ŠI") || subject.value.toUpperCase().startsWith("TS") || subject.value.toUpperCase().startsWith("IT")) { predmet = subject.value.substring(0, 2).toUpperCase(); } predmet = subject.value.substring(0, 1).toUpperCase(); const exams = localStorage.getItem("exams"); if (exams) { const ex = JSON.parse(exams); ex.push({ subject: predmet, date: date.value }); localStorage.setItem("exams", JSON.stringify(ex)); } else { const ex = [ { subject: predmet, date: date.value } ]; localStorage.setItem("exams", JSON.stringify(ex)); } MarkRed(date.value, GetExam(subject.value)); alert("Uspešno dodano!"); } else { alert("Vnesite predmet in datum!"); } } else { if (subject.value && date.value) { const predmet = subject.value.substring(0, 1).toUpperCase(); const exams = localStorage.getItem("spra"); if (exams) { const ex = JSON.parse(exams); ex.push({ subject: predmet, date: date.value }); localStorage.setItem("spra", JSON.stringify(ex)); } else { const ex = [ { subject: predmet, date: date.value } ]; localStorage.setItem("spra", JSON.stringify(ex)); } MarkRed(date.value, GetExam(subject.value)); alert("Uspešno dodano!"); } else { alert("Vnesite predmet in datum!"); } } } const button = document.createElement("a"); button.innerText = "Dodaj Test"; button.id = "addButton"; button.classList.add("horizontal_tab"); button.onclick = () => { const subject = document.getElementsByClassName("subject")[0]; const date = document.getElementsByClassName("date")[0]; if (subject.hidden) { subject.hidden = false; date.hidden = false; confirm.hidden = false; } else { subject.hidden = true; date.hidden = true; confirm.hidden = true; } } const delExam = document.createElement("a"); delExam.innerText = "Izbriši Ocenjevanja"; delExam.classList.add("horizontal_tab"); delExam.onclick = () => { localStorage.removeItem("exams"); localStorage.removeItem("spra"); alert("Uspešno izbrisano!"); } const switcher = document.createElement("a"); switcher.innerText = "Zamenjaj vnos"; switcher.classList.add("horizontal_tab"); switcher.onclick = () => { const add = document.getElementById("addButton"); if (add.innerText == "Dodaj Test") { add.innerText = "Dodaj Spraševanje"; } else { add.innerText = "Dodaj Test"; } } const exportButton = document.createElement("a"); exportButton.innerText = "Izvozi Ocenjevanja"; exportButton.classList.add("horizontal_tab"); exportButton.onclick = () => { Export(); }; const importButton = document.createElement("a"); importButton.innerText = "Uvozi Ocenjevanja"; importButton.classList.add("horizontal_tab"); importButton.onclick = () => { Import(); }; tabs[0].appendChild(button); tabs[0].appendChild(subject); tabs[0].appendChild(date); tabs[0].appendChild(confirm); tabs[0].appendChild(delExam); tabs[0].appendChild(switcher); tabs[0].appendChild(exportButton); tabs[0].appendChild(importButton); const exams = localStorage.getItem("exams"); const spra = localStorage.getItem("spra"); if (exams) { for (const exam of JSON.parse(exams)) { const date = new Date(); const year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate() + 1; let week = date.getDate() + 7; let weeks = date.getDate() + 14; if (month < 10) month = "0" + month; if (day < 10) day = "0" + day; if (week < 10) week = "0" + week; if (exam.date == `${year}-${month}-${weeks}`) { alert(`Čez 2 tedna imate test za ${GetExam(exam.subject)}!`); } else if (exam.date == `${year}-${month}-${week}`) { alert(`Čez 1 teden imate test za ${GetExam(exam.subject)}!`); } else if (exam.date == `${year}-${month}-${day}`) { alert(`Jutri imate test za ${GetExam(exam.subject)}!`); } } } if (spra) { for (const exam of JSON.parse(spra)) { const date = new Date(); const year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate() + 1; let week = date.getDate() + 7; let weeks = date.getDate() + 14; if (month < 10) month = "0" + month; if (day < 10) day = "0" + day; if (week < 10) week = "0" + week; if (exam.date == `${year}-${month}-${weeks}`) { alert(`Čez 2 tedna imate spraševanje za ${GetExam(exam.subject)}!`); } else if (exam.date == `${year}-${month}-${week}`) { alert(`Čez 1 teden imate spraševanje za ${GetExam(exam.subject)}!`); } else if (exam.date == `${year}-${month}-${day}`) { alert(`Jutri imate spraševanje za ${GetExam(exam.subject)}!`); } else if (exam.date == `${year}-${month}-${date.getDate()}`) { alert(`Danes imate spraševanje za ${GetExam(exam.subject)}!`); } } } setInterval(() => { const exams = localStorage.getItem("exams"); const spras = localStorage.getItem("spra"); if (spras) { for (const spra of JSON.parse(spras)) { const subject = GetExam(spra.subject); MarkBlue(spra.date, subject) } } if (exams) { for (const exam of JSON.parse(exams)) { const subject = GetExam(exam.subject); MarkRed(exam.date, subject); }; } }, 1000); })();