dav_registrations: Fixed filter stuff on event list page for family
All checks were successful
buildbot/django-dav-events--test Build done.

events
This commit is contained in:
2023-02-27 00:07:51 +01:00
parent d32bda74a0
commit 3c53403d17
2 changed files with 42 additions and 39 deletions

View File

@@ -58,6 +58,7 @@
<img src="{% static icon %}" width="48px"
alt="{{ event.get_sport_display }}" title="{{ event.get_sport_display }}">
<span class="hidden">{{ event.get_sport_display }}</span>
<span class="hidden">{{ event.get_level_display }}</span>
{% endwith %}
{% endwith %}
</div>
@@ -126,33 +127,36 @@
</tbody>
</table>
<script type="text/javascript">
function filter_sport(table, sport) {
const choices = ["All", "B", "K", "M", "S", "W"];
var search = sport;
function filter_table(table, sport, level) {
const sport_choices = ["B", "K", "M", "S", "W"];
const level_choices = ["beginner", "advanced", "family"];
for(let i in choices) {
if(sport != choices[i])
$("#btn-filter-" + choices[i]).addClass("btn-white");
if(sport != "*")
$("#btn-filter-" + sport).removeClass("btn-white");
if(level != "*")
$("#btn-filter-" + level).removeClass("btn-white");
if(sport == "*" && level == "*")
$("#btn-filter-All").removeClass("btn-white");
else
$("#btn-filter-All").addClass("btn-white");
for(let i in sport_choices) {
if(sport != sport_choices[i])
$("#btn-filter-" + sport_choices[i]).addClass("btn-white");
}
$("#btn-filter-" + sport).removeClass("btn-white");
if(sport == "All")
search = "";
table.column(0).search(search).draw();
};
function filter_level(table, level) {
const choices = ["All", "beginner", "advanced", "family"];
var search = level;
for(let i in choices) {
if(level != choices[i])
$("#btn-filter-" + choices[i]).addClass("btn-white");
for(let i in level_choices) {
if(level != level_choices[i])
$("#btn-filter-" + level_choices[i]).addClass("btn-white");
}
$("#btn-filter-" + level).removeClass("btn-white");
if(level == "All")
search = "";
table.column(1).search(search).draw();
if(sport == "*")
sport = ""
table.column(0).search(sport).draw();
if(level == "*")
level = ""
table.column(1).search(level).draw();
};
$(document).ready( function () {
var table = $("#objects_table").DataTable( {
@@ -169,38 +173,31 @@
}
} );
$("#btn-filter-All").on("click", function() {
filter_sport(table, "All");
filter_level(table, "All");
filter_table(table, "*", "*");
} );
$("#btn-filter-B").on("click", function() {
filter_level(table, "All");
filter_sport(table, "B");
filter_table(table, "B", "*")
} );
$("#btn-filter-K").on("click", function() {
filter_level(table, "All");
filter_sport(table, "K");
filter_table(table, "K", "*")
} );
$("#btn-filter-M").on("click", function() {
filter_level(table, "All");
filter_sport(table, "M");
filter_table(table, "M", "*")
} );
$("#btn-filter-S").on("click", function() {
filter_level(table, "All");
filter_sport(table, "S");
filter_table(table, "S", "*")
} );
$("#btn-filter-W").on("click", function() {
filter_level(table, "All");
filter_sport(table, "W");
filter_table(table, "W", "*")
} );
$("#btn-filter-family").on("click", function() {
filter_sport(table, "All");
filter_level(table, "family");
filter_table(table, "*", "family")
} );
$("#searchfield").on( "keyup change", function() {
table.column(2).search( this.value ).draw();
} );
$("#objects_table_filter").hide();
filter_sport(table, "{{ init_sport_filter|default:'All' }}");
filter_table(table, "{{ init_sport_filter|default:'*' }}", "{{ init_level_filter|default:'*' }}");
} );
</script>
</div>

View File

@@ -8,7 +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.choices import SPORT_CHOICES, LEVEL_CHOICES
from dav_events.models.event import Event
from .forms import RegistrationForm
@@ -49,6 +49,8 @@ class EventListView(generic.ListView):
context = super().get_context_data(**kwargs)
if hasattr(self, 'init_sport_filter'):
context['init_sport_filter'] = self.init_sport_filter
if hasattr(self, 'init_level_filter'):
context['init_level_filter'] = self.init_level_filter
return context
def get(self, request, *args, **kwargs):
@@ -56,6 +58,10 @@ class EventListView(generic.ListView):
sport = request.GET['sport']
if (sport, 'Bogus') in SPORT_CHOICES:
self.init_sport_filter = sport
if 'level' in request.GET:
level = request.GET['level']
if (level, 'Bogus') in LEVEL_CHOICES:
self.init_level_filter = level
return super().get(request, *args, **kwargs)