dav_registration: added filter function to select single sport
This commit is contained in:
BIN
dav_registration/static/dav_registration/img/sport_icons/F.png
Normal file
BIN
dav_registration/static/dav_registration/img/sport_icons/F.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
@@ -5,16 +5,26 @@
|
||||
|
||||
{% block page-container-fluid %}
|
||||
<div>
|
||||
<div style="float: right;">
|
||||
<button id="btn-filter-All" type="button" class="btn btn-xs btn-green">Alle Touren</button>
|
||||
<button id="btn-filter-B" type="button" class="btn btn-xs btn-sport-B btn-white">Bergsteigen</button>
|
||||
<button id="btn-filter-K" type="button" class="btn btn-xs btn-sport-K btn-white">Klettern</button>
|
||||
<button id="btn-filter-M" type="button" class="btn btn-xs btn-sport-M btn-white">Mountainbike</button>
|
||||
<button id="btn-filter-S" type="button" class="btn btn-xs btn-sport-S btn-white">Ski</button>
|
||||
<button id="btn-filter-W" type="button" class="btn btn-xs btn-sport-W btn-white">Wandern</button>
|
||||
</div>
|
||||
<h3 class="top-most">{% trans 'Touren & Kurse' %}</h3>
|
||||
<table id="objects_table" class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="hidden">Sport</th>
|
||||
<th><input type="text" id="searchfield" placeholder="{% trans 'Volltextsuche' %}"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for event in event_list %}
|
||||
<tr>
|
||||
<td class="hidden">{{ event.sport }}</td>
|
||||
<td>
|
||||
<div class="pull-right" style="margin-left: 2em;">
|
||||
<a role="button" id="controlChevronCollapseDetails{{ event.id }}" data-toggle="collapse"
|
||||
@@ -110,6 +120,20 @@
|
||||
</tbody>
|
||||
</table>
|
||||
<script type="text/javascript">
|
||||
function filter_sport(table, sport) {
|
||||
const sports = ["All", "B", "K", "M", "S", "W"];
|
||||
var search = sport;
|
||||
|
||||
for(let i in sports) {
|
||||
if(sport != sports[i])
|
||||
$("#btn-filter-" + sports[i]).addClass("btn-white");
|
||||
}
|
||||
$("#btn-filter-" + sport).removeClass("btn-white");
|
||||
|
||||
if(sport == "All")
|
||||
search = "";
|
||||
table.column(0).search(search).draw();
|
||||
}
|
||||
$(document).ready( function () {
|
||||
var table = $("#objects_table").DataTable( {
|
||||
ordering: false,
|
||||
@@ -124,12 +148,29 @@
|
||||
zeroRecords: "{% trans 'Keine passenden Einträge.' %}",
|
||||
}
|
||||
} );
|
||||
$("#btn-filter-All").on("click", function() {
|
||||
filter_sport(table, "All");
|
||||
} );
|
||||
$("#btn-filter-B").on("click", function() {
|
||||
filter_sport(table, "B");
|
||||
} );
|
||||
$("#btn-filter-K").on("click", function() {
|
||||
filter_sport(table, "K");
|
||||
} );
|
||||
$("#btn-filter-M").on("click", function() {
|
||||
filter_sport(table, "M");
|
||||
} );
|
||||
$("#btn-filter-S").on("click", function() {
|
||||
filter_sport(table, "S");
|
||||
} );
|
||||
$("#btn-filter-W").on("click", function() {
|
||||
filter_sport(table, "W");
|
||||
} );
|
||||
$("#searchfield").on( "keyup change", function() {
|
||||
table
|
||||
.search( this.value )
|
||||
.draw();
|
||||
table.column(1).search( this.value ).draw();
|
||||
} );
|
||||
$("#objects_table_filter").hide();
|
||||
filter_sport(table, "{{ init_sport_filter|default:'All' }}");
|
||||
} );
|
||||
</script>
|
||||
</div>
|
||||
|
||||
@@ -8,6 +8,7 @@ from django.urls import reverse_lazy
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.views import generic
|
||||
|
||||
from dav_events.choices import SPORT_CHOICES
|
||||
from dav_events.models.event import Event
|
||||
|
||||
from .forms import RegistrationForm
|
||||
@@ -44,6 +45,19 @@ class EventListView(generic.ListView):
|
||||
|
||||
return qs
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
if hasattr(self, 'init_sport_filter'):
|
||||
context['init_sport_filter'] = self.init_sport_filter
|
||||
return context
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
if 'sport' in request.GET:
|
||||
sport = request.GET['sport']
|
||||
if (sport, 'Bogus') in SPORT_CHOICES:
|
||||
self.init_sport_filter = sport
|
||||
return super().get(request, *args, **kwargs)
|
||||
|
||||
|
||||
class EventDetailView(generic.DetailView):
|
||||
model = Event
|
||||
|
||||
Reference in New Issue
Block a user