From f27db37297df6e56456cba35297bd50713d08f34 Mon Sep 17 00:00:00 2001 From: novykh Date: Wed, 1 Jul 2026 12:53:04 +0300 Subject: [PATCH 1/3] Add fullscreen functionality to pause rest of charts. --- src/makeDefaultSDK.js | 2 ++ src/sdk/makeChart/index.js | 6 ++++++ src/sdk/plugins/fullscreen.js | 17 +++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 src/sdk/plugins/fullscreen.js diff --git a/src/makeDefaultSDK.js b/src/makeDefaultSDK.js index 0b1847cb..85602cb0 100644 --- a/src/makeDefaultSDK.js +++ b/src/makeDefaultSDK.js @@ -15,6 +15,7 @@ import select from "./sdk/plugins/select" import selectVertical from "./sdk/plugins/selectVertical" import play from "./sdk/plugins/play" import annotationSync from "./sdk/plugins/annotationSync" +import fullscreen from "./sdk/plugins/fullscreen" const minutes15 = 15 * 60 @@ -31,6 +32,7 @@ export default ({ attributes, ...options } = {}) => selectVertical, play, annotationSync, + fullscreen, }, attributes: { _v: "v3", diff --git a/src/sdk/makeChart/index.js b/src/sdk/makeChart/index.js index 44acdb0e..aa24d5eb 100644 --- a/src/sdk/makeChart/index.js +++ b/src/sdk/makeChart/index.js @@ -277,6 +277,12 @@ export default ({ node.invalidateClosestRowCache() }) + node.onAttributeChange("fullscreen", fullscreen => { + if (!node) return + + sdk.trigger("fullscreen", node, fullscreen) + }) + node.makeChartUI = (uiName, chartLibrary = node.getAttribute("chartLibrary"), force = false) => { if (!(chartLibrary in sdk.ui)) console.error( diff --git a/src/sdk/plugins/fullscreen.js b/src/sdk/plugins/fullscreen.js new file mode 100644 index 00000000..b605fb19 --- /dev/null +++ b/src/sdk/plugins/fullscreen.js @@ -0,0 +1,17 @@ +export default sdk => { + let deactivated = [] + + return sdk.on("fullscreen", (chart, isFullscreen) => { + if (isFullscreen) { + deactivated = sdk.getNodes( + (node, { active }) => + node.type === "chart" && active && node.getId() !== chart.getId() + ) + deactivated.forEach(node => node.deactivate()) + return + } + + deactivated.forEach(node => node.activate()) + deactivated = [] + }) +} From 4fbb906e2a0774689e819ea115704926e433f837 Mon Sep 17 00:00:00 2001 From: novykh Date: Wed, 1 Jul 2026 12:53:45 +0300 Subject: [PATCH 2/3] Fix shortener to work with resize observer. --- src/components/helpers/shortener.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/components/helpers/shortener.js b/src/components/helpers/shortener.js index db782425..0825134b 100644 --- a/src/components/helpers/shortener.js +++ b/src/components/helpers/shortener.js @@ -1,6 +1,7 @@ import React, { useState, useEffect } from "react" import { mergeRefs } from "@netdata/netdata-ui" import { shortenToWidth } from "@/helpers/shorten" +import makeResizeObserver from "@/helpers/makeResizeObserver" import Tooltip from "@/components/tooltip" const Shortener = ({ text, Component = "div", noTooltip, ref: forwardedRef, ...rest }) => { @@ -11,15 +12,18 @@ const Shortener = ({ text, Component = "div", noTooltip, ref: forwardedRef, ...r useEffect(() => { if (!ref) return - const containerWidth = ref.offsetWidth - const contentWidth = ref.scrollWidth + const shorten = () => { + ref.textContent = text - const next = shortenToWidth(text, contentWidth, containerWidth) + const next = shortenToWidth(text, ref.scrollWidth, ref.offsetWidth) - if (next !== text) { ref.textContent = next - setShortenText(text) + setShortenText(next === text ? "" : text) } + + shorten() + + return makeResizeObserver(ref, shorten) }, [text, ref]) return ( From 72cf6ea6f7e9651fb3c767c19722fc0a468d3f7c Mon Sep 17 00:00:00 2001 From: novykh Date: Wed, 1 Jul 2026 16:11:42 +0300 Subject: [PATCH 3/3] v6.10.8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 44d0fe15..f2b8d8fe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@netdata/charts", - "version": "6.10.7", + "version": "6.10.8", "description": "Netdata frontend SDK and chart utilities", "main": "dist/index.js", "module": "dist/es6/index.js",