summaryrefslogtreecommitdiffstats
path: root/js/absences.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/absences.js')
-rw-r--r--js/absences.js211
1 files changed, 0 insertions, 211 deletions
diff --git a/js/absences.js b/js/absences.js
deleted file mode 100644
index e0610dd..0000000
--- a/js/absences.js
+++ /dev/null
@@ -1,211 +0,0 @@
-const API_ENDPOINT = "https://gimb.tk/test.php";
-// const API_ENDPOINT = "http://localhost:5000/test.php";
-
-async function checkLogin() {
- localforage.getItem("logged_in").then(function (value) {
- // This code runs once the value has been loaded
- // from the offline store.
- if (value !== true) {
- window.location.replace("/index.html");
- }
- }).catch(function (err) {
- // This code runs if there were any errors
- console.log(err);
- });
-}
-
-// Set loading bar visibility
-function setLoading(state) {
- if (state) {
- $("#loading-bar").removeClass("hidden");
- } else {
- $("#loading-bar").addClass("hidden");
- }
-}
-
-async function loadAbsences(force_refresh = false) {
- setLoading(true);
-
- // Load required data
- let promises_to_run = [
- localforage.getItem("username").then(function (value) {
- username = value;
- }),
- localforage.getItem("password").then(function (value) {
- password = value;
- }),
- localforage.getItem("absences").then(function (value) {
- absences = value;
- })
- ];
-
- await Promise.all(promises_to_run);
-
- // If we don't have a list of absences, query it
- if (absences === null || force_refresh) {
- $.ajax({
- url: API_ENDPOINT,
- crossDomain: true,
-
- data: {
- "u": username,
- "p": password,
- "m": "fetchizostanki",
- "a": $("#datepicker-from").val(),
- "b": $("#datepicker-to").val()
- },
- dataType: "json",
-
- cache: false,
- type: "GET",
-
- success: function (data) {
- // If data is null, the credentials were incorrect
- if (data === null) {
- M.toast({ html: "Request failed!" });
- setLoading(false);
- } else {
- // Save absences & populate UI
- localforage.setItem("absences", data).then(function (value) {
- absences = value;
- displayData();
- setLoading(false);
- });
- }
- },
-
- error: function () {
- M.toast({ html: "No internet connection!" });
- setLoading(false);
- }
-
- })
- } else {
- displayData();
- setLoading(false);
- }
-
-}
-
-function displayData() {
- absences.forEach(element => {
- let li = document.createElement("li");
-
- let date_string = element["datum"]["dan"] + ". " + element["datum"]["mesec"] + ". " + element["datum"]["leto"];
-
- let header = document.createElement("div");
- header.className = "collapsible-header";
- header.innerText = date_string;
-
- let body = document.createElement("div");
- body.className = "collapsible-body";
-
- let body_table = document.createElement("table");
- body_table.className = "highlight";
- let body_table_tbody = document.createElement("tbody");
-
- element["predmeti"].forEach(lesson => {
- let subject_row = document.createElement("tr");
-
- let subject_lesson_icon = document.createElement("td");
-
- let subject_lesson_text = document.createElement("td");
- subject_lesson_text.innerText = "Lesson " + lesson["ura"];
-
- let subject_lesson_icon_i = document.createElement("i");
- subject_lesson_icon_i.className = "material-icons";
- switch (lesson["opraviceno"]["status"]) {
- case 0:
- subject_lesson_icon_i.innerText = "schedule";
- break;
- case 1:
- subject_lesson_icon_i.innerText = "check_circle_outline";
- break;
- case 2:
- subject_lesson_icon_i.innerText = "error_outline";
- break;
- case 3:
- subject_lesson_icon_i.innerText = "not_interested";
- break;
- }
- subject_lesson_icon.appendChild(subject_lesson_icon_i);
-
- let subject_name = document.createElement("td");
- subject_name.innerText = lesson["ime"];
-
- subject_row.appendChild(subject_lesson_icon);
- subject_row.appendChild(subject_lesson_text);
- subject_row.appendChild(subject_name);
- body_table_tbody.appendChild(subject_row);
- });
- body_table.appendChild(body_table_tbody);
- body.appendChild(body_table);
-
- li.appendChild(header);
- li.appendChild(body);
-
- $("#absences-col").append(li);
- });
-}
-
-function clearAbsences() {
- const table = document.getElementById("absences-col");
- while (table.firstChild) {
- table.removeChild(table.firstChild);
- }
-}
-
-function refreshAbsences() {
- clearAbsences();
- loadAbsences(true);
-}
-
-function setupPickers() {
- // Setup pickers
- var date_object = new Date();
-
- let elems = document.querySelectorAll('#datepicker-to');
- let options = {
- autoClose: true,
- format: "dd.mm.yyyy",
- defaultDate: date_object,
- setDefaultDate: true,
- firstDay: 1,
- onSelect: refreshAbsences
- }
- let instances = M.Datepicker.init(elems, options);
-
-
- date_object.setDate(date_object.getDate() - 14);
-
- elems = document.querySelectorAll('#datepicker-from');
- options = {
- autoClose: true,
- format: "dd.mm.yyyy",
- defaultDate: date_object,
- setDefaultDate: true,
- firstDay: 1,
- onSelect: refreshAbsences
- }
- instances = M.Datepicker.init(elems, options);
-}
-
-document.addEventListener("DOMContentLoaded", () => {
- checkLogin();
- loadAbsences(true);
-
- // Setup refresh handler
- $("#refresh-icon").click(function () {
- refreshAbsences();
- });
-
- setupPickers();
-
- let coll_elem = document.querySelectorAll('.collapsible');
- let coll_instance = M.Collapsible.init(coll_elem, {});
-
- // Setup side menu
- const menus = document.querySelectorAll('.side-menu');
- M.Sidenav.init(menus, { edge: 'right', draggable: true });
-
-}); \ No newline at end of file