admin-portal/tech/tabs/02-backlog/07_javascript.js
Frederico Falcao f2a6525224 init
2025-05-30 10:46:17 +01:00

57 lines
2.0 KiB
JavaScript

function editBacklog(id, title, desc, status, type) {
document.getElementById('editBacklogId').value = id;
document.getElementById('editBacklogTitle').value = title;
document.getElementById('editBacklogDesc').value = desc;
document.getElementById('editBacklogStatus').value = status;
document.getElementById('editBacklogType').value = type;
const modalEl = document.getElementById('editBacklogModal');
const modal = new bootstrap.Modal(modalEl);
modal.show();
}
/**
* Escape HTML special characters in a string.
*/
function escapeHtml(unsafe) {
return unsafe
.replace(/&/g, '&')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
}
/**
* Show modal with backlog item details.
*/
function viewBacklog(id, title, desc, status, type, created) {
document.getElementById('viewBacklogTitle').textContent = title;
const descEl = document.getElementById('viewBacklogDesc');
const escapedDesc = escapeHtml(desc);
descEl.innerHTML = escapedDesc.replace(/\n/g, '<br>');
const statusBadge = document.getElementById('viewBacklogStatusBadge');
const statusMap = { 'in progress': 'warning', 'done': 'success', 'cancelled': 'secondary' };
statusBadge.textContent = status.charAt(0).toUpperCase() + status.slice(1);
statusBadge.className = 'badge bg-' + (statusMap[status] || 'light');
document.getElementById('viewBacklogCreated').textContent = created;
const typeMap = {
'bug': 'bi-bug-fill text-danger',
'improvement': 'bi-tools text-success',
'nice-to-have': 'bi-star text-secondary'
};
const typeIcon = typeMap[type] || '';
const typeEl = document.getElementById('viewBacklogType');
if (typeIcon) {
typeEl.innerHTML = `<i class="bi ${typeIcon}"></i> ${type.charAt(0).toUpperCase() + type.slice(1)}`;
} else {
typeEl.textContent = '';
}
const modalEl = document.getElementById('viewBacklogModal');
const modal = new bootstrap.Modal(modalEl);
modal.show();
}