RaPla-Middleware-LinkGen/scripts.js

138 lines
4.3 KiB
JavaScript

"use strict";
$(document).ready(function () {
$('#submitBtn').click(function () {
generateLink();
});
$('#full-link').click(function () {
let element = $('#full-link');
let text = element.text()
copyToClipboard(text);
element.text('Copied!');
setTimeout(function () {
element.text(text);
}, 2000);
});
});
function copyToClipboard(text) {
var $temp = $("<input>");
$("#linkModal").append($temp);
$temp.val(text).select();
document.execCommand("copy");
$temp.remove();
}
function generateLink() {
// Clear paragraph
$('#full-link').text('');
let selectedCourseFromPicker = $('#coursename').val().toString();
let raplaUser = '';
let raplaFile = '';
if (selectedCourseFromPicker === '-1') {
let providedRaPlaLink = $('#raplalink').val().toString();
if(providedRaPlaLink !== '') {
const url = new URL(providedRaPlaLink);
raplaUser = url.searchParams.get('user');
raplaFile = url.searchParams.get('file');
} else {
$('#linkModalTitle').text('Oh No!');
$('#raplalinkcontainer--link').text('Please provide either a course or a RaPla Link!');
$('#raplalinkcontainer--closeButton').text('Gonna Do that!');
return;
}
} else {
let courseInfo = courseLinks[selectedCourseFromPicker];
raplaUser = courseInfo.user;
raplaFile = courseInfo.file;
}
let showBlockers = $('#hideBlockers').is(':checked') ? 0 : 1;
let selectedElectiveModule = $('#wahlmodul').val().toString();
let selectedProfileModule = $('#profilmodul').val().toString();
let base_url = 'https://api.plutodev.de/rapla-middleware'
base_url += '?user=' + raplaUser;
base_url += '&file=' + raplaFile;
base_url += '&blockers=' + showBlockers;
base_url += '&wahl=' + selectedElectiveModule;
base_url += '&pflicht=' + selectedProfileModule;
$('#linkModalTitle').text('Your RaPla Link 🥳 ');
$('#raplalinkcontainer--link').text('Here is the link that you can use for importing RaPla into your iCloud etc. calendar (click to copy)');
$('#full-link').text(base_url);
$('#raplalinkcontainer--closeButton').text('Thank you for using');
}
let courseLinks = {
'TINF19B1': {user: 'freudenmann', file: 'TINF19B1'},
'TINF19B2': {user: 'braun', file: 'TINF19B2'},
'TINF19B3': {user: 'vollmer', file: 'tinf19b3'},
'TINF19B4': {user: 'eisenbiegler', file: 'TINF19B4'},
'TINF19B5': {user: 'strand', file: 'TINF19B5'},
'TINF20B1': {user: 'freudenmann', file: 'TINF20B1'},
'TINF20B2': {user: 'braun', file: 'TINF20B2'},
'TINF20B3': {user: 'vollmer', file: 'tinf20b3'},
'TINF20B4': {user: 'eisenbiegler', file: 'TINF20B4'},
'TINF20B5': {user: 'strand', file: 'TINF20B5'}
}
/**
* Calculates, in which semester the given course currently is
* @param course The course to calculate the semester for
* @returns {number} The number of the semester they are in
*/
function calculateSemester(course) {
let yearRegex = new RegExp('[a-zA-Z]*([0-9]{2})B[0-9]');
let match = yearRegex.exec(course);
let startYear = '20';
if (match !== null) {
startYear += match[1];
}
let currentYear = new Date().getFullYear();
let yearDifference = currentYear - startYear;
let semesters = yearDifference * 2 + 1;
return semesters;
}
/* Toggle Dark-Mode */
const toggleDarkMode = () => {
let element = document.body;
let navElement = document.getElementById('raplalinkcontainer--nav');
let colorModeToggleIcon = document.getElementById('colorModeToggleIcon');
let submitButton = document.getElementById('submitBtn');
element.classList.toggle("body--dark-mode");
navElement.classList.toggle("nav--dark-mode");
submitButton.classList.toggle("submitButton--dark-mode");
/* Dialog */
let modalContents = document.getElementsByClassName('modal-toggle')
for (let content of modalContents) {
content.classList.toggle("modal--dark-mode")
}
if (colorModeToggleIcon.classList.contains("fa-moon")) {
colorModeToggleIcon.classList.remove("fa-moon");
colorModeToggleIcon.classList.add("fa-sun");
} else {
colorModeToggleIcon.classList.remove("fa-sun");
colorModeToggleIcon.classList.add("fa-moon");
}
}