отчет 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 usersMap = new Map();
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>';
// Сортируем по имени
const sorted = Array.from(usersMap.entries()).sort((a, b) => a[1].localeCompare(b[1]));
// Сортируем по имени, защищая от null/undefined
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) {
options += `<option value="${id}">${escapeHtml(name)}</option>`;
}
@@ -161,8 +167,8 @@ function renderReport(data) {
<td>${escapeHtml(item.task_title)}</td>
<td class="task-description" title="${escapeHtml(item.task_description)}">${escapeHtml(truncateText(item.task_description, 50))}</td>
<td>${formatDateTime(item.due_date) || '—'}</td>
<td>${escapeHtml(item.user_name)}</td>
<td>${escapeHtml(item.creator_name)}</td>
<td>${escapeHtml(item.user_name || 'Неизвестно')}</td>
<td>${escapeHtml(item.creator_name || 'Неизвестно')}</td>
<td><span class="status-badge status-${item.status}">${statusLabels[item.status] || item.status}</span></td>
<td>${formatDateTime(item.status_updated_at) || '—'}</td>
</tr>