khana/templates/event_details.html

166 lines
7.0 KiB
HTML

{% extends "base.html" %}
{% block content %}
<div class="row">
<div class="col-md-4">
<div class="card">
<div class="card-header">
<h4 class="card-title mb-0">{{ event.name }}</h4>
<h5 class="card-category mb-0">{{ event.eventtype.name }}</h5>
</div>
<div class="card-body">
{% if event.datebegin.date == event.dateend.date %}
<p>The <a href="#">{{ event.datebegin | date:"d-m-Y" }}</a> from <a href="#">{{ event.datebegin | date:"G:i" }}</a> to <a href="#">{{ event.dateend | date:"G:i" }}</a>
{% else %}
<p>From <a href="#">{{ event.datebegin | date:"d-m-Y, G:i" }}</a><br />
To <a href="#">{{ event.dateend | date:"d-m-Y, G:i" }}</a>
{% endif %}
{% if event.number_of_week_from_today > 0 %}
<br />In <span class="text-{% if event.number_of_week_from_today > 12 %}success{% elif event.number_of_week_from_today > 9 %}info{% elif event.number_of_week_from_today > 6 %}warning{% else %}danger{% endif %}"><b>{{event.number_of_week_from_today}} week(s)</b></span>
{% endif %}
</p>
<address>
{{ event.place.address }}<br \>
{{ event.place.postal }} {{ event.place.city }}</p>
{{ event.place.country }}
</address>
{% if event.place.nbkm %}
<p>{{ event.place.nbkm }}km ({{ event.place.timing }}min)</p>
<br />
{% endif %}
<h5 class="title mb-1">Participants</h5>
<input type="text" name="gymnast" placeholder="Add gymnast…" class="form-control mb-2" id="gymnast">
<table class="table tablesorte table-condensed table-striped" id="gymmanst_participant">
{% if gymnast_list %}
{% for gymnast in gymnast_list %}
<tr>
<td class="text-left">
<span class="tim-icons icon-simple-remove text-warning minusButton" data-gymnastid="{{ gymnast.0.id }}"></span>
</td>
<td class="text-left col-9">
<a href="{% url 'gymnast_details' gymnast.0.id %}">{{ gymnast.0.lastname }}, {{ gymnast.0.firstname }}</a>
</td>
</tr>
{% endfor %}
{% else %}
<tr class="minusButton"><td colspan="2">No partifcipants for now.</td></tr>
{% endif %}
</table>
</div>
</div>
</div>
<div class="col-md-8">
<div class="card">
<div class="card-body">
<div id='map' style='width: 705px; height: 350px;'></div>
</div>
</div>
<div class="card">
<div class="card-body">
{{ event.to_markdown | safe }}
<a href="{% url 'event_update' event.id %}">
<button type="submit" value="add" class="btn btn-icon btn-warning ">
<i class="tim-icons icon-pencil"></i>
</button>
</a>
</div>
</div>
</div>
</div>
{% endblock %}
{% block footerscript %}
<script type="text/javascript">
L.mapbox.accessToken = 'pk.eyJ1IjoiZ3RydWxsZW0iLCJhIjoiY2p2Mm5wa3YzMDE1eTQ0cDJlOGdsZno4ZCJ9.zrOWNO0F4VTd9_h-LSSkzw';
var geocoder = L.mapbox.geocoder('mapbox.places');
geocoder.query('{{ event.place.address }} {{ event.place.postal }} {{ event.place.city }}', showMap);
var map = L.mapbox.map('map').addLayer(L.mapbox.styleLayer('mapbox://styles/mapbox/streets-v11'));
// var map = L.mapbox.map('map').addLayer(L.mapbox.styleLayer('mapbox://styles/mapbox/dark-v10'));
// L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
// attribution: 'blablabla'
// }).addTo(map);
function showMap(err, data) {
// The geocoder can return an area, like a city, or a point, like an
// address. Here we handle both cases, by fitting the map bounds to an
// area or zooming to a point.
if (data.lbounds) {
map.fitBounds(data.lbounds);
} else if (data.latlng) {
map.setView([data.latlng[0], data.latlng[1]], 10);
L.marker([data.latlng[0], data.latlng[1]]).addTo(map);
}
}
$(function(){
$('[data-sort="table"]').tablesorter({
headers: {
0: { sorter: false },
},
sortList: [[1,0]]
})
function insert_selected_gymnast(gymnast_id, gymnast_name)
{
$('#gymmanst_participant').append('<tr><td class="text-left"><span class="tim-icons icon-simple-remove text-warning minusButton" data-gymnastid="{{ gymnast.0.id }}"></span></td><td class="text-left"><a href="/gymnast/' + gymnast_id + '/">' + gymnast_name + '</a></td></tr>');
$('#gymnast').val('');
$('#gymnast').focus();
}
$('body').on('click', '.minusButton', function(event){
$.ajax({
url: '/event/' + {{ event.id }} + '/remove_gymnast/' + $(this).data('gymnastid') + '/',
type: 'GET',
context: $(this),
}).done(function(){
$(this).closest('tr').fadeTo(1000, 0, function(){
$(this).remove();
});
}).fail(function(){
alert('Not done !');
});
return false;
});
$('#gymnast').autocomplete({
source: function(request, response){
$.ajax({
url: '/gymnast/lookup/?pattern=' + $('#gymnast').val(),
type: 'GET',
dataType: "json",
success: function(data){
if(data.length != 0){
response($.map(data, function(item){
return {
label: item.Name,
value: item.Name,
gymnastid: item.ID
}
}))
} else {
response([{ label: 'No result found.', value: '' }]);
};
},
error: function(exception){
console.log(exception);
}
});
},
minLength: 3,
select: function (event, ui) {
$.ajax({
url: '/event/' + {{ event.id }} + '/link_with_gymnast/' + ui.item.gymnastid + '/'
}).done(function() {
insert_selected_gymnast(ui.item.gymnastid, ui.item.label);
});
}
});
});
</script>
{% endblock %}