@netdata/charts
Version:
Netdata frontend SDK and chart utilities
112 lines • 5.25 kB
JavaScript
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
import React, { memo, useEffect, useMemo, useState } from "react";
import { Flex } from "@netdata/netdata-ui";
import { useAttributeValue, useChart } from "../../provider";
import { getConversionAttributes } from "../../../helpers/unitConversion/getConversionUnits";
import dimensionColors from "../../../sdk/makeChart/theme/dimensionColors";
import { ValueUnitGrid } from "../valueWithUnit";
import SparklineCanvas from "./sparklineCanvas";
import { getSparklineBatchAttributes, getSparklineBatchDimensions, getSparklineDataFetcher } from "./sparklineData";
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
var valueWidth = 144;
var Sparkline = /*#__PURE__*/memo(function (_ref) {
var dimension = _ref.dimension,
dimensions = _ref.dimensions;
var after = useAttributeValue("after");
var before = useAttributeValue("before");
var points = useAttributeValue("points");
var renderedAt = useAttributeValue("renderedAt");
var liveAnchor = useAttributeValue("liveAnchor");
var aggregationMethod = useAttributeValue("correlate.aggregation", "average");
var theme = useAttributeValue("theme");
var chart = useChart();
var getData = useMemo(function () {
return getSparklineDataFetcher(chart);
}, [chart]);
var batchDimensions = useMemo(function () {
return getSparklineBatchDimensions(dimension, dimensions);
}, [dimension, dimensions]);
var attrs = useMemo(function () {
return getSparklineBatchAttributes(chart, batchDimensions, {
after: after,
before: before,
points: points,
renderedAt: renderedAt,
liveAnchor: liveAnchor,
aggregationMethod: aggregationMethod
});
}, [after, aggregationMethod, batchDimensions, before, chart, liveAnchor, points, renderedAt]);
var _useState = useState(null),
_useState2 = _slicedToArray(_useState, 2),
series = _useState2[0],
setSeries = _useState2[1];
useEffect(function () {
var controller = new AbortController();
setSeries(null);
getData(attrs, {
signal: controller.signal
}).then(function (seriesByDimension) {
return setSeries(seriesByDimension.get(dimension.dimension) || null);
})["catch"](function (error) {
if (error.name !== "AbortError") setSeries(null);
});
return function () {
return controller.abort();
};
}, [attrs, dimension.dimension, getData]);
var formatted = useMemo(function () {
if (!series || series.latest === null) return {
value: "-",
unit: ""
};
var unitAttributes = getConversionAttributes(chart, series.unit, {
min: series.latest,
max: series.latest
});
return {
value: chart.getConvertedValue(series.latest, {
unitAttributes: unitAttributes
}),
unit: chart.getUnitSign({
unitAttributes: unitAttributes
})
};
}, [chart, series]);
var color = useMemo(function () {
return dimensionColors[11][chart.getThemeIndex()];
}, [chart, theme]);
return /*#__PURE__*/_jsxs(Flex, {
alignItems: "center",
gap: 1,
width: {
min: "0px",
base: "100%"
},
children: [/*#__PURE__*/_jsx(Flex, {
flex: false,
basis: "".concat(valueWidth, "px"),
width: "".concat(valueWidth, "px"),
title: [formatted.value, formatted.unit].filter(Boolean).join(" "),
children: /*#__PURE__*/_jsx(ValueUnitGrid, {
value: formatted.value,
unit: formatted.unit,
strong: true
})
}), /*#__PURE__*/_jsx(Flex, {
flex: true,
width: {
min: "0px"
},
children: /*#__PURE__*/_jsx(SparklineCanvas, {
values: (series === null || series === void 0 ? void 0 : series.values) || [],
color: color
})
})]
});
});
export default Sparkline;