diff --git a/apps/api/views.py b/apps/api/views.py index 719d07a..a477fc5 100644 --- a/apps/api/views.py +++ b/apps/api/views.py @@ -55,6 +55,10 @@ class TicketListApiView(generics.ListAPIView): ordering_fields = ["create_timestamp", "edit_timestamp"] def get_queryset(self): + strict_tags = self.request.query_params.get("strict-tags") + if not strict_tags: + return self.queryset + tag_uuids = self.request.query_params.getlist("tags", []) queryset = self.queryset diff --git a/apps/home/admin.py b/apps/home/admin.py index 8db246f..07ff07b 100644 --- a/apps/home/admin.py +++ b/apps/home/admin.py @@ -26,7 +26,7 @@ class TicketAdmin(admin.ModelAdmin): class TicketPriorityAdmin(admin.ModelAdmin): - list_display = ["uuid", "title", "colour", "backgroundcolour", "get_used_count"] + list_display = ["uuid", "title", "colour", "backgroundcolour", "order", "get_used_count"] @admin.display(description="Used by") def get_used_count(self, obj): @@ -35,7 +35,7 @@ class TicketPriorityAdmin(admin.ModelAdmin): class TicketTagAdmin(admin.ModelAdmin): - list_display = ["uuid", "title", "colour", "backgroundcolour", "get_used_count"] + list_display = ["uuid", "title", "colour", "backgroundcolour", "order", "get_used_count"] @admin.display(description="Used by") def get_used_count(self, obj): diff --git a/apps/home/fixtures/newtickets.json b/apps/home/fixtures/newtickets.json index eacf62c..8c2c71d 100644 --- a/apps/home/fixtures/newtickets.json +++ b/apps/home/fixtures/newtickets.json @@ -8,7 +8,7 @@ "author": "21b457a1-b64a-4499-8c53-0e2f3b42fe3c", "priority": "0ebc194c-b856-4e4f-9def-cd190d1e8d43", "create_timestamp": "2024-01-09T00:11:40Z", - "edit_timestamp": "2024-01-16T15:53:48.787Z", + "edit_timestamp": "2024-01-03T15:53:48.787Z", "tags": [ "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b", "72fb255c-132f-4124-802d-f4c051620540", @@ -25,7 +25,7 @@ "author": "248bc1ef-df52-445e-847c-e370dccf436a", "priority": "d140a5be-cf24-4250-8b38-31338e69dffd", "create_timestamp": "2024-01-09T00:09:20Z", - "edit_timestamp": "2024-01-16T15:53:31.535Z", + "edit_timestamp": "2023-06-29T15:53:31.535Z", "tags": [ "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b", "72fb255c-132f-4124-802d-f4c051620540", @@ -42,7 +42,7 @@ "author": "9f469a37-4d8d-4bd0-ba4e-16b07549f42a", "priority": "d140a5be-cf24-4250-8b38-31338e69dffd", "create_timestamp": "2024-01-09T00:05:54Z", - "edit_timestamp": "2024-01-16T15:53:18.994Z", + "edit_timestamp": "2024-01-13T15:53:18.994Z", "tags": [ "0ac68e5d-9000-4fcb-bb44-40b1b0faaa2b", "28b160b5-5c8b-43a5-84d1-4179bde87e6f", diff --git a/apps/static/css/index.css b/apps/static/css/index.css index 6a12ce9..2074d73 100644 --- a/apps/static/css/index.css +++ b/apps/static/css/index.css @@ -132,6 +132,17 @@ body { .ticket-item .ticket-item-complex .badge { width: 1.8rem; + position: relative; +} + +.ticket-item .ticket-item-complex .badge:hover .ticket-item-complex-expand, +.ticket-item .ticket-item-complex .badge .ticket-item-complex-expand:hover { + width: fit-content; + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); + } .ticket-item .ticket-item-icon { diff --git a/apps/static/js/base.js b/apps/static/js/base.js index 94ef231..39a1faf 100644 --- a/apps/static/js/base.js +++ b/apps/static/js/base.js @@ -7,4 +7,9 @@ $("#themeToggle").on("click", function() { else { $("body").attr("data-bs-theme", "light"); } +}); + +$(document).ready(function() { + // Activate all tooltips + $('[data-bs-toggle="tooltip"]').tooltip(); }); \ No newline at end of file diff --git a/apps/static/js/tickets.js b/apps/static/js/tickets.js index bbab738..1bffb36 100644 --- a/apps/static/js/tickets.js +++ b/apps/static/js/tickets.js @@ -1,4 +1,4 @@ -var filters = {"ordering": "-edit_timestamp"}; +var filters = {"ordering": "-edit_timestamp", "strict-tags": true}; global_loadingTickets = false; searchTimeout = null; pagination = {}; @@ -222,6 +222,14 @@ function changeItemsPage(next) { loadTicketItems(page); } +$("#strictTags").on("change", function() { + const strictTags = $(this).prop("checked"); + if (strictTags) filters["strict-tags"] = strictTags; + else delete filters["strict-tags"]; + + loadTicketItems(); +}); + function loadTicketItems(page=1) { if (global_loadingTickets) { @@ -288,24 +296,25 @@ function loadTicketItems(page=1) { }); var priorityElem = template.find(".ticket-item-priority"); - // priorityElem.text(ticket.priority.title); priorityElem.css("color", ticket.priority.colour); priorityElem.css("background-color", ticket.priority.backgroundcolour); + // priorityElem.attr("data-bs-title", ticket.priority.title); + // priorityElem.attr("data-bs-toggle", "tooltip"); + // priorityElem.tooltip(); var departmentElem = template.find(".ticket-item-department"); - departmentElem.addClass("bgc-orange-100 c-orange-700") + departmentElem.css("color", ticket.author.department.colour); + departmentElem.css("background-color", ticket.author.department.backgroundcolour); + // departmentElem.attr("data-bs-title", ticket.author.department.title); + // departmentElem.attr("data-bs-toggle", "tooltip"); + // departmentElem.tooltip(); - // // Add the priority using the badge template - // var priorityTemplate = $($("#ticketContentBadgeTemplate").html()); - // priorityTemplate.find(".ticket-content-badge-text").text(ticket.priority.title + " Priority"); - // priorityTemplate.css({ "color": ticket.priority.colour, "background-color": ticket.priority.backgroundcolour }); - // priorityTemplate.removeClass("rounded-pill").addClass("rounded-1"); - // template.find(".ticket-item-priority").append(priorityTemplate); - // Add the content to the interface $("#ticketsContainer .content").append(template); }); + $("body").tooltip(); + // Make tickets clickable applyTicketClickFunction(); diff --git a/apps/templates/home/tickets.html b/apps/templates/home/tickets.html index 0c361ce..6f74f04 100644 --- a/apps/templates/home/tickets.html +++ b/apps/templates/home/tickets.html @@ -130,7 +130,7 @@ {{ department.title }}