From 9b7e5afd4fcbcc9dc86fd175d2e54d9a242fa87e Mon Sep 17 00:00:00 2001 From: mirivlad Date: Sat, 25 Apr 2026 19:00:44 +0800 Subject: [PATCH] Fix dynamic zoom loading and tooltips - Fix API date parsing for d.m H:i format - Update labels variable after loading new data for tooltips - Ensure tooltips work correctly after zoom reload --- src/Controllers/Api/MetricsApiController.php | 15 +++++++++++++-- templates/servers/detail.twig | 3 +++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Controllers/Api/MetricsApiController.php b/src/Controllers/Api/MetricsApiController.php index 454c8e5..787884b 100644 --- a/src/Controllers/Api/MetricsApiController.php +++ b/src/Controllers/Api/MetricsApiController.php @@ -29,8 +29,19 @@ class MetricsApiController extends Model if ($startParam && $endParam) { // Используем переданные даты - $startDate = new DateTime($startParam); - $endDate = new DateTime($endParam); + // Парсим формат d.m H:i (20.04 13:59) + $startDateStr = $startParam; + $endDateStr = $endParam; + + if (preg_match('/^\d{1,2}\.\d{2} \d{1,2}:\d{2}$/', $startParam)) { + $startDateStr = date('Y') . '-' . preg_replace('/^(\d{1,2})\.(\d{2}) (\d{1,2}):(\d{2})$/', '$2-$1 $3:$4', $startParam); + } + if (preg_match('/^\d{1,2}\.\d{2} \d{1,2}:\d{2}$/', $endParam)) { + $endDateStr = date('Y') . '-' . preg_replace('/^(\d{1,2})\.(\d{2}) (\d{1,2}):(\d{2})$/', '$2-$1 $3:$4', $endParam); + } + + $startDate = new DateTime($startDateStr); + $endDate = new DateTime($endDateStr); } else { // Вычисляем по period switch ($period) { diff --git a/templates/servers/detail.twig b/templates/servers/detail.twig index 578cf6c..634e91d 100755 --- a/templates/servers/detail.twig +++ b/templates/servers/detail.twig @@ -867,6 +867,9 @@ function loadDetailedMetrics{{ metricName|replace({'-': '_', '.': '_'}) }}(start chart.data.labels = data.labels; chart.data.datasets[0].data = data.datasets[metricName]; chart.update(); + + // Обновляем переменную labels для тултипов + window['labels{{ metricName }}'] = data.labels; } }) .catch(function() {