[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.utils.decorators import method_decorator
from django.utils.translation import gettext_lazy as _
from base.methods import filtersubordinates, is_reportingmanager
from helpdesk.filter import TicketFilter, TicketReGroup
@@ -44,13 +45,13 @@ class TicketPipelineNav(HorillaNavView):
filter_form_context_name = "form"
group_by_fields = [
("employee_id", "Owner"),
("ticket_type", "Ticket Type"),
("status", "Status"),
("priority", "Priority"),
("tags", "Tags"),
("assigned_to", "Assigner"),
("employee_id__employee_work_info__company_id", "Company"),
("employee_id", _("Owner")),
("ticket_type", _("Ticket Type")),
("status", _("Status")),
("priority", _("Priority")),
("tags", _("Tags")),
("assigned_to", _("Assigner")),
("employee_id__employee_work_info__company_id", _("Company")),
]
actions = [
@@ -129,12 +130,12 @@ class TicketTabView(HorillaTabView):
self.tabs = [
{
"title": "My Tickets",
"title": _("My Tickets"),
# "url":f'{ reverse("ticket-pipeline-view")}?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"{url}?ticket_tab=suggested_tickets",
},
@@ -145,7 +146,7 @@ class TicketTabView(HorillaTabView):
):
self.tabs.append(
{
"title": "All Tickets",
"title": _("All Tickets"),
# "url":f'{ reverse("ticket-pipeline-view")}?ticket_tab=all_tickets&',
"url": f"{url}?ticket_tab=all_tickets",
}
@@ -207,15 +208,15 @@ class TicketListView(HorillaListView):
"tags",
]
columns = [
("Ticket ID", "get_ticket_id_col"),
("Title", "title"),
("Owner", "employee_id"),
("Type", "ticket_type"),
("Forward to", "get_raised_on"),
("Assigned to", "get_assigned_to"),
("Status", "get_status_col"),
("Priority", "get_priority_stars"),
("Tags", "get_tags_col"),
(_("Ticket ID"), "get_ticket_id_col"),
(_("Title"), "title"),
(_("Owner"), "employee_id"),
(_("Type"), "ticket_type"),
(_("Forward to"), "get_raised_on"),
(_("Assigned to"), "get_assigned_to"),
(_("Status"), "get_status_col"),
(_("Priority"), "get_priority_stars"),
(_("Tags"), "get_tags_col"),
]
row_attrs = """
@@ -226,6 +227,85 @@ class TicketListView(HorillaListView):
action_method = """ticket_action_col"""
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:
super().__init__(**kwargs)
if self.request.GET.get("ticket_tab") == "all_tickets":

View File

@@ -1,6 +1,29 @@
{% extends "index.html" %}
{% load static i18n %}
{% 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" %}
{% for path in script_static_paths %}
@@ -9,7 +32,7 @@
<div
class="oh-checkpoint-badge mb-2"
id="selectedInstances"
id="selectedTickets"
data-ids="[]"
data-clicked=""
style="display: none"
@@ -27,4 +50,5 @@
</div>
{% endif %}
{% endblock content %}