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

View File

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