summaryrefslogtreecommitdiffstats
path: root/js/gradings.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/gradings.js')
-rw-r--r--js/gradings.js210
1 files changed, 0 insertions, 210 deletions
diff --git a/js/gradings.js b/js/gradings.js
deleted file mode 100644
index 39be331..0000000
--- a/js/gradings.js
+++ /dev/null
@@ -1,210 +0,0 @@
-const API_ENDPOINT = "https://gimb.tk/test.php";
-// const API_ENDPOINT = "http://localhost:5000/test.php";
-
-var calendar_obj = null;
-
-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);
- });
-}
-
-// Set loading bar visibility
-function setLoading(state) {
- if (state) {
- $("#loading-bar").removeClass("hidden");
- } else {
- $("#loading-bar").addClass("hidden");
- }
-}
-
-// GET COLOR FROM STRING
-function hashCode(str) { // java String#hashCode
- var hash = 0;
- for (var i = 0; i < str.length; i++) {
- hash = str.charCodeAt(i) + ((hash << 5) - hash);
- }
- return hash;
-}
-
-function intToRGB(i) {
- var c = (i & 0x00FFFFFF)
- .toString(16)
- .toUpperCase();
-
- return "00000".substring(0, 6 - c.length) + c;
-}
-
-// http://www.w3.org/TR/AERT#color-contrast
-function getForegroundFromBackground(background_color) {
- let color_hex = background_color.replace("#", "");
- let rgb = [
- parseInt(color_hex.substring(0, 2), 16),
- parseInt(color_hex.substring(2, 4), 16),
- parseInt(color_hex.substring(4, 6), 16)
- ];
- let o = Math.round(((parseInt(rgb[0]) * 299) + (parseInt(rgb[1]) * 587) + (parseInt(rgb[2]) * 114)) / 1000);
- if (o > 180) {
- return "#000000";
- } else {
- return "#ffffff";
- }
-}
-
-function getHexColorFromString(str) {
- return "#" + intToRGB(hashCode(str));
-}
-// --------------------------------------------------
-
-function getDateString() {
- let date = new Date();
-
- let year_str = date.getFullYear();
- let month_str = date.getMonth() + 1
- month_str = month_str.toString().padStart(2, "0");
- let day_str = date.getDate();
- day_str = day_str.toString().padStart(2, "0");
-
- let date_string = year_str + "-" + month_str + "-" + day_str;
- return date_string;
-}
-
-async function loadGradings(force_refresh = false) {
- setLoading(true);
-
- let promises_to_run = [
- localforage.getItem("username").then((value) => {
- username = value;
- }),
- localforage.getItem("password").then((value) => {
- password = value;
- }),
- localforage.getItem("gradings").then((value) => {
- gradings = value;
- })
- ];
-
- Promise.all(promises_to_run).then(() => {
-
- if (gradings === null || gradings === [] || gradings === -1 || force_refresh) {
- $.ajax({
- url: API_ENDPOINT,
- crossDomain: true,
-
- data: {
- "u": username,
- "p": password,
- "m": "fetchocenjevanja"
- },
- dataType: "json",
-
- cache: false,
- type: "GET",
-
- success: (data) => {
-
- // If data is null, the credentials were incorrect
- if (data === null) {
- M.toast({ html: "Request failed!" });
- setLoading(false);
- } else {
- // Save gradings & populate calendar
- localforage.setItem("gradings", data).then((value) => {
- gradings = value;
- displayData();
- setLoading(false);
- });
- }
-
- },
-
- error: () => {
- M.toast({ html: "No internet connection!" });
- setLoading(false);
- }
-
- });
-
- } else {
- displayData();
- setLoading(false);
- }
- });
-
-}
-
-function displayData() {
- let transformed_gradings = [];
- gradings.forEach((element, index) => {
-
- let bg_color = getHexColorFromString(element["kratica"]);
- let fg_color = getForegroundFromBackground(bg_color);
-
- let grading_object = {
- // Convert from dd.mm.yyyy to yyyy-mm-dd
- start: element["datum"].split(".").reverse().join("-"),
- title: element["kratica"],
- id: index.toString(),
- backgroundColor: bg_color,
- textColor: fg_color
- };
-
- transformed_gradings.push(grading_object);
- });
-
- calendar_obj.removeAllEvents();
- calendar_obj.addEventSource(transformed_gradings);
-}
-
-function gradingClickHandler(eventClickInfo) {
- let grading_id = parseInt(eventClickInfo.event.id);
- let grading_subject = gradings[grading_id]["predmet"];
- let grading_date = gradings[grading_id]["datum"];
- let grading_description = gradings[grading_id]["opis"];
-
- document.getElementById("grading-subject").innerText = grading_subject;
- document.getElementById("grading-date").innerText = grading_date;
- document.getElementById("grading-description").innerText = grading_description;
-
- const modal = document.querySelectorAll('.side-modal')[0];
- M.Sidenav.getInstance(modal).open();
-}
-
-document.addEventListener("DOMContentLoaded", () => {
- checkLogin();
-
- // Calendar setup
- var calendarEl = document.getElementById("calendar");
- calendar_obj = new FullCalendar.Calendar(calendarEl, {
- plugins: ["dayGrid"],
- defaultDate: getDateString(),
- navLinks: false,
- editable: false,
- events: [],
- eventClick: gradingClickHandler,
- height: "parent"
- });
- calendar_obj.render();
-
- loadGradings();
-
- // Setup refresh handler
- $("#refresh-icon").click(() => {
- loadGradings(true);
- });
-
- // 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 });
-});