From 4613a14f5a4c6d3a2c518fa9ab1d191933ad2b11 Mon Sep 17 00:00:00 2001 From: mirivlad Date: Fri, 20 Feb 2026 19:01:03 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20Tooltip=20=D0=BD=D0=B5=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=BB=D0=B6=D0=B5=D0=BD=20=D0=BF=D0=BE=D0=BA=D0=B0=D0=B7=D1=8B?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=D1=81=D1=8F=20=D0=BF=D0=BE=D1=81=D0=BB?= =?UTF-8?q?=D0=B5=20mouseout=20-=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=84=D0=BB=D0=B0=D0=B3=20=5FtooltipHidden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - External handler проверяет флаг _tooltipHidden перед показом - mouseout/mouseleave устанавливают флаг в true - mousemove сбрасывает флаг в false - Предотвращает повторный показ tooltip после скрытия --- templates/servers/detail.twig | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/templates/servers/detail.twig b/templates/servers/detail.twig index 9728b88..aa2680e 100755 --- a/templates/servers/detail.twig +++ b/templates/servers/detail.twig @@ -551,7 +551,7 @@ const chart{{ metricName|replace({'-': '_', '.': '_'}) }} = new Chart(ctx{{ metr } // Прячем если курсор ушел с графика - if (!context.tooltip._active || context.tooltip._active.length === 0) { + if (!context.tooltip._active || context.tooltip._active.length === 0 || canvas{{ metricName|replace({'-': '_', '.': '_'}) }}._tooltipHidden) { tooltipEl.style.opacity = 0; return; } @@ -608,21 +608,27 @@ const chart{{ metricName|replace({'-': '_', '.': '_'}) }} = new Chart(ctx{{ metr // Скрывать tooltip при уходе курсора с canvas в любую сторону var canvas{{ metricName|replace({'-': '_', '.': '_'}) }} = document.getElementById('chart-{{ metricName }}'); if (canvas{{ metricName|replace({'-': '_', '.': '_'}) }}) { + canvas{{ metricName|replace({'-': '_', '.': '_'}) }}._tooltipHidden = false; + canvas{{ metricName|replace({'-': '_', '.': '_'}) }}.addEventListener('mouseout', function() { + canvas{{ metricName|replace({'-': '_', '.': '_'}) }}._tooltipHidden = true; var tooltipEl = document.getElementById('chartjs-tooltip-{{ server.id }}-{{ metricName }}'); if (tooltipEl) { - tooltipEl.style.visibility = 'hidden'; tooltipEl.style.opacity = '0'; } }); canvas{{ metricName|replace({'-': '_', '.': '_'}) }}.addEventListener('mouseleave', function() { + canvas{{ metricName|replace({'-': '_', '.': '_'}) }}._tooltipHidden = true; var tooltipEl = document.getElementById('chartjs-tooltip-{{ server.id }}-{{ metricName }}'); if (tooltipEl) { - tooltipEl.style.visibility = 'hidden'; tooltipEl.style.opacity = '0'; } }); + + canvas{{ metricName|replace({'-': '_', '.': '_'}) }}.addEventListener('mousemove', function() { + canvas{{ metricName|replace({'-': '_', '.': '_'}) }}._tooltipHidden = false; + }); } {% endif %}