From 440b33090055c1b5a00de5f4a772999f3439f8ee Mon Sep 17 00:00:00 2001 From: kalugin66 Date: Thu, 19 Mar 2026 10:28:37 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D1=87=D0=B5=D1=82=20null?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/reports.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/public/reports.js b/public/reports.js index a0221e5..85c532b 100644 --- a/public/reports.js +++ b/public/reports.js @@ -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 = ''; - // Сортируем по имени - 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 += ``; } @@ -161,8 +167,8 @@ function renderReport(data) { ${escapeHtml(item.task_title)} ${escapeHtml(truncateText(item.task_description, 50))} ${formatDateTime(item.due_date) || '—'} - ${escapeHtml(item.user_name)} - ${escapeHtml(item.creator_name)} + ${escapeHtml(item.user_name || 'Неизвестно')} + ${escapeHtml(item.creator_name || 'Неизвестно')} ${statusLabels[item.status] || item.status} ${formatDateTime(item.status_updated_at) || '—'}