Market trend: fix bar width calc when time range exceeds data range (#41493)

This commit is contained in:
Leon Sorokin 2021-11-09 18:17:10 -06:00 committed by GitHub
parent a992447a45
commit 57adbc3bd6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -71,7 +71,33 @@ export function drawMarkers(opts: RendererOpts) {
let [idx0, idx1] = u.series[0].idxs!;
let colWidth = u.bbox.width / (idx1 - idx0);
let dataX = u.data[0];
let dataY = oData;
let colWidth = u.bbox.width;
if (dataX.length > 1) {
// prior index with non-undefined y data
let prevIdx = null;
// scan full dataset for smallest adjacent delta
// will not work properly for non-linear x scales, since does not do expensive valToPosX calcs till end
for (let i = 0, minDelta = Infinity; i < dataX.length; i++) {
if (dataY[i] !== undefined) {
if (prevIdx != null) {
let delta = Math.abs(dataX[i] - dataX[prevIdx]);
if (delta < minDelta) {
minDelta = delta;
colWidth = Math.abs(u.valToPos(dataX[i], 'x') - u.valToPos(dataX[prevIdx], 'x'));
}
}
prevIdx = i;
}
}
}
let barWidth = Math.round(0.6 * colWidth);
let stickWidth = 2;