Skip to content

Commit

Permalink
get scale.skip mostly working
Browse files Browse the repository at this point in the history
  • Loading branch information
leeoniya committed Nov 7, 2019
1 parent 4ea2fab commit 46d64d9
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 16 deletions.
5 changes: 5 additions & 0 deletions demos/high-low-bands.html
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@
height: 600,
title: "Gold",
tzDate: ts => uPlot.tzDate(new Date(ts * 1e3), 'Etc/UTC'),
scales: {
x: {
skip: true,
}
},
series: {
y: [
{
Expand Down
14 changes: 9 additions & 5 deletions dist/uPlot.cjs.js
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,7 @@ function Line(opts, data) {
var sc = scales[key] = assign({
time: i == 0,
auto: true,
skip: false,
min: inf,
max: -inf,
}, scales[key]);
Expand Down Expand Up @@ -847,7 +848,10 @@ function Line(opts, data) {

// fast-path for x axis, which is assumed ordered ASC and will not get padded
if (i == 0) {
var minMax = sc.range(data[0][self.i0], data[0][self.i1]);
var minMax = sc.range(
sc.skip ? self.i0 : data[0][self.i0],
sc.skip ? self.i1 : data[0][self.i1]
);
sc.min = s.min = minMax[0];
sc.max = s.max = minMax[1];
}
Expand Down Expand Up @@ -963,7 +967,7 @@ function Line(opts, data) {
prevY, x, y;

for (var i = dir == 1 ? self.i0 : self.i1; dir == 1 ? i <= self.i1 : i >= self.i0; i += dir) {
x = getXPos(xdata[i], scaleX.min, scaleX.max, can[WIDTH]);
x = getXPos(scaleX.skip ? i : xdata[i], scaleX.min, scaleX.max, can[WIDTH]);
y = getYPos(ydata[i], scaleY.min, scaleY.max, can[HEIGHT]);

if (dir == -1 && i == self.i1)
Expand Down Expand Up @@ -1074,7 +1078,7 @@ function Line(opts, data) {
// TODO: filter ticks & offsets that will end up off-canvas
var canOffs = ticks.map(function (val) { return getPos(val, scale.min, scale.max, can[dim]); }); // bit of waste if we're not drawing a grid

var labels = axis.values.call(self, ticks, space);
var labels = axis.values.call(self, scale.skip ? ticks.map(function (i) { return data[0][i]; }) : ticks, space); // BOO this assumes a specific data/series

canOffs.forEach(function (off, i) {
ch = gridLabel(ch, axis.vals, labels[i], cssProp, round(off/pxRatio))[nextSibling];
Expand Down Expand Up @@ -1226,7 +1230,7 @@ function Line(opts, data) {
var xsc = scales[series[0].scale];
var d = xsc.max - xsc.min;
var t = xsc.min + pctX * d;
var idx = closestIdx(t, data[0], self.i0, self.i1);
var idx = xsc.skip ? round(t) : closestIdx(t, data[0], self.i0, self.i1);
return idx;
}

Expand All @@ -1248,7 +1252,7 @@ function Line(opts, data) {

var scX = scales[series[0].scale];

var xPos = getXPos(data[0][idx], scX.min, scX.max, canCssWidth);
var xPos = getXPos(scX.skip ? idx : data[0][idx], scX.min, scX.max, canCssWidth);

for (var i = 0; i < series.length; i++) {
var s = series[i];
Expand Down
14 changes: 9 additions & 5 deletions dist/uPlot.iife.js
Original file line number Diff line number Diff line change
Expand Up @@ -532,6 +532,7 @@ var uPlot = (function (exports) {
var sc = scales[key] = assign({
time: i == 0,
auto: true,
skip: false,
min: inf,
max: -inf,
}, scales[key]);
Expand Down Expand Up @@ -848,7 +849,10 @@ var uPlot = (function (exports) {

// fast-path for x axis, which is assumed ordered ASC and will not get padded
if (i == 0) {
var minMax = sc.range(data[0][self.i0], data[0][self.i1]);
var minMax = sc.range(
sc.skip ? self.i0 : data[0][self.i0],
sc.skip ? self.i1 : data[0][self.i1]
);
sc.min = s.min = minMax[0];
sc.max = s.max = minMax[1];
}
Expand Down Expand Up @@ -964,7 +968,7 @@ var uPlot = (function (exports) {
prevY, x, y;

for (var i = dir == 1 ? self.i0 : self.i1; dir == 1 ? i <= self.i1 : i >= self.i0; i += dir) {
x = getXPos(xdata[i], scaleX.min, scaleX.max, can[WIDTH]);
x = getXPos(scaleX.skip ? i : xdata[i], scaleX.min, scaleX.max, can[WIDTH]);
y = getYPos(ydata[i], scaleY.min, scaleY.max, can[HEIGHT]);

if (dir == -1 && i == self.i1)
Expand Down Expand Up @@ -1075,7 +1079,7 @@ var uPlot = (function (exports) {
// TODO: filter ticks & offsets that will end up off-canvas
var canOffs = ticks.map(function (val) { return getPos(val, scale.min, scale.max, can[dim]); }); // bit of waste if we're not drawing a grid

var labels = axis.values.call(self, ticks, space);
var labels = axis.values.call(self, scale.skip ? ticks.map(function (i) { return data[0][i]; }) : ticks, space); // BOO this assumes a specific data/series

canOffs.forEach(function (off, i) {
ch = gridLabel(ch, axis.vals, labels[i], cssProp, round(off/pxRatio))[nextSibling];
Expand Down Expand Up @@ -1227,7 +1231,7 @@ var uPlot = (function (exports) {
var xsc = scales[series[0].scale];
var d = xsc.max - xsc.min;
var t = xsc.min + pctX * d;
var idx = closestIdx(t, data[0], self.i0, self.i1);
var idx = xsc.skip ? round(t) : closestIdx(t, data[0], self.i0, self.i1);
return idx;
}

Expand All @@ -1249,7 +1253,7 @@ var uPlot = (function (exports) {

var scX = scales[series[0].scale];

var xPos = getXPos(data[0][idx], scX.min, scX.max, canCssWidth);
var xPos = getXPos(scX.skip ? idx : data[0][idx], scX.min, scX.max, canCssWidth);

for (var i = 0; i < series.length; i++) {
var s = series[i];
Expand Down

0 comments on commit 46d64d9

Please sign in to comment.