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