dav_registrations: Fixed filter stuff on event list page for family
All checks were successful
buildbot/django-dav-events--test Build done.
All checks were successful
buildbot/django-dav-events--test Build done.
events
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user