summaryrefslogtreecommitdiffstats
path: root/js/teachers.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/teachers.js')
-rw-r--r--js/teachers.js179
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