Library
We have libraries on each campus, with a huge range of physical and digital scholarly resources to support your studies.
At our libraries you'll find:
- scholarly resources to help you complete your assessments
- videos
- workshops
- guides to help you find and evaluate information.
No events or workshops available.
Showing
of
workshops and events
', typeof event['event']['presenter'], event['event']['presenter'], "Returns: ", hasMatchingPresenter);
const hasMatchingCategory = _.intersection(event['search-filter']['event-category'], categoryFilters).length > 0 || categoryFilters.includes('Anything');
//console.log('Category Match:', hasMatchingCategory, 'categoryFilters:', categoryFilters ,'type:',typeof categoryFilters , '--->', typeof event['search-filter']['event-category'], event['search-filter']['event-category']);
const isOnDemand = !!event['resources']['embed-code'];
//console.log('isOnDemand: ', typeof isOnDemand ,isOnDemand,'deliveryFilters: ', deliveryFilters, 'type:', typeof deliveryFilters);
let hasFutureDate = hasFutureDates(event);
//console.log('hasFutureDate: ', hasFutureDate);
//const hasStudent = studentTypeFilters.toString() === event['search-filter']['student-category'].toString();
let hasStudent;
if(studentTypeFilters.includes("All students")) {
hasStudent = true;
} else {
hasStudent = studentTypeFilters.includes(event['search-filter']['student-category']);
}
//console.log('hasStudent:', hasStudent, studentTypeFilters ,typeof studentTypeFilters, '--->', event['search-filter']['student-category'],typeof event['search-filter']['student-category']);
let hasCampus;
if (campusFilters.includes("All locations")) {
hasCampus = true;
} else {
hasCampus = campusFilters.includes(event['event']['campus']);
}
//console.log('Campus Match:', hasCampus, typeof campusFilters, '-->', typeof event['event']['campus']);
let includeEvent = false;
let sortDate = sortDates(event);
console.log('sortDate:', sortDate);
if (dateFilters.includes("All dates")) {
// Returns all live sessions in the future
includeEvent = hasFutureDate || isOnDemand;
} else if (dateFilters.includes("Today")) {
// Returns all live sessions starting today
includeEvent = includeEvent = hasFutureDate && isToday(sortDate['dates'][0]['event_start_date']);
} else if (dateFilters.includes("Upcoming")) {
// Returns all live sessions starting in the future
includeEvent = hasFutureDate;
} else if (dateFilters.includes("Selected dates")) {
// Returns all live sessions between selected dates
if (dateFrom && dateTo) {
if (sortDate['dates'].length > 0 && sortDate['dates'][0]['event_start_date']) {
const modalEventStartDate = sortDate['dates'][0]['event_start_date'];
const dateRangeStart = moment(dateFrom, 'YYYY-MM-DD');
const dateRangeEnd = moment(dateTo, 'YYYY-MM-DD');
includeEvent = moment(modalEventStartDate, 'Do MMM YYYY').isBetween(dateRangeStart, dateRangeEnd, null, '[]');
} else {
// If no event_start_date property.
includeEvent = false;
}
}
} else {
// No date filter selected, include all events
includeEvent = true;
}
//console.log('include check: ', includeEvent, 'Event Date: ', event.dates, 'Date Filter: ', dateFilters);
//console.groupEnd();
return includeEvent && hasMatchingCategory &&
((deliveryFilters == "Live sessions" && hasFutureDate) ||
(deliveryFilters == "On demand" && (isOnDemand && !hasFutureDate)) ||
(deliveryFilters == "All" && (hasFutureDate || isOnDemand))) &&
hasStudent && hasCampus && hasMatchingPresenter;
});
//console.log('Modal Filtered: ',filteredEvents);
updateDropdownSelection();
clearEventList();
let endIndex = page * cardIncrease > filteredEvents.length ? filteredEvents.length : page * cardIncrease;
getInitialData(filteredEvents);
setPagination(endIndex, filteredEvents.length);
document.getElementById("modal-close-btn").click();
});
modalClear = document.getElementById('modal-clearall');
modalClear.addEventListener('click', modalClearAll);
function modalClearAll() {
// Select all checkboxes and radio buttons within the relevant filter sections
var checkboxes = document.querySelectorAll("#workshopsModal input[type='checkbox'], #workshopsModal input[type='radio']");
checkboxes.forEach(function(checkbox) {
checkbox.checked = false;
});
// Get all elements with class 'sq-form-section'
const sections = document.querySelectorAll('.sq-form-section');
// Loop through the sections and select the first checkbox of each section
sections.forEach((section) => {
const firstCheckbox = section.querySelector(':scope > form > .sq-form-question-answer > ul > li:first-child input[type="checkbox"]');
const firstRadio = section.querySelector(':scope > form > .sq-form-question-answer > ul > li:first-child input[type="radio"]');
if (firstRadio) {
if (firstRadio.checked) {
// If the first checkbox is already checked, uncheck it
firstRadio.checked = false;
} else if (firstRadio.disabled) {
// If the first checkbox is disabled, skip it
return;
} else {
// Otherwise, check the first checkbox
firstRadio.checked = true;
document.getElementById("filterDatesWrap").style.display = "none";
}
}
if (firstCheckbox) {
if (firstCheckbox.checked) {
// If the first checkbox is already checked, uncheck it
firstCheckbox.checked = false;
} else if (firstCheckbox.disabled) {
// If the first checkbox is disabled, skip it
return;
} else {
// Otherwise, check the first checkbox
firstCheckbox.checked = true;
}
}
});
// Uncheck all other checkboxes
checkboxes.forEach(function(checkbox) {
if(!checkbox.checked){
checkbox.checked = false;
}
});
}
/*******************************
* Modal Filtering
* -------- ENDS HERE -----------
********************************/
/*******************************
* URL Based Filering
* Display Content on Webpage
********************************/
const urlParams = new URLSearchParams(window.location.search);
const category = urlParams.get('category')?.toLowerCase();
const presenter = urlParams.get('presenter')?.toLowerCase();
const student = urlParams.get('studenttype')?.toLowerCase();
const delivery = urlParams.get('delivery')?.toLowerCase();
const location = urlParams.get('location')?.toLowerCase();
let filteredEventsByURL = initialData;
function setTopic() {
const categoryCheckboxes = document.querySelectorAll("#workshopsModal input[type='checkbox'], #workshopsModal input[type='radio']"); //document.getElementsByName("modal-topics-filter");
const categoryValues = category ? category.split(',') : [];
categoryCheckboxes.forEach(checkbox => {
if (categoryValues.includes(checkbox.value.toLowerCase())) {
checkbox.checked = true;
}
});
let topicsFilter = document.getElementById("simple-topics-filter");
function capitalizeFirstLetter(word) {
return word.charAt(0).toUpperCase() + word.slice(1);
}
const selectedCategories = categoryValues.length > 0 ? categoryValues[0] : "anything";
topicsFilter.value = capitalizeFirstLetter(selectedCategories);
}
if (presenter || category || student || delivery || location) {
if(presenter) {
const presenterValues = presenter.split(',');
filteredEventsByURL = _.filter(filteredEventsByURL, data => {
const eventPresenter = Array.isArray(data['event']['presenter']) ? data['event']['presenter'].map(pres => pres.toLowerCase()) : [data['event']['presenter'].toLowerCase()];
const hasMatchingPresenter = _.intersection(eventPresenter, presenterValues).length > 0; //eventPresenter.includes(presenter);
return hasMatchingPresenter;
});
}
if (category) {
const categoryValues = category.split(',');
filteredEventsByURL = _.filter(filteredEventsByURL, data => {
const eventCategories = data['search-filter']['event-category'].map(cat => cat.toLowerCase());
return _.intersection(eventCategories, categoryValues).length > 0;
});
setTopic(); // Set filter dropdown to selected categories.
}
if(student){
const studentTypeValues = student.split(',');
filteredEventsByURL = _.filter(filteredEventsByURL, data => {
const eventStudent = Array.isArray(data['search-filter']['student-category']) ? data['search-filter']['student-category'].map(pres => pres.toLowerCase()) : [data['search-filter']['student-category'].toLowerCase()];
const hasMatchingStudentType = _.intersection(eventStudent, studentTypeValues).length > 0; //eventPresenter.includes(presenter);
return hasMatchingStudentType;
});
}
if (location) {
const locationValues = location.split(',');
filteredEventsByURL = _.filter(filteredEventsByURL, data => {
const eventLocation = Array.isArray(data['event']['campus']) ? data['event']['campus'].map(pres => pres.toLowerCase()) : [data['event']['campus'].toLowerCase()];
const hasMatchinglocation = _.intersection(eventLocation, locationValues).length > 0; //eventPresenter.includes(presenter);
return hasMatchinglocation;
});
}
let endIndex = page * cardIncrease > cardLimit ? cardLimit : filteredEventsByURL.length;
clearEventList();
getInitialData(filteredEventsByURL);
setPagination(filteredEventsByURL.length, endIndex);
}
// Default Page Load
else {
let topic = document.getElementById("simple-topics-filter").value;
let deliveryMode = document.getElementById("simple-delivery-filter").value;
if(topic == "Anything" && deliveryMode == "All"){
modalClearAll();
}
let endIndex = page * cardIncrease > initialData.length ? initialData.length : page * cardIncrease;
page++ // Page Increment.
setPagination(endIndex, initialData.length);
setLoadMoreData(initialData);
window.onload = getInitialData(initialData);
}
/*******************************
* URL Based Filtering
* Display Content on Webpage
* ------- ENDS HERE -----------
********************************/
}
// End of Full List functionality.
// Begin Virtual Open Day functionality
else if(workshopType == "vod") {
console.log(initialData);
let endIndex = page * cardIncrease > initialData.length ? initialData.length : page * cardIncrease;
page++ // Page Increment.
setPagination(endIndex, initialData.length);
setLoadMoreData(initialData);
window.onload = getInitialData(initialData);
let filterSelects = $(".vod-filters select");
const filterBtn = document.querySelector('#filterCategory');
filterBtn.addEventListener('click', function() {
removeDisabled();
let filteredResults = [];
filterSelects.each((index, select) => {
let filterTerm = select.options[select.selectedIndex].text;
if (filterTerm == "Please select") {
return;
}
let category = select.dataset.filter;
filteredResults = [...filteredResults, ...filterByCategory(initialData, category, filterTerm)]
})
filteredResults = _.uniq(filteredResults);
clearEventList();
let endIndex = page * cardIncrease > filteredResults.length ? filteredResults.length : page * cardIncrease;
getInitialData(filteredResults);
setPagination(endIndex, filteredResults.length);
});
const resetBtn = document.querySelector('#show-all-events');
resetBtn.addEventListener("click", function() {
clearEventList();
filterSelects.each((index, select) => {
select.selectedIndex = 0;
});
getInitialData(initialData);
setPagination(endIndex, initialData.length);
});
}
// End Virtual Open Day functionality
// Start of Carousel functionality.
else if(workshopType == 'carousel') {
const noEvent = document.getElementById('no-show');
let initialData = sortByEarlyDate(workshopData);
//Assign variable to carousel filter.
const carouselFilterType = "presented-by"
//Check what kind of filter is selected.
if(carouselFilterType == "categories") {
const filterCategory = ""
const carouselCategories = filterCategory.split(";").map(cat => (cat.trim()));
var carouselFilterData = _.filter(initialData, event => {
const eventCategories = event['search-filter']['event-category'];
const matchingCategories = _.intersection(eventCategories, carouselCategories);
return matchingCategories.length > 0;
});
if(carouselFilterData.length == 0 ){
// If no results display none
clearEventList();
fullList.style.display = "none";
carouselList.style.display = "none";
$(".nav-group-item:contains('Workshops and events')").hide();
} else {
appendDataCarousel(carouselFilterData);
}
}
else if (carouselFilterType == "presented-by") {
const filterPresentedBy = "Library"
const carouselPresenters = filterPresentedBy.split(";").map(cat => (cat.trim()));
var carouselFilterData = _.filter(initialData, event => {
const eventPresenter = event.event.presenter;
const matchingPresenter = carouselPresenters.includes(eventPresenter);
console.log("eventPresenter:", eventPresenter, "carouselPresentersFilter: ", carouselPresenters, "RESULT: ", matchingPresenter);
return matchingPresenter;
});
if(carouselFilterData.length == 0 ){
clearEventList();
fullList.style.display = "none";
carouselList.style.display = "none";
$(".nav-group-item:contains('Workshops and events')").hide();
} else {
appendDataCarousel(carouselFilterData);
}
}
else if (carouselFilterType == "student-type"){
const filterStudentType = ""
const carouselStudent = filterStudentType.split(";").map(cat => (cat.trim()));
var carouselFilterData = _.filter(initialData, event => {
const eventStudentType = event['search-filter']['student-category'];
const matchingStudent = carouselStudent.includes(eventStudentType);
console.log("eventStudentType:", eventStudentType, "carouselPresentersFilter: ", carouselStudent, "RESULT: ", matchingStudent);
return matchingStudent;
});
if(carouselFilterData.length == 0 ){
clearEventList();
fullList.style.display = "none";
carouselList.style.display = "none";
$(".nav-group-item:contains('Workshops and events')").hide();
} else {
appendDataCarousel(carouselFilterData);
}
}
else {
// If no filters selected.
appendDataCarousel(initialData);
}
}
/*******************************
* ORIENTATION
* RENDERING
********************************/
else if(workshopType == 'orientation') {
const noShow = document.getElementById('no-show');
var isOrientationEvents = _.filter(workshopData, function(item) {
return item['search-filter']['orientation'] === "Yes";
});
var categories = _.flatten(_.map(isOrientationEvents, function(item) {
return item['search-filter']['event-category'];
}));
categories = _.uniq(categories);
var checkboxHorizontalFilters = document.getElementById('orientation1')
checkboxHorizontalFilters.innerHTML = `
`;
categories.forEach(function(category) {
if (category.trim() !== '') {
/*checkboxContainer.innerHTML += `