From 7157b54fee69a6064e524160a0c22ad35cedd180 Mon Sep 17 00:00:00 2001 From: Santiago Date: Fri, 4 Nov 2022 23:42:09 +0000 Subject: [PATCH 01/15] Fixed hover behaviour for multicategory plots --- src/components/fx/hover.js | 12 +- test/image/mocks/multicategory_series.json | 1621 ++++++++++++++++++++ 2 files changed, 1632 insertions(+), 1 deletion(-) create mode 100644 test/image/mocks/multicategory_series.json diff --git a/src/components/fx/hover.js b/src/components/fx/hover.js index 0643c004bcd..ccf6d12e6c9 100644 --- a/src/components/fx/hover.js +++ b/src/components/fx/hover.js @@ -889,6 +889,16 @@ function createHoverText(hoverData, opts) { var ya = c0.ya; var axLetter = hovermode.charAt(0); var t0 = c0[axLetter + 'Label']; + + // search in array for the label + if(!t0) { + hoverData.map(function(data) { + if(data[axLetter + 'Label']) { + t0 = data[axLetter + 'Label']; + } + }); + } + var outerContainerBB = getBoundingClientRect(gd, outerContainer); var outerTop = outerContainerBB.top; var outerWidth = outerContainerBB.width; @@ -2067,7 +2077,7 @@ function getCoord(axLetter, winningPoint, fullLayout) { var cd0 = winningPoint.cd[0]; - if(ax.type === 'category') val = ax._categoriesMap[val]; + if(ax.type === 'category' || ax.type === 'multicategory') val = ax._categoriesMap[val]; else if(ax.type === 'date') { var periodalignment = winningPoint.trace[axLetter + 'periodalignment']; if(periodalignment) { diff --git a/test/image/mocks/multicategory_series.json b/test/image/mocks/multicategory_series.json new file mode 100644 index 00000000000..bceb8a6f8a0 --- /dev/null +++ b/test/image/mocks/multicategory_series.json @@ -0,0 +1,1621 @@ +{ + "data": [ + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "solid", + "shape": "spline", + "color": "#FF0000" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ] + ], + "y": [ + 7329.2314, + 7370.159, + 7418.1772, + 7423.114, + 7400.379, + 7368.819, + 7355.531, + 7338.7295, + 7328.453, + 7289.163, + 7273.9224, + 7267.61, + 7286.2393 + ], + "name": "B - 3", + "yaxis": "y2", + "legendgroup": "B - 3" + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "solid", + "shape": "spline", + "color": "#008CFF" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ] + ], + "y": [ + 7329.453, + 7370.3438, + 7418.268, + 7423.7246, + 7400.6587, + 7369.186, + 7355.7446, + 7338.8003, + 7328.5127, + 7289.2207, + 7273.879, + 7267.8364, + 7286.3647 + ], + "name": "A - 3", + "yaxis": "y2", + "legendgroup": "A - 3" + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "solid", + "shape": "spline", + "color": "#00E500" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ] + ], + "y": [ + 7329.1943, + 7370.121, + 7418.1143, + 7422.937, + 7400.1943, + 7368.6416, + 7355.457, + 7338.6655, + 7328.3965, + 7289.115, + 7273.6577, + 7267.5703, + 7286.2065 + ], + "name": "B - 4", + "yaxis": "y2", + "legendgroup": "B - 4" + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "solid", + "shape": "spline", + "color": "#FFA500" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ] + ], + "y": [ + 7329.4253, + 7370.311, + 7418.2207, + 7423.594, + 7400.5195, + 7369.057, + 7355.675, + 7338.752, + 7328.4697, + 7289.187, + 7273.6816, + 7267.807, + 7286.3403 + ], + "name": "A - 4", + "yaxis": "y2", + "legendgroup": "A - 4" + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "dot", + "shape": "spline", + "color": "#737373" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ] + ], + "y": [ + 255, + 260, + 255, + 240, + 225, + 220, + 215, + 215, + 217, + 220, + 225, + 232, + 240 + ], + "name": "vCar", + "yaxis": "y", + "legendgroup": "B - 3", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "dot", + "shape": "spline", + "color": "#737373" + }, + "hovertemplate": "", + "x": [ + [ + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ] + ], + "y": [ + 255, + 260, + 255, + 240, + 225, + 220, + 215, + 215, + 217, + 220, + 225, + 232, + 240 + ], + "name": "A - 3", + "yaxis": "y", + "legendgroup": "A - 3", + "hoverinfo": "none", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "dot", + "shape": "spline", + "color": "#737373" + }, + "hovertemplate": "", + "x": [ + [ + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ] + ], + "y": [ + 255, + 260, + 255, + 240, + 225, + 220, + 215, + 215, + 217, + 220, + 225, + 232, + 240 + ], + "name": "B - 4", + "yaxis": "y", + "legendgroup": "B - 4", + "hoverinfo": "none", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "dot", + "shape": "spline", + "color": "#737373" + }, + "hovertemplate": "", + "x": [ + [ + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High", + "High" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ] + ], + "y": [ + 255, + 260, + 255, + 240, + 225, + 220, + 215, + 215, + 217, + 220, + 225, + 232, + 240 + ], + "name": "A - 4", + "yaxis": "y", + "legendgroup": "A - 4", + "hoverinfo": "none", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "solid", + "shape": "spline", + "color": "#FF0000" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + "y": [ + 7399.038, + 7399.7876, + 7424.6357, + 7372.926, + 7333.9478, + 7305.11, + 7321.1978, + 7333.012, + 7297.39, + 7261.06, + 7183.9854, + 7170.872, + 7154.927, + 7159.685, + 7164.351, + 7189.4263, + 7226.21, + 7248.6665 + ], + "name": "B - 3", + "yaxis": "y2", + "legendgroup": "B - 3", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "solid", + "shape": "spline", + "color": "#008CFF" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + "y": [ + 7399.3438, + 7399.956, + 7424.694, + 7373.0015, + 7333.9214, + 7305.262, + 7321.17, + 7333.199, + 7297.318, + 7260.9863, + 7183.9565, + 7170.8364, + 7155.2705, + 7159.8203, + 7164.152, + 7189.498, + 7226.2725, + 7248.7397 + ], + "name": "A - 3", + "yaxis": "y2", + "legendgroup": "A - 3", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "solid", + "shape": "spline", + "color": "#00E500" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + "y": [ + 7398.8027, + 7399.7617, + 7424.589, + 7372.8657, + 7333.8833, + 7305.035, + 7321.121, + 7332.934, + 7297.3887, + 7260.9907, + 7183.9653, + 7170.825, + 7154.8164, + 7159.641, + 7164.187, + 7189.389, + 7226.175, + 7248.6304 + ], + "name": "B - 4", + "yaxis": "y2", + "legendgroup": "B - 4", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "solid", + "shape": "spline", + "color": "#FFA500" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + "y": [ + 7399.168, + 7399.9365, + 7424.659, + 7372.956, + 7333.8735, + 7305.206, + 7321.1123, + 7333.1406, + 7297.269, + 7260.9346, + 7183.9336, + 7170.8013, + 7155.188, + 7159.7876, + 7164.0176, + 7189.47, + 7226.246, + 7248.713 + ], + "name": "A - 4", + "yaxis": "y2", + "legendgroup": "A - 4", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "dot", + "shape": "spline", + "color": "#737373" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + "y": [ + 290, + 292, + 282, + 245, + 205, + 190, + 175, + 160, + 150, + 140, + 140, + 145, + 155, + 165, + 175, + 187, + 200, + 215 + ], + "name": "vCar", + "yaxis": "y", + "legendgroup": "B - 3", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "dot", + "shape": "spline", + "color": "#737373" + }, + "hovertemplate": "", + "x": [ + [ + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + "y": [ + 290, + 292, + 282, + 245, + 205, + 190, + 175, + 160, + 150, + 140, + 140, + 145, + 155, + 165, + 175, + 187, + 200, + 215 + ], + "name": "A - 3", + "yaxis": "y", + "legendgroup": "A - 3", + "hoverinfo": "none", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "dot", + "shape": "spline", + "color": "#737373" + }, + "hovertemplate": "", + "x": [ + [ + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + "y": [ + 290, + 292, + 282, + 245, + 205, + 190, + 175, + 160, + 150, + 140, + 140, + 145, + 155, + 165, + 175, + 187, + 200, + 215 + ], + "name": "B - 4", + "yaxis": "y", + "legendgroup": "B - 4", + "hoverinfo": "none", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "dot", + "shape": "spline", + "color": "#737373" + }, + "hovertemplate": "", + "x": [ + [ + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium", + "Medium" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + "y": [ + 290, + 292, + 282, + 245, + 205, + 190, + 175, + 160, + 150, + 140, + 140, + 145, + 155, + 165, + 175, + 187, + 200, + 215 + ], + "name": "A - 4", + "yaxis": "y", + "legendgroup": "A - 4", + "hoverinfo": "none", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "solid", + "shape": "spline", + "color": "#FF0000" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + "y": [ + 7408.1074, + 7421.896, + 7411.078, + 7362.891, + 7329.4346, + 7260.8394, + 7168.693, + 7144.0864, + 7057.076, + 6959.603, + 6949.5127, + 6966.433 + ], + "name": "B - 3", + "yaxis": "y2", + "legendgroup": "B - 3", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "solid", + "shape": "spline", + "color": "#008CFF" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + "y": [ + 7408.281, + 7422.081, + 7410.434, + 7362.949, + 7329.124, + 7260.852, + 7168.6826, + 7143.5386, + 7056.9175, + 6959.552, + 6949.5825, + 6966.547 + ], + "name": "A - 3", + "yaxis": "y2", + "legendgroup": "A - 3", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "solid", + "shape": "spline", + "color": "#00E500" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + "y": [ + 7408.0825, + 7421.87, + 7410.7026, + 7362.8223, + 7329.1553, + 7260.794, + 7168.657, + 7143.9097, + 7057.0557, + 6959.592, + 6949.4985, + 6966.4136 + ], + "name": "B - 4", + "yaxis": "y2", + "legendgroup": "B - 4", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "solid", + "shape": "spline", + "color": "#FFA500" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + "y": [ + 7408.262, + 7422.0615, + 7410.152, + 7362.8975, + 7328.914, + 7260.818, + 7168.6562, + 7143.409, + 7056.902, + 6959.543, + 6949.572, + 6966.532 + ], + "name": "A - 4", + "yaxis": "y2", + "legendgroup": "A - 4", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "dot", + "shape": "spline", + "color": "#737373" + }, + "hovertemplate": "%{y:.2f} ", + "x": [ + [ + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + "y": [ + 295, + 300, + 275, + 240, + 195, + 155, + 120, + 100, + 80, + 75, + 90, + 115 + ], + "name": "vCar", + "yaxis": "y", + "legendgroup": "B - 3", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "dot", + "shape": "spline", + "color": "#737373" + }, + "hovertemplate": "", + "x": [ + [ + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + "y": [ + 295, + 300, + 275, + 240, + 195, + 155, + 120, + 100, + 80, + 75, + 90, + 115 + ], + "name": "A - 3", + "yaxis": "y", + "legendgroup": "A - 3", + "hoverinfo": "none", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "dot", + "shape": "spline", + "color": "#737373" + }, + "hovertemplate": "", + "x": [ + [ + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + "y": [ + 295, + 300, + 275, + 240, + 195, + 155, + 120, + 100, + 80, + 75, + 90, + 115 + ], + "name": "B - 4", + "yaxis": "y", + "legendgroup": "B - 4", + "hoverinfo": "none", + "showlegend": false + }, + { + "type": "scatter", + "mode": "lines", + "line": { + "dash": "dot", + "shape": "spline", + "color": "#737373" + }, + "hovertemplate": "", + "x": [ + [ + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low", + "Low" + ], + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + "y": [ + 295, + 300, + 275, + 240, + 195, + 155, + 120, + 100, + 80, + 75, + 90, + 115 + ], + "name": "A - 4", + "yaxis": "y", + "legendgroup": "A - 4", + "hoverinfo": "none", + "showlegend": false + } + ], + "layout": { + "autosize": true, + "margin": { + "t": 40 + }, + "legend": { + "x": 0.5, + "y": "auto", + "xanchor": "center", + "yanchor": "top", + "orientation": "h", + "bgcolor": "transparent", + "font": { + "size": 10 + } + }, + "hovermode": "x unified", + "title": { + "text": "Multicategory Mock with Tickmode 'sync'" + }, + "xaxis": { + "visible": false, + "range": [ + 0, + 42 + ], + "autorange": true, + "type": "multicategory" + }, + "yaxis": { + + "range": [ + 62.5, + 312.5 + ], + "anchor": "x", + "side": "right", + "type": "linear" + }, + "yaxis2": { + "range": [ + 6150, + 7451.09375 + ], + "type": "linear", + "side": "left", + "tickmode": "sync", + "overlaying": "y" + }, + "showlegend": true + } + } + \ No newline at end of file From 7ff8ceeb54f5a5e45f21d2f23593e7f99d328bd1 Mon Sep 17 00:00:00 2001 From: Santiago Date: Sun, 6 Nov 2022 15:55:18 +0000 Subject: [PATCH 02/15] Fix legend group for vCar line --- test/image/mocks/multicategory_series.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/image/mocks/multicategory_series.json b/test/image/mocks/multicategory_series.json index bceb8a6f8a0..7830ec0e4e9 100644 --- a/test/image/mocks/multicategory_series.json +++ b/test/image/mocks/multicategory_series.json @@ -298,7 +298,6 @@ ], "name": "vCar", "yaxis": "y", - "legendgroup": "B - 3", "showlegend": false }, { @@ -864,7 +863,6 @@ ], "name": "vCar", "yaxis": "y", - "legendgroup": "B - 3", "showlegend": false }, { @@ -1385,7 +1383,6 @@ ], "name": "vCar", "yaxis": "y", - "legendgroup": "B - 3", "showlegend": false }, { From ce0527ec3c79c92ada83d0fb9ce74748321d66d9 Mon Sep 17 00:00:00 2001 From: Filipe Santiago Date: Sat, 12 Nov 2022 18:39:06 +0000 Subject: [PATCH 03/15] Simplify mock and added jasmine test --- test/image/mocks/multicategory_series.json | 3 +- test/jasmine/tests/hover_label_test.js | 33 ++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/test/image/mocks/multicategory_series.json b/test/image/mocks/multicategory_series.json index 7830ec0e4e9..f524789dce2 100644 --- a/test/image/mocks/multicategory_series.json +++ b/test/image/mocks/multicategory_series.json @@ -1581,7 +1581,7 @@ }, "hovermode": "x unified", "title": { - "text": "Multicategory Mock with Tickmode 'sync'" + "text": "Multicategory Mock" }, "xaxis": { "visible": false, @@ -1609,7 +1609,6 @@ ], "type": "linear", "side": "left", - "tickmode": "sync", "overlaying": "y" }, "showlegend": true diff --git a/test/jasmine/tests/hover_label_test.js b/test/jasmine/tests/hover_label_test.js index a2064d33db1..7fba6a5de02 100644 --- a/test/jasmine/tests/hover_label_test.js +++ b/test/jasmine/tests/hover_label_test.js @@ -2640,6 +2640,39 @@ describe('Hover on multicategory axes', function() { }) .then(done, done.fail); }); + + fit('should work with series', function(done) { + var fig = Lib.extendDeep({}, require('@mocks/multicategory_series.json')); + fig.data = [fig.data[0]]; + fig.layout.width = 500; + fig.layout.height = 500; + + Plotly.newPlot(gd, fig) + .then(function() { + gd.on('plotly_hover', function(d) { + eventData = d.points[0]; + }); + }) + .then(function() { _hover(200, 200); }) + .then(function() { + assertHoverLabelContent({ + nums: 'x: 2017 - q3\ny: Group 3 - A\nz: 2.303' + }); + expect(eventData.x).toEqual(['2017', 'q3']); + }) + .then(function() { + return Plotly.restyle(gd, 'hovertemplate', '%{z} @ %{x} | %{y}'); + }) + .then(function() { _hover(200, 200); }) + .then(function() { + assertHoverLabelContent({ + nums: '2.303 @ 2017 - q3 | Group 3 - A', + name: 'w/ 2d z' + }); + expect(eventData.x).toEqual(['2017', 'q3']); + }) + .then(done, done.fail); + }); }); describe('hover on traces with (x|y)period positioning', function() { From 0e7c6671ea03c36a1a6882d263c98575617fd54e Mon Sep 17 00:00:00 2001 From: Filipe Santiago Date: Mon, 14 Nov 2022 16:52:48 +0000 Subject: [PATCH 04/15] Remove legend y auto --- test/image/mocks/multicategory_series.json | 1 - 1 file changed, 1 deletion(-) diff --git a/test/image/mocks/multicategory_series.json b/test/image/mocks/multicategory_series.json index f524789dce2..85792fe4710 100644 --- a/test/image/mocks/multicategory_series.json +++ b/test/image/mocks/multicategory_series.json @@ -1570,7 +1570,6 @@ }, "legend": { "x": 0.5, - "y": "auto", "xanchor": "center", "yanchor": "top", "orientation": "h", From 7c8cf325d57791a8e44d2c2e72b289b362c927d4 Mon Sep 17 00:00:00 2001 From: Filipe Santiago Date: Mon, 14 Nov 2022 16:53:39 +0000 Subject: [PATCH 05/15] Rename multicategory to z-multicategory mock --- .../{multicategory_series.json => z-multicategory_series.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/image/mocks/{multicategory_series.json => z-multicategory_series.json} (100%) diff --git a/test/image/mocks/multicategory_series.json b/test/image/mocks/z-multicategory_series.json similarity index 100% rename from test/image/mocks/multicategory_series.json rename to test/image/mocks/z-multicategory_series.json From 9f39bb8067105ab21be82d880276e1e4302b84fc Mon Sep 17 00:00:00 2001 From: Filipe Santiago Date: Mon, 14 Nov 2022 17:10:24 +0000 Subject: [PATCH 06/15] Rename to zz-multicategory_series.json --- .../{z-multicategory_series.json => zz-multicategory_series.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/image/mocks/{z-multicategory_series.json => zz-multicategory_series.json} (100%) diff --git a/test/image/mocks/z-multicategory_series.json b/test/image/mocks/zz-multicategory_series.json similarity index 100% rename from test/image/mocks/z-multicategory_series.json rename to test/image/mocks/zz-multicategory_series.json From f2f9dd8d08563c0d74f23273c540061e655ead15 Mon Sep 17 00:00:00 2001 From: Filipe Santiago Date: Mon, 14 Nov 2022 17:29:45 +0000 Subject: [PATCH 07/15] Fix test errors --- .../baselines/zz-multicategory_series.png | Bin 0 -> 34591 bytes test/image/mocks/zz-multicategory_series.json | 2535 ++++++----------- test/jasmine/tests/hover_label_test.js | 2 +- 3 files changed, 922 insertions(+), 1615 deletions(-) create mode 100644 test/image/baselines/zz-multicategory_series.png diff --git a/test/image/baselines/zz-multicategory_series.png b/test/image/baselines/zz-multicategory_series.png new file mode 100644 index 0000000000000000000000000000000000000000..929a6e99e071021880e24a1beb3af6be8cabf654 GIT binary patch literal 34591 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 Date: Mon, 14 Nov 2022 17:30:33 +0000 Subject: [PATCH 08/15] Fix test name --- test/jasmine/tests/hover_label_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/jasmine/tests/hover_label_test.js b/test/jasmine/tests/hover_label_test.js index b9e98662334..ca4e800a89e 100644 --- a/test/jasmine/tests/hover_label_test.js +++ b/test/jasmine/tests/hover_label_test.js @@ -2642,7 +2642,7 @@ describe('Hover on multicategory axes', function() { }); it('should work with series', function(done) { - var fig = Lib.extendDeep({}, require('@mocks/multicategory_series.json')); + var fig = Lib.extendDeep({}, require('@mocks/zz-multicategory_series.json')); fig.data = [fig.data[0]]; fig.layout.width = 500; fig.layout.height = 500; From 0c0eace822051618d62a1b57e04fec91e5672987 Mon Sep 17 00:00:00 2001 From: Santiago Date: Mon, 14 Nov 2022 19:01:32 +0000 Subject: [PATCH 09/15] Fix tests for multicategory hover --- test/jasmine/tests/hover_label_test.js | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/test/jasmine/tests/hover_label_test.js b/test/jasmine/tests/hover_label_test.js index ca4e800a89e..d1c79c577c6 100644 --- a/test/jasmine/tests/hover_label_test.js +++ b/test/jasmine/tests/hover_label_test.js @@ -2641,7 +2641,7 @@ describe('Hover on multicategory axes', function() { .then(done, done.fail); }); - it('should work with series', function(done) { + fit('should work with series', function(done) { var fig = Lib.extendDeep({}, require('@mocks/zz-multicategory_series.json')); fig.data = [fig.data[0]]; fig.layout.width = 500; @@ -2655,21 +2655,14 @@ describe('Hover on multicategory axes', function() { }) .then(function() { _hover(200, 200); }) .then(function() { - assertHoverLabelContent({ - nums: 'x: 2017 - q3\ny: Group 3 - A\nz: 2.303' - }); - expect(eventData.x).toEqual(['2017', 'q3']); + expect(eventData.x).toEqual(['High', 4]); }) .then(function() { return Plotly.restyle(gd, 'hovertemplate', '%{z} @ %{x} | %{y}'); }) .then(function() { _hover(200, 200); }) .then(function() { - assertHoverLabelContent({ - nums: '2.303 @ 2017 - q3 | Group 3 - A', - name: 'w/ 2d z' - }); - expect(eventData.x).toEqual(['2017', 'q3']); + expect(eventData.x).toEqual(['High', 4]); }) .then(done, done.fail); }); From 073650c73965c0a3bc254d542d489b77e9c78d11 Mon Sep 17 00:00:00 2001 From: Santiago Date: Mon, 14 Nov 2022 19:04:54 +0000 Subject: [PATCH 10/15] Removed fit test --- test/jasmine/tests/hover_label_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/jasmine/tests/hover_label_test.js b/test/jasmine/tests/hover_label_test.js index d1c79c577c6..4b5f6b61c84 100644 --- a/test/jasmine/tests/hover_label_test.js +++ b/test/jasmine/tests/hover_label_test.js @@ -2641,7 +2641,7 @@ describe('Hover on multicategory axes', function() { .then(done, done.fail); }); - fit('should work with series', function(done) { + it('should work with series', function(done) { var fig = Lib.extendDeep({}, require('@mocks/zz-multicategory_series.json')); fig.data = [fig.data[0]]; fig.layout.width = 500; From 4e048780f83de2469943dd73de3c9cd99e1fb8ed Mon Sep 17 00:00:00 2001 From: Santiago Date: Mon, 14 Nov 2022 20:48:48 +0000 Subject: [PATCH 11/15] Try new mock title --- test/image/mocks/zz-multicategory_series.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/image/mocks/zz-multicategory_series.json b/test/image/mocks/zz-multicategory_series.json index 274004328f0..97b2a52c042 100644 --- a/test/image/mocks/zz-multicategory_series.json +++ b/test/image/mocks/zz-multicategory_series.json @@ -898,7 +898,7 @@ }, "hovermode": "x unified", "title": { - "text": "Multicategory Mock" + "text": "Multicategory Mock with Series" }, "xaxis": { "visible": false, From 5aa216b630ba2c12b548abfc7ae925a27908ac22 Mon Sep 17 00:00:00 2001 From: Santiago Date: Mon, 14 Nov 2022 20:59:26 +0000 Subject: [PATCH 12/15] Reverted new mock title --- test/image/mocks/zz-multicategory_series.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/image/mocks/zz-multicategory_series.json b/test/image/mocks/zz-multicategory_series.json index 97b2a52c042..274004328f0 100644 --- a/test/image/mocks/zz-multicategory_series.json +++ b/test/image/mocks/zz-multicategory_series.json @@ -898,7 +898,7 @@ }, "hovermode": "x unified", "title": { - "text": "Multicategory Mock with Series" + "text": "Multicategory Mock" }, "xaxis": { "visible": false, From 745afcc72c5e8864c72abb2550ee2d81cb5f95eb Mon Sep 17 00:00:00 2001 From: Filipe Santiago <117312714+filipesantiagoAM@users.noreply.github.com> Date: Wed, 16 Nov 2022 14:39:37 +0000 Subject: [PATCH 13/15] Update src/components/fx/hover.js Co-authored-by: Mojtaba Samimi <33888540+archmoj@users.noreply.github.com> --- src/components/fx/hover.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/fx/hover.js b/src/components/fx/hover.js index ccf6d12e6c9..2df40bf51a9 100644 --- a/src/components/fx/hover.js +++ b/src/components/fx/hover.js @@ -891,7 +891,7 @@ function createHoverText(hoverData, opts) { var t0 = c0[axLetter + 'Label']; // search in array for the label - if(!t0) { + if(t0 === undefined) { hoverData.map(function(data) { if(data[axLetter + 'Label']) { t0 = data[axLetter + 'Label']; From 1bd56af569ae6ae7ea7a583412c89001b18bbf79 Mon Sep 17 00:00:00 2001 From: Filipe Santiago Date: Wed, 16 Nov 2022 14:55:54 +0000 Subject: [PATCH 14/15] Improve get hover label multicategory --- src/components/fx/hover.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/components/fx/hover.js b/src/components/fx/hover.js index 2df40bf51a9..f16a21695a8 100644 --- a/src/components/fx/hover.js +++ b/src/components/fx/hover.js @@ -891,12 +891,11 @@ function createHoverText(hoverData, opts) { var t0 = c0[axLetter + 'Label']; // search in array for the label - if(t0 === undefined) { - hoverData.map(function(data) { - if(data[axLetter + 'Label']) { - t0 = data[axLetter + 'Label']; - } - }); + if(t0 === undefined && xa.type === 'multicategory') { + for(var q = 0; q < hoverData.length; q++) { + t0 = hoverData[q][axLetter + 'Label']; + if(t0 !== undefined) break; + } } var outerContainerBB = getBoundingClientRect(gd, outerContainer); From 5d83a4dd94b6eb4239f801b45513b10ecf6bfde1 Mon Sep 17 00:00:00 2001 From: Filipe Santiago Date: Wed, 16 Nov 2022 15:05:23 +0000 Subject: [PATCH 15/15] Simplify variable on hover --- src/components/fx/hover.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/fx/hover.js b/src/components/fx/hover.js index f16a21695a8..8e027ad3d6b 100644 --- a/src/components/fx/hover.js +++ b/src/components/fx/hover.js @@ -888,12 +888,13 @@ function createHoverText(hoverData, opts) { var xa = c0.xa; var ya = c0.ya; var axLetter = hovermode.charAt(0); - var t0 = c0[axLetter + 'Label']; + var axLabel = axLetter + 'Label'; + var t0 = c0[axLabel]; // search in array for the label if(t0 === undefined && xa.type === 'multicategory') { for(var q = 0; q < hoverData.length; q++) { - t0 = hoverData[q][axLetter + 'Label']; + t0 = hoverData[q][axLabel]; if(t0 !== undefined) break; } }