UNPKG

@netdata/charts

Version:

Netdata frontend SDK and chart utilities

293 lines (292 loc) 11.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeConversableKey = exports.keys = exports.isCompactDurationUnit = exports["default"] = exports.compactDurationUnitKeys = void 0; var _zeropad = _interopRequireDefault(require("../zeropad")); 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 makeConversableKey = exports.makeConversableKey = function makeConversableKey(unit, scale) { return "".concat(unit, "-").concat(scale); }; var compactDurationUnitKeys = exports.compactDurationUnitKeys = ["a:mo:d", "mo:d:h", "d:h:mm", "h:mm:ss", "mm:ss", "dHH:MM:ss"]; var isCompactDurationUnit = exports.isCompactDurationUnit = function isCompactDurationUnit(unit) { return compactDurationUnitKeys.includes(unit); }; var seconds2time = function seconds2time(seconds, maxTimeUnit) { var minTimeUnit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "MS"; var precision = minTimeUnit === "MS" ? 100 : 1; var durationUnits = [["YEARS", "yr", 86400 * 365], ["MONTHS", "mo", 86400 * 30], ["DAYS", "d", 86400], ["HOURS", "h", 3600], ["MINUTES", "m", 60]]; var startIndex = durationUnits.findIndex(function (_ref) { var _ref2 = _slicedToArray(_ref, 1), unit = _ref2[0]; return unit === maxTimeUnit; }); var selectedUnits = durationUnits.slice(startIndex === -1 ? durationUnits.length : startIndex); var sign = seconds < 0 ? "-" : ""; var ticks = Math.round(Math.abs(seconds) * precision); var parts = []; selectedUnits.forEach(function (_ref3) { var _ref4 = _slicedToArray(_ref3, 3), suffix = _ref4[1], secondsPerUnit = _ref4[2]; var unitTicks = secondsPerUnit * precision; var value = Math.floor(ticks / unitTicks); ticks -= value * unitTicks; if (value) parts.push("".concat(value).concat(suffix)); }); var wholeSeconds = Math.floor(ticks / precision); var fraction = ticks - wholeSeconds * precision; var secondsString = fraction ? "".concat(wholeSeconds, "s.").concat(fraction.toString().padStart(2, "0")) : "".concat(wholeSeconds, "s"); if (secondsString !== "0s" || !parts.length) parts.push(secondsString); return "".concat(sign).concat(parts.join("")); }; var twoFixed = function twoFixed() { var multiplier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; return function (value) { return value * multiplier; }; }; var secondConverters = { ns: { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max < 0.000001; }, convert: twoFixed(1000000000) }, us: { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 0.000001 && max < 0.001; }, convert: twoFixed(1000000) }, ms: { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 0.001 && max < 1; }, convert: twoFixed(1000) }, s: { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 1 && max < 60; }, convert: twoFixed(1) }, "mm:ss": { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 60 && max < 3600; }, convert: function convert(value) { return seconds2time(value, "MINUTES"); } }, "h:mm:ss": { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 3600 && max < 86400; }, convert: function convert(value) { return seconds2time(value, "HOURS"); } }, "d:h:mm": { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 86400; }, convert: function convert(value) { return seconds2time(value, "DAYS"); } }, "mo:d:h": { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 86400 * 30; }, convert: function convert(value) { return seconds2time(value, "MONTHS"); } }, "a:mo:d": { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 86400 * 365; }, convert: function convert(value) { return seconds2time(value, "YEARS"); } }, "dHH:MM:ss": { check: function check() { return false; }, convert: function convert(value) { return seconds2time(value, "DAYS", "SECONDS"); } } }; var makeSecondSourceConverters = function makeSecondSourceConverters(multiplier) { return Object.entries(secondConverters).reduce(function (acc, _ref5) { var _ref6 = _slicedToArray(_ref5, 2), key = _ref6[0], converter = _ref6[1]; acc[key] = { check: function check(chart, max) { return converter.check(chart, max * multiplier); }, convert: function convert(value, chart) { return converter.convert(value * multiplier, chart); } }; return acc; }, {}); }; var millisecondKeys = ["ns", "us", "ms", "s", "a:mo:d", "mo:d:h", "d:h:mm", "h:mm:ss", "mm:ss"]; var secondKeys = [].concat(millisecondKeys, ["dHH:MM:ss"]); var keys = exports.keys = { Cel: ["[degF]"], ns: ["ns", "us", "ms", "s"], ms: millisecondKeys, s: secondKeys, min: secondKeys, h: secondKeys, d: secondKeys, wk: secondKeys, mo: secondKeys, a: secondKeys }; var _default = exports["default"] = { Cel: { "[degF]": { check: function check(chart) { return chart.getAttribute("temperature") === "fahrenheit"; }, convert: function convert(value) { return value * 9 / 5 + 32; } } }, ns: { ns: { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max < 1000; }, convert: function convert(nanoseconds) { var tms = Math.round(nanoseconds * 10); nanoseconds = Math.floor(tms / 10); tms -= nanoseconds * 10; return "".concat(nanoseconds, ".").concat((0, _zeropad["default"])(tms)); } }, us: { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 1000 && max < 1000 * 1000; }, convert: function convert(nanoseconds) { nanoseconds = Math.round(nanoseconds); var microseconds = Math.floor(nanoseconds / 1000); nanoseconds -= microseconds * 1000; nanoseconds = Math.round(nanoseconds / 10); return "".concat(microseconds, ".").concat((0, _zeropad["default"])(nanoseconds)); } }, ms: { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 1000 * 1000 && max < 1000 * 1000 * 1000; }, convert: function convert(nanoseconds) { nanoseconds = Math.round(nanoseconds); var milliseconds = Math.floor(nanoseconds / 1000 / 1000); nanoseconds -= milliseconds * 1000 * 1000; nanoseconds = Math.round(nanoseconds / 1000 / 10); return "".concat(milliseconds, ".").concat((0, _zeropad["default"])(nanoseconds)); } }, s: { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 1000 * 1000 * 1000; }, convert: function convert(nanoseconds) { nanoseconds = Math.round(nanoseconds); var seconds = Math.floor(nanoseconds / 1000 / 1000 / 1000); nanoseconds -= seconds * 1000 * 1000 * 1000; nanoseconds = Math.round(nanoseconds / 1000 / 1000 / 10); return "".concat(seconds, ".").concat((0, _zeropad["default"])(nanoseconds)); } } }, ms: { ns: { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max < 0.001; }, convert: twoFixed(1000000) }, us: { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 0.001 && max < 1; }, convert: twoFixed(1000) }, ms: { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 1 && max < 1000; }, convert: twoFixed() }, s: { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 1000 && max < 60000; }, convert: twoFixed(0.001) }, "mm:ss": { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 60000 && max < 3600000; }, convert: function convert(value) { return seconds2time(value / 1000, "MINUTES"); } }, "h:mm:ss": { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 3600000 && max < 86400000; }, convert: function convert(value) { return seconds2time(value / 1000, "HOURS"); } }, "d:h:mm": { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 86400000; }, convert: function convert(value) { return seconds2time(value / 1000, "DAYS"); } }, "mo:d:h": { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 86400000 * 30; }, convert: function convert(value) { return seconds2time(value / 1000, "MONTHS"); } }, "a:mo:d": { check: function check(chart, max) { return chart.getAttribute("secondsAsTime") && max >= 86400000 * 365; }, convert: function convert(value) { return seconds2time(value / 1000, "YEARS"); } } }, s: secondConverters, min: makeSecondSourceConverters(60), h: makeSecondSourceConverters(3600), d: makeSecondSourceConverters(86400), wk: makeSecondSourceConverters(604800), mo: makeSecondSourceConverters(86400 * 30), a: makeSecondSourceConverters(86400 * 365) };