diff --git a/apps/static/assets/js/tickets.js b/apps/static/assets/js/tickets.js index 54eed6d..339d8db 100644 --- a/apps/static/assets/js/tickets.js +++ b/apps/static/assets/js/tickets.js @@ -172,6 +172,20 @@ function loadFilterCounts() { }); } +function timestampToHumanDate(timestamp, wasYesterday) { + if (wasYesterday) { + var day = getOrdinalSuffix(timestamp.getDate()); + var month = timestamp.toLocaleString('en-GB', { month: 'short' }); + var year = timestamp.toLocaleString('en-GB', { year: 'numeric' }); + var time = timestamp.toLocaleString('en-GB', { hour: 'numeric', minute: 'numeric' }); + return time + ', ' + day + ' ' + month + ' ' + year; + } + + var hours = timestamp.getUTCHours(); + var minutes = timestamp.getUTCMinutes(); + return hours.toString().padStart(2, '0') + ':' + minutes.toString().padStart(2, '0'); +} + function loadAllTickets() { if (loadingTickets === true) { return; @@ -201,22 +215,7 @@ function loadAllTickets() { data.forEach(function(ticket) { var timestamp = new Date(ticket.timestamp); - var formattedTime; - - if (ticket.was_yesterday) { - var day = getOrdinalSuffix(timestamp.getDate()); - var month = timestamp.toLocaleString('en-GB', { month: 'short' }); - var year = timestamp.toLocaleString('en-GB', { year: 'numeric' }); - var time = timestamp.toLocaleString('en-GB', { hour: 'numeric', minute: 'numeric' }); - - // Formatting the final result - var formattedTime = time + ', ' + day + ' ' + month + ' ' + year; - } - else { - var hours = timestamp.getUTCHours(); - var minutes = timestamp.getUTCMinutes(); - formattedTime = hours.toString().padStart(2, '0') + ':' + minutes.toString().padStart(2, '0'); - } + var formattedTime = timestampToHumanDate(timestamp, ticket.was_yesterday); if (ticket.is_edited) { formattedTime += " • edited"; @@ -246,11 +245,7 @@ function loadAllTickets() { $("#ticketsContainer .content").append(item); }); - $(".email-list-item").on("click", function(e) { - e.preventDefault(); - displayTicket(this); - $('.email-content').toggleClass('open'); - }); + applyTicketClickFunction(); }, error: function(data) { loadingTickets = false; @@ -260,6 +255,38 @@ function loadAllTickets() { }); } +function applyTicketClickFunction() { + $(".email-list-item").on("click", function(e) { + e.preventDefault(); + displayTicket(this); + $('.email-content').toggleClass('open'); + }); +} + +function reloadCurrentTicket() { + displayTicket($(".email-list-item.bgc-grey-100")); +} + +function changeTicket(next=true) { + var selectedTicket = $(".email-list-item.bgc-grey-100"); + + if (!selectedTicket.length) { + displayTicket($(".email-list-item").first()); + return; + } + + if (next) { + displayTicket(selectedTicket.next()); + } + else { + displayTicket(selectedTicket.prev()); + } + + if (!$('.email-content').hasClass('open')) { + $('.email-content').addClass('open'); + } +} + function displayTicket(ticketElement) { ticket = $(ticketElement); ticketID = ticket.data("ticket-id"); @@ -326,17 +353,7 @@ function displayTicket(ticketElement) { // timestamp var timestamp = new Date(ticket.timestamp); - var formattedTime; - - if (ticket.was_yesterday) { - var options = { weekday: 'short', day: 'numeric', month: 'short', year: 'numeric' }; - formattedTime = timestamp.toLocaleDateString('en-GB', options); - } - else { - var hours = timestamp.getUTCHours(); - var minutes = timestamp.getUTCMinutes(); - formattedTime = hours.toString().padStart(2, '0') + ':' + minutes.toString().padStart(2, '0'); - } + var formattedTime = timestampToHumanDate(timestamp, ticket.was_yesterday); if (ticket.is_edited) { formattedTime += " • edited"; diff --git a/apps/templates/home/tickets.html b/apps/templates/home/tickets.html index c9f014b..ab7abbc 100644 --- a/apps/templates/home/tickets.html +++ b/apps/templates/home/tickets.html @@ -138,14 +138,14 @@
- +
@@ -193,7 +193,7 @@ - -