UNPKG

@netdata/charts

Version:

Netdata frontend SDK and chart utilities

90 lines (89 loc) 4.63 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.sortHeatmapValues = exports.parseHeatmapValue = exports.isHeatmapNumeric = exports.isHeatmapBinary = exports.formatScaledValue = exports.formatHeatmapLabel = exports.detectHeatmapScale = void 0; var _scalableUnits = _interopRequireWildcard(require("./units/scalableUnits")); 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); } var heatmapValueRegex = /^\d*\.?\d+$/; var heatmapInfRegex = /^\+inf$/i; var heatmapPrefixRegex = /^.+_(\d*\.?\d+|\+[Ii]nf)$/; var getHeatmapValueLabel = function getHeatmapValueLabel(value) { var _value$match; if (typeof value !== "string") return value; return ((_value$match = value.match(heatmapPrefixRegex)) === null || _value$match === void 0 ? void 0 : _value$match[1]) || value; }; var parseHeatmapValue = exports.parseHeatmapValue = function parseHeatmapValue(value) { var label = getHeatmapValueLabel(value); if (typeof label !== "string") return NaN; if (heatmapInfRegex.test(label)) return Infinity; if (!heatmapValueRegex.test(label)) return NaN; return parseFloat(label); }; var isHeatmapNumeric = exports.isHeatmapNumeric = function isHeatmapNumeric(values) { return values.every(function (value) { return !isNaN(parseHeatmapValue(value)); }); }; var isHeatmapBinary = exports.isHeatmapBinary = function isHeatmapBinary(values) { var hasBinaryCandidate = false; return values.every(function (value) { var parsed = parseHeatmapValue(value); if (!isFinite(parsed) || parsed <= 1) return true; hasBinaryCandidate = true; return Number.isInteger(parsed) && parsed > 0 && Number.isInteger(Math.log2(parsed)); }) && hasBinaryCandidate; }; var detectHeatmapScale = exports.detectHeatmapScale = function detectHeatmapScale(values) { if (!values.length || !isHeatmapNumeric(values)) return null; return isHeatmapBinary(values) ? "binary" : "num"; }; var sortHeatmapValues = exports.sortHeatmapValues = function sortHeatmapValues(values) { if (!isHeatmapNumeric(values)) return null; return values.map(function (value, index) { return { value: value, index: index, parsed: parseHeatmapValue(value) }; }).sort(function (a, b) { return a.parsed - b.parsed || a.index - b.index; }).map(function (_ref) { var value = _ref.value; return value; }); }; var getScaleEntries = function getScaleEntries(scale) { return (_scalableUnits.keys[scale] || []).map(function (prefix) { return { prefix: prefix === "1" ? "" : prefix, divider: prefix === "1" ? 1 : _scalableUnits["default"][scale][prefix] }; }); }; var formatNumber = function formatNumber(value) { if (value > 0 && value < 0.01) return parseFloat(value.toPrecision(3)).toString(); return parseFloat(value.toFixed(2)).toString(); }; var formatScaledValue = exports.formatScaledValue = function formatScaledValue(value, scale) { if (!value) return "0"; var entries = getScaleEntries(scale); var entry = entries.reduce(function (selected, candidate) { return candidate.divider <= value && candidate.divider > selected.divider ? candidate : selected; }, { prefix: "", divider: 0 }); if (!entry.divider) return formatNumber(value); return "".concat(formatNumber(value / entry.divider)).concat(entry.prefix); }; var formatHeatmapLabel = exports.formatHeatmapLabel = function formatHeatmapLabel(value, scale) { var label = getHeatmapValueLabel(value); if (typeof label !== "string") return value; if (heatmapInfRegex.test(label)) return "+Inf"; if (!scale) return label; var parsed = parseHeatmapValue(label); if (isNaN(parsed)) return label; return formatScaledValue(parsed, scale); };