2024-10-22 23:26:07 +02:00

176 lines
5.6 KiB
JavaScript

document.querySelectorAll('.email-input').forEach(input => {
input.addEventListener('input', function () {
if (/^\S+@\S+\.\S+$/.test(this.value)) {
this.classList.remove('is-invalid');
} else {
this.classList.add('is-invalid');
}
});
});
document.addEventListener('DOMContentLoaded', function () {
var dropdownItems = document.querySelectorAll('.culture-dropdown-item');
dropdownItems.forEach(function (item) {
item.addEventListener('click', async function (event) {
event.preventDefault();
var language = this.getAttribute('data-language');
var flagCode = this.getAttribute('data-flag');
document.getElementById('selectedFlag').className = 'fi ' + flagCode + ' me-2';
await setLanguage(language);
});
});
});
document.getElementById('readonly-send').addEventListener('click', async () => {
const receiverMail = document.getElementById('readonly-receiver-mail');
const dateValid = document.getElementById('readonly-date-valid');
const receiverMail_value = receiverMail.value;
const dateValid_value = dateValid.value;
//check email
if (!receiverMail_value || receiverMail.classList.contains('is-invalid')) {
Swal.fire({
icon: "error",
title: "Falsche Email",
text: "Die E-Mail-Adresse ist ungültig. Bitte verwenden Sie das richtige Format, z. B.: user@mail.com."
});
return;
}
//check the date
const tomorrow = new Date(Date.now() + 86400000);
if (new Date(dateValid_value) < tomorrow) {
Swal.fire({
icon: "error",
title: "Falsches Datum",
text: "Die Verteilung der Umschläge sollte mindestens einen Tag dauern."
});
return;
}
shareEnvelope(receiverMail_value, dateValid_value)
.then(res => {
if (res.ok) {
Swal.fire({
title: "Gesendet",
icon: "success"
});
}
else {
Swal.fire({
icon: "error",
title: `Fehler ${res.status}`,
text: "Der Vorgang ist fehlgeschlagen. Bitte wenden Sie sich an das IT-Team."
});
}
})
.catch(err => {
Swal.fire({
icon: "error",
title: "Unerwarteter Fehler",
text: "Der Vorgang ist fehlgeschlagen. Bitte wenden Sie sich an das IT-Team."
});
})
receiverMail.value = '';
dateValid.valueAsDate = new Date(new Date().setDate(new Date().getDate() + 8));
});
document.addEventListener('DOMContentLoaded', async () => {
var coords;
try {
coords = await getCoordinates();
}
catch (err) {
coords = {
latitude: 0,
longitude: 0,
};
}
$('#geoloc').leafletLocationPicker({
alwaysOpen: true,
mapContainer: "#fixedMapCont",
location: { latitude: coords.latitude, longitude: coords.longitude }
});
});
const bsNotify = (message, options) => alertify.notify(
`<div class="alert ${options.alert_type ? 'alert-' + options.alert_type : ''}" role="alert"><span class="material-symbols-outlined">${options?.icon_name ?? ''}</span><p>${message}</p></div>`,
'custom',
options?.delay ?? 5);
class Comp {
static ActPanel = class {
static __Root;
static get Root() {
Comp.ActPanel.__Root ??= document.getElementById("flex-action-panel")
return Comp.ActPanel.__Root
}
static get Elements() {
return [...Comp.ActPanel.Root.children]
}
static get IsHided() {
return Comp.ActPanel.Root.style.display == 'none';
}
/**
* @param {string} value
*/
static set Display(value) {
Comp.ActPanel.Root.style.display = value
Comp.ActPanel.Elements.forEach(e => e.style.display = value);
}
static Toggle() {
Comp.ActPanel.Display = Comp.ActPanel.IsHided ? '' : 'none'
}
}
static SignatureProgress = class {
static __SignatureCount;
static get SignatureCount() {
this.__SignatureCount = parseInt(document.getElementById("signature-count").innerText);
return this.__SignatureCount;
}
static __SignedCountSpan;
static get SignedCountSpan() {
this.__SignedCountSpan ??= document.getElementById("signed-count");
return Comp.SignatureProgress.__SignedCountSpan;
}
static __signedCount = 0;
static get SignedCount() {
return this.__signedCount;
}
static set SignedCount(value) {
this.__signedCount = value;
const width = (value / this.SignatureCount) * 100;
this.SignedCountBar.style.setProperty('--progress-width', width + '%');
this.SignedCountSpan.innerText = value.toString();
}
static __SignedCountBar;
static get SignedCountBar() {
this.__SignedCountBar ??= document.getElementById("signed-count-bar");
return this.__SignedCountBar;
}
}
static __ShareBackdrop;
static get ShareBackdrop() {
Comp.__ShareBackdrop ??= new bootstrap.Modal(document.getElementById('shareBackdrop'));
return this.__ShareBackdrop;
}
static __LocationBackdrop;
static get LocationBackdrop() {
Comp.__LocationBackdrop ??= new bootstrap.Modal(document.getElementById('locationBackdrop'));
return this.__LocationBackdrop;
}
}