@netdata/charts
Version:
Netdata frontend SDK and chart utilities
224 lines • 9.64 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); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
import { v4 as uuidv4 } from "uuid";
import makeListeners from "../helpers/makeListeners";
import limitRange from "../helpers/limitRange";
import pristine, { pristineKey } from "./pristine";
import makeIntls from "./makeIntls";
import { getValue, setValue } from "../helpers/crud";
export default (function (_ref) {
var sdk = _ref.sdk,
_ref$parent = _ref.parent,
parent = _ref$parent === void 0 ? null : _ref$parent,
initialAttributes = _ref.attributes;
var listeners = makeListeners();
var attributeListeners = makeListeners();
var id = (initialAttributes === null || initialAttributes === void 0 ? void 0 : initialAttributes.id) || uuidv4();
var attributes = _objectSpread({
id: id
}, initialAttributes);
var init = function init() {
setParent(parent);
};
var setAttribute = function setAttribute(name, value) {
return setValue(name, value, attributes);
};
var getAttribute = function getAttribute(key, defaultValue) {
return getValue(key, defaultValue, attributes);
};
var getId = function getId() {
return attributes.id;
};
var trigger = function trigger(name, value, prevValue) {
return attributeListeners.trigger(name, value, prevValue);
};
var updateAttribute = function updateAttribute(name, value) {
if (!attributes) return;
var prevValue = getValue(name, undefined, attributes);
if (prevValue === value) return;
var prevPristine = pristine.update(attributes, name, value);
setAttribute(name, value);
trigger(name, value, prevValue);
if (prevPristine) {
trigger(pristineKey, attributes[pristineKey], prevPristine);
sdk.trigger("pristineChanged", pristineKey, instance, value, prevValue);
}
};
var setAttributes = function setAttributes(values) {
return Object.keys(values).forEach(function (name) {
return setAttribute(name, values[name]);
});
};
var getAttributes = function getAttributes() {
return attributes;
};
var updateAttributes = function updateAttributes(values) {
var prevPristine = null;
var prevValues = Object.keys(values).reduce(function (acc, name) {
var value = values[name];
var prevValue = getValue(name, undefined, attributes);
if (prevValue === value) return acc;
var prev = pristine.update(attributes, name, value);
if (prev && !prevPristine) prevPristine = prev;
setAttribute(name, value);
acc[name] = prevValue;
return acc;
}, {});
Object.keys(prevValues).forEach(function (name) {
if (values[name] === prevValues[name]) return;
trigger(name, values[name], prevValues[name]);
});
if (prevPristine) {
trigger(pristineKey, attributes[pristineKey], prevPristine);
sdk.trigger("pristineChanged", pristineKey, instance, attributes[pristineKey], prevPristine);
}
};
var onAttributeChange = function onAttributeChange(name, handler) {
return attributeListeners.on(name, handler);
};
var onAttributesChange = function onAttributesChange(names, handler) {
return names.reduce(function (func, name) {
return func ? func.on(name, handler) : attributeListeners.on(name, handler);
}, null);
};
var onceAttributeChange = function onceAttributeChange(name, handler) {
return attributeListeners.once(name, handler);
};
var match = function match(attrs) {
if (typeof attrs === "function") return attrs(instance, attributes);
return !attrs || !attributes || !Object.keys(attrs).some(function (name) {
return attrs[name] !== attributes[name];
});
};
var setParent = function setParent(node) {
var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref2$inherit = _ref2.inherit,
inheritAttrs = _ref2$inherit === void 0 ? true : _ref2$inherit;
parent = node;
if (inheritAttrs && node) inherit();
};
var getParent = function getParent() {
return parent;
};
var getAncestor = function getAncestor(attributes) {
var current = instance;
var parent = null;
while ((_current$getParent = current.getParent()) !== null && _current$getParent !== void 0 && _current$getParent.match(attributes)) {
var _current$getParent;
parent = current.getParent();
current = parent;
}
return parent;
};
var _makeIntls = makeIntls(),
updateIntls = _makeIntls.update,
formatTime = _makeIntls.formatTime,
formatDate = _makeIntls.formatDate,
formatXAxis = _makeIntls.formatXAxis,
destroyIntls = _makeIntls.destroy;
var inherit = function inherit() {
var parentAttributes = parent.getAttributes();
attributes = _objectSpread(_objectSpread(_objectSpread({}, parentAttributes), attributes), {}, {
overlays: _objectSpread(_objectSpread({}, parentAttributes.overlays), attributes.overlays)
});
updateIntls(attributes.timezone);
};
var moveY = function moveY(min, max) {
sdk.trigger("moveY", instance, min, max);
};
var moveX = function moveX(after) {
var before = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var _limitRange = limitRange({
after: after,
before: before
}),
fixedAfter = _limitRange.fixedAfter,
fixedBefore = _limitRange.fixedBefore;
sdk.trigger("moveX", instance, Math.floor(fixedAfter), Math.floor(fixedBefore));
};
var zoomX = function zoomX(multiplier) {
var _getAttributes = getAttributes(),
after = _getAttributes.after,
before = _getAttributes.before;
if (after < 0) {
var now = Date.now() / 1000;
after = now + after;
before = now;
}
var diff = multiplier * Math.round((before - after) / 4);
moveX(after + diff, before - diff);
};
var zoomIn = function zoomIn() {
return zoomX(1);
};
var zoomOut = function zoomOut() {
return zoomX(-1);
};
var updateStaticValueRange = function updateStaticValueRange(value) {
if (getAttribute("pristineStaticValueRange") === undefined) {
var _value = getAttribute("staticValueRange");
updateAttribute("pristineStaticValueRange", _value);
}
updateAttribute("staticValueRange", value);
};
var resetStaticValueRange = function resetStaticValueRange() {
var pristineValue = getAttribute("pristineStaticValueRange");
if (pristineValue === undefined) return;
updateAttribute("pristineStaticValueRange", undefined);
updateAttribute("staticValueRange", pristineValue);
};
var resetNavigation = function resetNavigation() {
if (!getAttribute("enabledResetRange")) return;
var pristineValue = getAttribute("pristineStaticValueRange");
if (pristineValue !== undefined) return resetStaticValueRange();
moveX(-900);
};
updateIntls(getAttribute("timezone"));
onAttributeChange("timezone", updateIntls);
var destroy = function destroy() {
if (parent) parent.removeChild(getId());
listeners.offAll();
attributeListeners.offAll();
setTimeout(function () {
return parent = null;
}, 2000);
destroyIntls();
};
init();
var instance = _objectSpread(_objectSpread({
attributeListeners: attributeListeners
}, listeners), {}, {
sdk: sdk,
setAttribute: setAttribute,
getAttribute: getAttribute,
updateAttribute: updateAttribute,
setAttributes: setAttributes,
getAttributes: getAttributes,
updateAttributes: updateAttributes,
onAttributeChange: onAttributeChange,
onAttributesChange: onAttributesChange,
onceAttributeChange: onceAttributeChange,
match: match,
setParent: setParent,
getParent: getParent,
getId: getId,
getAncestor: getAncestor,
inherit: inherit,
updateStaticValueRange: updateStaticValueRange,
resetStaticValueRange: resetStaticValueRange,
moveY: moveY,
moveX: moveX,
zoomIn: zoomIn,
zoomOut: zoomOut,
resetNavigation: resetNavigation,
destroy: destroy,
formatTime: formatTime,
formatDate: formatDate,
formatXAxis: formatXAxis
});
return instance;
});