отчет null
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user