in static/plugins/jira_stats.js [12:67]
function ticket_to_row(data) {
// Converts a ticket data entry to a row in the 'open tickets' table
let ticket_status = 0; // Default to WFI
if (data.paused) ticket_status = 1; // WFU, paused
if (data.issuetype === "Planned Work") ticket_status = 2; // Planned work, paused
const hours_spent_wfi = Math.round(data.sla_time_counted/3600);
let response_time = Math.round(data.response_time/3600);
if (!data.first_response) response_time = Math.round(data.sla_time_counted/3600);
let response_time_text = "N/A";
let resolve_time_text = "N/A";
if (data.sla && ticket_status != 2) { // Disregard planned work
response_time_text = `${response_time} / ${data.sla.respond} hours`
resolve_time_text = `${hours_spent_wfi} / ${data.sla.resolve} hours`
}
const response_time_div = document.createElement('div');
response_time_div.className = (data.sla_met_respond === false && ticket_status !== 2) ? 'badge text-danger' : 'badge bg-transparent text-reset';
response_time_div.innerText = response_time_text;
response_time_div.style.width = "120px";
const resolve_time_div = document.createElement('div');
resolve_time_div.className = (data.sla_met_resolve === false && ticket_status !== 2) ? 'badge text-danger' : 'badge bg-transparent text-reset';
resolve_time_div.innerText = resolve_time_text;
resolve_time_div.style.width = "120px";
const title_cell = document.createElement('a');
title_cell.className = "text-truncate"
title_cell.href = data.url;
title_cell.target = "_blank";
title_cell.innerText = `${data.key}: ${data.summary}`;
title_cell.style.overflow = "hidden";
title_cell.style.whiteSpace = "nowrap";
title_cell.style.textOverflow = "ellipsis";
title_cell.style.maxWidth = "calc(100vw - 590px - var(--sidebar))";
title_cell.style.display = "inline-block";
title_cell.title = data.summary;
const status_div = document.createElement('div');
status_div.style.height = "100%";
status_div.style.minWidth = "100px";
status_div.style.maxWidth = "7vw";
status_div.className = `badge px-1 text-bg-${ticket_status_colors[ticket_status]}`;
status_div.innerText = ticket_status_enum[ticket_status];
return [
ticket_status,
status_div,
title_cell,
response_time_div,
resolve_time_div,
data.assignee || "Unassigned"
];
}