diff options
Diffstat (limited to 'js/teachers.js')
-rw-r--r-- | js/teachers.js | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/js/teachers.js b/js/teachers.js deleted file mode 100644 index 39232b5..0000000 --- a/js/teachers.js +++ /dev/null @@ -1,179 +0,0 @@ -const API_ENDPOINT = "https://gimb.tk/test.php"; -// const API_ENDPOINT = "http://localhost:5000/test.php"; - -var teachers = null; - - -/** -* Converts a day number to a string. -* -* @param {Number} dayIndex -* @return {String} Returns day as string -*/ -function dayOfWeekAsString(dayIndex) { - return ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"][dayIndex]; -} - -// Set loading bar visibility -function setLoading(state) { - if (state) { - $("#loading-bar").removeClass("hidden"); - } else { - $("#loading-bar").addClass("hidden"); - } -} - -// Function, responsible for fetching and displaying data -async function loadTeachers(force_refresh = false) { - setLoading(true); - - // Load required data - let promises_to_run = [ - localforage.getItem("username").then((value) => { - username = value; - }), - localforage.getItem("password").then((value) => { - password = value; - }), - localforage.getItem("teachers").then((value) => { - teachers = value; - }) - ]; - - Promise.all(promises_to_run).then(() => { - - // If we don't have a list of teachers, query it - if (teachers === null || force_refresh) { - $.ajax({ - url: API_ENDPOINT, - crossDomain: true, - - data: { - "u": username, - "p": password, - "m": "fetchprofesorji" - }, - dataType: "json", - - cache: false, - type: "GET", - - success: (data) => { - // If data is null, the request failed - if (data === null) { - M.toast({ html: "Request failed!" }); - setLoading(false); - } else { - // Save teachers & populate table - localforage.setItem("teachers", data).then((value) => { - teachers = value; - displayData(); - setLoading(false); - }); - } - }, - - error: () => { - M.toast({ html: "No internet connection!" }); - setLoading(false); - } - - }) - } else { - displayData(); - setLoading(false); - } - }); -} - -// Function for displaying data -function displayData() { - - teachers.forEach(element => { - // Create row - let row = document.createElement("tr"); - // Create cell 1 - let cell_name = document.createElement("td"); - let cell_name_text = document.createTextNode(element["ime"]); - // Create cell 2 - let cell_subject = document.createElement("td"); - // Array ([0]) is useless, since every teacher is duplicated (for each subject) - let cell_subject_text = document.createTextNode(element["predmeti"][0]["ime"]); - - cell_name.appendChild(cell_name_text); - row.appendChild(cell_name); - - cell_subject.appendChild(cell_subject_text); - row.appendChild(cell_subject); - - $("#teachers-body").append(row); - }); - // Refresh handlers - refreshTableClickHandlers(); -} - -async function checkLogin() { - localforage.getItem("logged_in").then((value) => { - // This code runs once the value has been loaded - // from the offline store. - if (value !== true) { - window.location.replace("/index.html"); - } - }).catch((err) => { - // This code runs if there were any errors - console.log(err); - }); -} - -function clearTable() { - const table = document.getElementById("teachers-body"); - while (table.firstChild) { - table.removeChild(table.firstChild); - } -} - -function refreshTableClickHandlers() { - // Arrow function doesn't work apparently? - $('#teachers-body').find("tr").click(function () { - teacherInfo($(this).index()); - }); -} - -function teacherInfo(teacher_id) { - let teacher_object = teachers[teacher_id]; - - let name = teacher_object["ime"]; - let subject = teacher_object["predmeti"][0]["ime"]; - let office_day = dayOfWeekAsString(teacher_object["govorilneure"]["dan"]); - let office_lesson = teacher_object["govorilneure"]["solskaura"]; - - document.getElementById("teacher-name").innerText = name; - document.getElementById("teacher-subject").innerText = "Subject: " + subject; - - document.getElementById("teacher-office").innerText = office_day + ", lesson " + office_lesson; - - const modal = document.querySelectorAll('.side-modal')[0]; - M.Sidenav.getInstance(modal).open(); -} - -document.addEventListener("DOMContentLoaded", () => { - checkLogin(); - loadTeachers(); - - // Setup refresh handler - $("#refresh-icon").click(() => { - clearTable(); - loadTeachers(true); - }); - - // Set row onClick functions - refreshTableClickHandlers(); - - // Setup side menu - const menus = document.querySelectorAll('.side-menu'); - M.Sidenav.init(menus, { edge: 'right', draggable: true }); - - // Setup side modal - const modals = document.querySelectorAll('.side-modal'); - M.Sidenav.init(modals, { edge: 'left', draggable: false }); -});
\ No newline at end of file |