отчет null

This commit is contained in:
2026-03-19 10:28:37 +05:00
parent 84917e4683
commit 440b330900

View File

@@ -89,12 +89,18 @@ function populateUserFilter(data) {
const select = document.getElementById('report-user-filter'); const select = document.getElementById('report-user-filter');
const usersMap = new Map(); const usersMap = new Map();
data.forEach(item => { data.forEach(item => {
usersMap.set(item.user_id, item.user_name); // Убедимся, что имя не null
const name = item.user_name || 'Без имени';
usersMap.set(item.user_id, name);
}); });
let options = '<option value="">Все пользователи</option>'; let options = '<option value="">Все пользователи</option>';
// Сортируем по имени // Сортируем по имени, защищая от null/undefined
const sorted = Array.from(usersMap.entries()).sort((a, b) => a[1].localeCompare(b[1])); const sorted = Array.from(usersMap.entries()).sort((a, b) => {
const nameA = a[1] || '';
const nameB = b[1] || '';
return nameA.localeCompare(nameB);
});
for (let [id, name] of sorted) { for (let [id, name] of sorted) {
options += `<option value="${id}">${escapeHtml(name)}</option>`; options += `<option value="${id}">${escapeHtml(name)}</option>`;
} }
@@ -161,8 +167,8 @@ function renderReport(data) {
<td>${escapeHtml(item.task_title)}</td> <td>${escapeHtml(item.task_title)}</td>
<td class="task-description" title="${escapeHtml(item.task_description)}">${escapeHtml(truncateText(item.task_description, 50))}</td> <td class="task-description" title="${escapeHtml(item.task_description)}">${escapeHtml(truncateText(item.task_description, 50))}</td>
<td>${formatDateTime(item.due_date) || '—'}</td> <td>${formatDateTime(item.due_date) || '—'}</td>
<td>${escapeHtml(item.user_name)}</td> <td>${escapeHtml(item.user_name || 'Неизвестно')}</td>
<td>${escapeHtml(item.creator_name)}</td> <td>${escapeHtml(item.creator_name || 'Неизвестно')}</td>
<td><span class="status-badge status-${item.status}">${statusLabels[item.status] || item.status}</span></td> <td><span class="status-badge status-${item.status}">${statusLabels[item.status] || item.status}</span></td>
<td>${formatDateTime(item.status_updated_at) || '—'}</td> <td>${formatDateTime(item.status_updated_at) || '—'}</td>
</tr> </tr>