Files
2025-03-21 02:31:22 +01:00

170 lines
4.9 KiB
JavaScript

// Req 1: https://chat.informatik.uni-wuerzburg.de/direct/DvhEZoMSWXK25fR94pFQ6ZHb6pNnLgY5oX?msg=7iRQKqBTTarKrJP3N
let nav_links = $('li.masthead__menu-item a');
for(let i = 0; i < nav_links.length; i++){
let label = nav_links[i].innerHTML;
if (label === 'Spring School 2025'){
nav_links[i].style.fontWeight = "bold";
nav_links[i].style.color = "black";
}
}
// Req 2: Making the sidebar nav links to be underlined when the cursor hovers over them
let side_bar_nav_links = $('ul.nav__items li ul li');
for(let i = 0; i < side_bar_nav_links.length; i++) {
side_bar_nav_links[i].onmouseenter = (e) => {
side_bar_nav_links[i].style.textDecoration = "underline";
};
side_bar_nav_links[i].onmouseleave = (e) => {
side_bar_nav_links[i].style.textDecoration = "none";
};
}
// Req 3: Make the sidebar disappear when clicked on the hamburger button.
let sideBarMenuToggleBtn = $('#sidebar-menu-toggle')[0];
let sideBarNav = $('#sidebar-nav');
let navigationItems = $('.nav__items');
let sidebarToggled = false;
let toggleHandler = (e) => {
if ( navigationItems.css('opacity') == 0 && sidebarToggled == false ) {
navigationItems.css('max-height', 'max-content');
navigationItems.css('opacity', '100');
}
else {
sideBarNav.slideToggle();
}
sidebarToggled = !sidebarToggled;
};
sideBarMenuToggleBtn.onclick = toggleHandler;
// Req 4: Hide/unhide more blog items if clicked on the "More" link
let hiddenBlogItems = $('.hidden_blog_item');
let moreLink = $('#blog_more_link')[0];
let blogItemsVisible = false;
moreLink.onclick = (e) => {
for (let i = 0; i < hiddenBlogItems.length; i++){
if (!blogItemsVisible){
moreLink.innerHTML = 'Show Less'
hiddenBlogItems[i].classList.remove('hidden');
}
else {
moreLink.innerHTML = 'Show More'
hiddenBlogItems[i].classList.add('hidden');
}
}
blogItemsVisible = !blogItemsVisible;
};
// Deployment ID: AKfycbwPytHimgitFfUgjYfI3rytATE94LLBCdBXLPJZDCyEu0LrGbqebaeS0itp8AudAwdR
// Web App URL : https://script.google.com/macros/s/AKfycbwPytHimgitFfUgjYfI3rytATE94LLBCdBXLPJZDCyEu0LrGbqebaeS0itp8AudAwdR/exec
function handleSubmit(event) {
event.preventDefault();
const data = new FormData(event.target);
const email = data.get('email');
const name = data.get('name');
const message = data.get('message');
const json_data = JSON.stringify({'email': email, 'name': name, 'message': message});
$.post("https://script.google.com/macros/s/AKfycbyu8ERp-DXzkeiXwugR_z-j3ZNbUGIPRmrXg95RazDqzjDIH4jRyY4JjT_PwIz-QjXv/exec", json_data).done( () => {
alert('Thank you. We have recorded your message.');
});
}
const form = document.querySelector('form');
if (form){
form.addEventListener('submit', handleSubmit);
}
// Requirement: To make calendar events clickable and navigate to the corresponding event details on detailed_program_schedule page.
const fullCalendarElement = document.querySelector('full-calendar');
if (fullCalendarElement) {
const all_events = fullCalendarElement.options.events;
const all_events_elements = fullCalendarElement.shadowRoot.querySelectorAll('.fc-event-time');
for (let i = 0; i < all_events_elements.length; i++) {
all_events_elements[i].parentElement.parentElement.parentElement.href = '/spring_school_2025/detailed_program_schedule/?event_id=' + all_events[i]['id'];
}
}
s = new URLSearchParams(window.location.search)
if (s.get('event_id')){
let event_id = s.get('event_id');
const event = $(`[id=${event_id}]`);
setTimeout(() => {
event[0].scrollIntoView();
}, 200);
}
const pdfFiles = [
// { url: "/assets/posters/test.pdf", name: "Document 1" },
];
function renderPDF(url, canvasElement) {
const loadingTask = pdfjsLib.getDocument(url);
loadingTask.promise.then(pdf => {
pdf.getPage(1).then(page => {
const scale = 1.5;
const viewport = page.getViewport({ scale });
const context = canvasElement.getContext('2d');
canvasElement.height = viewport.height;
canvasElement.width = viewport.width;
const renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});
});
}
function loadPDFs() {
const grid = document.getElementById("pdf-grid");
pdfFiles.forEach(file => {
const box = document.createElement("div");
box.classList.add("pdf-box");
const canvas = document.createElement("canvas");
renderPDF(file.url, canvas);
const button = document.createElement("button");
button.textContent = "Download";
button.onclick = () => window.open(file.url, "_blank");
button.classList.add("btn","btn-primary");
box.appendChild(canvas);
box.appendChild(button);
grid.appendChild(box);
});
}
loadPDFs();