better filter dropdown

This commit is contained in:
Thomas Nahuel Rusiecki 2025-02-21 20:45:39 -03:00
parent 5ea174d553
commit bf0ffc52f2
2 changed files with 34 additions and 25 deletions

View file

@ -28,8 +28,7 @@
</form> </form>
</div> </div>
<!-- Filter Dropdown --> <div class="col-md-6 text-md-end">
<div class="col-md-6 text-md-end">
<div class="dropdown"> <div class="dropdown">
<button class="btn btn-outline-secondary dropdown-toggle" type="button" id="filterDropdown" data-bs-toggle="dropdown" aria-expanded="false"> <button class="btn btn-outline-secondary dropdown-toggle" type="button" id="filterDropdown" data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-filter me-2"></i> <i class="bi bi-filter me-2"></i>
@ -38,23 +37,30 @@
<ul class="dropdown-menu" aria-labelledby="filterDropdown"> <ul class="dropdown-menu" aria-labelledby="filterDropdown">
<li> <li>
<a class="dropdown-item {% if show_closed %}border border-info rounded{% endif %} " href="?show_closed={% if show_closed %}false{% else %}true{% endif %}{% if search_query %}&q={{ search_query }}{% endif %}"> <a class="dropdown-item" href="?{% if search_query %}q={{ search_query }}&{% endif %}show_closed=false">
{% trans 'Closed Lots' %} {% trans 'Open Lots' %}
{% if show_closed %}<i class="bi bi-check"></i>{% endif %} {% if show_closed == 'false' %}<i class="bi bi-check"></i>{% endif %}
</a> </a>
</li> </li>
<li> <li>
<a class="dropdown-item" href="?{% if search_query %}q={{ search_query }}{% endif %}"> <a class="dropdown-item" href="?{% if search_query %}q={{ search_query }}&{% endif %}show_closed=true">
{% trans 'Clear Filters' %} {% trans 'Closed Lots' %}
{% if show_closed == 'true' %}<i class="bi bi-check"></i>{% endif %}
</a> </a>
</li> </li>
<li>
<a class="dropdown-item" href="?{% if search_query %}q={{ search_query }}&{% endif %}show_closed=both">
{% trans 'All Lots' %}
{% if show_closed == 'both' %}<i class="bi bi-check"></i>{% endif %}
</a>
</li>
</ul> </ul>
</div> </div>
</div>
</div> </div>
<!-- Lots Table -->
{% render_table table %} {% render_table table %}
<div class="mt-5 d-flex align-items-center justify-content-center"> <div class="mt-5 d-flex align-items-center justify-content-center">
{% if table.page and table.paginator.num_pages > 1 %} {% if table.page and table.paginator.num_pages > 1 %}

View file

@ -172,13 +172,16 @@ class LotsTagsView(DashboardView, tables.SingleTableView):
def get_queryset(self): def get_queryset(self):
self.pk = self.kwargs.get('pk') self.pk = self.kwargs.get('pk')
self.tag = get_object_or_404(LotTag, owner=self.request.user.institution, id=self.pk) self.tag = get_object_or_404(LotTag, owner=self.request.user.institution, id=self.pk)
self.show_closed = self.request.GET.get('show_closed', 'false') == 'true' self.show_open = self.request.GET.get('show_open', 'false') == 'true'
self.show_closed = self.request.GET.get('show_closed', 'false')
self.search_query = self.request.GET.get('q', '').strip() self.search_query = self.request.GET.get('q', '').strip()
queryset = Lot.objects.filter(owner=self.request.user.institution, type=self.tag) queryset = Lot.objects.filter(owner=self.request.user.institution, type=self.tag)
if not self.show_closed: if self.show_closed == 'true':
queryset = queryset.filter(closed=True) queryset = queryset.filter(closed=True)
elif self.show_closed == 'false':
queryset = queryset.filter(closed=False)
if self.search_query: if self.search_query:
queryset = queryset.filter( queryset = queryset.filter(
@ -200,7 +203,7 @@ class LotsTagsView(DashboardView, tables.SingleTableView):
'title': self.title + " " + self.tag.name, 'title': self.title + " " + self.tag.name,
'breadcrumb': self.breadcrumb + " " + self.tag.name, 'breadcrumb': self.breadcrumb + " " + self.tag.name,
'show_closed': self.show_closed, 'show_closed': self.show_closed,
'search_query': self.search_query, # Pass the search query to the template 'search_query': self.search_query,
}) })
return context return context