From 61c4a83d7a23eaaaeee803e15e29ea7cf4a7fb88 Mon Sep 17 00:00:00 2001 From: thierry vergult Date: Thu, 24 Sep 2020 21:45:35 +0200 Subject: [PATCH 1/4] sunburst sort attribute - Standard (original) behavior: sort on values - new *sort* option to disable sorting --- src/traces/sunburst/calc.js | 4 +++- src/traces/sunburst/layout_attributes.js | 10 ++++++++++ src/traces/sunburst/layout_defaults.js | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/traces/sunburst/calc.js b/src/traces/sunburst/calc.js index e8a9a90d676..d80b003c7ab 100644 --- a/src/traces/sunburst/calc.js +++ b/src/traces/sunburst/calc.js @@ -192,7 +192,9 @@ exports.calc = function(gd, trace) { if(failed) return; // TODO add way to sort by height also? - hierarchy.sort(function(a, b) { return b.value - a.value; }); + if ( fullLayout[ 'sort']) { + hierarchy.sort(function(a, b) { return b.value - a.value; }); + } var pullColor; var scaleColor; diff --git a/src/traces/sunburst/layout_attributes.js b/src/traces/sunburst/layout_attributes.js index cfc3cb73e1b..f99b363aab8 100644 --- a/src/traces/sunburst/layout_attributes.js +++ b/src/traces/sunburst/layout_attributes.js @@ -35,5 +35,15 @@ module.exports = { 'Colors provided in the trace, using `marker.colors`, are never', 'extended.' ].join(' ') + }, + sort: { + valType: 'boolean', + dflt: true, + role: 'style', + editType: 'calc', + description: [ + 'sort on values.', + 'default true' + ].join(' ') } }; diff --git a/src/traces/sunburst/layout_defaults.js b/src/traces/sunburst/layout_defaults.js index 56a9ac34002..92d5ec7dd75 100644 --- a/src/traces/sunburst/layout_defaults.js +++ b/src/traces/sunburst/layout_defaults.js @@ -17,4 +17,5 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { } coerce('sunburstcolorway', layoutOut.colorway); coerce('extendsunburstcolors'); + coerce('sort'); }; From 0a531f8d3330f76d5241b2fdf1764c61b383f723 Mon Sep 17 00:00:00 2001 From: thierry vergult Date: Sat, 26 Sep 2020 16:31:40 +0200 Subject: [PATCH 2/4] reuse pie.sort reuse pie.sort in attributes, default true --- src/traces/sunburst/attributes.js | 1 + src/traces/sunburst/calc.js | 2 +- src/traces/sunburst/defaults.js | 2 ++ src/traces/sunburst/layout_attributes.js | 10 ---------- src/traces/sunburst/layout_defaults.js | 1 - 5 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/traces/sunburst/attributes.js b/src/traces/sunburst/attributes.js index 4ccd65b80d9..02735365099 100644 --- a/src/traces/sunburst/attributes.js +++ b/src/traces/sunburst/attributes.js @@ -203,6 +203,7 @@ module.exports = { 'this option won\'t have any effect and `insidetextfont` would be used.' ].join(' ') }), + sort: pieAttrs.sort, domain: domainAttrs({name: 'sunburst', trace: true, editType: 'calc'}) }; diff --git a/src/traces/sunburst/calc.js b/src/traces/sunburst/calc.js index d80b003c7ab..5c985077a4a 100644 --- a/src/traces/sunburst/calc.js +++ b/src/traces/sunburst/calc.js @@ -192,7 +192,7 @@ exports.calc = function(gd, trace) { if(failed) return; // TODO add way to sort by height also? - if ( fullLayout[ 'sort']) { + if ( trace.sort) { hierarchy.sort(function(a, b) { return b.value - a.value; }); } diff --git a/src/traces/sunburst/defaults.js b/src/traces/sunburst/defaults.js index cd034ca75fb..201867ef3d2 100644 --- a/src/traces/sunburst/defaults.js +++ b/src/traces/sunburst/defaults.js @@ -73,6 +73,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('insidetextorientation'); + coerce('sort'); + handleDomainDefaults(traceOut, layout, coerce); // do not support transforms for now diff --git a/src/traces/sunburst/layout_attributes.js b/src/traces/sunburst/layout_attributes.js index f99b363aab8..cfc3cb73e1b 100644 --- a/src/traces/sunburst/layout_attributes.js +++ b/src/traces/sunburst/layout_attributes.js @@ -35,15 +35,5 @@ module.exports = { 'Colors provided in the trace, using `marker.colors`, are never', 'extended.' ].join(' ') - }, - sort: { - valType: 'boolean', - dflt: true, - role: 'style', - editType: 'calc', - description: [ - 'sort on values.', - 'default true' - ].join(' ') } }; diff --git a/src/traces/sunburst/layout_defaults.js b/src/traces/sunburst/layout_defaults.js index 92d5ec7dd75..56a9ac34002 100644 --- a/src/traces/sunburst/layout_defaults.js +++ b/src/traces/sunburst/layout_defaults.js @@ -17,5 +17,4 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut) { } coerce('sunburstcolorway', layoutOut.colorway); coerce('extendsunburstcolors'); - coerce('sort'); }; From cf66d2e8540acec63488bea94fe16147d29bd329 Mon Sep 17 00:00:00 2001 From: thierry vergult Date: Sat, 26 Sep 2020 17:48:52 +0200 Subject: [PATCH 3/4] fix indentation & space satisfy eslint --- src/traces/sunburst/calc.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/traces/sunburst/calc.js b/src/traces/sunburst/calc.js index 5c985077a4a..faaff6d4f0e 100644 --- a/src/traces/sunburst/calc.js +++ b/src/traces/sunburst/calc.js @@ -192,8 +192,8 @@ exports.calc = function(gd, trace) { if(failed) return; // TODO add way to sort by height also? - if ( trace.sort) { - hierarchy.sort(function(a, b) { return b.value - a.value; }); + if (trace.sort) { + hierarchy.sort(function(a, b) { return b.value - a.value; }); } var pullColor; From a66b42dd2ee75db49ee50f6c4990d4ba76bab01d Mon Sep 17 00:00:00 2001 From: thierry vergult Date: Sat, 26 Sep 2020 21:46:58 +0200 Subject: [PATCH 4/4] treemap sort - obey npm lint - add sort option to treemap (define attribute & coerce in default Treepad is using the calc from sunburst, so the 1 line code change for sunburst impacted treemap (sort was not true) --- src/traces/sunburst/calc.js | 2 +- src/traces/treemap/attributes.js | 1 + src/traces/treemap/defaults.js | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/traces/sunburst/calc.js b/src/traces/sunburst/calc.js index faaff6d4f0e..d1e5b27ac76 100644 --- a/src/traces/sunburst/calc.js +++ b/src/traces/sunburst/calc.js @@ -192,7 +192,7 @@ exports.calc = function(gd, trace) { if(failed) return; // TODO add way to sort by height also? - if (trace.sort) { + if(trace.sort) { hierarchy.sort(function(a, b) { return b.value - a.value; }); } diff --git a/src/traces/treemap/attributes.js b/src/traces/treemap/attributes.js index c2f121237b2..0188e564957 100644 --- a/src/traces/treemap/attributes.js +++ b/src/traces/treemap/attributes.js @@ -268,6 +268,7 @@ module.exports = { 'Sets the positions of the `text` elements.' ].join(' ') }, + sort: pieAttrs.sort, domain: domainAttrs({name: 'treemap', trace: true, editType: 'calc'}), }; diff --git a/src/traces/treemap/defaults.js b/src/traces/treemap/defaults.js index 017fe0a6013..4a2315fa7bb 100644 --- a/src/traces/treemap/defaults.js +++ b/src/traces/treemap/defaults.js @@ -114,6 +114,8 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerce('pathbar.edgeshape'); } + coerce('sort'); + handleDomainDefaults(traceOut, layout, coerce); // do not support transforms for now