2017-02-17 16:17:21 +00:00
|
|
|
{% extends 'schedule_base.html' %}
|
2016-08-04 21:03:39 +00:00
|
|
|
|
2017-04-14 21:29:30 +00:00
|
|
|
{% load commonmark %}
|
2017-04-15 17:35:18 +00:00
|
|
|
{% load staticfiles %}
|
|
|
|
|
|
|
|
{% block extra_head %}
|
|
|
|
<script src="{% static "channels/js/websocketbridge.js" %}"></script>
|
|
|
|
{% endblock %}
|
2017-04-14 21:29:30 +00:00
|
|
|
|
2017-02-17 16:17:21 +00:00
|
|
|
{% block schedule_content %}
|
2017-02-22 09:02:02 +00:00
|
|
|
{% if eventinstances %}
|
2017-01-22 11:59:57 +00:00
|
|
|
{% for day in camp.camp_days %}
|
|
|
|
{{ day.lower.date|date:"D d/m" }} <br />
|
2016-08-04 21:03:39 +00:00
|
|
|
<div style="display: flex; flex-wrap: wrap;">
|
2017-02-08 22:34:24 +00:00
|
|
|
{% for eventinstance in eventinstances %}
|
2017-01-22 11:59:57 +00:00
|
|
|
{% if eventinstance.schedule_date == day.lower.date %}
|
2016-08-07 13:49:30 +00:00
|
|
|
<a class="event"
|
2017-01-22 11:59:57 +00:00
|
|
|
href="{% url 'event_detail' camp_slug=camp.slug slug=eventinstance.event.slug %}"
|
2017-04-14 21:29:30 +00:00
|
|
|
style="background-color: {{ eventinstance.event.event_type.color }}; color: {% if eventinstance.event.event_type.light_text %}white{% else %}black{% endif %};"
|
2017-04-15 17:35:18 +00:00
|
|
|
data-eventinstance-id="{{ eventinstance.id }}"
|
|
|
|
>
|
2017-03-15 20:54:57 +00:00
|
|
|
<small>{{ eventinstance.when.lower|date:"H:i" }} - {{ eventinstance.when.upper|date:"H:i" }}</small>
|
|
|
|
<span class="pull-right" style="font-family: 'FontAwesome';">&#x{{ eventinstance.location.icon }};</span>
|
2016-08-07 12:36:43 +00:00
|
|
|
<br />
|
2017-02-08 22:34:24 +00:00
|
|
|
{{ eventinstance.event.title }}
|
2016-08-08 22:48:56 +00:00
|
|
|
<br />
|
2016-08-07 13:49:30 +00:00
|
|
|
</a>
|
2017-01-22 11:59:57 +00:00
|
|
|
{% endif %}
|
2017-04-14 21:29:30 +00:00
|
|
|
|
2017-04-15 17:35:18 +00:00
|
|
|
<div class="modal" id="event-template" tabindex="-1" role="dialog">
|
2017-04-14 21:29:30 +00:00
|
|
|
<div class="modal-dialog" role="document">
|
|
|
|
<div class="modal-content">
|
|
|
|
<div class="modal-header">
|
|
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
2017-04-15 17:35:18 +00:00
|
|
|
<h4 class="modal-title"></h4>
|
2017-04-14 21:29:30 +00:00
|
|
|
</div>
|
|
|
|
<div class="modal-body">
|
|
|
|
</div>
|
|
|
|
<div class="modal-footer">
|
|
|
|
<button type="button" class="btn btn-default pull-left" data-dismiss="modal">Close</button>
|
|
|
|
<a class="btn btn-success"><i class="fa fa-star"></i> Favorite</a>
|
2017-04-15 17:35:18 +00:00
|
|
|
<a class="more-button btn btn-info" href=""><i class="fa fa-info"></i> More</a>
|
2017-04-14 21:29:30 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2017-01-22 11:59:57 +00:00
|
|
|
{% endfor %}
|
2016-08-04 21:03:39 +00:00
|
|
|
</div>
|
|
|
|
<hr />
|
2017-02-22 09:02:02 +00:00
|
|
|
{% endfor %}
|
|
|
|
{% else %}
|
2017-04-09 15:52:41 +00:00
|
|
|
<h2>No scheduled events for {{ camp.title }} yet!</h2>
|
2017-02-22 09:02:02 +00:00
|
|
|
{% endif %}
|
2016-08-04 21:03:39 +00:00
|
|
|
|
2017-04-15 17:35:18 +00:00
|
|
|
<script>
|
|
|
|
const webSocketBridge = new channels.WebSocketBridge();
|
|
|
|
|
|
|
|
var event_elements = document.getElementsByClassName("event");
|
|
|
|
var modals = {};
|
|
|
|
var events = {};
|
|
|
|
|
|
|
|
webSocketBridge.connect('/schedule/');
|
|
|
|
webSocketBridge.socket.addEventListener('open', function() {
|
|
|
|
webSocketBridge.send({action: 'init', camp_slug: '{{ camp.slug }}'});
|
|
|
|
});
|
|
|
|
webSocketBridge.listen(function(payload, stream) {
|
|
|
|
if(payload['action'] == 'event_instance') {
|
|
|
|
event_instance_id = payload['event_instance']['id'];
|
|
|
|
modal = modals[event_instance_id];
|
|
|
|
modal_title = modal.getElementsByClassName('modal-title')[0];
|
|
|
|
modal_title.innerHTML = payload['event_instance']['title']
|
|
|
|
modal_body = modal.getElementsByClassName('modal-body')[0];
|
|
|
|
modal_body.innerHTML = payload['event_instance']['abstract'];
|
|
|
|
more_button = modal.getElementsByClassName('more-button')[0];
|
|
|
|
more_button.setAttribute('href', payload['event_instance']['url']);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
function openModal(e) {
|
|
|
|
e.preventDefault();
|
|
|
|
event_instance_id = e.target.dataset['eventinstanceId'];
|
|
|
|
template = document.getElementById('event-template');
|
|
|
|
modal = template.cloneNode(true);
|
|
|
|
body = document.getElementsByTagName('body')[0];
|
|
|
|
body.appendChild(modal);
|
|
|
|
modal.setAttribute('id', 'event-modal-' + event_instance_id)
|
|
|
|
modals[event_instance_id] = modal;
|
|
|
|
$('#event-modal-' + event_instance_id).modal();
|
|
|
|
webSocketBridge.send({action: 'get_event_instance', event_instance_id: event_instance_id})
|
|
|
|
}
|
|
|
|
|
|
|
|
for (var event_id in event_elements) {
|
|
|
|
event_element = event_elements.item(event_id);
|
|
|
|
event_element.onclick = openModal
|
|
|
|
}
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
2017-02-17 16:17:21 +00:00
|
|
|
{% endblock schedule_content %}
|