UNPKG

@netdata/charts

Version:

Netdata frontend SDK and chart utilities

661 lines (660 loc) 22.5 kB
"use strict"; function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } Object.defineProperty(exports, "__esModule", { value: true }); exports.volumeColumn = exports.valueColumn = exports.stdDevColumn = exports.rangeColumn = exports.p95Column = exports.minColumn = exports.medianColumn = exports.maxColumn = exports.makeNumberSortingFn = exports.labelColumn = exports.avgColumn = exports.anomalyColumn = void 0; var _react = _interopRequireDefault(require("react")); var _netdataUi = require("@netdata/netdata-ui"); var _color = _interopRequireWildcard(require("../../line/dimensions/color")); var _name = _interopRequireDefault(require("../../line/dimensions/name")); var _provider = require("../../provider"); var _label = _interopRequireDefault(require("../../filterToolbox/label")); var _dimensions = require("../../line/popover/dimensions"); var _valueWithUnit = _interopRequireWildcard(require("../valueWithUnit")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } 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; } var valueColumnSize = 144; var valueColumnMinSize = 120; var getCachedValue = function getCachedValue(chart, valueCache, id, _ref) { var key = _ref.key, period = _ref.period, objKey = _ref.objKey, _ref$allowNull = _ref.allowNull, allowNull = _ref$allowNull === void 0 ? true : _ref$allowNull; if (!objKey && valueCache) return valueCache.get(id, key, { period: period }); return (_provider.getValueByPeriod[period] || _provider.getValueByPeriod.latest)({ chart: chart, id: id, valueKey: key, objKey: objKey, allowNull: allowNull }); }; var makeNumberSortingFn = exports.makeNumberSortingFn = function makeNumberSortingFn(chart, _ref2) { var key = _ref2.key, period = _ref2.period, objKey = _ref2.objKey, valueCache = _ref2.valueCache; return function (rowA, rowB) { var aId = rowA.original; var bId = rowB.original; var aValue = getCachedValue(chart, valueCache, aId, { key: key, period: period, objKey: objKey }); var bValue = getCachedValue(chart, valueCache, bId, { key: key, period: period, objKey: objKey }); var result = aValue - bValue; if (!result || isNaN(result)) return aId.localeCompare(bId, undefined, { sensitivity: "accent", ignorePunctuation: true }); return result > 0 ? 1 : -1; }; }; var rowValueKeys = { ANOMALY_RATE: "arp", "default": "value" }; var metricsByValue = { dimension: "dimensions", node: "nodes", instance: "instances", label: "labels", value: "values", "default": "values" }; var emptyArray = []; var labelColumn = exports.labelColumn = function labelColumn(chart, fallbackExpandKey) { return { id: "label", header: /*#__PURE__*/(0, _jsxRuntime.jsx)(_netdataUi.TextSmall, { strong: true, children: "Name" }), accessorFn: function accessorFn(id) { return chart.getDimensionName(id); }, size: 200, minSize: 60, renderString: function renderString(row) { return chart.getDimensionName(row.original); }, cell: function cell(_ref3) { var _ref3$row = _ref3.row, id = _ref3$row.original, _ref3$row$depth = _ref3$row.depth, depth = _ref3$row$depth === void 0 ? 0 : _ref3$row$depth, getCanExpand = _ref3$row.getCanExpand, getToggleExpandedHandler = _ref3$row.getToggleExpandedHandler, getIsExpanded = _ref3$row.getIsExpanded; var _ref4 = (0, _provider.useAttributeValue)("hoverX") || emptyArray, _ref5 = _slicedToArray(_ref4, 2), row = _ref5[1]; var rowFlavour = _dimensions.rowFlavours[row] || _dimensions.rowFlavours["default"]; var visible = (0, _provider.useVisibleDimensionId)(id); return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_netdataUi.Flex, { justifyContent: "between", alignItems: "center", padding: [0, 0, 0, depth * 3], opacity: visible ? null : "weak", width: "100%", children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_netdataUi.Flex, { alignItems: "center", gap: 1, position: "relative", width: "100%", children: [visible && /*#__PURE__*/(0, _jsxRuntime.jsx)(_color.ColorBar, { id: id, valueKey: rowValueKeys[rowFlavour] || rowValueKeys["default"], position: "absolute", top: 1, left: 0, backgroundOpacity: 0.4, round: true, height: 4, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_color["default"], { id: id }) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_name["default"], { padding: [1, 2], flex: true, id: id })] }), getCanExpand() && /*#__PURE__*/(0, _jsxRuntime.jsx)(_label["default"], { label: metricsByValue[row.original.value] || metricsByValue[fallbackExpandKey] || metricsByValue["default"], onClick: function onClick(e) { getToggleExpandedHandler()(e); setTimeout(function () { return e.target.scrollIntoView({ behavior: "smooth", block: "nearest" }); }); }, iconRotate: getIsExpanded() ? 2 : null, textProps: { color: "textLite" } })] }); }, sortingFn: function sortingFn(rowA, rowB) { var aId = rowA.original; var bId = rowB.original; return aId.localeCompare(bId, undefined, { sensitivity: "accent", ignorePunctuation: true }); } }; }; var CachedValue = function CachedValue(_ref6) { var id = _ref6.id, visible = _ref6.visible, _ref6$valueKey = _ref6.valueKey, valueKey = _ref6$valueKey === void 0 ? "value" : _ref6$valueKey, _ref6$period = _ref6.period, period = _ref6$period === void 0 ? "latest" : _ref6$period, objKey = _ref6.objKey, unitsKey = _ref6.unitsKey, valueCache = _ref6.valueCache, fractionDigits = _ref6.fractionDigits, unit = _ref6.unit, color = _ref6.color, strong = _ref6.strong; var chart = (0, _provider.useChart)(); var value = getCachedValue(chart, valueCache, id, { key: valueKey, period: period, objKey: objKey }); if (!visible) return null; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_valueWithUnit["default"], { value: value, dimensionId: id, valueKey: valueKey, unitsKey: unitsKey, fractionDigits: fractionDigits, unit: unit, color: color, strong: strong }); }; var renderValueString = function renderValueString(chart, row, _ref7) { var _ref7$key = _ref7.key, key = _ref7$key === void 0 ? "value" : _ref7$key, _ref7$period = _ref7.period, period = _ref7$period === void 0 ? "latest" : _ref7$period, objKey = _ref7.objKey, _ref7$unitsKey = _ref7.unitsKey, unitsKey = _ref7$unitsKey === void 0 ? "units" : _ref7$unitsKey, valueCache = _ref7.valueCache, fractionDigits = _ref7.fractionDigits, unit = _ref7.unit; var dimensionId = row.original; var value = getCachedValue(chart, valueCache, dimensionId, { key: key, period: period, objKey: objKey }); var unitAttributes = unit === undefined && value !== null && value !== "-" ? chart.getUnitAttributesForValue(value, { dimensionId: dimensionId, key: unitsKey }) : undefined; var convertedValue = (0, _provider.convert)(chart, value, { valueKey: key, fractionDigits: fractionDigits, dimensionId: dimensionId, unitsKey: unitsKey, unitAttributes: unitAttributes }); var convertedUnit = unit === undefined ? chart.getUnitSign({ dimensionId: dimensionId, key: unitsKey, unitAttributes: unitAttributes }) : unit; return convertedUnit ? "".concat(convertedValue, " ").concat(convertedUnit) : convertedValue; }; var valueColumn = exports.valueColumn = function valueColumn(chart) { var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, valueCache = _ref8.valueCache; return { id: "value", header: /*#__PURE__*/(0, _jsxRuntime.jsx)(_valueWithUnit.ValueUnitHeader, { label: "Value", strong: false }), headerString: function headerString() { return "Value"; }, size: valueColumnSize, minSize: valueColumnMinSize, renderString: function renderString(row) { return renderValueString(chart, row, { valueCache: valueCache }); }, cell: function cell(_ref9) { var id = _ref9.row.original; var visible = (0, _provider.useVisibleDimensionId)(id); return /*#__PURE__*/(0, _jsxRuntime.jsx)(CachedValue, { period: "latest", id: id, visible: visible, valueCache: valueCache }); }, sortingFn: makeNumberSortingFn(chart, { key: "value", period: "latest", valueCache: valueCache }) }; }; var anomalyColumn = exports.anomalyColumn = function anomalyColumn(chart, _ref0) { var period = _ref0.period, objKey = _ref0.objKey, valueCache = _ref0.valueCache; return { id: objKey ? "".concat(objKey, "-arp") : "arp", header: /*#__PURE__*/(0, _jsxRuntime.jsx)(_valueWithUnit.ValueUnitHeader, { label: "Anomaly", strong: false }), headerString: function headerString() { return "Anomaly"; }, size: valueColumnSize, minSize: valueColumnMinSize, renderString: function renderString(row) { return renderValueString(chart, row, { key: "arp", period: period, objKey: objKey, valueCache: valueCache, fractionDigits: 2, unit: "%" }); }, cell: function cell(_ref1) { var id = _ref1.row.original; var visible = (0, _provider.useVisibleDimensionId)(id); return /*#__PURE__*/(0, _jsxRuntime.jsx)(CachedValue, { period: period, objKey: objKey, id: id, visible: visible, valueKey: "arp", valueCache: valueCache, fractionDigits: 2, unit: "%", color: "anomalyTextFocus" }); }, sortingFn: makeNumberSortingFn(chart, { key: "arp", period: period, objKey: objKey, valueCache: valueCache }) }; }; var minColumn = exports.minColumn = function minColumn(chart, _ref10) { var period = _ref10.period, objKey = _ref10.objKey, valueCache = _ref10.valueCache; return { id: objKey ? "".concat(objKey, "-min") : "min", header: /*#__PURE__*/(0, _jsxRuntime.jsx)(_valueWithUnit.ValueUnitHeader, { label: "Min", strong: false }), headerString: function headerString() { return "Min"; }, size: valueColumnSize, minSize: valueColumnMinSize, renderString: function renderString(row) { return renderValueString(chart, row, { key: "min", period: period, objKey: objKey, valueCache: valueCache }); }, cell: function cell(_ref11) { var id = _ref11.row.original; var visible = (0, _provider.useVisibleDimensionId)(id); return /*#__PURE__*/(0, _jsxRuntime.jsx)(CachedValue, { period: period, objKey: objKey, id: id, visible: visible, valueKey: "min", valueCache: valueCache }); }, sortingFn: makeNumberSortingFn(chart, { key: "min", period: period, objKey: objKey, valueCache: valueCache }) }; }; var avgColumn = exports.avgColumn = function avgColumn(chart, _ref12) { var period = _ref12.period, objKey = _ref12.objKey, valueCache = _ref12.valueCache; return { id: objKey ? "".concat(objKey, "-avg") : "avg", header: /*#__PURE__*/(0, _jsxRuntime.jsx)(_valueWithUnit.ValueUnitHeader, { label: "Avg", strong: false }), headerString: function headerString() { return "Avg"; }, size: valueColumnSize, minSize: valueColumnMinSize, renderString: function renderString(row) { return renderValueString(chart, row, { key: "avg", period: period, objKey: objKey, valueCache: valueCache }); }, cell: function cell(_ref13) { var id = _ref13.row.original; var visible = (0, _provider.useVisibleDimensionId)(id); return /*#__PURE__*/(0, _jsxRuntime.jsx)(CachedValue, { period: period, objKey: objKey, id: id, visible: visible, valueKey: "avg", valueCache: valueCache }); }, sortingFn: makeNumberSortingFn(chart, { key: "avg", period: period, objKey: objKey, valueCache: valueCache }) }; }; var maxColumn = exports.maxColumn = function maxColumn(chart, _ref14) { var period = _ref14.period, objKey = _ref14.objKey, valueCache = _ref14.valueCache; return { id: objKey ? "".concat(objKey, "-max") : "max", header: /*#__PURE__*/(0, _jsxRuntime.jsx)(_valueWithUnit.ValueUnitHeader, { label: "Max", strong: false }), headerString: function headerString() { return "Max"; }, size: valueColumnSize, minSize: valueColumnMinSize, renderString: function renderString(row) { return renderValueString(chart, row, { key: "max", period: period, objKey: objKey, valueCache: valueCache }); }, cell: function cell(_ref15) { var id = _ref15.row.original; var visible = (0, _provider.useVisibleDimensionId)(id); return /*#__PURE__*/(0, _jsxRuntime.jsx)(CachedValue, { period: period, objKey: objKey, id: id, visible: visible, valueKey: "max", valueCache: valueCache }); }, sortingFn: makeNumberSortingFn(chart, { key: "max", period: period, objKey: objKey, valueCache: valueCache }) }; }; var medianColumn = exports.medianColumn = function medianColumn(chart, _ref16) { var period = _ref16.period, objKey = _ref16.objKey, valueCache = _ref16.valueCache; return { id: objKey ? "".concat(objKey, "-median") : "median", header: /*#__PURE__*/(0, _jsxRuntime.jsx)(_valueWithUnit.ValueUnitHeader, { label: "Median", strong: false }), headerString: function headerString() { return "Median"; }, size: valueColumnSize, minSize: valueColumnMinSize, renderString: function renderString(row) { return renderValueString(chart, row, { key: "median", period: period, objKey: objKey, valueCache: valueCache }); }, cell: function cell(_ref17) { var id = _ref17.row.original; var visible = (0, _provider.useVisibleDimensionId)(id); return /*#__PURE__*/(0, _jsxRuntime.jsx)(CachedValue, { period: period, objKey: objKey, id: id, visible: visible, valueKey: "median", valueCache: valueCache }); }, sortingFn: makeNumberSortingFn(chart, { key: "median", period: period, objKey: objKey, valueCache: valueCache }) }; }; var stdDevColumn = exports.stdDevColumn = function stdDevColumn(chart, _ref18) { var period = _ref18.period, objKey = _ref18.objKey, valueCache = _ref18.valueCache; return { id: objKey ? "".concat(objKey, "-stddev") : "stddev", header: /*#__PURE__*/(0, _jsxRuntime.jsx)(_valueWithUnit.ValueUnitHeader, { label: "StdDev", strong: false }), headerString: function headerString() { return "StdDev"; }, size: valueColumnSize, minSize: valueColumnMinSize, renderString: function renderString(row) { return renderValueString(chart, row, { key: "stddev", period: period, objKey: objKey, valueCache: valueCache }); }, cell: function cell(_ref19) { var id = _ref19.row.original; var visible = (0, _provider.useVisibleDimensionId)(id); return /*#__PURE__*/(0, _jsxRuntime.jsx)(CachedValue, { period: period, objKey: objKey, id: id, visible: visible, valueKey: "stddev", valueCache: valueCache }); }, sortingFn: makeNumberSortingFn(chart, { key: "stddev", period: period, objKey: objKey, valueCache: valueCache }) }; }; var p95Column = exports.p95Column = function p95Column(chart, _ref20) { var period = _ref20.period, objKey = _ref20.objKey, valueCache = _ref20.valueCache; return { id: objKey ? "".concat(objKey, "-p95") : "p95", header: /*#__PURE__*/(0, _jsxRuntime.jsx)(_valueWithUnit.ValueUnitHeader, { label: "P95", strong: false }), headerString: function headerString() { return "95th Percentile"; }, size: valueColumnSize, minSize: valueColumnMinSize, renderString: function renderString(row) { return renderValueString(chart, row, { key: "p95", period: period, objKey: objKey, valueCache: valueCache }); }, cell: function cell(_ref21) { var id = _ref21.row.original; var visible = (0, _provider.useVisibleDimensionId)(id); return /*#__PURE__*/(0, _jsxRuntime.jsx)(CachedValue, { period: period, objKey: objKey, id: id, visible: visible, valueKey: "p95", valueCache: valueCache }); }, sortingFn: makeNumberSortingFn(chart, { key: "p95", period: period, objKey: objKey, valueCache: valueCache }) }; }; var rangeColumn = exports.rangeColumn = function rangeColumn(chart, _ref22) { var period = _ref22.period, objKey = _ref22.objKey, valueCache = _ref22.valueCache; return { id: objKey ? "".concat(objKey, "-range") : "range", header: /*#__PURE__*/(0, _jsxRuntime.jsx)(_valueWithUnit.ValueUnitHeader, { label: "Range", strong: false }), headerString: function headerString() { return "Range"; }, size: valueColumnSize, minSize: valueColumnMinSize, renderString: function renderString(row) { return renderValueString(chart, row, { key: "range", period: period, objKey: objKey, valueCache: valueCache }); }, cell: function cell(_ref23) { var id = _ref23.row.original; var visible = (0, _provider.useVisibleDimensionId)(id); return /*#__PURE__*/(0, _jsxRuntime.jsx)(CachedValue, { period: period, objKey: objKey, id: id, visible: visible, valueKey: "range", valueCache: valueCache }); }, sortingFn: makeNumberSortingFn(chart, { key: "range", period: period, objKey: objKey, valueCache: valueCache }) }; }; var volumeColumn = exports.volumeColumn = function volumeColumn(chart, _ref24) { var period = _ref24.period, objKey = _ref24.objKey, valueCache = _ref24.valueCache; return { id: objKey ? "".concat(objKey, "-volume") : "volume", header: /*#__PURE__*/(0, _jsxRuntime.jsx)(_valueWithUnit.ValueUnitHeader, { label: "Volume", strong: false }), headerString: function headerString() { return "Volume"; }, size: valueColumnSize, minSize: valueColumnMinSize, renderString: function renderString(row) { return renderValueString(chart, row, { key: "volume", period: period, objKey: objKey, valueCache: valueCache }); }, cell: function cell(_ref25) { var id = _ref25.row.original; var visible = (0, _provider.useVisibleDimensionId)(id); return /*#__PURE__*/(0, _jsxRuntime.jsx)(CachedValue, { period: period, objKey: objKey, id: id, visible: visible, valueKey: "volume", valueCache: valueCache }); }, sortingFn: makeNumberSortingFn(chart, { key: "volume", period: period, objKey: objKey, valueCache: valueCache }) }; };