126 lines
4.0 KiB
JavaScript
126 lines
4.0 KiB
JavaScript
var isPlaying = false;
|
|
|
|
registeredName = localStorage.getItem('name');
|
|
didAcceptInvitation = localStorage.getItem('registered');
|
|
|
|
var currentLang = 'de';
|
|
console.log(window.navigator.language);
|
|
if (window.navigator.language.includes('de')) {
|
|
currentLang = 'en';
|
|
}
|
|
function localize() {
|
|
let lang = ':lang(' + currentLang + ')';
|
|
let show = '[lang]' + lang;
|
|
document.querySelectorAll(show).forEach(function (node) {
|
|
node.style.display = 'unset';
|
|
});
|
|
let hide = '[lang]:not(' + lang + ')';
|
|
document.querySelectorAll(hide).forEach(function (node) {
|
|
node.style.display = 'none';
|
|
});
|
|
}
|
|
|
|
function showRegisterForm() {
|
|
document.getElementById("text-container").style.top = '2%'
|
|
document.getElementById("register-button").style.opacity = 0
|
|
document.getElementById("participation-buttons").style.display = 'inline-block'
|
|
document.getElementById("name-form").style.display = 'inherit'
|
|
document.getElementById("add-calender-event").style.display = 'none'
|
|
document.getElementById("guest-name").focus()
|
|
document.getElementById("info-button").style.display = 'none';
|
|
if (!isPlaying) {
|
|
playPause();
|
|
}
|
|
}
|
|
|
|
function playPause() {
|
|
var audio = document.getElementById("audio");
|
|
var playButton = document.getElementById("play-button");
|
|
var pauseButton = document.getElementById("pause-button");
|
|
var playText = document.getElementById("playing-text");
|
|
var pauseText = document.getElementById("paused-text");
|
|
if (isPlaying) {
|
|
audio.pause();
|
|
playButton.style.display = "inherit";
|
|
pauseButton.style.display = "none";
|
|
playText.style.display = "none";
|
|
pauseText.style.display = "table-cell";
|
|
} else {
|
|
audio.play();
|
|
playButton.style.display = "none";
|
|
pauseButton.style.display = "inherit";
|
|
playText.style.display = "table-cell";
|
|
pauseText.style.display = "none";
|
|
}
|
|
isPlaying = !isPlaying;
|
|
}
|
|
|
|
async function participate(isParticipating) {
|
|
let value = document.getElementById("guest-name").value
|
|
if (!value) {
|
|
return
|
|
}
|
|
let name = value.trim()
|
|
document.getElementById("participation-buttons").style.display = 'none'
|
|
document.getElementById("name-form").style.display = 'none'
|
|
document.getElementById("info-button").style.display = 'inherit'
|
|
console.log("Registering: " + name);
|
|
localStorage.removeItem('name');
|
|
localStorage.removeItem('registered');
|
|
if (isParticipating) {
|
|
let registered = await performRequest(name, "register")
|
|
if (registered) {
|
|
document.getElementById("registered-text").style.display = 'inherit';
|
|
document.getElementById("add-calender-event").style.display = 'inherit';
|
|
localStorage.setItem('name', name);
|
|
localStorage.setItem('registered', 'true');
|
|
} else {
|
|
document.getElementById("error-text").style.display = 'inherit'
|
|
}
|
|
} else {
|
|
let declined = await performRequest(name, "decline")
|
|
if (declined) {
|
|
document.getElementById("declined-text").style.display = 'inherit';
|
|
localStorage.setItem('name', name);
|
|
localStorage.setItem('registered', 'false');
|
|
} else {
|
|
document.getElementById("error-text").style.display = 'inherit'
|
|
}
|
|
}
|
|
}
|
|
|
|
function handleErrors(response) {
|
|
if (!response.ok) throw new Error(response.status);
|
|
return response.text();
|
|
}
|
|
|
|
function catchErrors(error) {
|
|
console.log(error);
|
|
return "Failed";
|
|
}
|
|
|
|
async function performRequest(name, path) {
|
|
let text = await fetch("/festival/api/" + path, {
|
|
method: 'POST',
|
|
body: name
|
|
}).then(handleErrors).catch(catchErrors);
|
|
if (text == "Success") {
|
|
console.log("Registered: " + name);
|
|
return true;
|
|
}
|
|
console.log("Failed to register: " + text);
|
|
return false;
|
|
}
|
|
|
|
function downloadCalender() {
|
|
if (currentLang == 'de') {
|
|
download('/festival/event.ics')
|
|
} else {
|
|
download('/festival/event-en.ics')
|
|
}
|
|
}
|
|
|
|
function download(file) {
|
|
window.location = file
|
|
}
|