diff --git a/src/index.ts b/src/index.ts index d4dec2f..65fbe48 100755 --- a/src/index.ts +++ b/src/index.ts @@ -213,23 +213,21 @@ export class ChartwerkBarPod extends ChartwerkPod { if(this.series === undefined || this.series.length === 0) { return undefined; } + const mouseDate = Math.ceil(this.xScale.invert(eventX)); - const bisectDate = this.d3.bisector((d: [number, number]) => d[1]).left; - const mouseDate = this.xScale.invert(eventX); - - let idx = bisectDate(this.series[0].datapoints, mouseDate) - 1; - + const zippedData = this.getZippedDataForRender(this.visibleSeries); + // get the nearest RowValues element for mouseDate + const keys = _.map(zippedData, 'key').sort((a, b) => (a - mouseDate) - (mouseDate - b)); + const idx = _.findIndex(zippedData, (a) => a.key == keys[0]); const series: any[] = []; - for(let i = 0; i < this.series.length; i++) { - if(this.series[i].visible === false || this.series[i].datapoints.length < idx + 1) { - continue; - } + + for(let i = 0; i < zippedData[idx].values.length; i++) { series.push({ - value: this.series[i].datapoints[idx][0], - xval: this.series[i].datapoints[idx][1], - color: this.getBarColor(this.series[i]), - label: this.series[i].alias || this.series[i].target + value: zippedData[idx].key, + xval: zippedData[idx].values[i], + color: zippedData[idx].colors[i], + label: zippedData[idx].serieTarget[i] }); } return series;