@netdata/charts
Version:
Netdata frontend SDK and chart utilities
62 lines (61 loc) • 1.69 kB
JavaScript
import { trigger, getArea } from "./helpers";
var borderColorMap = {
warning: "#FFF8E1",
critical: "#FFEBEF",
clear: "#E5F5E8"
};
var fillColorMap = {
warning: "#FFC300",
critical: "#F59B9B",
clear: "#68C47D"
};
var textColorMap = {
warning: "#F9A825",
critical: "#FF4136",
clear: "#00AB44"
};
var getNow = function getNow() {
return Math.floor(new Date().getTime() / 1000);
};
export default (function (chartUI, id) {
var overlays = chartUI.chart.getAttribute("overlays");
var _overlays$id = overlays[id],
whenTriggered = _overlays$id.whenTriggered,
_overlays$id$whenLast = _overlays$id.whenLast,
whenLast = _overlays$id$whenLast === void 0 ? getNow() : _overlays$id$whenLast,
status = _overlays$id.status;
var dygraph = chartUI.getDygraph();
var _dygraph$getArea = dygraph.getArea(),
h = _dygraph$getArea.h;
var ctx = dygraph.hidden_ctx_;
var area = getArea(dygraph, [whenTriggered, whenLast]);
if (!area) return trigger(chartUI, id);
var from = area.from,
width = area.width,
to = area.to;
trigger(chartUI, id, area);
ctx.save();
ctx.beginPath();
ctx.rect(from, 0, width, h - 1);
ctx.fillStyle = fillColorMap[status];
ctx.globalAlpha = 0.1;
ctx.fill();
var borderWidth = 2;
// left border
ctx.beginPath();
ctx.moveTo(from, 0);
ctx.lineTo(from, h);
ctx.globalAlpha = 1;
ctx.lineWidth = borderWidth;
ctx.setLineDash([4, 4]);
ctx.strokeStyle = borderColorMap[status];
ctx.stroke();
// right border
ctx.beginPath();
ctx.moveTo(to - borderWidth, 0);
ctx.lineTo(to - borderWidth, h);
ctx.strokeStyle = textColorMap[status];
ctx.stroke();
ctx.closePath();
ctx.restore();
});