Skip to content

Commit 9d4a4bf

Browse files
committed
use getLineWidth function to get line width
move getLineWidth function to helpers and reuse it in hover also fixing 4057
1 parent 60f71a1 commit 9d4a4bf

9 files changed

+359
-17
lines changed

src/lib/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -459,10 +459,10 @@ lib.noneOrAll = function(containerIn, containerOut, attrList) {
459459
* @param {object} cd : calcdata trace
460460
* @param {string} cdAttr : calcdata key
461461
*/
462-
lib.mergeArray = function(traceAttr, cd, cdAttr) {
462+
lib.mergeArray = function(traceAttr, cd, cdAttr, isNumber) {
463463
if(lib.isArrayOrTypedArray(traceAttr)) {
464464
var imax = Math.min(traceAttr.length, cd.length);
465-
for(var i = 0; i < imax; i++) cd[i][cdAttr] = traceAttr[i];
465+
for(var i = 0; i < imax; i++) cd[i][cdAttr] = isNumber ? +traceAttr[i] : traceAttr[i];
466466
}
467467
};
468468

src/traces/bar/arrays_to_calcdata.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ module.exports = function arraysToCalcdata(cd, trace) {
1919

2020
var marker = trace.marker;
2121
if(marker) {
22-
mergeArray(marker.opacity, cd, 'mo');
22+
mergeArray(marker.opacity, cd, 'mo', true);
2323
mergeArray(marker.color, cd, 'mc');
2424

2525
var markerLine = marker.line;
2626
if(markerLine) {
2727
mergeArray(markerLine.color, cd, 'mlc');
28-
mergeArray(markerLine.width, cd, 'mlw');
28+
mergeArray(markerLine.width, cd, 'mlw', true);
2929
}
3030
}
3131
};

src/traces/bar/helpers.js

+9
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,12 @@ exports.getValue = function(arrayOrScalar, index) {
6464
else if(index < arrayOrScalar.length) value = arrayOrScalar[index];
6565
return value;
6666
};
67+
68+
exports.getLineWidth = function(trace, di) {
69+
var w =
70+
(0 < di.mlw) ? di.mlw :
71+
(0 < trace.marker.line.width) ? trace.marker.line.width : // Note: we don't want to get true & return an array when trace.marker.line.width is an array containing zeros.
72+
0;
73+
74+
return w;
75+
};

src/traces/bar/hover.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var Registry = require('../../registry');
1414
var Color = require('../../components/color');
1515

1616
var fillText = require('../../lib').fillText;
17+
var getLineWidth = require('./helpers').getLineWidth;
1718

1819
function hoverPoints(pointData, xval, yval, hovermode) {
1920
var barPointData = hoverOnBars(pointData, xval, yval, hovermode);
@@ -165,7 +166,7 @@ function hoverOnBars(pointData, xval, yval, hovermode) {
165166
function getTraceColor(trace, di) {
166167
var mc = di.mcc || trace.marker.color;
167168
var mlc = di.mlcc || trace.marker.line.color;
168-
var mlw = di.mlw || trace.marker.line.width;
169+
var mlw = getLineWidth(trace, di);
169170

170171
if(Color.opacity(mc)) return mc;
171172
else if(Color.opacity(mlc) && mlw) return mlc;

src/traces/bar/plot.js

+3-8
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,8 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts) {
111111
!isNumeric(y1)
112112
);
113113
// display zeros if line.width > 0
114-
if(isBlank && shouldDisplayZeros) {
115-
if(isHorizontal ? x1 - x0 === 0 : y1 - y0 === 0) {
116-
if(di.mlw || trace.marker.line.width > 0) {
117-
isBlank = false;
118-
}
119-
}
114+
if(isBlank && shouldDisplayZeros && helpers.getLineWidth(trace, di) && (isHorizontal ? x1 - x0 === 0 : y1 - y0 === 0)) {
115+
isBlank = false;
120116
}
121117
di.isBlank = isBlank;
122118

@@ -141,8 +137,7 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts) {
141137
mc = cont.color;
142138
}
143139
} else {
144-
lw = (di.mlw + 1 || trace.marker.line.width + 1 ||
145-
(di.trace ? di.trace.marker.line.width : 0) + 1) - 1;
140+
lw = helpers.getLineWidth(trace, di);
146141
mc = di.mc || trace.marker.color;
147142
}
148143

Loading
Loading

0 commit comments

Comments
 (0)