Socket
Socket
Sign inDemoInstall

uplot

Package Overview
Dependencies
Maintainers
1
Versions
62
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

uplot - npm Package Compare versions

Comparing version 1.0.3 to 1.0.4

399

dist/uPlot.cjs.js

@@ -7,3 +7,3 @@ /**

* An exceptionally fast, tiny time series chart
* https://github.com/leeoniya/uPlot (v1.0.3)
* https://github.com/leeoniya/uPlot (v1.0.4)
*/

@@ -233,3 +233,3 @@

function placeTag(tag, cls, targ) {
function placeTag(tag, cls, targ, refEl) {
var el = doc[createElement](tag);

@@ -241,3 +241,3 @@

if (targ != null)
{ targ.appendChild(el); }
{ targ.insertBefore(el, refEl); }

@@ -296,2 +296,9 @@ return el;

var engNames = {
MMMM: months,
MMM: months3,
WWWW: days,
WWW: days3,
};
function zeroPad2(int) {

@@ -332,5 +339,5 @@ return (int < 10 ? '0' : '') + int;

// July
MMMM: function (d) { return months[d[getMonth]()]; },
MMMM: function (d, names) { return names.MMMM[d[getMonth]()]; },
// Jul
MMM: function (d) { return months3[d[getMonth]()]; },
MMM: function (d, names) { return names.MMM[d[getMonth]()]; },
// 07

@@ -345,5 +352,5 @@ MM: function (d) { return zeroPad2(d[getMonth]()+1); },

// Monday
WWWW: function (d) { return days[d[getDay]()]; },
WWWW: function (d, names) { return names.WWWW[d[getDay]()]; },
// Mon
WWW: function (d) { return days3[d[getDay]()]; },
WWW: function (d, names) { return names.WWW[d[getDay]()]; },
// 03

@@ -373,3 +380,4 @@ HH: function (d) { return zeroPad2(d[getHours]()); },

function fmtDate(tpl) {
function fmtDate(tpl, names) {
names = names || engNames;
var parts = [];

@@ -386,3 +394,3 @@

for (var i = 0; i < parts.length; i++)
{ out += typeof parts[i] == "string" ? parts[i] : parts[i](d); }
{ out += typeof parts[i] == "string" ? parts[i] : parts[i](d, names); }

@@ -481,3 +489,3 @@ return out;

function timeAxisStamps(stampCfg) {
function timeAxisStamps(stampCfg, fmtDate) {
return stampCfg.map(function (s) { return [

@@ -505,3 +513,3 @@ s[0],

// [4]: modes: 0: replace [1] -> [3], 1: concat [1] + [3]
var _timeAxisStamps = timeAxisStamps([
var _timeAxisStamps = [
[y, yyyy, 7, "", 1],

@@ -513,3 +521,3 @@ [d * 28, "{MMM}", 7, NLyyyy, 1],

[s, ss, 2, NLmd + " " + hmmaa, 1],
[1e-3, ss + ".{fff}", 2, NLmd + " " + hmmaa, 1] ]);
[1e-3, ss + ".{fff}", 2, NLmd + " " + hmmaa, 1] ];

@@ -632,6 +640,6 @@ // TODO: will need to accept spaces[] and pull incr into the loop when grid will be non-uniform, eg for log scales.

function timeSeriesStamp(stampCfg) {
function timeSeriesStamp(stampCfg, fmtDate) {
return fmtDate(stampCfg);
}
var _timeSeriesStamp = timeSeriesStamp('{YYYY}-{MM}-{DD} {h}:{mm}{aa}');
var _timeSeriesStamp = '{YYYY}-{MM}-{DD} {h}:{mm}{aa}';

@@ -642,20 +650,18 @@ function timeSeriesVal(tzDate, stamp) {

function cursorPoints(self) {
return self.series.map(function (s, i) {
if (i > 0) {
var pt = placeDiv();
function cursorPoint(self, si) {
var s = self.series[si];
pt.style.background = s.stroke || hexBlack;
var pt = placeDiv();
var dia = ptDia(s.width, 1);
var mar = (dia - 1) / -2;
pt.style.background = s.stroke || hexBlack;
setStylePx(pt, WIDTH, dia);
setStylePx(pt, HEIGHT, dia);
setStylePx(pt, "marginLeft", mar);
setStylePx(pt, "marginTop", mar);
var dia = ptDia(s.width, 1);
var mar = (dia - 1) / -2;
return pt;
}
});
setStylePx(pt, WIDTH, dia);
setStylePx(pt, HEIGHT, dia);
setStylePx(pt, "marginLeft", mar);
setStylePx(pt, "marginTop", mar);
return pt;
}

@@ -669,3 +675,3 @@

points: {
show: cursorPoints,
show: cursorPoint,
},

@@ -849,5 +855,9 @@

function setDefaults(d, xo, yo) {
return [d[0], d[1]].concat(d.slice(2)).map(function (o, i) { return assign({}, (i == 0 || o && o.side % 2 == 0 ? xo : yo), o); });
return [d[0], d[1]].concat(d.slice(2)).map(function (o, i) { return setDefault(o, i, xo, yo); });
}
function setDefault(o, i, xo, yo) {
return assign({}, (i == 0 || o && o.side % 2 == 0 ? xo : yo), o);
}
function getYPos(val, scale, hgt, top) {

@@ -898,2 +908,22 @@ var pctY = (val - scale.min) / (scale.max - scale.min);

var root = self.root = placeDiv("uplot");
if (opts.id != null)
{ root.id = opts.id; }
addClass(root, opts.class);
if (opts.title) {
var title = placeDiv("title", root);
title.textContent = opts.title;
}
var can = placeTag("canvas");
var ctx = self.ctx = can.getContext("2d");
var wrap = placeDiv("wrap", root);
var under = placeDiv("under", wrap);
wrap.appendChild(can);
var over = placeDiv("over", wrap);
opts = copy(opts);

@@ -918,7 +948,8 @@

// self.tz = opts.tz || Intl.DateTimeFormat().resolvedOptions().timeZone;
var tzDate = (opts.tzDate || (function (ts) { return new Date(ts * 1e3); }));
var _tzDate = (opts.tzDate || (function (ts) { return new Date(ts * 1e3); }));
var _fmtDate = (opts.fmtDate || fmtDate);
var _timeAxisSplits = timeAxisSplits(tzDate);
var _timeAxisVals = timeAxisVals(tzDate, _timeAxisStamps);
var _timeSeriesVal = timeSeriesVal(tzDate, _timeSeriesStamp);
var _timeAxisSplits = timeAxisSplits(_tzDate);
var _timeAxisVals = timeAxisVals(_tzDate, timeAxisStamps(_timeAxisStamps, _fmtDate));
var _timeSeriesVal = timeSeriesVal(_tzDate, timeSeriesStamp(_timeSeriesStamp, _fmtDate));

@@ -939,6 +970,102 @@ self.series = series;

var legendOpts = assign({show: true}, opts.legend);
var legend = assign({show: true}, opts.legend);
var showLegend = legend.show;
// set default value
series.forEach(function (s, i) {
var legendEl;
var legendRows = [];
var legendCols;
var multiValLegend = false;
if (showLegend) {
legendEl = placeTag("table", "legend", root);
var getMultiVals = series[1].values;
multiValLegend = getMultiVals != null;
if (multiValLegend) {
var head = placeTag("tr", "labels", legendEl);
placeTag("th", null, head);
legendCols = getMultiVals(self, 1, 0);
for (var key in legendCols)
{ placeTag("th", null, head).textContent = key; }
}
else {
legendCols = {_: 0};
addClass(legendEl, "inline");
}
}
function initLegendRow(s, i) {
if (i == 0 && multiValLegend)
{ return null; }
var _row = [];
var row = placeTag("tr", "series", legendEl, legendEl.childNodes[i]);
addClass(row, s.class);
if (!s.show)
{ addClass(row, "off"); }
var label = placeTag("th", null, row);
var indic = placeDiv("ident", label);
s.width && (indic.style.borderColor = s.stroke);
indic.style.backgroundColor = s.fill;
var text = placeDiv("text", label);
text.textContent = s.label;
if (i > 0) {
on("click", label, function (e) {
if ( cursor.locked)
{ return; }
filtMouse(e) && setSeries(series.indexOf(s), {show: !s.show}, syncOpts.setSeries);
});
if (cursorFocus) {
on("mouseenter", label, function (e) {
if (cursor.locked)
{ return; }
setSeries(series.indexOf(s), {focus: true}, syncOpts.setSeries);
});
}
}
for (var key in legendCols) {
var v = placeTag("td", null, row);
v.textContent = "--";
_row.push(v);
}
return _row;
}
var cursor = (self.cursor = assign({}, cursorOpts, opts.cursor));
(cursor.points.show = fnOrSelf(cursor.points.show));
// series-intersection markers
var cursorPts = [null];
function initCursorPt(s, si) {
if (si > 0) {
var pt = cursor.points.show(self, si);
if (pt) {
addClass(pt, "cursor-pt");
addClass(pt, s.class);
trans(pt, -10, -10);
over.insertBefore(pt, cursorPts[si]);
return pt;
}
}
}
function initSeries(s, i) {
// init scales & defaults

@@ -956,3 +1083,3 @@ var scKey = s.scale;

var sv = s.value;
s.value = isTime ? (isStr(sv) ? timeSeriesVal(tzDate, timeSeriesStamp(sv)) : sv || _timeSeriesVal) : sv || numSeriesVal;
s.value = isTime ? (isStr(sv) ? timeSeriesVal(_tzDate, timeSeriesStamp(sv, _fmtDate)) : sv || _timeSeriesVal) : sv || numSeriesVal;
s.label = s.label || (isTime ? timeSeriesLabel : numSeriesLabel);

@@ -971,4 +1098,34 @@

}
});
if (showLegend)
{ legendRows.splice(i, 0, initLegendRow(s, i)); }
if ( cursor.show) {
var pt = initCursorPt(s, i);
pt && cursorPts.splice(i, 0, pt);
}
}
function addSeries(opts, si) {
si = si == null ? series.length : si;
opts = setDefault(opts, si, xSeriesOpts, ySeriesOpts);
series.splice(si, 0, opts);
initSeries(series[si], si);
}
self.addSeries = addSeries;
function delSeries(i) {
series.splice(i, 1);
legendRows.splice(i, 1)[0][0].parentNode.remove();
cursorPts.splice(i, 1)[0].remove();
// TODO: de-init no-longer-needed scales?
}
self.delSeries = delSeries;
series.forEach(initSeries);
// dependent scales inherit

@@ -985,4 +1142,3 @@ for (var k$1 in scales) {

// set axis defaults
axes.forEach(function (axis, i) {
function initAxis(axis, i) {
if (axis.show) {

@@ -1006,3 +1162,3 @@ var isVt = axis.side % 2;

var av = axis.values;
axis.values = isTime ? (isArr(av) ? timeAxisVals(tzDate, timeAxisStamps(av)) : av || _timeAxisVals) : av || numAxisVals;
axis.values = isTime ? (isArr(av) ? timeAxisVals(_tzDate, timeAxisStamps(av, _fmtDate)) : av || _timeAxisVals) : av || numAxisVals;

@@ -1012,16 +1168,7 @@ axis.font = pxRatioFont(axis.font);

}
});
}
var root = self.root = placeDiv("uplot");
// set axis defaults
axes.forEach(initAxis);
if (opts.id != null)
{ root.id = opts.id; }
addClass(root, opts.class);
if (opts.title) {
var title = placeDiv("title", root);
title.textContent = opts.title;
}
var dataLen;

@@ -1036,3 +1183,3 @@

function setData(_data, _autoScaleX) {
function setData(_data, _resetScales) {
self.data = _data;

@@ -1050,3 +1197,3 @@ data = _data.slice();

_autoScaleX !== false && autoScaleX();
_resetScales !== false && autoScaleX();
}

@@ -1122,2 +1269,4 @@

syncRect();
ready && _setScale(xScaleKey, scales[xScaleKey].min, scales[xScaleKey].max);

@@ -1228,10 +1377,2 @@

var can = placeTag("canvas");
var ctx = self.ctx = can.getContext("2d");
var wrap = placeDiv("wrap", root);
var under = placeDiv("under", wrap);
wrap.appendChild(can);
var over = placeDiv("over", wrap);
function setScales() {

@@ -1442,6 +1583,6 @@ if (inBatch) {

if (s._paths)
{ drawPath(i); }
{ drawPath(i); }
if (s.points.show(self, i, i0, i1))
{ drawPoints(i); }
{ drawPoints(i); }

@@ -1909,6 +2050,2 @@ fire("drawSeries", i);

var cursor = (self.cursor = assign({}, cursorOpts, opts.cursor));
(cursor.points.show = fnOrSelf(cursor.points.show));
var focus = self.focus = assign({}, opts.focus || {alpha: 0.3}, cursor.focus);

@@ -1954,80 +2091,5 @@ var cursorFocus = focus.prox >= 0;

var legend = null;
var legendRows = null;
var multiValLegend = false;
if ( legendOpts.show) {
legend = placeTag("table", "legend", root);
var vals = series[1].values;
multiValLegend = vals != null;
var keys;
if (multiValLegend) {
var head = placeTag("tr", "labels", legend);
placeTag("th", null, head);
keys = vals(self, 1, 0);
for (var key in keys)
{ placeTag("th", null, head).textContent = key; }
}
else {
keys = {_: 0};
addClass(legend, "inline");
}
legendRows = series.map(function (s, i) {
if (i == 0 && multiValLegend)
{ return null; }
var _row = [];
var row = placeTag("tr", "series", legend);
addClass(row, s.class);
if (!s.show)
{ addClass(row, "off"); }
var label = placeTag("th", null, row);
var indic = placeDiv("ident", label);
s.width && (indic.style.borderColor = s.stroke);
indic.style.backgroundColor = s.fill;
var text = placeDiv("text", label);
text.textContent = s.label;
if (i > 0) {
on("click", label, function (e) {
if ( cursor.locked)
{ return; }
filtMouse(e) && setSeries(i, {show: !s.show}, syncOpts.setSeries);
});
if (cursorFocus) {
on("mouseenter", label, function (e) {
if (cursor.locked)
{ return; }
setSeries(i, {focus: true}, syncOpts.setSeries);
});
}
}
for (var key in keys) {
var v = placeTag("td", null, row);
v.textContent = "--";
_row.push(v);
}
return _row;
});
}
function toggleDOM(i, onOff) {
var s = series[i];
var label = legendOpts.show ? legendRows[i][0].parentNode : null;
var label = showLegend ? legendRows[i][0].parentNode : null;

@@ -2038,3 +2100,3 @@ if (s.show)

label && addClass(label, "off");
cursorPts && trans(cursorPts[i], 0, -10);
cursorPts.length > 1 && trans(cursorPts[i], 0, -10);
}

@@ -2084,3 +2146,3 @@ }

if (legendRows)
if ( legendRows)
{ legendRows[i][0].parentNode.style.opacity = value; }

@@ -2119,4 +2181,4 @@ }

if (cursorFocus && legendOpts.show) {
on(mouseleave, legend, function (e) {
if (showLegend && cursorFocus) {
on(mouseleave, legendEl, function (e) {
if (cursor.locked)

@@ -2129,18 +2191,2 @@ { return; }

// series-intersection markers
var cursorPts = cursor.show && cursor.points.show(self);
if ( cursorPts) {
cursorPts.forEach(function (pt, i) {
if (i > 0) {
addClass(pt, "cursor-pt");
addClass(pt, series[i].class);
trans(pt, -10, -10);
over.appendChild(pt);
}
});
}
var cursorRaf = 0;
function scaleValueAtPos(pos, scale) {

@@ -2199,2 +2245,4 @@ var dim = scale == xScaleKey ? plotWidCss : plotHgtCss;

var cursorRaf = 0;
function updateCursor(ts) {

@@ -2224,6 +2272,6 @@ if (inBatch) {

distsToCursor[i] = inf;
cursorPts && trans(cursorPts[i], -10, -10);
cursorPts.length > 1 && trans(cursorPts[i], -10, -10);
}
if ( legendOpts.show) {
if (showLegend) {
if (i == 0 && multiValLegend)

@@ -2259,3 +2307,3 @@ { continue; }

cursorPts && trans(cursorPts[i$1], xPos, yPos);
cursorPts.length > 1 && trans(cursorPts[i$1], xPos, yPos);
}

@@ -2265,3 +2313,3 @@ else

if ( legendOpts.show) {
if (showLegend) {
if (i$1 == 0 && multiValLegend)

@@ -2339,5 +2387,2 @@ { continue; }

if (rect == null)
{ syncRect(); }
cacheMouse(e, src, _x, _y, _w, _h, _i, false, e != null);

@@ -2494,2 +2539,4 @@

on(scroll, win, deb);
self.syncRect = syncRect;
}

@@ -2580,5 +2627,7 @@

uPlot.fmtDate = fmtDate;
uPlot.tzDate = tzDate;
{
uPlot.fmtDate = fmtDate;
uPlot.tzDate = tzDate;
}
module.exports = uPlot;

@@ -75,2 +75,8 @@ declare class uPlot {

/** adds a series */
addSeries(opts: uPlot.Series, seriesIdx?: number): void;
/** deletes a series */
delSeries(seriesIdx: number): void;
/** sets visually selected region without triggering setScale (zoom) */

@@ -91,2 +97,5 @@ setSelect(opts: {left: number, top: number, width: number, height: number}, fireHook?: boolean = true): void;

/** updates getBoundingClientRect() cache for cursor positioning. use when plot's position changes (excluding window scroll & resize) */
syncRect(): void;
/** a deep merge util fn */

@@ -99,3 +108,3 @@ static assign(targ: object, ...srcs: object[]): object;

/** creates an efficient formatter for Date objects from a template string, e.g. {YYYY}-{MM}-{DD} */
static fmtDate(tpl: string): (date: Date) => string;
static fmtDate(tpl: string, names: uPlot.DateNames): (date: Date) => string;

@@ -111,2 +120,16 @@ /** converts a Date into new Date that's time-adjusted for the given IANA Time Zone Name */

export interface DateNames {
/** long month names */
MMMM: string[];
/** short month names */
MMM: string[];
/** long weekday names (0: Sunday) */
WWWW: string[];
/** short weekday names (0: Sun) */
WWW: string[];
};
// export type ScatteredData = readonly number[][][];

@@ -134,4 +157,7 @@

/** converts a unix timestamp to Date that's time-adjusted for the desired timezone */
tzDate?: (ts) => Date;
tzDate?: (ts: number) => Date;
/** creates an efficient formatter for Date objects from a template string, e.g. {YYYY}-{MM}-{DD} */
fmtDate(tpl: string): (date: Date) => string;
series: Series[];

@@ -204,3 +230,3 @@

points?: {
show?: boolean | ((self: uPlot) => HTMLElement[]);
show?: boolean | ((self: uPlot, seriesIdx: number) => HTMLElement);
};

@@ -207,0 +233,0 @@

@@ -7,3 +7,3 @@ /**

* An exceptionally fast, tiny time series chart
* https://github.com/leeoniya/uPlot (v1.0.3)
* https://github.com/leeoniya/uPlot (v1.0.4)
*/

@@ -231,3 +231,3 @@

function placeTag(tag, cls, targ) {
function placeTag(tag, cls, targ, refEl) {
let el = doc[createElement](tag);

@@ -239,3 +239,3 @@

if (targ != null)
targ.appendChild(el);
targ.insertBefore(el, refEl);

@@ -296,2 +296,9 @@ return el;

const engNames = {
MMMM: months,
MMM: months3,
WWWW: days,
WWW: days3,
};
function zeroPad2(int) {

@@ -332,5 +339,5 @@ return (int < 10 ? '0' : '') + int;

// July
MMMM: d => months[d[getMonth]()],
MMMM: (d, names) => names.MMMM[d[getMonth]()],
// Jul
MMM: d => months3[d[getMonth]()],
MMM: (d, names) => names.MMM[d[getMonth]()],
// 07

@@ -345,5 +352,5 @@ MM: d => zeroPad2(d[getMonth]()+1),

// Monday
WWWW: d => days[d[getDay]()],
WWWW: (d, names) => names.WWWW[d[getDay]()],
// Mon
WWW: d => days3[d[getDay]()],
WWW: (d, names) => names.WWW[d[getDay]()],
// 03

@@ -373,3 +380,4 @@ HH: d => zeroPad2(d[getHours]()),

function fmtDate(tpl) {
function fmtDate(tpl, names) {
names = names || engNames;
let parts = [];

@@ -386,3 +394,3 @@

for (let i = 0; i < parts.length; i++)
out += typeof parts[i] == "string" ? parts[i] : parts[i](d);
out += typeof parts[i] == "string" ? parts[i] : parts[i](d, names);

@@ -482,3 +490,3 @@ return out;

function timeAxisStamps(stampCfg) {
function timeAxisStamps(stampCfg, fmtDate) {
return stampCfg.map(s => [

@@ -507,3 +515,3 @@ s[0],

// [4]: modes: 0: replace [1] -> [3], 1: concat [1] + [3]
const _timeAxisStamps = timeAxisStamps([
const _timeAxisStamps = [
[y, yyyy, 7, "", 1],

@@ -516,3 +524,3 @@ [d * 28, "{MMM}", 7, NLyyyy, 1],

[1e-3, ss + ".{fff}", 2, NLmd + " " + hmmaa, 1],
]);
];

@@ -635,6 +643,6 @@ // TODO: will need to accept spaces[] and pull incr into the loop when grid will be non-uniform, eg for log scales.

function timeSeriesStamp(stampCfg) {
function timeSeriesStamp(stampCfg, fmtDate) {
return fmtDate(stampCfg);
}
const _timeSeriesStamp = timeSeriesStamp('{YYYY}-{MM}-{DD} {h}:{mm}{aa}');
const _timeSeriesStamp = '{YYYY}-{MM}-{DD} {h}:{mm}{aa}';

@@ -645,20 +653,18 @@ function timeSeriesVal(tzDate, stamp) {

function cursorPoints(self) {
return self.series.map((s, i) => {
if (i > 0) {
let pt = placeDiv();
function cursorPoint(self, si) {
let s = self.series[si];
pt.style.background = s.stroke || hexBlack;
let pt = placeDiv();
let dia = ptDia(s.width, 1);
let mar = (dia - 1) / -2;
pt.style.background = s.stroke || hexBlack;
setStylePx(pt, WIDTH, dia);
setStylePx(pt, HEIGHT, dia);
setStylePx(pt, "marginLeft", mar);
setStylePx(pt, "marginTop", mar);
let dia = ptDia(s.width, 1);
let mar = (dia - 1) / -2;
return pt;
}
});
setStylePx(pt, WIDTH, dia);
setStylePx(pt, HEIGHT, dia);
setStylePx(pt, "marginLeft", mar);
setStylePx(pt, "marginTop", mar);
return pt;
}

@@ -672,3 +678,3 @@

points: {
show: cursorPoints,
show: cursorPoint,
},

@@ -852,5 +858,9 @@

function setDefaults(d, xo, yo) {
return [d[0], d[1]].concat(d.slice(2)).map((o, i) => assign({}, (i == 0 || o && o.side % 2 == 0 ? xo : yo), o));
return [d[0], d[1]].concat(d.slice(2)).map((o, i) => setDefault(o, i, xo, yo));
}
function setDefault(o, i, xo, yo) {
return assign({}, (i == 0 || o && o.side % 2 == 0 ? xo : yo), o);
}
function getYPos(val, scale, hgt, top) {

@@ -901,2 +911,22 @@ let pctY = (val - scale.min) / (scale.max - scale.min);

const root = self.root = placeDiv("uplot");
if (opts.id != null)
root.id = opts.id;
addClass(root, opts.class);
if (opts.title) {
let title = placeDiv("title", root);
title.textContent = opts.title;
}
const can = placeTag("canvas");
const ctx = self.ctx = can.getContext("2d");
const wrap = placeDiv("wrap", root);
const under = placeDiv("under", wrap);
wrap.appendChild(can);
const over = placeDiv("over", wrap);
opts = copy(opts);

@@ -921,7 +951,8 @@

// self.tz = opts.tz || Intl.DateTimeFormat().resolvedOptions().timeZone;
const tzDate = (opts.tzDate || (ts => new Date(ts * 1e3)));
const _tzDate = (opts.tzDate || (ts => new Date(ts * 1e3)));
const _fmtDate = (opts.fmtDate || fmtDate);
const _timeAxisSplits = timeAxisSplits(tzDate);
const _timeAxisVals = timeAxisVals(tzDate, _timeAxisStamps);
const _timeSeriesVal = timeSeriesVal(tzDate, _timeSeriesStamp);
const _timeAxisSplits = timeAxisSplits(_tzDate);
const _timeAxisVals = timeAxisVals(_tzDate, timeAxisStamps(_timeAxisStamps, _fmtDate));
const _timeSeriesVal = timeSeriesVal(_tzDate, timeSeriesStamp(_timeSeriesStamp, _fmtDate));

@@ -942,6 +973,102 @@ self.series = series;

const legendOpts = assign({show: true}, opts.legend);
const legend = assign({show: true}, opts.legend);
const showLegend = legend.show;
// set default value
series.forEach((s, i) => {
let legendEl;
let legendRows = [];
let legendCols;
let multiValLegend = false;
if (showLegend) {
legendEl = placeTag("table", "legend", root);
const getMultiVals = series[1].values;
multiValLegend = getMultiVals != null;
if (multiValLegend) {
let head = placeTag("tr", "labels", legendEl);
placeTag("th", null, head);
legendCols = getMultiVals(self, 1, 0);
for (var key in legendCols)
placeTag("th", null, head).textContent = key;
}
else {
legendCols = {_: 0};
addClass(legendEl, "inline");
}
}
function initLegendRow(s, i) {
if (i == 0 && multiValLegend)
return null;
let _row = [];
let row = placeTag("tr", "series", legendEl, legendEl.childNodes[i]);
addClass(row, s.class);
if (!s.show)
addClass(row, "off");
let label = placeTag("th", null, row);
let indic = placeDiv("ident", label);
s.width && (indic.style.borderColor = s.stroke);
indic.style.backgroundColor = s.fill;
let text = placeDiv("text", label);
text.textContent = s.label;
if (i > 0) {
on("click", label, e => {
if ( cursor.locked)
return;
filtMouse(e) && setSeries(series.indexOf(s), {show: !s.show}, syncOpts.setSeries);
});
if (cursorFocus) {
on("mouseenter", label, e => {
if (cursor.locked)
return;
setSeries(series.indexOf(s), {focus: true}, syncOpts.setSeries);
});
}
}
for (var key in legendCols) {
let v = placeTag("td", null, row);
v.textContent = "--";
_row.push(v);
}
return _row;
}
const cursor = (self.cursor = assign({}, cursorOpts, opts.cursor));
(cursor.points.show = fnOrSelf(cursor.points.show));
// series-intersection markers
let cursorPts = [null];
function initCursorPt(s, si) {
if (si > 0) {
let pt = cursor.points.show(self, si);
if (pt) {
addClass(pt, "cursor-pt");
addClass(pt, s.class);
trans(pt, -10, -10);
over.insertBefore(pt, cursorPts[si]);
return pt;
}
}
}
function initSeries(s, i) {
// init scales & defaults

@@ -959,3 +1086,3 @@ const scKey = s.scale;

let sv = s.value;
s.value = isTime ? (isStr(sv) ? timeSeriesVal(tzDate, timeSeriesStamp(sv)) : sv || _timeSeriesVal) : sv || numSeriesVal;
s.value = isTime ? (isStr(sv) ? timeSeriesVal(_tzDate, timeSeriesStamp(sv, _fmtDate)) : sv || _timeSeriesVal) : sv || numSeriesVal;
s.label = s.label || (isTime ? timeSeriesLabel : numSeriesLabel);

@@ -974,4 +1101,34 @@

}
});
if (showLegend)
legendRows.splice(i, 0, initLegendRow(s, i));
if ( cursor.show) {
let pt = initCursorPt(s, i);
pt && cursorPts.splice(i, 0, pt);
}
}
function addSeries(opts, si) {
si = si == null ? series.length : si;
opts = setDefault(opts, si, xSeriesOpts, ySeriesOpts);
series.splice(si, 0, opts);
initSeries(series[si], si);
}
self.addSeries = addSeries;
function delSeries(i) {
series.splice(i, 1);
legendRows.splice(i, 1)[0][0].parentNode.remove();
cursorPts.splice(i, 1)[0].remove();
// TODO: de-init no-longer-needed scales?
}
self.delSeries = delSeries;
series.forEach(initSeries);
// dependent scales inherit

@@ -988,4 +1145,3 @@ for (let k in scales) {

// set axis defaults
axes.forEach((axis, i) => {
function initAxis(axis, i) {
if (axis.show) {

@@ -1009,3 +1165,3 @@ let isVt = axis.side % 2;

let av = axis.values;
axis.values = isTime ? (isArr(av) ? timeAxisVals(tzDate, timeAxisStamps(av)) : av || _timeAxisVals) : av || numAxisVals;
axis.values = isTime ? (isArr(av) ? timeAxisVals(_tzDate, timeAxisStamps(av, _fmtDate)) : av || _timeAxisVals) : av || numAxisVals;

@@ -1015,16 +1171,7 @@ axis.font = pxRatioFont(axis.font);

}
});
}
const root = self.root = placeDiv("uplot");
// set axis defaults
axes.forEach(initAxis);
if (opts.id != null)
root.id = opts.id;
addClass(root, opts.class);
if (opts.title) {
let title = placeDiv("title", root);
title.textContent = opts.title;
}
let dataLen;

@@ -1039,3 +1186,3 @@

function setData(_data, _autoScaleX) {
function setData(_data, _resetScales) {
self.data = _data;

@@ -1053,3 +1200,3 @@ data = _data.slice();

_autoScaleX !== false && autoScaleX();
_resetScales !== false && autoScaleX();
}

@@ -1125,2 +1272,4 @@

syncRect();
ready && _setScale(xScaleKey, scales[xScaleKey].min, scales[xScaleKey].max);

@@ -1227,10 +1376,2 @@

const can = placeTag("canvas");
const ctx = self.ctx = can.getContext("2d");
const wrap = placeDiv("wrap", root);
const under = placeDiv("under", wrap);
wrap.appendChild(can);
const over = placeDiv("over", wrap);
function setScales() {

@@ -1900,6 +2041,2 @@ if (inBatch) {

const cursor = (self.cursor = assign({}, cursorOpts, opts.cursor));
(cursor.points.show = fnOrSelf(cursor.points.show));
const focus = self.focus = assign({}, opts.focus || {alpha: 0.3}, cursor.focus);

@@ -1945,80 +2082,5 @@ const cursorFocus = focus.prox >= 0;

let legend = null;
let legendRows = null;
let multiValLegend = false;
if ( legendOpts.show) {
legend = placeTag("table", "legend", root);
let vals = series[1].values;
multiValLegend = vals != null;
let keys;
if (multiValLegend) {
let head = placeTag("tr", "labels", legend);
placeTag("th", null, head);
keys = vals(self, 1, 0);
for (var key in keys)
placeTag("th", null, head).textContent = key;
}
else {
keys = {_: 0};
addClass(legend, "inline");
}
legendRows = series.map((s, i) => {
if (i == 0 && multiValLegend)
return null;
let _row = [];
let row = placeTag("tr", "series", legend);
addClass(row, s.class);
if (!s.show)
addClass(row, "off");
let label = placeTag("th", null, row);
let indic = placeDiv("ident", label);
s.width && (indic.style.borderColor = s.stroke);
indic.style.backgroundColor = s.fill;
let text = placeDiv("text", label);
text.textContent = s.label;
if (i > 0) {
on("click", label, e => {
if ( cursor.locked)
return;
filtMouse(e) && setSeries(i, {show: !s.show}, syncOpts.setSeries);
});
if (cursorFocus) {
on("mouseenter", label, e => {
if (cursor.locked)
return;
setSeries(i, {focus: true}, syncOpts.setSeries);
});
}
}
for (var key in keys) {
let v = placeTag("td", null, row);
v.textContent = "--";
_row.push(v);
}
return _row;
});
}
function toggleDOM(i, onOff) {
let s = series[i];
let label = legendOpts.show ? legendRows[i][0].parentNode : null;
let label = showLegend ? legendRows[i][0].parentNode : null;

@@ -2029,3 +2091,3 @@ if (s.show)

label && addClass(label, "off");
cursorPts && trans(cursorPts[i], 0, -10);
cursorPts.length > 1 && trans(cursorPts[i], 0, -10);
}

@@ -2075,3 +2137,3 @@ }

if (legendRows)
if ( legendRows)
legendRows[i][0].parentNode.style.opacity = value;

@@ -2110,4 +2172,4 @@ }

if (cursorFocus && legendOpts.show) {
on(mouseleave, legend, e => {
if (showLegend && cursorFocus) {
on(mouseleave, legendEl, e => {
if (cursor.locked)

@@ -2120,18 +2182,2 @@ return;

// series-intersection markers
let cursorPts = cursor.show && cursor.points.show(self);
if ( cursorPts) {
cursorPts.forEach((pt, i) => {
if (i > 0) {
addClass(pt, "cursor-pt");
addClass(pt, series[i].class);
trans(pt, -10, -10);
over.appendChild(pt);
}
});
}
let cursorRaf = 0;
function scaleValueAtPos(pos, scale) {

@@ -2190,2 +2236,4 @@ let dim = scale == xScaleKey ? plotWidCss : plotHgtCss;

let cursorRaf = 0;
function updateCursor(ts) {

@@ -2215,6 +2263,6 @@ if (inBatch) {

distsToCursor[i] = inf;
cursorPts && trans(cursorPts[i], -10, -10);
cursorPts.length > 1 && trans(cursorPts[i], -10, -10);
}
if ( legendOpts.show) {
if (showLegend) {
if (i == 0 && multiValLegend)

@@ -2250,3 +2298,3 @@ continue;

cursorPts && trans(cursorPts[i], xPos, yPos);
cursorPts.length > 1 && trans(cursorPts[i], xPos, yPos);
}

@@ -2256,3 +2304,3 @@ else

if ( legendOpts.show) {
if (showLegend) {
if (i == 0 && multiValLegend)

@@ -2330,5 +2378,2 @@ continue;

if (rect == null)
syncRect();
cacheMouse(e, src, _x, _y, _w, _h, _i, false, e != null);

@@ -2485,2 +2530,4 @@

on(scroll, win, deb);
self.syncRect = syncRect;
}

@@ -2571,5 +2618,7 @@

uPlot.fmtDate = fmtDate;
uPlot.tzDate = tzDate;
{
uPlot.fmtDate = fmtDate;
uPlot.tzDate = tzDate;
}
export default uPlot;

@@ -7,3 +7,3 @@ /**

* An exceptionally fast, tiny time series chart
* https://github.com/leeoniya/uPlot (v1.0.3)
* https://github.com/leeoniya/uPlot (v1.0.4)
*/

@@ -234,3 +234,3 @@

function placeTag(tag, cls, targ) {
function placeTag(tag, cls, targ, refEl) {
var el = doc[createElement](tag);

@@ -242,3 +242,3 @@

if (targ != null)
{ targ.appendChild(el); }
{ targ.insertBefore(el, refEl); }

@@ -297,2 +297,9 @@ return el;

var engNames = {
MMMM: months,
MMM: months3,
WWWW: days,
WWW: days3,
};
function zeroPad2(int) {

@@ -333,5 +340,5 @@ return (int < 10 ? '0' : '') + int;

// July
MMMM: function (d) { return months[d[getMonth]()]; },
MMMM: function (d, names) { return names.MMMM[d[getMonth]()]; },
// Jul
MMM: function (d) { return months3[d[getMonth]()]; },
MMM: function (d, names) { return names.MMM[d[getMonth]()]; },
// 07

@@ -346,5 +353,5 @@ MM: function (d) { return zeroPad2(d[getMonth]()+1); },

// Monday
WWWW: function (d) { return days[d[getDay]()]; },
WWWW: function (d, names) { return names.WWWW[d[getDay]()]; },
// Mon
WWW: function (d) { return days3[d[getDay]()]; },
WWW: function (d, names) { return names.WWW[d[getDay]()]; },
// 03

@@ -374,3 +381,4 @@ HH: function (d) { return zeroPad2(d[getHours]()); },

function fmtDate(tpl) {
function fmtDate(tpl, names) {
names = names || engNames;
var parts = [];

@@ -387,3 +395,3 @@

for (var i = 0; i < parts.length; i++)
{ out += typeof parts[i] == "string" ? parts[i] : parts[i](d); }
{ out += typeof parts[i] == "string" ? parts[i] : parts[i](d, names); }

@@ -482,3 +490,3 @@ return out;

function timeAxisStamps(stampCfg) {
function timeAxisStamps(stampCfg, fmtDate) {
return stampCfg.map(function (s) { return [

@@ -506,3 +514,3 @@ s[0],

// [4]: modes: 0: replace [1] -> [3], 1: concat [1] + [3]
var _timeAxisStamps = timeAxisStamps([
var _timeAxisStamps = [
[y, yyyy, 7, "", 1],

@@ -514,3 +522,3 @@ [d * 28, "{MMM}", 7, NLyyyy, 1],

[s, ss, 2, NLmd + " " + hmmaa, 1],
[1e-3, ss + ".{fff}", 2, NLmd + " " + hmmaa, 1] ]);
[1e-3, ss + ".{fff}", 2, NLmd + " " + hmmaa, 1] ];

@@ -633,6 +641,6 @@ // TODO: will need to accept spaces[] and pull incr into the loop when grid will be non-uniform, eg for log scales.

function timeSeriesStamp(stampCfg) {
function timeSeriesStamp(stampCfg, fmtDate) {
return fmtDate(stampCfg);
}
var _timeSeriesStamp = timeSeriesStamp('{YYYY}-{MM}-{DD} {h}:{mm}{aa}');
var _timeSeriesStamp = '{YYYY}-{MM}-{DD} {h}:{mm}{aa}';

@@ -643,20 +651,18 @@ function timeSeriesVal(tzDate, stamp) {

function cursorPoints(self) {
return self.series.map(function (s, i) {
if (i > 0) {
var pt = placeDiv();
function cursorPoint(self, si) {
var s = self.series[si];
pt.style.background = s.stroke || hexBlack;
var pt = placeDiv();
var dia = ptDia(s.width, 1);
var mar = (dia - 1) / -2;
pt.style.background = s.stroke || hexBlack;
setStylePx(pt, WIDTH, dia);
setStylePx(pt, HEIGHT, dia);
setStylePx(pt, "marginLeft", mar);
setStylePx(pt, "marginTop", mar);
var dia = ptDia(s.width, 1);
var mar = (dia - 1) / -2;
return pt;
}
});
setStylePx(pt, WIDTH, dia);
setStylePx(pt, HEIGHT, dia);
setStylePx(pt, "marginLeft", mar);
setStylePx(pt, "marginTop", mar);
return pt;
}

@@ -670,3 +676,3 @@

points: {
show: cursorPoints,
show: cursorPoint,
},

@@ -850,5 +856,9 @@

function setDefaults(d, xo, yo) {
return [d[0], d[1]].concat(d.slice(2)).map(function (o, i) { return assign({}, (i == 0 || o && o.side % 2 == 0 ? xo : yo), o); });
return [d[0], d[1]].concat(d.slice(2)).map(function (o, i) { return setDefault(o, i, xo, yo); });
}
function setDefault(o, i, xo, yo) {
return assign({}, (i == 0 || o && o.side % 2 == 0 ? xo : yo), o);
}
function getYPos(val, scale, hgt, top) {

@@ -899,2 +909,22 @@ var pctY = (val - scale.min) / (scale.max - scale.min);

var root = self.root = placeDiv("uplot");
if (opts.id != null)
{ root.id = opts.id; }
addClass(root, opts.class);
if (opts.title) {
var title = placeDiv("title", root);
title.textContent = opts.title;
}
var can = placeTag("canvas");
var ctx = self.ctx = can.getContext("2d");
var wrap = placeDiv("wrap", root);
var under = placeDiv("under", wrap);
wrap.appendChild(can);
var over = placeDiv("over", wrap);
opts = copy(opts);

@@ -919,7 +949,8 @@

// self.tz = opts.tz || Intl.DateTimeFormat().resolvedOptions().timeZone;
var tzDate = (opts.tzDate || (function (ts) { return new Date(ts * 1e3); }));
var _tzDate = (opts.tzDate || (function (ts) { return new Date(ts * 1e3); }));
var _fmtDate = (opts.fmtDate || fmtDate);
var _timeAxisSplits = timeAxisSplits(tzDate);
var _timeAxisVals = timeAxisVals(tzDate, _timeAxisStamps);
var _timeSeriesVal = timeSeriesVal(tzDate, _timeSeriesStamp);
var _timeAxisSplits = timeAxisSplits(_tzDate);
var _timeAxisVals = timeAxisVals(_tzDate, timeAxisStamps(_timeAxisStamps, _fmtDate));
var _timeSeriesVal = timeSeriesVal(_tzDate, timeSeriesStamp(_timeSeriesStamp, _fmtDate));

@@ -940,6 +971,102 @@ self.series = series;

var legendOpts = assign({show: true}, opts.legend);
var legend = assign({show: true}, opts.legend);
var showLegend = legend.show;
// set default value
series.forEach(function (s, i) {
var legendEl;
var legendRows = [];
var legendCols;
var multiValLegend = false;
if (showLegend) {
legendEl = placeTag("table", "legend", root);
var getMultiVals = series[1].values;
multiValLegend = getMultiVals != null;
if (multiValLegend) {
var head = placeTag("tr", "labels", legendEl);
placeTag("th", null, head);
legendCols = getMultiVals(self, 1, 0);
for (var key in legendCols)
{ placeTag("th", null, head).textContent = key; }
}
else {
legendCols = {_: 0};
addClass(legendEl, "inline");
}
}
function initLegendRow(s, i) {
if (i == 0 && multiValLegend)
{ return null; }
var _row = [];
var row = placeTag("tr", "series", legendEl, legendEl.childNodes[i]);
addClass(row, s.class);
if (!s.show)
{ addClass(row, "off"); }
var label = placeTag("th", null, row);
var indic = placeDiv("ident", label);
s.width && (indic.style.borderColor = s.stroke);
indic.style.backgroundColor = s.fill;
var text = placeDiv("text", label);
text.textContent = s.label;
if (i > 0) {
on("click", label, function (e) {
if ( cursor.locked)
{ return; }
filtMouse(e) && setSeries(series.indexOf(s), {show: !s.show}, syncOpts.setSeries);
});
if (cursorFocus) {
on("mouseenter", label, function (e) {
if (cursor.locked)
{ return; }
setSeries(series.indexOf(s), {focus: true}, syncOpts.setSeries);
});
}
}
for (var key in legendCols) {
var v = placeTag("td", null, row);
v.textContent = "--";
_row.push(v);
}
return _row;
}
var cursor = (self.cursor = assign({}, cursorOpts, opts.cursor));
(cursor.points.show = fnOrSelf(cursor.points.show));
// series-intersection markers
var cursorPts = [null];
function initCursorPt(s, si) {
if (si > 0) {
var pt = cursor.points.show(self, si);
if (pt) {
addClass(pt, "cursor-pt");
addClass(pt, s.class);
trans(pt, -10, -10);
over.insertBefore(pt, cursorPts[si]);
return pt;
}
}
}
function initSeries(s, i) {
// init scales & defaults

@@ -957,3 +1084,3 @@ var scKey = s.scale;

var sv = s.value;
s.value = isTime ? (isStr(sv) ? timeSeriesVal(tzDate, timeSeriesStamp(sv)) : sv || _timeSeriesVal) : sv || numSeriesVal;
s.value = isTime ? (isStr(sv) ? timeSeriesVal(_tzDate, timeSeriesStamp(sv, _fmtDate)) : sv || _timeSeriesVal) : sv || numSeriesVal;
s.label = s.label || (isTime ? timeSeriesLabel : numSeriesLabel);

@@ -972,4 +1099,34 @@

}
});
if (showLegend)
{ legendRows.splice(i, 0, initLegendRow(s, i)); }
if ( cursor.show) {
var pt = initCursorPt(s, i);
pt && cursorPts.splice(i, 0, pt);
}
}
function addSeries(opts, si) {
si = si == null ? series.length : si;
opts = setDefault(opts, si, xSeriesOpts, ySeriesOpts);
series.splice(si, 0, opts);
initSeries(series[si], si);
}
self.addSeries = addSeries;
function delSeries(i) {
series.splice(i, 1);
legendRows.splice(i, 1)[0][0].parentNode.remove();
cursorPts.splice(i, 1)[0].remove();
// TODO: de-init no-longer-needed scales?
}
self.delSeries = delSeries;
series.forEach(initSeries);
// dependent scales inherit

@@ -986,4 +1143,3 @@ for (var k$1 in scales) {

// set axis defaults
axes.forEach(function (axis, i) {
function initAxis(axis, i) {
if (axis.show) {

@@ -1007,3 +1163,3 @@ var isVt = axis.side % 2;

var av = axis.values;
axis.values = isTime ? (isArr(av) ? timeAxisVals(tzDate, timeAxisStamps(av)) : av || _timeAxisVals) : av || numAxisVals;
axis.values = isTime ? (isArr(av) ? timeAxisVals(_tzDate, timeAxisStamps(av, _fmtDate)) : av || _timeAxisVals) : av || numAxisVals;

@@ -1013,16 +1169,7 @@ axis.font = pxRatioFont(axis.font);

}
});
}
var root = self.root = placeDiv("uplot");
// set axis defaults
axes.forEach(initAxis);
if (opts.id != null)
{ root.id = opts.id; }
addClass(root, opts.class);
if (opts.title) {
var title = placeDiv("title", root);
title.textContent = opts.title;
}
var dataLen;

@@ -1037,3 +1184,3 @@

function setData(_data, _autoScaleX) {
function setData(_data, _resetScales) {
self.data = _data;

@@ -1051,3 +1198,3 @@ data = _data.slice();

_autoScaleX !== false && autoScaleX();
_resetScales !== false && autoScaleX();
}

@@ -1123,2 +1270,4 @@

syncRect();
ready && _setScale(xScaleKey, scales[xScaleKey].min, scales[xScaleKey].max);

@@ -1229,10 +1378,2 @@

var can = placeTag("canvas");
var ctx = self.ctx = can.getContext("2d");
var wrap = placeDiv("wrap", root);
var under = placeDiv("under", wrap);
wrap.appendChild(can);
var over = placeDiv("over", wrap);
function setScales() {

@@ -1443,6 +1584,6 @@ if (inBatch) {

if (s._paths)
{ drawPath(i); }
{ drawPath(i); }
if (s.points.show(self, i, i0, i1))
{ drawPoints(i); }
{ drawPoints(i); }

@@ -1910,6 +2051,2 @@ fire("drawSeries", i);

var cursor = (self.cursor = assign({}, cursorOpts, opts.cursor));
(cursor.points.show = fnOrSelf(cursor.points.show));
var focus = self.focus = assign({}, opts.focus || {alpha: 0.3}, cursor.focus);

@@ -1955,80 +2092,5 @@ var cursorFocus = focus.prox >= 0;

var legend = null;
var legendRows = null;
var multiValLegend = false;
if ( legendOpts.show) {
legend = placeTag("table", "legend", root);
var vals = series[1].values;
multiValLegend = vals != null;
var keys;
if (multiValLegend) {
var head = placeTag("tr", "labels", legend);
placeTag("th", null, head);
keys = vals(self, 1, 0);
for (var key in keys)
{ placeTag("th", null, head).textContent = key; }
}
else {
keys = {_: 0};
addClass(legend, "inline");
}
legendRows = series.map(function (s, i) {
if (i == 0 && multiValLegend)
{ return null; }
var _row = [];
var row = placeTag("tr", "series", legend);
addClass(row, s.class);
if (!s.show)
{ addClass(row, "off"); }
var label = placeTag("th", null, row);
var indic = placeDiv("ident", label);
s.width && (indic.style.borderColor = s.stroke);
indic.style.backgroundColor = s.fill;
var text = placeDiv("text", label);
text.textContent = s.label;
if (i > 0) {
on("click", label, function (e) {
if ( cursor.locked)
{ return; }
filtMouse(e) && setSeries(i, {show: !s.show}, syncOpts.setSeries);
});
if (cursorFocus) {
on("mouseenter", label, function (e) {
if (cursor.locked)
{ return; }
setSeries(i, {focus: true}, syncOpts.setSeries);
});
}
}
for (var key in keys) {
var v = placeTag("td", null, row);
v.textContent = "--";
_row.push(v);
}
return _row;
});
}
function toggleDOM(i, onOff) {
var s = series[i];
var label = legendOpts.show ? legendRows[i][0].parentNode : null;
var label = showLegend ? legendRows[i][0].parentNode : null;

@@ -2039,3 +2101,3 @@ if (s.show)

label && addClass(label, "off");
cursorPts && trans(cursorPts[i], 0, -10);
cursorPts.length > 1 && trans(cursorPts[i], 0, -10);
}

@@ -2085,3 +2147,3 @@ }

if (legendRows)
if ( legendRows)
{ legendRows[i][0].parentNode.style.opacity = value; }

@@ -2120,4 +2182,4 @@ }

if (cursorFocus && legendOpts.show) {
on(mouseleave, legend, function (e) {
if (showLegend && cursorFocus) {
on(mouseleave, legendEl, function (e) {
if (cursor.locked)

@@ -2130,18 +2192,2 @@ { return; }

// series-intersection markers
var cursorPts = cursor.show && cursor.points.show(self);
if ( cursorPts) {
cursorPts.forEach(function (pt, i) {
if (i > 0) {
addClass(pt, "cursor-pt");
addClass(pt, series[i].class);
trans(pt, -10, -10);
over.appendChild(pt);
}
});
}
var cursorRaf = 0;
function scaleValueAtPos(pos, scale) {

@@ -2200,2 +2246,4 @@ var dim = scale == xScaleKey ? plotWidCss : plotHgtCss;

var cursorRaf = 0;
function updateCursor(ts) {

@@ -2225,6 +2273,6 @@ if (inBatch) {

distsToCursor[i] = inf;
cursorPts && trans(cursorPts[i], -10, -10);
cursorPts.length > 1 && trans(cursorPts[i], -10, -10);
}
if ( legendOpts.show) {
if (showLegend) {
if (i == 0 && multiValLegend)

@@ -2260,3 +2308,3 @@ { continue; }

cursorPts && trans(cursorPts[i$1], xPos, yPos);
cursorPts.length > 1 && trans(cursorPts[i$1], xPos, yPos);
}

@@ -2266,3 +2314,3 @@ else

if ( legendOpts.show) {
if (showLegend) {
if (i$1 == 0 && multiValLegend)

@@ -2340,5 +2388,2 @@ { continue; }

if (rect == null)
{ syncRect(); }
cacheMouse(e, src, _x, _y, _w, _h, _i, false, e != null);

@@ -2495,2 +2540,4 @@

on(scroll, win, deb);
self.syncRect = syncRect;
}

@@ -2581,4 +2628,6 @@

uPlot.fmtDate = fmtDate;
uPlot.tzDate = tzDate;
{
uPlot.fmtDate = fmtDate;
uPlot.tzDate = tzDate;
}

@@ -2585,0 +2634,0 @@ return uPlot;

@@ -1,2 +0,2 @@

/*! https://github.com/leeoniya/uPlot (v1.0.3) */
var uPlot=function(){"use strict";function n(n,t,e,r){var i;e=e||0;for(var a=2147483647>=(r=r||t.length-1);r-e>1;)n>t[i=a?e+r>>1:o((e+r)/2)]?e=i:r=i;return n-t[e]>t[r]-n?r:e}function t(n,t,e,i){var a=t-n,l=f(a||r(t)||1),u=o(l),c=s(10,u)*e,v=0==a?c:0,h=x(function(n,t){return o(n/t)*t}(n-v,c)),p=x(d(t+v,c));return i&&(0==a?t>0?h=0:0>t&&(p=0):(c>p-t&&(p+=c),c>n-h&&(h-=c),n>=0&&0>h&&(h=0),0>=t&&p>0&&(p=0))),[h,p]}var e=Math,r=e.abs,o=e.floor,i=e.round,a=e.ceil,l=e.min,u=e.max,s=e.pow,f=e.log10,c=e.PI;function v(n,t){return i(n/t)*t}function h(n,t,e){return l(u(n,t),e)}function p(n){return"function"==typeof n?n:function(){return n}}function m(n,t){return t}function d(n,t){return a(n/t)*t}function g(n){return i(1e3*n)/1e3}function x(n){return i(1e6*n)/1e6}var w=Array.isArray;function b(n){return"object"==typeof n&&null!==n}function y(n){var t;if(w(n))t=n.map(y);else if(b(n))for(var e in t={},n)t[e]=y(n[e]);else t=n;return t}function k(n){for(var t=arguments,e=1;t.length>e;e++){var r=t[e];for(var o in r)b(n[o])?k(n[o],y(r[o])):n[o]=y(r[o])}return n}var S="width",M="height",Y="left",D=requestAnimationFrame,E=document,T=window,z=devicePixelRatio;function A(n,t){null!=t&&n.classList.add(t)}function C(n,t,e){n.style[t]=e+"px"}function F(n,t,e){var r=E.createElement(n);return null!=t&&A(r,t),null!=e&&e.appendChild(r),r}function _(n,t){return F("div",n,t)}function H(n,t,e){n.style.transform="translate("+t+"px,"+e+"px)"}var P={passive:!0};function W(n,t,e){t.addEventListener(n,e,P)}function L(n,t,e){t.removeEventListener(n,e,P)}var N=["January","February","March","April","May","June","July","August","September","October","November","December"],I=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function j(n){return n.slice(0,3)}var B=I.map(j),G=N.map(j);function J(n){return(10>n?"0":"")+n}var R={YYYY:function(n){return n.getFullYear()},YY:function(n){return(n.getFullYear()+"").slice(2)},MMMM:function(n){return N[n.getMonth()]},MMM:function(n){return G[n.getMonth()]},MM:function(n){return J(n.getMonth()+1)},M:function(n){return n.getMonth()+1},DD:function(n){return J(n.getDate())},D:function(n){return n.getDate()},WWWW:function(n){return I[n.getDay()]},WWW:function(n){return B[n.getDay()]},HH:function(n){return J(n.getHours())},H:function(n){return n.getHours()},h:function(n){var t=n.getHours();return 0==t?12:t>12?t-12:t},AA:function(n){return 12>n.getHours()?"AM":"PM"},aa:function(n){return 12>n.getHours()?"am":"pm"},a:function(n){return 12>n.getHours()?"a":"p"},mm:function(n){return J(n.getMinutes())},m:function(n){return n.getMinutes()},ss:function(n){return J(n.getSeconds())},s:function(n){return n.getSeconds()},fff:function(n){return function(n){return(10>n?"00":100>n?"0":"")+n}(n.getMilliseconds())}};function U(n){for(var t,e=[],r=/\{([a-z]+)\}|[^{]+/gi;t=r.exec(n);)e.push("{"==t[0][0]?R[t[1]]:t[0]);return function(n){for(var t="",r=0;e.length>r;r++)t+="string"==typeof e[r]?e[r]:e[r](n);return t}}function V(n,t,e){for(var o=[],i=n;t>i;i++)for(var a=0;e.length>a;a++){var l=e[a]*s(10,i);o.push(+l.toFixed(r(i)))}return o}var q=[1,2,5],O=V(-12,0,q),X=V(0,12,q),Z=O.concat(X),K=3600,Q=86400,$=30*Q,nn=365*Q,tn=[5e-4].concat(V(-3,0,q),[1,5,10,15,30,60,300,600,900,1800,K,7200,3*K,4*K,6*K,8*K,43200,Q,2*Q,3*Q,4*Q,5*Q,6*Q,7*Q,8*Q,9*Q,10*Q,15*Q,$,2*$,3*$,4*$,6*$,nn,2*nn,5*nn,10*nn,25*nn,50*nn,100*nn]);function en(n){return n.map((function(n){return[n[0],U(n[1]),n[2],U(n[4]?n[1]+n[3]:n[3])]}))}var rn="{M}/{D}",on="\n"+rn,an="{h}:{mm}{aa}",ln=en([[nn,"{YYYY}",7,"",1],[28*Q,"{MMM}",7,"\n{YYYY}",1],[Q,rn,7,"\n{YYYY}",1],[K,"{h}{aa}",4,on,1],[60,an,4,on,1],[1,":{ss}",2,on+" "+an,1],[.001,":{ss}.{fff}",2,on+" "+an,1]]);function un(n,t){return function(e,r){var o=g(r[1]-r[0]),i=t.find((function(n){return o>=n[0]})),a=null,l=null,u=null;return r.map((function(t){var e=n(t),r=e.getFullYear(),o=e.getDate(),s=e.getMinutes(),f=r!=a,c=o!=l,v=s!=u;return a=r,l=o,u=s,(7==i[2]&&f||4==i[2]&&c||2==i[2]&&v?i[3]:i[1])(e)}))}}function sn(n,t,e){return new Date(n,t,e)}function fn(n){return U(n)}var cn=fn("{YYYY}-{MM}-{DD} {h}:{mm}{aa}");function vn(n,t){return function(e,r){return t(n(r))}}var hn={show:!0,x:!0,y:!0,lock:!1,points:{show:function(n){return n.series.map((function(n,t){if(t>0){var e=_();e.style.background=n.stroke||"#000";var r=Yn(n.width,1),o=(r-1)/-2;return C(e,S,r),C(e,M,r),C(e,"marginLeft",o),C(e,"marginTop",o),e}}))}},drag:{setScale:!0,x:!0,y:!1},focus:{prox:-1},locked:!1,left:-10,top:-10,idx:null},pn={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},mn=k({},pn,{size:10}),dn='12px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',gn="bold "+dn,xn={type:"x",show:!0,scale:"x",space:50,gap:5,size:50,labelSize:30,labelFont:gn,side:2,grid:pn,ticks:mn,font:dn},wn={show:!0,scale:"x",min:1/0,max:-1/0,idxs:[]},bn=new Intl.NumberFormat(navigator.language);function yn(n,t){return t.map(bn.format)}function kn(n,t,e,r,o,i){for(var a=[],l=t=i?t:+d(t,r).toFixed(12);e>=l;l=+(l+r).toFixed(12))a.push(l);return a}function Sn(n,t){return t}var Mn={type:"y",show:!0,scale:"y",space:40,gap:5,size:50,labelSize:30,labelFont:gn,side:3,grid:pn,ticks:mn,font:dn};function Yn(n,t){return u(g(5*t),2*g(n*t)-1)}var Dn={scale:"y",show:!0,band:!1,alpha:1,points:{show:function(n,t){var e=Yn(n.series[t].width,z),r=n.series[0].idxs;return n.bbox.width/e/2>=r[1]-r[0]}},values:null,min:1/0,max:-1/0,idxs:[],path:null,clip:null},En={time:!0,auto:!1,distr:1,min:1/0,max:-1/0},Tn=k({},En,{time:!1,auto:!0}),zn={};function An(){var n=[];return{sub:function(t){n.push(t)},unsub:function(t){n=n.filter((function(n){return n!=t}))},pub:function(t,e,r,o,i,a,l){n.length>1&&n.forEach((function(n){n!=e&&n.pub(t,e,r,o,i,a,l)}))}}}function Cn(n,t,e){return[n[0],n[1]].concat(n.slice(2)).map((function(n,r){return k({},0==r||n&&n.side%2==0?t:e,n)}))}function Fn(n,t,e,r){return r+(1-(n-t.min)/(t.max-t.min))*e}function _n(n,t,e,r){return r+(n-t.min)/(t.max-t.min)*e}function Hn(n,t,e){return[t,e]}function Pn(n,e,r){return t(e,r,.2,!0)}function Wn(n){return 0==n.button}function Ln(n){var t;return[n=n.replace(/\d+/,(function(n){return t=i(n*z)})),t]}function Nn(t,e,a){var s={};((t=y(t)).plugins||[]).forEach((function(n){n.opts&&(t=n.opts(s,t)||t)}));var f=!1,b=Cn(t.series,wn,Dn),P=Cn(t.axes||[],xn,Mn),N=t.scales=t.scales||{},I=k({x:i(Mn.size/2),y:i(xn.size/3)},t.gutters),j=t.tzDate||function(n){return new Date(1e3*n)},B=function(n){return function(t,e,r,i,a){var l=[],u=i>=$&&nn>i,s=n(e),f=s/1e3,c=sn(s.getFullYear(),s.getMonth(),u?1:s.getDate()),v=c/1e3;if(u)for(var h=i/$,p=f==v?f:sn(c.getFullYear(),c.getMonth()+h,1)/1e3,m=new Date(1e3*p),w=m.getFullYear(),b=m.getMonth(),y=0;r>=p;y++){var k=sn(w,b+h*y,1);(p=(+k+(k-n(k/1e3)))/1e3)>r||l.push(p)}else{var S=Q>i?i:Q,M=v+(o(e)-o(f))+d(f-v,S);l.push(M);for(var Y=n(M),D=Y.getHours()+Y.getMinutes()/60+Y.getSeconds()/K,E=i/K;;){M=g(M+i);var T=o(x(D+E))%24,z=n(M).getHours()-T;if(z>1&&(z=-1),(M-=z*K)>r)break;D=(D+E)%24,.7>g((M-l[l.length-1])/i)*a||l.push(M)}}return l}}(j),G=un(j,ln),J=vn(j,cn);s.series=b,s.axes=P,s.scales=N;var R={};for(var U in N){var V=N[U];null==V.min&&null==V.max||(R[U]={min:V.min,max:V.max})}var q=k({show:!0},t.legend);for(var O in b.forEach((function(n,t){var e=n.scale,r=N[e]=k({},0==t?En:Tn,N[e]),o=r.time;r.range=p(r.range||(o||0==t?Hn:Pn)),n.spanGaps=!0===n.spanGaps?m:p(n.spanGaps||[]);var i=n.value;if(n.value=o?function(n){return"string"==typeof n}(i)?vn(j,fn(i)):i||J:i||Sn,n.label=n.label||(o?"Time":"Value"),t>0){n.width=null==n.width?1:n.width,n.paths=n.paths||pt;var a=Yn(n.width,1);n.points=k({},{size:a,width:u(1,.2*a)},n.points),n.points.show=p(n.points.show),n._paths=null}})),N){var rn=N[O];null!=rn.from&&(N[O]=k({},N[rn.from],rn))}var on=b[0].scale,an=N[on].distr;P.forEach((function(n){if(n.show){var t=N[n.scale];null==t&&(n.scale=n.side%2?b[1].scale:on,t=N[n.scale]);var e=t.time;n.space=p(n.space),n.incrs=p(n.incrs||(2==t.distr?X:e?tn:Z)),n.split=p(n.split||(e&&1==t.distr?B:kn));var r=n.values;n.values=e?w(r)?un(j,en(r)):r||G:r||yn,n.font=Ln(n.font),n.labelFont=Ln(n.labelFont)}}));var pn,mn=s.root=_("uplot");null!=t.id&&(mn.id=t.id),A(mn,t.class),t.title&&(_("title",mn).textContent=t.title);var dn,gn,bn,Nn,In,jn,Bn,Gn,Jn,Rn,Un=null,Vn=null,qn=b[0].idxs,On=null;function Xn(n,t){s.data=n,e=n.slice(),pn=(On=e[0]).length,2==an&&(e[0]=On.map((function(n,t){return t}))),gt(),fe("setData"),!1!==t&&Zn()}function Zn(){Un=qn[0]=0,Vn=qn[1]=pn-1,Lt(on,2==an?Un:e[0][Un],2==an?Vn:e[0][Vn])}function Kn(n,t,e,r){nt.strokeStyle=n||"#000",nt.lineWidth=t,nt.lineJoin="round",nt.setLineDash(e||[]),nt.fillStyle=r||"#000"}function Qn(n,t){s.width=dn=bn=n,s.height=gn=Nn=t,In=jn=0,function(){var n=!1,t=!1,e=!1,r=!1;P.forEach((function(o){if(o.show){var i=o.side,a=i%2,l=o.size+(o.labelSize=null!=o.label?o.labelSize||30:0);l>0&&(a?(bn-=l,3==i?(In+=l,r=!0):e=!0):(Nn-=l,0==i?(jn+=l,n=!0):t=!0))}})),(n||t)&&(e||(bn-=I.x),r||(bn-=I.x,In+=I.x)),(r||e)&&(t||(Nn-=I.y),n||(Nn-=I.y,jn+=I.y))}(),function(){var n=In+bn,t=jn+Nn,e=In,r=jn;function o(o,i){switch(o){case 1:return(n+=i)-i;case 2:return(t+=i)-i;case 3:return(e-=i)+i;case 0:return(r-=i)+i}}P.forEach((function(n){var t=n.side;n._pos=o(t,n.size),null!=n.label&&(n._lpos=o(t,n.labelSize))}))}();var e=s.bbox;Bn=e[Y]=v(In*z,.5),Gn=e.top=v(jn*z,.5),Jn=e[S]=v(bn*z,.5),Rn=e[M]=v(Nn*z,.5),C(et,Y,In),C(et,"top",jn),C(et,S,bn),C(et,M,Nn),C(rt,Y,In),C(rt,"top",jn),C(rt,S,bn),C(rt,M,Nn),C(tt,S,dn),C(tt,M,gn),$n[S]=i(dn*z),$n[M]=i(gn*z),f&&Lt(on,N[on].min,N[on].max),f&&fe("setSize")}s.setData=Xn,s.bbox={},s.setSize=function(n){Qn(n.width,n.height)};var $n=F("canvas"),nt=s.ctx=$n.getContext("2d"),tt=_("wrap",mn),et=_("under",tt);tt.appendChild($n);var rt=_("over",tt);function ot(){if(Vt)Ot=!0;else{var t={};for(var r in N){var o=N[r],i=R[r];t[r]={min:o.min,max:o.max},null!=i?(k(o,i),r==on&&gt()):r!=on&&(o.min=1/0,o.max=-1/0)}for(var a in b.forEach((function(t,r){var o=t.scale,i=N[o];if(0==r){var a=i.range(s,i.min,i.max);i.min=a[0],i.max=a[1],Un=n(i.min,e[0]),Vn=n(i.max,e[0]),i.min>e[0][Un]&&Un++,e[0][Vn]>i.max&&Vn--,t.min=On[Un],t.max=On[Vn]}else if(t.show&&null==R[o]){var f=t.min==1/0?i.auto?function(n,t,e){for(var r=1/0,o=-1/0,i=t;e>=i;i++)null!=n[i]&&(r=l(r,n[i]),o=u(o,n[i]));return[r,o]}(e[r],Un,Vn):[0,100]:[t.min,t.max];i.min=l(i.min,t.min=f[0]),i.max=u(i.max,t.max=f[1])}t.idxs[0]=Un,t.idxs[1]=Vn})),N){var f=N[a];if(null==f.from&&f.min!=1/0&&null==R[a]){var c=f.range(s,f.min,f.max);f.min=c[0],f.max=c[1]}R[a]=null}for(var v in N){var h=N[v];if(null!=h.from){var p=N[h.from];if(p.min!=1/0){var m=h.range(s,p.min,p.max);h.min=m[0],h.max=m[1]}}}var d={};for(var g in b.forEach((function(n){var e=n.scale,r=N[e];null==t[e]||r.min==t[e].min&&r.max==t[e].max||(d[e]=!0,n._paths=null)})),d)fe("setScale",g);yt.show&&Kt()}}var it,at,lt,ut,st,ft,ct,vt=1;function ht(n,t){var e=new Set(b[n].spanGaps(s,t,n)),r=null;if((t=t.filter((function(n){return!e.has(n)}))).length>0){r=new Path2D;for(var o=Bn,i=0;t.length>i;i++){var a=t[i];r.rect(o,Gn,a[0]-o,Gn+Rn),o=a[1]}r.rect(o,Gn,Bn+Jn-o,Gn+Rn)}return r}function pt(n,t,r,o){var a,s,f=b[t],c=e[0],v=e[t],h=N[on],p=N[f.scale],m=1==vt?{stroke:new Path2D,fill:null,clip:null}:b[t-1]._paths,d=m.stroke,x=g(f[S]*z),w=1/0,y=-1/0,k=[],M=i(_n(c[1==vt?r:o],h,Jn,Bn));f.band&&1==vt&&r==Un&&(x&&d.lineTo(-x,i(Fn(v[r],p,Rn,Gn))),c[0]>h.min&&k.push([Bn,M-1]));for(var Y=1==vt?r:o;Y>=r&&o>=Y;Y+=vt){var D=i(_n(c[Y],h,Jn,Bn));if(D==M)null!=v[Y]&&(a=i(Fn(v[Y],p,Rn,Gn)),w=l(a,w),y=u(a,y));else{var E=!1;if(w!=1/0?(d.lineTo(M,w),d.lineTo(M,y),d.lineTo(M,a),s=M):E=!0,null!=v[Y]?(a=i(Fn(v[Y],p,Rn,Gn)),d.lineTo(D,a),w=y=a,D-M>1&&null==v[Y-1]&&(E=!0)):(w=1/0,y=-1/0),E){var T=k[k.length-1];T&&T[0]==s?T[1]=D:k.push([s,D])}M=D}}if(f.band){var A,C,F=100*x;-1==vt&&r==Un&&(C=Bn-F,A=r),1==vt&&o==Vn&&(C=Bn+Jn+F,A=o,h.max>c[pn-1]&&k.push([M,Bn+Jn])),d.lineTo(C,i(Fn(v[A],p,Rn,Gn)))}if(1==vt&&(m.clip=ht(t,k),null!=f.fill)){var _=m.fill=new Path2D(d),H=i(Fn(0,p,Rn,Gn));_.lineTo(Bn+Jn,H),_.lineTo(Bn,H)}return f.band&&(vt*=-1),m}function mt(n,t,e,r){var o=n.space(s,t,e,r),i=function(n,t,e,r){for(var o=e/n,i=0;t.length>i;i++){var a=t[i]*o;if(a>=r)return[t[i],a]}}(e-t,n.incrs(s,t,e,r,o),r,o);return i.push(i[1]/o),i}function dt(n,t,e,r,o,i,a,l){var u=i%2/2;nt.translate(u,u),Kn(a,i,l),nt.beginPath();var s,f,c,v,h=r+(0==e||3==e?-o:o);0==t?(f=r,v=h):(s=r,c=h),n.forEach((function(n){0==t?s=c=n:f=v=n,nt.moveTo(s,f),nt.lineTo(c,v)})),nt.stroke(),nt.translate(-u,-u)}function gt(){b.forEach((function(n,t){t>0&&(n.min=1/0,n.max=-1/0,n._paths=null)}))}function xt(){Vt?qt=!0:(nt.clearRect(0,0,$n[S],$n[M]),fe("drawClear"),function(){P.forEach((function(n){if(n.show){var t=N[n.scale];if(t.min!=1/0){var e=n.side,r=e%2,o=t.min,a=t.max,l=mt(n,o,a,0==r?bn:Nn),u=l[1],f=n.split(s,o,a,l[0],l[2],2==t.distr),v=0==r?_n:Fn,h=0==r?Jn:Rn,p=0==r?Bn:Gn,m=f.map((function(n){return i(v(n,t,h,p))})),d=i(n.gap*z),x=n.ticks,w=x.show?i(x.size*z):0,b=n.values(s,2==t.distr?f.map((function(n){return On[n]})):f,u),y=i(n._pos*z),k=y+(w+d)*(0==r&&0==e||1==r&&3==e?-1:1),M=0==r?k:0,D=1==r?k:0;nt.font=n.font[0],nt.fillStyle=n.stroke||"#000",nt.textAlign=0==r?"center":3==e?"right":Y,nt.textBaseline=1==r?"middle":2==e?"top":"bottom";var E=1.5*n.font[1];if(b.forEach((function(n,t){0==r?D=m[t]:M=m[t],(""+n).split(/\n/gm).forEach((function(n,t){nt.fillText(n,D,M+t*E)}))})),n.label){nt.save();var T=i(n._lpos*z);1==r?(D=M=0,nt.translate(T,i(Gn+Rn/2)),nt.rotate((3==e?-c:c)/2)):(D=i(Bn+Jn/2),M=T),nt.font=n.labelFont[0],nt.textAlign="center",nt.textBaseline=2==e?"top":"bottom",nt.fillText(n.label,D,M),nt.restore()}x.show&&dt(m,r,e,y,w,g(x[S]*z),x.stroke);var A=n.grid;A.show&&dt(m,r,0==r?2:1,0==r?Gn:Bn,0==r?Rn:Jn,g(A[S]*z),A.stroke,A.dash)}}})),fe("drawAxes")}(),function(){b.forEach((function(n,t){if(t>0&&n.show&&null==n._paths){var r=function(n){for(var t=h(Un-1,0,pn-1),e=h(Vn+1,0,pn-1);null==n[t]&&t>0;)t--;for(;null==n[e]&&pn-1>e;)e++;return[t,e]}(e[t]);n._paths=n.paths(s,t,r[0],r[1])}})),b.forEach((function(n,t){t>0&&n.show&&(n._paths&&function(n){var t=b[n];if(1==vt){var e=t._paths,r=e.stroke,o=e.fill,i=e.clip,a=g(t[S]*z),l=a%2/2;Kn(t.stroke,a,t.dash,t.fill),nt.globalAlpha=t.alpha,nt.translate(l,l),nt.save();var u=Bn,s=Gn,f=Jn,c=Rn,v=a*z/2;0==t.min&&(c+=v),0==t.max&&(s-=v,c+=v),nt.beginPath(),nt.rect(u,s,f,c),nt.clip(),null!=i&&nt.clip(i),t.band?(nt.fill(r),a&&nt.stroke(r)):(a&&nt.stroke(r),null!=t.fill&&nt.fill(o)),nt.restore(),nt.translate(-l,-l),nt.globalAlpha=1}t.band&&(vt*=-1)}(t),n.points.show(s,t,Un,Vn)&&function(n){var t=b[n],r=t.points,o=g(t[S]*z),a=o%2/2,l=r.width>0,u=(r.size-r.width)/2*z,s=g(2*u);nt.translate(a,a),nt.save(),nt.beginPath(),nt.rect(Bn-s,Gn-s,Jn+2*s,Rn+2*s),nt.clip(),nt.globalAlpha=t.alpha;for(var f=new Path2D,v=Un;Vn>=v;v++)if(null!=e[n][v]){var h=i(_n(e[0][v],N[on],Jn,Bn)),p=i(Fn(e[n][v],N[t.scale],Rn,Gn));f.moveTo(h+u,p),f.arc(h,p,u,0,2*c)}Kn(r.stroke||t.stroke||"#000",o,null,r.fill||(l?"#fff":t.stroke||"#000")),nt.fill(f),l&&nt.stroke(f),nt.globalAlpha=1,nt.restore(),nt.translate(-a,-a)}(t),fe("drawSeries",t))}))}(),it=!0,fe("draw"))}function wt(n,t){var e=N[n];if(null==e.from){if(n==on&&e.time&&P[0].show&&.001>mt(P[0],t.min,t.max,bn)[0])return;R[n]=t,it=!1,ot(),!it&&xt(),it=!1}}s.redraw=xt,s.setScale=wt;var bt=!1,yt=s.cursor=k({},hn,t.cursor);yt.points.show=p(yt.points.show);var kt=s.focus=k({},t.focus||{alpha:.3},yt.focus),St=kt.prox>=0,Mt=yt.drag;if(yt.show){var Yt="cursor-";yt.x&&(ft=yt.left,at=_(Yt+"x",rt)),yt.y&&(ct=yt.top,lt=_(Yt+"y",rt))}var Dt=s.select=k({show:!0,left:0,width:0,top:0,height:0},t.select),Et=Dt.show?_("select",rt):null;function Tt(n,t){if(Dt.show){for(var e in n)C(Et,e,Dt[e]=n[e]);!1!==t&&fe("setSelect")}}s.setSelect=Tt;var zt=null,At=null,Ct=!1;if(q.show){zt=F("table","legend",mn);var Ft,_t=b[1].values;if(Ct=null!=_t){var Ht=F("tr","labels",zt);for(var Pt in F("th",null,Ht),Ft=_t(s,1,0))F("th",null,Ht).textContent=Pt}else Ft={_:0},A(zt,"inline");At=b.map((function(n,t){if(0==t&&Ct)return null;var e=[],r=F("tr","series",zt);A(r,n.class),n.show||A(r,"off");var o=F("th",null,r),i=_("ident",o);n.width&&(i.style.borderColor=n.stroke),i.style.backgroundColor=n.fill;var a=_("text",o);for(var l in a.textContent=n.label,t>0&&(W("click",o,(function(e){yt.locked||Wn(e)&&Nt(t,{show:!n.show},ce.setSeries)})),St&&W("mouseenter",o,(function(){yt.locked||Nt(t,{focus:!0},ce.setSeries)}))),Ft){var u=F("td",null,r);u.textContent="--",e.push(u)}return e}))}function Wt(n){var t=q.show?At[n][0].parentNode:null;b[n].show?t&&function(n){n.classList.remove("off")}(t):(t&&A(t,"off"),Gt&&H(Gt[n],0,-10))}function Lt(n,t,e){wt(n,{min:t,max:e})}function Nt(n,t,e){var r=b[n];if(null!=t.focus&&function(n){n!=Bt&&(b.forEach((function(t,e){!function(n,t){var e=b[n];It(n,t),e.band&&It(b[n+1].band?n+1:n-1,t)}(e,null==n||0==e||e==n?1:kt.alpha)})),Bt=n,xt())}(n),null!=t.show){if(r.show=t.show,Wt(n),r.band){var o=b[n+1]&&b[n+1].band?n+1:n-1;b[o].show=r.show,Wt(o)}Lt(on,N[on].min,N[on].max)}fe("setSeries",n,t),e&&he.pub("setSeries",s,n,t)}function It(n,t){b[n].alpha=t,At&&(At[n][0].parentNode.style.opacity=t)}s.setSeries=Nt;var jt=Array(b.length),Bt=null;St&&q.show&&W("mouseleave",zt,(function(){yt.locked||(Nt(null,{focus:!1},ce.setSeries),Kt())}));var Gt=yt.show&&yt.points.show(s);Gt&&Gt.forEach((function(n,t){t>0&&(A(n,"cursor-pt"),A(n,b[t].class),H(n,-10,-10),rt.appendChild(n))}));var Jt=0;function Rt(n,t){var e=h(n/(t==on?bn:Nn),0,1),r=N[t];return r.min+e*(r.max-r.min)}function Ut(t){return n(Rt(t,on),e[0],Un,Vn)}s.posToIdx=Ut,s.posToVal=function(n,t){return Rt(t==on?n:Nn-n,t)},s.valToPos=function(n,t,e){return t==on?_n(n,N[t],e?Jn:bn,e?Bn:0):Fn(n,N[t],e?Rn:Nn,e?Gn:0)};var Vt=!1,qt=!1,Ot=!1,Xt=!1;function Zt(n){Vt=!0,n(s),Vt=!1,Ot&&ot(),Xt&&Kt(),qt&&!it&&xt(),Ot=Xt=qt=it=Vt}function Kt(n){if(Vt)Xt=!0;else{var t;if(Jt=0,yt.show&&(yt.x&&H(at,i(ft),0),yt.y&&H(lt,0,i(ct))),0>ft){t=null;for(var o=0;b.length>o;o++)if(o>0&&(jt[o]=1/0,Gt&&H(Gt[o],-10,-10)),q.show){if(0==o&&Ct)continue;for(var a=0;At[o].length>a;a++)At[o][a].firstChild.nodeValue="--"}St&&Nt(null,{focus:!0},ce.setSeries)}else{t=Ut(ft);for(var c=g(_n(e[0][t],N[on],bn,0)),v=0;b.length>v;v++){var h=b[v];if(v>0&&h.show){var p=e[v][t],m=null==p?-10:g(Fn(p,N[h.scale],Nn,0));jt[v]=m>0?r(m-ct):1/0,Gt&&H(Gt[v],c,m)}else jt[v]=1/0;if(q.show){if(0==v&&Ct)continue;var d=0==v&&2==an?On:e[v],x=Ct?h.values(s,v,t):{_:h.value(s,d[t],v,t)},w=0;for(var y in x)At[v][w++].firstChild.nodeValue=x[y]}}if(Dt.show&&bt){if(Mt.x){var k=l(ut,ft),D=u(ut,ft);C(Et,Y,Dt[Y]=k),C(Et,S,Dt[S]=D-k)}if(Mt.y){var E=l(st,ct),T=u(st,ct);C(Et,"top",Dt.top=E),C(Et,M,Dt[M]=T-E)}}}if(null!=n&&(he.pub("mousemove",s,ft,ct,bn,Nn,t),St)){var z=l.apply(null,jt),A=null;z>kt.prox||jt.some((function(n,t){if(n==z)return A=t})),Nt(A,{focus:!0},ce.setSeries)}yt.idx=t,yt.left=ft,yt.top=ct,f&&fe("setCursor")}}s.batch=Zt,s.setCursor=function(n){ft=n.left,ct=n.top,Kt()};var Qt=null;function $t(){Qt=rt.getBoundingClientRect()}function ne(n,t,e,r,o,i){yt.locked||(null==Qt&&$t(),te(n,0,e,r,o,i,0,!1,null!=n),null!=n?0==Jt&&(Jt=D(Kt)):Kt())}function te(n,t,e,r,o,i,a,l,u){null!=n?(e=n.clientX-Qt.left,r=n.clientY-Qt.top):(e=bn*(e/o),r=Nn*(r/i)),u&&(e>1&&bn-1>e||(e=v(e,bn)),r>1&&Nn-1>r||(r=v(r,Nn))),l?(ut=e,st=r):(ft=e,ct=r)}function ee(){Tt({width:Mt.x?0:bn,height:Mt.y?0:Nn},!1)}function re(n,t,e,r,o,i){(null==n||Wn(n))&&(bt=!0,te(n,0,e,r,o,i,0,!0,!0),Dt.show&&(Mt.x||Mt.y)&&ee(),null!=n&&(W("mouseup",E,oe),he.pub("mousedown",s,ut,st,bn,Nn,null)))}function oe(n,t,e,r,o,i){(null==n||Wn(n))&&(bt=!1,te(n,0,e,r,o,i,0,!1,!0),ft!=ut||ct!=st?(Tt(Dt),Mt.setScale&&(Zt((function(){if(Mt.x){var n=2==an?Ut:Rt;Lt(on,n(Dt[Y],on),n(Dt[Y]+Dt[S],on))}if(Mt.y)for(var t in N)t!=on&&null==N[t].from&&Lt(t,Rt(Nn-Dt.top-Dt[M],t),Rt(Nn-Dt.top,t))})),ee())):yt.lock&&(yt.locked=!yt.locked,yt.locked||Kt()),null!=n&&(L("mouseup",E,oe),he.pub("mouseup",s,ft,ct,bn,Nn,null)))}function ie(n){Zn(),null!=n&&he.pub("dblclick",s,ft,ct,bn,Nn,null)}var ae,le={};le.mousedown=re,le.mousemove=ne,le.mouseup=oe,le.dblclick=ie,le.setSeries=function(n,t,e,r){Nt(e,r)},yt.show&&(W("mousedown",rt,re),W("mousemove",rt,ne),W("mouseleave",rt,(function(){yt.locked||bt||(ft=-10,ct=-10,Kt(1))})),Mt.setScale&&W("dblclick",rt,ie),ae=function(n){var t=null;function e(){t=null,n()}return function(){clearTimeout(t),t=setTimeout(e,100)}}($t),W("resize",T,ae),W("scroll",T,ae));var ue=s.hooks=t.hooks||{},se=[s];function fe(n){if(n in ue){var t=se.concat(Array.prototype.slice.call(arguments,1));ue[n].forEach((function(n){n.apply(null,t)}))}}(t.plugins||[]).forEach((function(n){for(var t in n.hooks)ue[t]=(ue[t]||[]).concat(n.hooks[t])}));var ce=k({key:null,setSeries:!1},yt.sync),ve=ce.key,he=null!=ve?zn[ve]=zn[ve]||An():An();function pe(){Qn(t[S],t[M]),fe("init",t,e),Xn(e||t.data,!1),R[on]?wt(on,R[on]):Zn(),Tt(Dt,!1),f=!0,fe("ready")}return he.sub(s),s.pub=function(n,t,e,r,o,i,a){le[n](null,t,e,r,o,i,a)},s.destroy=function(){he.unsub(s),L("resize",T,ae),L("scroll",T,ae),mn.remove(),fe("destroy")},a?a instanceof HTMLElement?(a.appendChild(mn),pe()):a(s,pe):pe(),s}return Nn.assign=k,Nn.rangeNum=t,Nn.fmtDate=U,Nn.tzDate=function(n,t){var e=new Date(n.toLocaleString("en-US",{timeZone:t}));return e.setMilliseconds(n.getMilliseconds()),e},Nn}();
/*! https://github.com/leeoniya/uPlot (v1.0.4) */
var uPlot=function(){"use strict";function n(n,t,e,r){var i;e=e||0;for(var a=2147483647>=(r=r||t.length-1);r-e>1;)n>t[i=a?e+r>>1:o((e+r)/2)]?e=i:r=i;return n-t[e]>t[r]-n?r:e}function t(n,t,e,i){var a=t-n,l=f(a||r(t)||1),u=o(l),c=s(10,u)*e,v=0==a?c:0,h=x(function(n,t){return o(n/t)*t}(n-v,c)),p=x(d(t+v,c));return i&&(0==a?t>0?h=0:0>t&&(p=0):(c>p-t&&(p+=c),c>n-h&&(h-=c),n>=0&&0>h&&(h=0),0>=t&&p>0&&(p=0))),[h,p]}var e=Math,r=e.abs,o=e.floor,i=e.round,a=e.ceil,l=e.min,u=e.max,s=e.pow,f=e.log10,c=e.PI;function v(n,t){return i(n/t)*t}function h(n,t,e){return l(u(n,t),e)}function p(n){return"function"==typeof n?n:function(){return n}}function m(n,t){return t}function d(n,t){return a(n/t)*t}function g(n){return i(1e3*n)/1e3}function x(n){return i(1e6*n)/1e6}var w=Array.isArray;function b(n){return"object"==typeof n&&null!==n}function y(n){var t;if(w(n))t=n.map(y);else if(b(n))for(var e in t={},n)t[e]=y(n[e]);else t=n;return t}function M(n){for(var t=arguments,e=1;t.length>e;e++){var r=t[e];for(var o in r)b(n[o])?M(n[o],y(r[o])):n[o]=y(r[o])}return n}var k="width",S="height",Y="left",D=requestAnimationFrame,E=document,T=window,W=devicePixelRatio;function z(n,t){null!=t&&n.classList.add(t)}function A(n,t,e){n.style[t]=e+"px"}function F(n,t,e,r){var o=E.createElement(n);return null!=t&&z(o,t),null!=e&&e.insertBefore(o,r),o}function C(n,t){return F("div",n,t)}function _(n,t,e){n.style.transform="translate("+t+"px,"+e+"px)"}var H={passive:!0};function P(n,t,e){t.addEventListener(n,e,H)}function N(n,t,e){t.removeEventListener(n,e,H)}var L=["January","February","March","April","May","June","July","August","September","October","November","December"],B=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function I(n){return n.slice(0,3)}var R=B.map(I),j=L.map(I),G={MMMM:L,MMM:j,WWWW:B,WWW:R};function J(n){return(10>n?"0":"")+n}var U={YYYY:function(n){return n.getFullYear()},YY:function(n){return(n.getFullYear()+"").slice(2)},MMMM:function(n,t){return t.MMMM[n.getMonth()]},MMM:function(n,t){return t.MMM[n.getMonth()]},MM:function(n){return J(n.getMonth()+1)},M:function(n){return n.getMonth()+1},DD:function(n){return J(n.getDate())},D:function(n){return n.getDate()},WWWW:function(n,t){return t.WWWW[n.getDay()]},WWW:function(n,t){return t.WWW[n.getDay()]},HH:function(n){return J(n.getHours())},H:function(n){return n.getHours()},h:function(n){var t=n.getHours();return 0==t?12:t>12?t-12:t},AA:function(n){return 12>n.getHours()?"AM":"PM"},aa:function(n){return 12>n.getHours()?"am":"pm"},a:function(n){return 12>n.getHours()?"a":"p"},mm:function(n){return J(n.getMinutes())},m:function(n){return n.getMinutes()},ss:function(n){return J(n.getSeconds())},s:function(n){return n.getSeconds()},fff:function(n){return function(n){return(10>n?"00":100>n?"0":"")+n}(n.getMilliseconds())}};function V(n,t){t=t||G;for(var e,r=[],o=/\{([a-z]+)\}|[^{]+/gi;e=o.exec(n);)r.push("{"==e[0][0]?U[e[1]]:e[0]);return function(n){for(var e="",o=0;r.length>o;o++)e+="string"==typeof r[o]?r[o]:r[o](n,t);return e}}function O(n,t,e){for(var o=[],i=n;t>i;i++)for(var a=0;e.length>a;a++){var l=e[a]*s(10,i);o.push(+l.toFixed(r(i)))}return o}var q=[1,2,5],X=O(-12,0,q),Z=O(0,12,q),K=X.concat(Z),Q=3600,$=86400,nn=30*$,tn=365*$,en=[5e-4].concat(O(-3,0,q),[1,5,10,15,30,60,300,600,900,1800,Q,7200,3*Q,4*Q,6*Q,8*Q,43200,$,2*$,3*$,4*$,5*$,6*$,7*$,8*$,9*$,10*$,15*$,nn,2*nn,3*nn,4*nn,6*nn,tn,2*tn,5*tn,10*tn,25*tn,50*tn,100*tn]);function rn(n,t){return n.map((function(n){return[n[0],t(n[1]),n[2],t(n[4]?n[1]+n[3]:n[3])]}))}var on="{M}/{D}",an="\n"+on,ln="{h}:{mm}{aa}",un=[[tn,"{YYYY}",7,"",1],[28*$,"{MMM}",7,"\n{YYYY}",1],[$,on,7,"\n{YYYY}",1],[Q,"{h}{aa}",4,an,1],[60,ln,4,an,1],[1,":{ss}",2,an+" "+ln,1],[.001,":{ss}.{fff}",2,an+" "+ln,1]];function sn(n,t){return function(e,r){var o=g(r[1]-r[0]),i=t.find((function(n){return o>=n[0]})),a=null,l=null,u=null;return r.map((function(t){var e=n(t),r=e.getFullYear(),o=e.getDate(),s=e.getMinutes(),f=r!=a,c=o!=l,v=s!=u;return a=r,l=o,u=s,(7==i[2]&&f||4==i[2]&&c||2==i[2]&&v?i[3]:i[1])(e)}))}}function fn(n,t,e){return new Date(n,t,e)}function cn(n,t){return t(n)}function vn(n,t){return function(e,r){return t(n(r))}}var hn={show:!0,x:!0,y:!0,lock:!1,points:{show:function(n,t){var e=n.series[t],r=C();r.style.background=e.stroke||"#000";var o=Yn(e.width,1),i=(o-1)/-2;return A(r,k,o),A(r,S,o),A(r,"marginLeft",i),A(r,"marginTop",i),r}},drag:{setScale:!0,x:!0,y:!1},focus:{prox:-1},locked:!1,left:-10,top:-10,idx:null},pn={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},mn=M({},pn,{size:10}),dn='12px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',gn="bold "+dn,xn={type:"x",show:!0,scale:"x",space:50,gap:5,size:50,labelSize:30,labelFont:gn,side:2,grid:pn,ticks:mn,font:dn},wn={show:!0,scale:"x",min:1/0,max:-1/0,idxs:[]},bn=new Intl.NumberFormat(navigator.language);function yn(n,t){return t.map(bn.format)}function Mn(n,t,e,r,o,i){for(var a=[],l=t=i?t:+d(t,r).toFixed(12);e>=l;l=+(l+r).toFixed(12))a.push(l);return a}function kn(n,t){return t}var Sn={type:"y",show:!0,scale:"y",space:40,gap:5,size:50,labelSize:30,labelFont:gn,side:3,grid:pn,ticks:mn,font:dn};function Yn(n,t){return u(g(5*t),2*g(n*t)-1)}var Dn={scale:"y",show:!0,band:!1,alpha:1,points:{show:function(n,t){var e=Yn(n.series[t].width,W),r=n.series[0].idxs;return n.bbox.width/e/2>=r[1]-r[0]}},values:null,min:1/0,max:-1/0,idxs:[],path:null,clip:null},En={time:!0,auto:!1,distr:1,min:1/0,max:-1/0},Tn=M({},En,{time:!1,auto:!0}),Wn={};function zn(){var n=[];return{sub:function(t){n.push(t)},unsub:function(t){n=n.filter((function(n){return n!=t}))},pub:function(t,e,r,o,i,a,l){n.length>1&&n.forEach((function(n){n!=e&&n.pub(t,e,r,o,i,a,l)}))}}}function An(n,t,e){return[n[0],n[1]].concat(n.slice(2)).map((function(n,r){return Fn(n,r,t,e)}))}function Fn(n,t,e,r){return M({},0==t||n&&n.side%2==0?e:r,n)}function Cn(n,t,e,r){return r+(1-(n-t.min)/(t.max-t.min))*e}function _n(n,t,e,r){return r+(n-t.min)/(t.max-t.min)*e}function Hn(n,t,e){return[t,e]}function Pn(n,e,r){return t(e,r,.2,!0)}function Nn(n){return 0==n.button}function Ln(n){var t;return[n=n.replace(/\d+/,(function(n){return t=i(n*W)})),t]}function Bn(t,e,a){var s={},f=s.root=C("uplot");null!=t.id&&(f.id=t.id),z(f,t.class),t.title&&(C("title",f).textContent=t.title);var b=F("canvas"),H=s.ctx=b.getContext("2d"),L=C("wrap",f),B=C("under",L);L.appendChild(b);var I=C("over",L);((t=y(t)).plugins||[]).forEach((function(n){n.opts&&(t=n.opts(s,t)||t)}));var R=!1,j=An(t.series,wn,Dn),G=An(t.axes||[],xn,Sn),J=t.scales=t.scales||{},U=M({x:i(Sn.size/2),y:i(xn.size/3)},t.gutters),O=t.tzDate||function(n){return new Date(1e3*n)},q=t.fmtDate||V,X=function(n){return function(t,e,r,i,a){var l=[],u=i>=nn&&tn>i,s=n(e),f=s/1e3,c=fn(s.getFullYear(),s.getMonth(),u?1:s.getDate()),v=c/1e3;if(u)for(var h=i/nn,p=f==v?f:fn(c.getFullYear(),c.getMonth()+h,1)/1e3,m=new Date(1e3*p),w=m.getFullYear(),b=m.getMonth(),y=0;r>=p;y++){var M=fn(w,b+h*y,1);(p=(+M+(M-n(M/1e3)))/1e3)>r||l.push(p)}else{var k=$>i?i:$,S=v+(o(e)-o(f))+d(f-v,k);l.push(S);for(var Y=n(S),D=Y.getHours()+Y.getMinutes()/60+Y.getSeconds()/Q,E=i/Q;;){S=g(S+i);var T=o(x(D+E))%24,W=n(S).getHours()-T;if(W>1&&(W=-1),(S-=W*Q)>r)break;D=(D+E)%24,.7>g((S-l[l.length-1])/i)*a||l.push(S)}}return l}}(O),on=sn(O,rn(un,q)),an=vn(O,cn("{YYYY}-{MM}-{DD} {h}:{mm}{aa}",q));s.series=j,s.axes=G,s.scales=J;var ln={};for(var pn in J){var mn=J[pn];null==mn.min&&null==mn.max||(ln[pn]={min:mn.min,max:mn.max})}var dn,gn,bn=M({show:!0},t.legend).show,Bn=[],In=!1;if(bn){dn=F("table","legend",f);var Rn=j[1].values;if(In=null!=Rn){var jn=F("tr","labels",dn);for(var Gn in F("th",null,jn),gn=Rn(s,1,0))F("th",null,jn).textContent=Gn}else gn={_:0},z(dn,"inline")}var Jn=s.cursor=M({},hn,t.cursor);Jn.points.show=p(Jn.points.show);var Un=[null];function Vn(n,t){var e=n.scale,r=J[e]=M({},0==t?En:Tn,J[e]),o=r.time;r.range=p(r.range||(o||0==t?Hn:Pn)),n.spanGaps=!0===n.spanGaps?m:p(n.spanGaps||[]);var i=n.value;if(n.value=o?function(n){return"string"==typeof n}(i)?vn(O,cn(i,q)):i||an:i||kn,n.label=n.label||(o?"Time":"Value"),t>0){n.width=null==n.width?1:n.width,n.paths=n.paths||Dt;var a=Yn(n.width,1);n.points=M({},{size:a,width:u(1,.2*a)},n.points),n.points.show=p(n.points.show),n._paths=null}if(bn&&Bn.splice(t,0,function(n,t){if(0==t&&In)return null;var e=[],r=F("tr","series",dn,dn.childNodes[t]);z(r,n.class),n.show||z(r,"off");var o=F("th",null,r),i=C("ident",o);n.width&&(i.style.borderColor=n.stroke),i.style.backgroundColor=n.fill;var a=C("text",o);for(var l in a.textContent=n.label,t>0&&(P("click",o,(function(t){Jn.locked||Nn(t)&&jt(j.indexOf(n),{show:!n.show},pe.setSeries)})),_t&&P("mouseenter",o,(function(){Jn.locked||jt(j.indexOf(n),{focus:!0},pe.setSeries)}))),gn){var u=F("td",null,r);u.textContent="--",e.push(u)}return e}(n,t)),Jn.show){var l=function(n,t){if(t>0){var e=Jn.points.show(s,t);if(e)return z(e,"cursor-pt"),z(e,n.class),_(e,-10,-10),I.insertBefore(e,Un[t]),e}}(n,t);l&&Un.splice(t,0,l)}}for(var On in s.addSeries=function(n,t){n=Fn(n,t=null==t?j.length:t,wn,Dn),j.splice(t,0,n),Vn(j[t],t)},s.delSeries=function(n){j.splice(n,1),Bn.splice(n,1)[0][0].parentNode.remove(),Un.splice(n,1)[0].remove()},j.forEach(Vn),J){var qn=J[On];null!=qn.from&&(J[On]=M({},J[qn.from],qn))}var Xn,Zn=j[0].scale,Kn=J[Zn].distr;G.forEach((function(n){if(n.show){var t=J[n.scale];null==t&&(n.scale=n.side%2?j[1].scale:Zn,t=J[n.scale]);var e=t.time;n.space=p(n.space),n.incrs=p(n.incrs||(2==t.distr?Z:e?en:K)),n.split=p(n.split||(e&&1==t.distr?X:Mn));var r=n.values;n.values=e?w(r)?sn(O,rn(r,q)):r||on:r||yn,n.font=Ln(n.font),n.labelFont=Ln(n.labelFont)}}));var Qn,$n,nt,tt,et,rt,ot,it,at,lt,ut=null,st=null,ft=j[0].idxs,ct=null;function vt(n,t){s.data=n,e=n.slice(),Xn=(ct=e[0]).length,2==Kn&&(e[0]=ct.map((function(n,t){return t}))),Wt(),he("setData"),!1!==t&&ht()}function ht(){ut=ft[0]=0,st=ft[1]=Xn-1,Rt(Zn,2==Kn?ut:e[0][ut],2==Kn?st:e[0][st])}function pt(n,t,e,r){H.strokeStyle=n||"#000",H.lineWidth=t,H.lineJoin="round",H.setLineDash(e||[]),H.fillStyle=r||"#000"}function mt(n,t){s.width=Qn=nt=n,s.height=$n=tt=t,et=rt=0,function(){var n=!1,t=!1,e=!1,r=!1;G.forEach((function(o){if(o.show){var i=o.side,a=i%2,l=o.size+(o.labelSize=null!=o.label?o.labelSize||30:0);l>0&&(a?(nt-=l,3==i?(et+=l,r=!0):e=!0):(tt-=l,0==i?(rt+=l,n=!0):t=!0))}})),(n||t)&&(e||(nt-=U.x),r||(nt-=U.x,et+=U.x)),(r||e)&&(t||(tt-=U.y),n||(tt-=U.y,rt+=U.y))}(),function(){var n=et+nt,t=rt+tt,e=et,r=rt;function o(o,i){switch(o){case 1:return(n+=i)-i;case 2:return(t+=i)-i;case 3:return(e-=i)+i;case 0:return(r-=i)+i}}G.forEach((function(n){var t=n.side;n._pos=o(t,n.size),null!=n.label&&(n._lpos=o(t,n.labelSize))}))}();var e=s.bbox;ot=e[Y]=v(et*W,.5),it=e.top=v(rt*W,.5),at=e[k]=v(nt*W,.5),lt=e[S]=v(tt*W,.5),A(B,Y,et),A(B,"top",rt),A(B,k,nt),A(B,S,tt),A(I,Y,et),A(I,"top",rt),A(I,k,nt),A(I,S,tt),A(L,k,Qn),A(L,S,$n),b[k]=i(Qn*W),b[S]=i($n*W),ee(),R&&Rt(Zn,J[Zn].min,J[Zn].max),R&&he("setSize")}function dt(){if(qt)Zt=!0;else{var t={};for(var r in J){var o=J[r],i=ln[r];t[r]={min:o.min,max:o.max},null!=i?(M(o,i),r==Zn&&Wt()):r!=Zn&&(o.min=1/0,o.max=-1/0)}for(var a in j.forEach((function(t,r){var o=t.scale,i=J[o];if(0==r){var a=i.range(s,i.min,i.max);i.min=a[0],i.max=a[1],ut=n(i.min,e[0]),st=n(i.max,e[0]),i.min>e[0][ut]&&ut++,e[0][st]>i.max&&st--,t.min=ct[ut],t.max=ct[st]}else if(t.show&&null==ln[o]){var f=t.min==1/0?i.auto?function(n,t,e){for(var r=1/0,o=-1/0,i=t;e>=i;i++)null!=n[i]&&(r=l(r,n[i]),o=u(o,n[i]));return[r,o]}(e[r],ut,st):[0,100]:[t.min,t.max];i.min=l(i.min,t.min=f[0]),i.max=u(i.max,t.max=f[1])}t.idxs[0]=ut,t.idxs[1]=st})),J){var f=J[a];if(null==f.from&&f.min!=1/0&&null==ln[a]){var c=f.range(s,f.min,f.max);f.min=c[0],f.max=c[1]}ln[a]=null}for(var v in J){var h=J[v];if(null!=h.from){var p=J[h.from];if(p.min!=1/0){var m=h.range(s,p.min,p.max);h.min=m[0],h.max=m[1]}}}var d={};for(var g in j.forEach((function(n){var e=n.scale,r=J[e];null==t[e]||r.min==t[e].min&&r.max==t[e].max||(d[e]=!0,n._paths=null)})),d)he("setScale",g);Jn.show&&ne()}}s.setData=vt,s.bbox={},s.setSize=function(n){mt(n.width,n.height)};var gt,xt,wt,bt,yt,Mt,kt,St=1;function Yt(n,t){var e=new Set(j[n].spanGaps(s,t,n)),r=null;if((t=t.filter((function(n){return!e.has(n)}))).length>0){r=new Path2D;for(var o=ot,i=0;t.length>i;i++){var a=t[i];r.rect(o,it,a[0]-o,it+lt),o=a[1]}r.rect(o,it,ot+at-o,it+lt)}return r}function Dt(n,t,r,o){var a,s,f=j[t],c=e[0],v=e[t],h=J[Zn],p=J[f.scale],m=1==St?{stroke:new Path2D,fill:null,clip:null}:j[t-1]._paths,d=m.stroke,x=g(f[k]*W),w=1/0,b=-1/0,y=[],M=i(_n(c[1==St?r:o],h,at,ot));f.band&&1==St&&r==ut&&(x&&d.lineTo(-x,i(Cn(v[r],p,lt,it))),c[0]>h.min&&y.push([ot,M-1]));for(var S=1==St?r:o;S>=r&&o>=S;S+=St){var Y=i(_n(c[S],h,at,ot));if(Y==M)null!=v[S]&&(a=i(Cn(v[S],p,lt,it)),w=l(a,w),b=u(a,b));else{var D=!1;if(w!=1/0?(d.lineTo(M,w),d.lineTo(M,b),d.lineTo(M,a),s=M):D=!0,null!=v[S]?(a=i(Cn(v[S],p,lt,it)),d.lineTo(Y,a),w=b=a,Y-M>1&&null==v[S-1]&&(D=!0)):(w=1/0,b=-1/0),D){var E=y[y.length-1];E&&E[0]==s?E[1]=Y:y.push([s,Y])}M=Y}}if(f.band){var T,z,A=100*x;-1==St&&r==ut&&(z=ot-A,T=r),1==St&&o==st&&(z=ot+at+A,T=o,h.max>c[Xn-1]&&y.push([M,ot+at])),d.lineTo(z,i(Cn(v[T],p,lt,it)))}if(1==St&&(m.clip=Yt(t,y),null!=f.fill)){var F=m.fill=new Path2D(d),C=i(Cn(0,p,lt,it));F.lineTo(ot+at,C),F.lineTo(ot,C)}return f.band&&(St*=-1),m}function Et(n,t,e,r){var o=n.space(s,t,e,r),i=function(n,t,e,r){for(var o=e/n,i=0;t.length>i;i++){var a=t[i]*o;if(a>=r)return[t[i],a]}}(e-t,n.incrs(s,t,e,r,o),r,o);return i.push(i[1]/o),i}function Tt(n,t,e,r,o,i,a,l){var u=i%2/2;H.translate(u,u),pt(a,i,l),H.beginPath();var s,f,c,v,h=r+(0==e||3==e?-o:o);0==t?(f=r,v=h):(s=r,c=h),n.forEach((function(n){0==t?s=c=n:f=v=n,H.moveTo(s,f),H.lineTo(c,v)})),H.stroke(),H.translate(-u,-u)}function Wt(){j.forEach((function(n,t){t>0&&(n.min=1/0,n.max=-1/0,n._paths=null)}))}function zt(){qt?Xt=!0:(H.clearRect(0,0,b[k],b[S]),he("drawClear"),function(){G.forEach((function(n){if(n.show){var t=J[n.scale];if(t.min!=1/0){var e=n.side,r=e%2,o=t.min,a=t.max,l=Et(n,o,a,0==r?nt:tt),u=l[1],f=n.split(s,o,a,l[0],l[2],2==t.distr),v=0==r?_n:Cn,h=0==r?at:lt,p=0==r?ot:it,m=f.map((function(n){return i(v(n,t,h,p))})),d=i(n.gap*W),x=n.ticks,w=x.show?i(x.size*W):0,b=n.values(s,2==t.distr?f.map((function(n){return ct[n]})):f,u),y=i(n._pos*W),M=y+(w+d)*(0==r&&0==e||1==r&&3==e?-1:1),S=0==r?M:0,D=1==r?M:0;H.font=n.font[0],H.fillStyle=n.stroke||"#000",H.textAlign=0==r?"center":3==e?"right":Y,H.textBaseline=1==r?"middle":2==e?"top":"bottom";var E=1.5*n.font[1];if(b.forEach((function(n,t){0==r?D=m[t]:S=m[t],(""+n).split(/\n/gm).forEach((function(n,t){H.fillText(n,D,S+t*E)}))})),n.label){H.save();var T=i(n._lpos*W);1==r?(D=S=0,H.translate(T,i(it+lt/2)),H.rotate((3==e?-c:c)/2)):(D=i(ot+at/2),S=T),H.font=n.labelFont[0],H.textAlign="center",H.textBaseline=2==e?"top":"bottom",H.fillText(n.label,D,S),H.restore()}x.show&&Tt(m,r,e,y,w,g(x[k]*W),x.stroke);var z=n.grid;z.show&&Tt(m,r,0==r?2:1,0==r?it:ot,0==r?lt:at,g(z[k]*W),z.stroke,z.dash)}}})),he("drawAxes")}(),function(){j.forEach((function(n,t){if(t>0&&n.show&&null==n._paths){var r=function(n){for(var t=h(ut-1,0,Xn-1),e=h(st+1,0,Xn-1);null==n[t]&&t>0;)t--;for(;null==n[e]&&Xn-1>e;)e++;return[t,e]}(e[t]);n._paths=n.paths(s,t,r[0],r[1])}})),j.forEach((function(n,t){t>0&&n.show&&(n._paths&&function(n){var t=j[n];if(1==St){var e=t._paths,r=e.stroke,o=e.fill,i=e.clip,a=g(t[k]*W),l=a%2/2;pt(t.stroke,a,t.dash,t.fill),H.globalAlpha=t.alpha,H.translate(l,l),H.save();var u=ot,s=it,f=at,c=lt,v=a*W/2;0==t.min&&(c+=v),0==t.max&&(s-=v,c+=v),H.beginPath(),H.rect(u,s,f,c),H.clip(),null!=i&&H.clip(i),t.band?(H.fill(r),a&&H.stroke(r)):(a&&H.stroke(r),null!=t.fill&&H.fill(o)),H.restore(),H.translate(-l,-l),H.globalAlpha=1}t.band&&(St*=-1)}(t),n.points.show(s,t,ut,st)&&function(n){var t=j[n],r=t.points,o=g(t[k]*W),a=o%2/2,l=r.width>0,u=(r.size-r.width)/2*W,s=g(2*u);H.translate(a,a),H.save(),H.beginPath(),H.rect(ot-s,it-s,at+2*s,lt+2*s),H.clip(),H.globalAlpha=t.alpha;for(var f=new Path2D,v=ut;st>=v;v++)if(null!=e[n][v]){var h=i(_n(e[0][v],J[Zn],at,ot)),p=i(Cn(e[n][v],J[t.scale],lt,it));f.moveTo(h+u,p),f.arc(h,p,u,0,2*c)}pt(r.stroke||t.stroke||"#000",o,null,r.fill||(l?"#fff":t.stroke||"#000")),H.fill(f),l&&H.stroke(f),H.globalAlpha=1,H.restore(),H.translate(-a,-a)}(t),he("drawSeries",t))}))}(),gt=!0,he("draw"))}function At(n,t){var e=J[n];if(null==e.from){if(n==Zn&&e.time&&G[0].show&&.001>Et(G[0],t.min,t.max,nt)[0])return;ln[n]=t,gt=!1,dt(),!gt&&zt(),gt=!1}}s.redraw=zt,s.setScale=At;var Ft=!1,Ct=s.focus=M({},t.focus||{alpha:.3},Jn.focus),_t=Ct.prox>=0,Ht=Jn.drag;if(Jn.show){var Pt="cursor-";Jn.x&&(Mt=Jn.left,xt=C(Pt+"x",I)),Jn.y&&(kt=Jn.top,wt=C(Pt+"y",I))}var Nt=s.select=M({show:!0,left:0,width:0,top:0,height:0},t.select),Lt=Nt.show?C("select",I):null;function Bt(n,t){if(Nt.show){for(var e in n)A(Lt,e,Nt[e]=n[e]);!1!==t&&he("setSelect")}}function It(n){var t=bn?Bn[n][0].parentNode:null;j[n].show?t&&function(n){n.classList.remove("off")}(t):(t&&z(t,"off"),Un.length>1&&_(Un[n],0,-10))}function Rt(n,t,e){At(n,{min:t,max:e})}function jt(n,t,e){var r=j[n];if(null!=t.focus&&function(n){n!=Ut&&(j.forEach((function(t,e){!function(n,t){var e=j[n];Gt(n,t),e.band&&Gt(j[n+1].band?n+1:n-1,t)}(e,null==n||0==e||e==n?1:Ct.alpha)})),Ut=n,zt())}(n),null!=t.show){if(r.show=t.show,It(n),r.band){var o=j[n+1]&&j[n+1].band?n+1:n-1;j[o].show=r.show,It(o)}Rt(Zn,J[Zn].min,J[Zn].max)}he("setSeries",n,t),e&&de.pub("setSeries",s,n,t)}function Gt(n,t){j[n].alpha=t,Bn&&(Bn[n][0].parentNode.style.opacity=t)}s.setSelect=Bt,s.setSeries=jt;var Jt=Array(j.length),Ut=null;function Vt(n,t){var e=h(n/(t==Zn?nt:tt),0,1),r=J[t];return r.min+e*(r.max-r.min)}function Ot(t){return n(Vt(t,Zn),e[0],ut,st)}bn&&_t&&P("mouseleave",dn,(function(){Jn.locked||(jt(null,{focus:!1},pe.setSeries),ne())})),s.posToIdx=Ot,s.posToVal=function(n,t){return Vt(t==Zn?n:tt-n,t)},s.valToPos=function(n,t,e){return t==Zn?_n(n,J[t],e?at:nt,e?ot:0):Cn(n,J[t],e?lt:tt,e?it:0)};var qt=!1,Xt=!1,Zt=!1,Kt=!1;function Qt(n){qt=!0,n(s),qt=!1,Zt&&dt(),Kt&&ne(),Xt&&!gt&&zt(),Zt=Kt=Xt=gt=qt}s.batch=Qt,s.setCursor=function(n){Mt=n.left,kt=n.top,ne()};var $t=0;function ne(n){if(qt)Kt=!0;else{var t;if($t=0,Jn.show&&(Jn.x&&_(xt,i(Mt),0),Jn.y&&_(wt,0,i(kt))),0>Mt){t=null;for(var o=0;j.length>o;o++)if(o>0&&(Jt[o]=1/0,Un.length>1&&_(Un[o],-10,-10)),bn){if(0==o&&In)continue;for(var a=0;Bn[o].length>a;a++)Bn[o][a].firstChild.nodeValue="--"}_t&&jt(null,{focus:!0},pe.setSeries)}else{t=Ot(Mt);for(var f=g(_n(e[0][t],J[Zn],nt,0)),c=0;j.length>c;c++){var v=j[c];if(c>0&&v.show){var h=e[c][t],p=null==h?-10:g(Cn(h,J[v.scale],tt,0));Jt[c]=p>0?r(p-kt):1/0,Un.length>1&&_(Un[c],f,p)}else Jt[c]=1/0;if(bn){if(0==c&&In)continue;var m=0==c&&2==Kn?ct:e[c],d=In?v.values(s,c,t):{_:v.value(s,m[t],c,t)},x=0;for(var w in d)Bn[c][x++].firstChild.nodeValue=d[w]}}if(Nt.show&&Ft){if(Ht.x){var b=l(bt,Mt),y=u(bt,Mt);A(Lt,Y,Nt[Y]=b),A(Lt,k,Nt[k]=y-b)}if(Ht.y){var M=l(yt,kt),D=u(yt,kt);A(Lt,"top",Nt.top=M),A(Lt,S,Nt[S]=D-M)}}}if(null!=n&&(de.pub("mousemove",s,Mt,kt,nt,tt,t),_t)){var E=l.apply(null,Jt),T=null;E>Ct.prox||Jt.some((function(n,t){if(n==E)return T=t})),jt(T,{focus:!0},pe.setSeries)}Jn.idx=t,Jn.left=Mt,Jn.top=kt,R&&he("setCursor")}}var te=null;function ee(){te=I.getBoundingClientRect()}function re(n,t,e,r,o,i){Jn.locked||(oe(n,0,e,r,o,i,0,!1,null!=n),null!=n?0==$t&&($t=D(ne)):ne())}function oe(n,t,e,r,o,i,a,l,u){null!=n?(e=n.clientX-te.left,r=n.clientY-te.top):(e=nt*(e/o),r=tt*(r/i)),u&&(e>1&&nt-1>e||(e=v(e,nt)),r>1&&tt-1>r||(r=v(r,tt))),l?(bt=e,yt=r):(Mt=e,kt=r)}function ie(){Bt({width:Ht.x?0:nt,height:Ht.y?0:tt},!1)}function ae(n,t,e,r,o,i){(null==n||Nn(n))&&(Ft=!0,oe(n,0,e,r,o,i,0,!0,!0),Nt.show&&(Ht.x||Ht.y)&&ie(),null!=n&&(P("mouseup",E,le),de.pub("mousedown",s,bt,yt,nt,tt,null)))}function le(n,t,e,r,o,i){(null==n||Nn(n))&&(Ft=!1,oe(n,0,e,r,o,i,0,!1,!0),Mt!=bt||kt!=yt?(Bt(Nt),Ht.setScale&&(Qt((function(){if(Ht.x){var n=2==Kn?Ot:Vt;Rt(Zn,n(Nt[Y],Zn),n(Nt[Y]+Nt[k],Zn))}if(Ht.y)for(var t in J)t!=Zn&&null==J[t].from&&Rt(t,Vt(tt-Nt.top-Nt[S],t),Vt(tt-Nt.top,t))})),ie())):Jn.lock&&(Jn.locked=!Jn.locked,Jn.locked||ne()),null!=n&&(N("mouseup",E,le),de.pub("mouseup",s,Mt,kt,nt,tt,null)))}function ue(n){ht(),null!=n&&de.pub("dblclick",s,Mt,kt,nt,tt,null)}var se,fe={};fe.mousedown=ae,fe.mousemove=re,fe.mouseup=le,fe.dblclick=ue,fe.setSeries=function(n,t,e,r){jt(e,r)},Jn.show&&(P("mousedown",I,ae),P("mousemove",I,re),P("mouseleave",I,(function(){Jn.locked||Ft||(Mt=-10,kt=-10,ne(1))})),Ht.setScale&&P("dblclick",I,ue),se=function(n){var t=null;function e(){t=null,n()}return function(){clearTimeout(t),t=setTimeout(e,100)}}(ee),P("resize",T,se),P("scroll",T,se),s.syncRect=ee);var ce=s.hooks=t.hooks||{},ve=[s];function he(n){if(n in ce){var t=ve.concat(Array.prototype.slice.call(arguments,1));ce[n].forEach((function(n){n.apply(null,t)}))}}(t.plugins||[]).forEach((function(n){for(var t in n.hooks)ce[t]=(ce[t]||[]).concat(n.hooks[t])}));var pe=M({key:null,setSeries:!1},Jn.sync),me=pe.key,de=null!=me?Wn[me]=Wn[me]||zn():zn();function ge(){mt(t[k],t[S]),he("init",t,e),vt(e||t.data,!1),ln[Zn]?At(Zn,ln[Zn]):ht(),Bt(Nt,!1),R=!0,he("ready")}return de.sub(s),s.pub=function(n,t,e,r,o,i,a){fe[n](null,t,e,r,o,i,a)},s.destroy=function(){de.unsub(s),N("resize",T,se),N("scroll",T,se),f.remove(),he("destroy")},a?a instanceof HTMLElement?(a.appendChild(f),ge()):a(s,ge):ge(),s}return Bn.assign=M,Bn.rangeNum=t,Bn.fmtDate=V,Bn.tzDate=function(n,t){var e=new Date(n.toLocaleString("en-US",{timeZone:t}));return e.setMilliseconds(n.getMilliseconds()),e},Bn}();
{
"name": "uplot",
"version": "1.0.3",
"version": "1.0.4",
"description": "A small, fast chart for time series, lines, areas, ohlc & bars",

@@ -42,3 +42,3 @@ "main": "./dist/uPlot.cjs.js",

"devDependencies": {
"rollup": "^2.2.0",
"rollup": "^2.3.2",
"rollup-plugin-buble": "^0.19.8",

@@ -45,0 +45,0 @@ "rollup-plugin-replace": "^2.2.0",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc