From b88001909fb1ec1a60d5af6c7a3f1506285abe64 Mon Sep 17 00:00:00 2001 From: dv Date: Wed, 15 Apr 2026 10:40:38 +0300 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D1=82=D0=B8=D1=81=D1=82=D0=B8=D0=BA=D0=B8=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/js/statistics.js | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/public/js/statistics.js b/public/js/statistics.js index da7891a..e8be97f 100644 --- a/public/js/statistics.js +++ b/public/js/statistics.js @@ -835,31 +835,17 @@ function renderClientLastTicketCard() { }).join('')}`; } -function getTaskCreator(task) { - // Ищем создателя по lifetime: самая ранняя запись с usertype=20 (внешний/клиент). - // lifetime.data отсортирован по убыванию (новые первые), поэтому ищем с конца. - const entries = task.lifetime?.data || []; - // Сначала ищем внешнего пользователя (клиента) - for (let i = entries.length - 1; i >= 0; i--) { - if (entries[i].usertype === 20 && entries[i].username) return entries[i].username; - } - // Fallback: последняя запись (самая ранняя) с любым username - for (let i = entries.length - 1; i >= 0; i--) { - if (entries[i].username) return entries[i].username; - } - return null; -} - function renderClientUsersCard() { const wrap = document.getElementById('stats-client-users-wrap'); if (!wrap) return; - // Собираем: организация → { total, users: { creator → count } } + // createdby — строка с именем создателя, приходит прямо из API + // Собираем: организация → { total, users: { createdby → count } } const cMap = {}; allData.forEach((item) => { const t = item.task; const org = t._clientname || t.clientname || 'Неизвестно'; - const creator = getTaskCreator(t) || '—'; + const creator = t.createdby || '—'; if (!cMap[org]) cMap[org] = { total: 0, users: {} }; cMap[org].total++; cMap[org].users[creator] = (cMap[org].users[creator] || 0) + 1;