57 lines
2.0 KiB
JavaScript
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, '<')
|
|
.replace(/>/g, '>')
|
|
.replace(/"/g, '"')
|
|
.replace(/'/g, ''');
|
|
}
|
|
|
|
/**
|
|
* 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();
|
|
}
|