@netdata/charts
Version:
Netdata frontend SDK and chart utilities
661 lines (660 loc) • 22.5 kB
JavaScript
"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
})
};
};