138 lines
4.3 KiB
JavaScript
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");
|
|
}
|
|
|
|
}
|
|
|