Blame | Last modification | View Log | RSS feed
/*** Ticket Renderer - Handles unread indicators and ticket list rendering*/var TicketRenderer = (function() {return {/*** Apply unread styling to ticket rows based on unreadMap data attribute* Called after ticket list is rendered*/applyUnreadStyling: function() {$('tr[data-ticket-unread="true"]').each(function() {$(this).addClass('ticket-unread');// Add unread indicator dot if not already presentif ($(this).find('.unread-badge').length === 0) {var firstTd = $(this).find('td:first');firstTd.prepend('<span class="unread-badge" title="Unread update"></span> ');}});},/*** Sort ticket rows: unread first, then by date descending* @param {string} tableBodySelector - jQuery selector for tbody*/sortUnreadFirst: function(tableBodySelector) {var $tbody = $(tableBodySelector);var rows = $tbody.find('tr').get();rows.sort(function(a, b) {var aUnread = $(a).data('ticket-unread') === true ? 1 : 0;var bUnread = $(b).data('ticket-unread') === true ? 1 : 0;// Unread firstif (aUnread !== bUnread) {return bUnread - aUnread;}// Then by timestamp descendingvar aTime = $(a).data('last-activity-time') || '';var bTime = $(b).data('last-activity-time') || '';return bTime.localeCompare(aTime);});$.each(rows, function(idx, row) {$tbody.append(row);});},/*** Update the unread count badge in the navigation/header* @param {number} count - Number of unread tickets*/updateUnreadBadge: function(count) {var $badge = $('.cs-unread-count');if (count > 0) {if ($badge.length === 0) {// Create badge if it doesn't exist$('.cs-nav-link, .cs-menu-item').each(function() {$(this).append(' <span class="badge badge-danger cs-unread-count">' + count + '</span>');});} else {$badge.text(count).show();}} else {$badge.hide();}},/*** Show last activity message preview for a ticket* @param {jQuery} $row - The ticket row element* @param {string} message - Last activity message*/showLastActivityPreview: function($row, message) {if (message) {var preview = message.length > 80 ? message.substring(0, 80) + '...' : message;var $previewEl = $row.find('.last-activity-preview');if ($previewEl.length > 0) {$previewEl.text(preview);}}}};})();// Initialize when document is ready$(function() {// Apply unread styling after page loadTicketRenderer.applyUnreadStyling();// Initialize ticket manager if on a ticket pageif ($('.ticket-list-table').length > 0 || $('#ticketTable').length > 0) {TicketManager.init();}});