@netdata/charts
Version:
Netdata frontend SDK and chart utilities
43 lines • 1.25 kB
JavaScript
import types from "./types";
export default (function (chartUI) {
var off = null;
var drawOverlay = function drawOverlay(id) {
var overlays = chartUI.chart.getAttribute("overlays");
var type = overlays[id].type;
var makeOverlay = types[type];
if (!makeOverlay) return;
makeOverlay(chartUI, id);
};
var drawOverlays = function drawOverlays() {
var overlays = chartUI.chart.getAttribute("overlays");
Object.keys(overlays).forEach(drawOverlay);
var draftAnnotation = chartUI.chart.getAttribute("draftAnnotation");
if (draftAnnotation) {
var makeOverlay = types["annotation"];
if (makeOverlay) makeOverlay(chartUI, "draftAnnotation");
}
};
var render = function render() {
var dygraph = chartUI.getDygraph();
if (dygraph) dygraph.renderGraph_(false);
};
var destroy = function destroy() {
if (!off) return;
render();
off();
off = null;
};
var toggle = function toggle() {
var overlays = chartUI.chart.getAttribute("overlays");
if (!Object.keys(overlays).length) return destroy();
if (!off) {
off = chartUI.on("underlayCallback", drawOverlays);
} else {
render();
}
};
return {
toggle: toggle,
destroy: destroy
};
});