[UPDT] HELPDESK: Easy filter added to the list view

This commit is contained in:
Horilla
2025-12-10 19:20:18 +05:30
parent 98b326fbce
commit 141e548f1f
2 changed files with 124 additions and 20 deletions

View File

@@ -2,6 +2,7 @@ from typing import Any
from django.urls import reverse, reverse_lazy from django.urls import reverse, reverse_lazy
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from django.utils.translation import gettext_lazy as _
from base.methods import filtersubordinates, is_reportingmanager from base.methods import filtersubordinates, is_reportingmanager
from helpdesk.filter import TicketFilter, TicketReGroup from helpdesk.filter import TicketFilter, TicketReGroup
@@ -44,13 +45,13 @@ class TicketPipelineNav(HorillaNavView):
filter_form_context_name = "form" filter_form_context_name = "form"
group_by_fields = [ group_by_fields = [
("employee_id", "Owner"), ("employee_id", _("Owner")),
("ticket_type", "Ticket Type"), ("ticket_type", _("Ticket Type")),
("status", "Status"), ("status", _("Status")),
("priority", "Priority"), ("priority", _("Priority")),
("tags", "Tags"), ("tags", _("Tags")),
("assigned_to", "Assigner"), ("assigned_to", _("Assigner")),
("employee_id__employee_work_info__company_id", "Company"), ("employee_id__employee_work_info__company_id", _("Company")),
] ]
actions = [ actions = [
@@ -129,12 +130,12 @@ class TicketTabView(HorillaTabView):
self.tabs = [ self.tabs = [
{ {
"title": "My Tickets", "title": _("My Tickets"),
# "url":f'{ reverse("ticket-pipeline-view")}?ticket_tab=my_tickets&', # "url":f'{ reverse("ticket-pipeline-view")}?ticket_tab=my_tickets&',
"url": f"{url}?ticket_tab=my_tickets", "url": f"{url}?ticket_tab=my_tickets",
}, },
{ {
"title": "Suggested Tickets", "title": _("Suggested Tickets"),
# "url":f'{ reverse("ticket-pipeline-view")}?ticket_tab=suggested_tickets&', # "url":f'{ reverse("ticket-pipeline-view")}?ticket_tab=suggested_tickets&',
"url": f"{url}?ticket_tab=suggested_tickets", "url": f"{url}?ticket_tab=suggested_tickets",
}, },
@@ -145,7 +146,7 @@ class TicketTabView(HorillaTabView):
): ):
self.tabs.append( self.tabs.append(
{ {
"title": "All Tickets", "title": _("All Tickets"),
# "url":f'{ reverse("ticket-pipeline-view")}?ticket_tab=all_tickets&', # "url":f'{ reverse("ticket-pipeline-view")}?ticket_tab=all_tickets&',
"url": f"{url}?ticket_tab=all_tickets", "url": f"{url}?ticket_tab=all_tickets",
} }
@@ -207,15 +208,15 @@ class TicketListView(HorillaListView):
"tags", "tags",
] ]
columns = [ columns = [
("Ticket ID", "get_ticket_id_col"), (_("Ticket ID"), "get_ticket_id_col"),
("Title", "title"), (_("Title"), "title"),
("Owner", "employee_id"), (_("Owner"), "employee_id"),
("Type", "ticket_type"), (_("Type"), "ticket_type"),
("Forward to", "get_raised_on"), (_("Forward to"), "get_raised_on"),
("Assigned to", "get_assigned_to"), (_("Assigned to"), "get_assigned_to"),
("Status", "get_status_col"), (_("Status"), "get_status_col"),
("Priority", "get_priority_stars"), (_("Priority"), "get_priority_stars"),
("Tags", "get_tags_col"), (_("Tags"), "get_tags_col"),
] ]
row_attrs = """ row_attrs = """
@@ -226,6 +227,85 @@ class TicketListView(HorillaListView):
action_method = """ticket_action_col""" action_method = """ticket_action_col"""
header_attrs = {"action": "style='width:200px'"} header_attrs = {"action": "style='width:200px'"}
row_status_indications = [
(
"canceled--dot",
_("Canceled"),
"""
onclick="
$('#applyFilter').closest('form').find('[name=status]').val('canceled');
$('[name=new]').val('unknown').change();
$('[name=in_progress]').val('unknown').change();
$('[name=on_hold]').val('unknown').change();
$('[name=resolved]').val('unknown').change();
$('#applyFilter').click();
"
""",
),
(
"resolved--dot",
_("Resolved"),
"""
onclick="
$('#applyFilter').closest('form').find('[name=status]').val('resolved');
$('[name=new]').val('unknown').change();
$('[name=in_progress]').val('unknown').change();
$('[name=on_hold]').val('unknown').change();
$('[name=canceled]').val('unknown').change();
$('#applyFilter').click();
"
""",
),
(
"on_hold--dot",
_("On Hold"),
"""
onclick="
$('#applyFilter').closest('form').find('[name=status]').val('on_hold');
$('[name=new]').val('unknown').change();
$('[name=in_progress]').val('unknown').change();
$('[name=resolved]').val('unknown').change();
$('[name=canceled]').val('unknown').change();
$('#applyFilter').click();
"
""",
),
(
"in_progress--dot",
_("In Progress"),
"""
onclick="
$('#applyFilter').closest('form').find('[name=status]').val('in_progress');
$('[name=new]').val('unknown').change();
$('[name=on_hold]').val('unknown').change();
$('[name=resolved]').val('unknown').change();
$('[name=canceled]').val('unknown').change();
$('#applyFilter').click();
"
""",
),
(
"new--dot",
_("New"),
"""
onclick="
$('#applyFilter').closest('form').find('[name=status]').val('new');
$('[name=on_hold]').val('unknown').change();
$('[name=in_progress]').val('unknown').change();
$('[name=resolved]').val('unknown').change();
$('[name=canceled]').val('unknown').change();
$('#applyFilter').click();
"
""",
),
]
row_status_class = "new-{new} in_progress-{in_progress} on_hold-{on_hold} resolved-{resolved} canceled-{canceled}"
def __init__(self, **kwargs: Any) -> None: def __init__(self, **kwargs: Any) -> None:
super().__init__(**kwargs) super().__init__(**kwargs)
if self.request.GET.get("ticket_tab") == "all_tickets": if self.request.GET.get("ticket_tab") == "all_tickets":

View File

@@ -1,6 +1,29 @@
{% extends "index.html" %} {% extends "index.html" %}
{% load static i18n %} {% load static i18n %}
{% block content %} {% block content %}
<style>
.resolved--dot {
background-color: yellowgreen;
}
.on_hold--dot {
background-color: red;
}
.in_progress--dot {
background-color: orange;
}
.canceled--dot {
background-color: gray;
}
.new--dot {
background-color: dodgerblue;
}
</style>
{% include "generic/components.html" %} {% include "generic/components.html" %}
{% for path in script_static_paths %} {% for path in script_static_paths %}
@@ -9,7 +32,7 @@
<div <div
class="oh-checkpoint-badge mb-2" class="oh-checkpoint-badge mb-2"
id="selectedInstances" id="selectedTickets"
data-ids="[]" data-ids="[]"
data-clicked="" data-clicked=""
style="display: none" style="display: none"
@@ -27,4 +50,5 @@
</div> </div>
{% endif %} {% endif %}
{% endblock content %} {% endblock content %}