diff --git a/src/program/static/js/event_instance_websocket.js b/src/program/static/js/event_instance_websocket.js deleted file mode 100644 index f6ed297b..00000000 --- a/src/program/static/js/event_instance_websocket.js +++ /dev/null @@ -1,552 +0,0 @@ -const webSocketBridge = new channels.WebSocketBridge(); -var modals = {}; -var EVENT_INSTANCES = [], DAYS = [], CONFIG = {}; - -function toggleFavoriteButton(button) { - if(button.getAttribute('data-state') == 'true') { - favorite_button.classList.remove('btn-success'); - favorite_button.classList.add('btn-danger'); - favorite_button.innerHTML = ' Remove favorite'; - - favorite_button.onclick = function(e) { - button.setAttribute('data-state', 'false') - webSocketBridge.send({action: 'unfavorite', event_instance_id: event_instance_id}); - toggleFavoriteButton(button) - } - } else { - favorite_button.classList.remove('btn-danger'); - favorite_button.classList.add('btn-success'); - favorite_button.innerHTML = ' Favorite'; - - favorite_button.onclick = function(e) { - button.setAttribute('data-state', 'true') - webSocketBridge.send({action: 'favorite', event_instance_id: event_instance_id}); - toggleFavoriteButton(button) - } - - } -} - -function setup_websocket() { - webSocketBridge.connect('/schedule/'); - webSocketBridge.listen(function(payload, stream) { - if(payload['action'] == 'init') { - EVENT_INSTANCES = payload['event_instances']; - DAYS = payload['days']; - render(); - } - }); -} - -function init(config) { - CONFIG = config; - setup_websocket(); - render(); -} - -function findGetParameter(parameterName) { - var result = null, - tmp = []; - location.search - .substr(1) - .split("&") - .forEach(function (item) { - tmp = item.split("="); - if (tmp[0] === parameterName) { - result = decodeURIComponent(tmp[1]); - } - }); - return result; -} - -function get_parameters() { - - var day_parameter = findGetParameter('day'); - var filter_day = day_parameter != null ? day_parameter.split(',') : []; - var type_parameter = findGetParameter('type'); - var filter_types = type_parameter != null ? type_parameter.split(',') : []; - var location_parameter = findGetParameter('location') - var filter_locations = location_parameter != null ? location_parameter.split(',') : []; - - return { - 'day': filter_day[0], - 'types': filter_types, - 'locations': filter_locations - } -} - -function render() { - parameters = get_parameters(); - toggleFilterBoxes(parameters['types'], parameters['locations']); - render_day_menu(parameters['day']); - setICSButtonHref(location.search); - - if(parameters['day'] != null) { - render_day(parameters['types'], parameters['locations'], parameters['day']); - } else { - render_schedule(parameters['types'], parameters['locations']); - } -} - -function render_day_menu(active_iso) { - var container = document.getElementById('schedule-days'); - container.innerHTML = ''; - - var mobile_container = document.getElementById('schedule-days-mobile'); - mobile_container.innerHTML = ''; - - function set_btn_type(classList, primary) { - if(primary == true) { - classList.add('btn-primary'); - } else { - classList.add('btn-default'); - } - } - - function dayEvent(e) { - setHistoryState({ - 'day': this.dataset.iso - }); - render(); - } - - var all_days = document.createElement('a'); - all_days.classList.add('btn'); - set_btn_type(all_days.classList, active_iso == null); - all_days.innerHTML = 'All days'; - all_days.dataset.iso = 'all-days'; - all_days.addEventListener('click', dayEvent); - container.appendChild(all_days); - - all_days_mobile = all_days.cloneNode(true); - all_days_mobile.addEventListener('click', dayEvent); - mobile_container.appendChild(all_days_mobile); - - for(var day_id in DAYS) { - var day_link = document.createElement('a'); - day_link.classList.add('btn'); - set_btn_type(day_link.classList, DAYS[day_id]['iso'] == active_iso); - day_link.dataset.iso = DAYS[day_id]['iso']; - day_link.innerHTML = DAYS[day_id]['day_name']; - - day_link.addEventListener('click', dayEvent); - container.appendChild(day_link); - - day_link_mobile = day_link.cloneNode(true); - day_link_mobile.addEventListener('click', dayEvent); - mobile_container.appendChild(day_link_mobile); - } -} - -function render_day(types, locations, day) { - - function hoursTohhmm(hours){ - var hour = Math.floor(Math.abs(hours)); - var minutes = Math.floor((Math.abs(hours) * 60) % 60); - if(hour > 24) { - hour = hour - 24; - } - return (hour < 10 ? "0" : "") + hour + ":" + (minutes < 10 ? "0" : "") + minutes; - } - - var event_instances = get_instances(types, locations, day); - var schedule_container = document.getElementById('schedule-container'); - schedule_container.innerHTML = ''; - - var day_table = document.createElement('table'); - schedule_container.appendChild(day_table); - day_table.classList.add('table'); - day_table.classList.add('day-table'); - day_table_body = document.createElement('tbody'); - day_table.appendChild(day_table_body); - - var array_length = (24*60)/CONFIG['schedule_timeslot_length_minutes']; - var timeslots_ = Array(array_length); - var timeslots = []; - for(var i=0; i 0) { - var type_part = 'type=' + types; - query = query + type_part + "&"; - } - - locations = locations == undefined ? findGetParameter('location') : locations.join(','); - if(locations != null && locations.length > 0) { - var location_part = 'location=' + locations; - query = query + location_part; - } - - history.replaceState({}, '', query); - setICSButtonHref(query); -} - -function setICSButtonHref(query) { - // Update ICS button as well - var ics_button = document.querySelector('#ics-button'); - ics_button.setAttribute('href', CONFIG['ics_button_href'] + query); -} - -function toggleFilterBoxes(types, locations) { - var type_input = Array.prototype.slice.call(document.querySelectorAll('.event-type-checkbox')); - type_input.map(function(box) { - if(types.includes(box.value)) { - box.checked = true; - } - return box; - }); - var location_input = Array.prototype.slice.call(document.querySelectorAll('.location-checkbox')); - location_input.map(function(box) { - if(locations.includes(box.value)) { - box.checked = true; - } - return box; - }); -}