Skip to content

Commit 869b97b

Browse files
committed
Fixes of uniformtext and enable coloraxis for sunburst and treemap
- fix clear previous uniformtext scale before each plot - fix uniformtext after switch level when has no transition for sunburst and treemap - fix tests and add new tests
1 parent 4137ed2 commit 869b97b

22 files changed

+488
-48
lines changed

src/traces/bar/plot.js

+18-2
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ function plot(gd, plotinfo, cdModule, traceLayer, opts, makeOnCompleteCallback)
9191
gap: fullLayout.bargap,
9292
groupgap: fullLayout.bargroupgap
9393
};
94+
95+
// don't clear bar when this is called from waterfall or funnel
96+
clearMinTextSize('bar', fullLayout);
9497
}
9598

9699
var bartraces = Lib.makeTraceGroups(traceLayer, cdModule, 'trace bars').each(function(cd) {
@@ -419,7 +422,7 @@ function recordMinTextSize(
419422
fullLayout // inout
420423
) {
421424
if(fullLayout.uniformtext.mode) {
422-
var minKey = '_' + traceType + 'Text_minsize';
425+
var minKey = getMinKey(traceType);
423426
var minSize = fullLayout.uniformtext.minsize;
424427
var size = transform.scale * transform.fontSize;
425428

@@ -435,6 +438,18 @@ function recordMinTextSize(
435438
}
436439
}
437440

441+
function clearMinTextSize(
442+
traceType, // in
443+
fullLayout // inout
444+
) {
445+
var minKey = getMinKey(traceType);
446+
fullLayout[minKey] = undefined;
447+
}
448+
449+
function getMinKey(traceType) {
450+
return '_' + traceType + 'Text_minsize';
451+
}
452+
438453
function getRotateFromAngle(angle) {
439454
return (angle === 'auto') ? 0 : angle;
440455
}
@@ -750,5 +765,6 @@ function calcTextinfo(cd, index, xa, ya) {
750765
module.exports = {
751766
plot: plot,
752767
toMoveInsideBar: toMoveInsideBar,
753-
recordMinTextSize: recordMinTextSize
768+
recordMinTextSize: recordMinTextSize,
769+
clearMinTextSize: clearMinTextSize
754770
};

src/traces/funnel/plot.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,18 @@
1111
var d3 = require('d3');
1212
var Lib = require('../../lib');
1313
var Drawing = require('../../components/drawing');
14-
var barPlot = require('../bar/plot').plot;
14+
var barPlot = require('../bar/plot');
15+
var clearMinTextSize = barPlot.clearMinTextSize;
1516

1617
module.exports = function plot(gd, plotinfo, cdModule, traceLayer) {
1718
var fullLayout = gd._fullLayout;
1819

20+
clearMinTextSize('funnel', fullLayout);
21+
1922
plotConnectorRegions(gd, plotinfo, cdModule, traceLayer);
2023
plotConnectorLines(gd, plotinfo, cdModule, traceLayer);
2124

22-
barPlot(gd, plotinfo, cdModule, traceLayer, {
25+
barPlot.plot(gd, plotinfo, cdModule, traceLayer, {
2326
mode: fullLayout.funnelmode,
2427
norm: fullLayout.funnelmode,
2528
gap: fullLayout.funnelgap,

src/traces/funnelarea/plot.js

+3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ var svgTextUtils = require('../../lib/svg_text_utils');
1717
var barPlot = require('../bar/plot');
1818
var toMoveInsideBar = barPlot.toMoveInsideBar;
1919
var recordMinTextSize = barPlot.recordMinTextSize;
20+
var clearMinTextSize = barPlot.clearMinTextSize;
2021

2122
var pieHelpers = require('../pie/helpers');
2223
var piePlot = require('../pie/plot');
@@ -32,6 +33,8 @@ var formatSliceLabel = piePlot.formatSliceLabel;
3233
module.exports = function plot(gd, cdModule) {
3334
var fullLayout = gd._fullLayout;
3435

36+
clearMinTextSize('funnelarea', fullLayout);
37+
3538
prerenderTitles(cdModule, gd);
3639
layoutAreas(cdModule, fullLayout._size);
3740

src/traces/pie/plot.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ var Color = require('../../components/color');
1616
var Drawing = require('../../components/drawing');
1717
var Lib = require('../../lib');
1818
var svgTextUtils = require('../../lib/svg_text_utils');
19-
var recordMinTextSize = require('../bar/plot').recordMinTextSize;
19+
var barPlot = require('../bar/plot');
20+
var recordMinTextSize = barPlot.recordMinTextSize;
21+
var clearMinTextSize = barPlot.clearMinTextSize;
2022

2123
var helpers = require('./helpers');
2224
var eventData = require('./event_data');
@@ -26,6 +28,8 @@ function plot(gd, cdModule) {
2628
var fullLayout = gd._fullLayout;
2729
var gs = fullLayout._size;
2830

31+
clearMinTextSize('pie', fullLayout);
32+
2933
prerenderTitles(cdModule, gd);
3034
layoutAreas(cdModule, gs);
3135

src/traces/sunburst/defaults.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
4444
if(lineWidth) coerce('marker.line.color', layout.paper_bgcolor);
4545

4646
coerce('marker.colors');
47-
var withColorscale = traceOut._hasColorscale = hasColorscale(traceIn, 'marker', 'colors');
47+
var withColorscale = traceOut._hasColorscale = (traceIn.marker || {}).coloraxis || hasColorscale(traceIn, 'marker', 'colors');
4848
if(withColorscale) {
4949
colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: 'marker.', cLetter: 'c'});
5050
}

src/traces/sunburst/plot.js

+10-2
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ var d3Hierarchy = require('d3-hierarchy');
1414
var Drawing = require('../../components/drawing');
1515
var Lib = require('../../lib');
1616
var svgTextUtils = require('../../lib/svg_text_utils');
17-
var recordMinTextSize = require('../bar/plot').recordMinTextSize;
17+
var barPlot = require('../bar/plot');
18+
var recordMinTextSize = barPlot.recordMinTextSize;
19+
var clearMinTextSize = barPlot.clearMinTextSize;
1820
var piePlot = require('../pie/plot');
1921
var computeTransform = piePlot.computeTransform;
2022
var transformInsideText = piePlot.transformInsideText;
2123
var styleOne = require('./style').styleOne;
22-
24+
var style = require('./style').style;
2325
var attachFxHandlers = require('./fx');
2426
var constants = require('./constants');
2527
var helpers = require('./helpers');
@@ -34,6 +36,8 @@ exports.plot = function(gd, cdmodule, transitionOpts, makeOnCompleteCallback) {
3436
var isFullReplot = !transitionOpts;
3537
var hasTransition = helpers.hasTransition(transitionOpts);
3638

39+
clearMinTextSize('sunburst', fullLayout);
40+
3741
join = layer.selectAll('g.trace.sunburst')
3842
.data(cdmodule, function(cd) { return cd[0].trace.uid; });
3943

@@ -70,6 +74,10 @@ exports.plot = function(gd, cdmodule, transitionOpts, makeOnCompleteCallback) {
7074
join.each(function(cd) {
7175
plotOne(gd, cd, this, transitionOpts);
7276
});
77+
78+
if(fullLayout.uniformtext.mode) {
79+
style(gd);
80+
}
7381
}
7482

7583
if(isFullReplot) {

src/traces/treemap/defaults.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout
7373
if(lineWidth) coerce('marker.line.color', layout.paper_bgcolor);
7474

7575
var colors = coerce('marker.colors');
76-
var withColorscale = traceOut._hasColorscale = hasColorscale(traceIn, 'marker', 'colors');
76+
var withColorscale = traceOut._hasColorscale = (traceIn.marker || {}).coloraxis || hasColorscale(traceIn, 'marker', 'colors');
7777
if(withColorscale) {
7878
colorscaleDefaults(traceIn, traceOut, layout, coerce, {prefix: 'marker.', cLetter: 'c'});
7979
} else {

src/traces/treemap/draw_ancestors.js

+1
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ module.exports = function drawAncestors(gd, cd, entry, slices, opts) {
151151

152152
pt.textBB = Drawing.bBox(sliceText.node());
153153
pt.transform = toMoveInsideSlice(pt, {
154+
fontSize: font.size,
154155
onPathbar: true
155156
});
156157

src/traces/treemap/draw_descendants.js

+1
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ module.exports = function drawDescendants(gd, cd, entry, slices, opts) {
192192

193193
pt.textBB = Drawing.bBox(sliceText.node());
194194
pt.transform = toMoveInsideSlice(pt, {
195+
fontSize: font.size,
195196
isHeader: isHeader
196197
});
197198
pt.transform.fontSize = font.size;

src/traces/treemap/plot.js

+10-3
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@
1010

1111
var d3 = require('d3');
1212

13-
var hasTransition = require('../sunburst/helpers').hasTransition;
1413
var helpers = require('../sunburst/helpers');
1514

1615
var Lib = require('../../lib');
1716
var TEXTPAD = require('../bar/constants').TEXTPAD;
1817
var barPlot = require('../bar/plot');
1918
var toMoveInsideBar = barPlot.toMoveInsideBar;
2019
var recordMinTextSize = barPlot.recordMinTextSize;
21-
20+
var clearMinTextSize = barPlot.clearMinTextSize;
21+
var style = require('./style').style;
2222
var constants = require('./constants');
2323
var drawDescendants = require('./draw_descendants');
2424
var drawAncestors = require('./draw_ancestors');
@@ -32,6 +32,8 @@ module.exports = function(gd, cdmodule, transitionOpts, makeOnCompleteCallback)
3232
// updated are removed.
3333
var isFullReplot = !transitionOpts;
3434

35+
clearMinTextSize('treemap', fullLayout);
36+
3537
join = layer.selectAll('g.trace.treemap')
3638
.data(cdmodule, function(cd) { return cd[0].trace.uid; });
3739

@@ -41,7 +43,7 @@ module.exports = function(gd, cdmodule, transitionOpts, makeOnCompleteCallback)
4143

4244
join.order();
4345

44-
if(hasTransition(transitionOpts)) {
46+
if(helpers.hasTransition(transitionOpts)) {
4547
if(makeOnCompleteCallback) {
4648
// If it was passed a callback to register completion, make a callback. If
4749
// this is created, then it must be executed on completion, otherwise the
@@ -66,6 +68,10 @@ module.exports = function(gd, cdmodule, transitionOpts, makeOnCompleteCallback)
6668
join.each(function(cd) {
6769
plotOne(gd, cd, this, transitionOpts);
6870
});
71+
72+
if(fullLayout.uniformtext.mode) {
73+
style(gd);
74+
}
6975
}
7076

7177
if(isFullReplot) {
@@ -351,6 +357,7 @@ function plotOne(gd, cd, element, transitionOpts) {
351357
angle: 0,
352358
anchor: anchor
353359
});
360+
transform.fontSize = opts.fontSize;
354361

355362
if(offsetDir !== 'center') {
356363
var deltaX = (x1 - x0) / 2 - transform.scale * (textBB.right - textBB.left) / 2;

src/traces/waterfall/plot.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,15 @@
1111
var d3 = require('d3');
1212
var Lib = require('../../lib');
1313
var Drawing = require('../../components/drawing');
14-
var barPlot = require('../bar/plot').plot;
14+
var barPlot = require('../bar/plot');
15+
var clearMinTextSize = barPlot.clearMinTextSize;
1516

1617
module.exports = function plot(gd, plotinfo, cdModule, traceLayer) {
1718
var fullLayout = gd._fullLayout;
1819

19-
barPlot(gd, plotinfo, cdModule, traceLayer, {
20+
clearMinTextSize('waterfall', fullLayout);
21+
22+
barPlot.plot(gd, plotinfo, cdModule, traceLayer, {
2023
mode: fullLayout.waterfallmode,
2124
norm: fullLayout.waterfallmode,
2225
gap: fullLayout.waterfallgap,
83.1 KB
Loading

test/image/mocks/uniformtext_sunburst_inside-text-orientation.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
"azure"
9292
]
9393
},
94-
"textinfo": "label+value",
94+
"textinfo": "label",
9595
"domain": {
9696
"x": [
9797
0.5,
@@ -165,7 +165,7 @@
165165
"Yankee",
166166
"Zulu"
167167
],
168-
"textinfo": "label+value",
168+
"textinfo": "label",
169169
"domain": {
170170
"x": [
171171
0.5,
@@ -239,7 +239,7 @@
239239
"Yankee",
240240
"Zulu"
241241
],
242-
"textinfo": "label+value",
242+
"textinfo": "label",
243243
"domain": {
244244
"x": [
245245
0,
@@ -313,7 +313,7 @@
313313
"Yankee",
314314
"Zulu"
315315
],
316-
"textinfo": "label+value",
316+
"textinfo": "label",
317317
"domain": {
318318
"x": [
319319
0,

test/image/mocks/uniformtext_sunburst_treemap.json

+9-8
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@
1111
"marker": {
1212
"line": {
1313
"color": "#777"
14-
},
15-
"colorscale": "Blackbody",
16-
"reversescale": true,
17-
"showscale": false
14+
},
15+
"coloraxis": "coloraxis"
1816
},
1917
"labels": [
2018
"Alpha",
@@ -84,10 +82,8 @@
8482
"marker": {
8583
"line": {
8684
"color": "#777"
87-
},
88-
"colorscale": "Blackbody",
89-
"reversescale": true,
90-
"showscale": false
85+
},
86+
"coloraxis": "coloraxis"
9187
},
9288
"level": "Juliet",
9389
"labels": [
@@ -150,6 +146,11 @@
150146
}
151147
],
152148
"layout": {
149+
"coloraxis": {
150+
"colorscale": "Blackbody",
151+
"reversescale": true,
152+
"showscale": false
153+
},
153154
"width": 500,
154155
"height": 1000,
155156
"margin": {

0 commit comments

Comments
 (0)