Skip to content

Commit 4d790a1

Browse files
committed
correct texttemplate and hover
1 parent 3004a9a commit 4d790a1

File tree

8 files changed

+55
-52
lines changed

8 files changed

+55
-52
lines changed

src/traces/sunburst/constants.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,14 @@ module.exports = {
1313
CLICK_TRANSITION_EASING: 'linear',
1414
eventDataKeys: [
1515
// string
16+
'currentPath',
1617
'root',
1718
'entry',
18-
// 'parent', // no need to add parent here which is added somewhere else!
19-
'currentPath',
19+
// no need to add 'parent' here
2020

2121
// percentages i.e. ratios
2222
'percentRoot',
2323
'percentEntry',
24-
'percentParent',
25-
26-
// sums
27-
'sumRoot',
28-
'sumEntry',
29-
'sumParent'
24+
'percentParent'
3025
]
3126
};

src/traces/sunburst/fx.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ module.exports = function attachFxHandlers(sliceTop, entry, gd, cd, opts) {
4747
var ptNumber = cdi.i;
4848
var isRoot = helpers.isHierarchyRoot(pt);
4949
var isEntry = helpers.isEntry(pt);
50+
var parent = isEntry ? pt._parent : pt.parent;
51+
var parentLabel = !parent ? '' : (parent.data && parent.data.data) ? parent.data.data.label : parent.label;
5052

5153
var _cast = function(astr) {
5254
return Lib.castOption(traceNow, ptNumber, astr);
@@ -72,7 +74,10 @@ module.exports = function attachFxHandlers(sliceTop, entry, gd, cd, opts) {
7274
var parts = [];
7375
var thisText = [];
7476
var hasFlag = function(flag) { return parts.indexOf(flag) !== -1; };
75-
var getVal = function(d) { return d.hasOwnProperty('v') ? d.v : d.value; };
77+
var getVal = function(d) {
78+
if(d.hasOwnProperty('hierarchy')) return d.hierarchy.value;
79+
return d.hasOwnProperty('v') ? d.v : d.value;
80+
};
7681

7782
if(hoverinfo) {
7883
parts = hoverinfo === 'all' ?
@@ -105,18 +110,18 @@ module.exports = function attachFxHandlers(sliceTop, entry, gd, cd, opts) {
105110

106111
var val = getVal(cdi);
107112

108-
var ref2 = isEntry ? pt._parent : pt.parent;
109-
if(ref2 && getVal(ref2)) {
113+
var ref2 = parent;
114+
if(ref2) {
110115
hoverPt.percentParent = pt.percentParent = val / getVal(ref2);
111-
hoverPt.parent = pt.parentString = helpers.getLabelString(isEntry ? ref2.label : ref2.data.data.label);
116+
hoverPt.parent = pt.parent = helpers.getLabelString(parentLabel);
112117
if(hasFlag('percent parent')) {
113118
tx = helpers.formatPercent(hoverPt.percentParent, separators) + ' of ' + hoverPt.parent;
114119
insertPercent();
115120
}
116121
}
117122

118123
var ref1 = entry;
119-
if(ref1 && getVal(ref1)) {
124+
if(ref1) {
120125
hoverPt.percentEntry = pt.percentEntry = val / getVal(ref1);
121126
hoverPt.entry = pt.entry = helpers.getLabelString(ref1.data.data.label);
122127
if(hasFlag('percent entry') && !isRoot && !pt.onPathbar) {
@@ -126,7 +131,7 @@ module.exports = function attachFxHandlers(sliceTop, entry, gd, cd, opts) {
126131
}
127132

128133
var ref0 = hierarchy;
129-
if(ref0 && getVal(ref0)) {
134+
if(ref0) {
130135
hoverPt.percentRoot = pt.percentRoot = val / getVal(ref0);
131136
hoverPt.root = pt.root = helpers.getLabelString(ref0.data.data.label);
132137
if(hasFlag('percent root') && !isRoot) {
@@ -310,7 +315,7 @@ function makeEventData(pt, trace, keys) {
310315
if(key in pt) out[key] = pt[key];
311316
}
312317
// handle special case of parent
313-
if('parentString' in pt) out.parent = pt.parentString;
318+
if('parent' in pt) out.parent = pt.parent;
314319

315320
appendArrayPointValue(out, trace, cdi.i);
316321

src/traces/sunburst/helpers.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ var setCursor = require('../../lib/setcursor');
1414
var pieHelpers = require('../pie/helpers');
1515

1616
function labelStr(label) {
17-
return (label || label === 0) ? label + '' : '';
17+
return (label || label === 0) ? String(label) : '';
1818
}
1919

2020
exports.findEntryWithLevel = function(hierarchy, level) {
@@ -151,7 +151,7 @@ exports.getLabelStr = function(label) {
151151

152152
exports.getLabelString = function(label) { // used in hover to reference to the "root"
153153
var str = exports.getLabelStr(label);
154-
return str ? str : '"root"';
154+
return str === '' ? '"root"' : str;
155155
};
156156

157157
exports.listPath = function(d, keyStr) {

src/traces/sunburst/plot.js

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -487,10 +487,31 @@ exports.formatSliceLabel = function(pt, entry, trace, cd, fullLayout) {
487487
var cd0 = cd[0];
488488
var cdi = pt.data.data;
489489
var hierarchy = cd0.hierarchy;
490+
var isRoot = helpers.isHierarchyRoot(pt);
491+
var isEntry = helpers.isEntry(pt);
492+
var parent = isEntry ? pt._parent : pt.parent;
493+
490494
var ref;
495+
var getLabel = function(d) {
496+
if(d.hasOwnProperty('hierarchy')) return d.hierarchy.label;
497+
if(!(d.data && d.data.data)) return '';
498+
var id = helpers.getPtId(d);
499+
for(var q = 0; q < cd.length; q++) {
500+
if(cd[q].label === id) {
501+
return id;
502+
}
503+
}
504+
return '';
505+
};
506+
507+
var getVal = function(d) {
508+
if(d.hasOwnProperty('hierarchy')) return d.hierarchy.value;
509+
return d.hasOwnProperty('v') ? d.v : d.value;
510+
};
491511

492512
var calcPercent = function() {
493-
return (trace.branchvalues ? cdi.v : cdi.value) / (ref.value || ref.v);
513+
var result = (trace.branchvalues ? cdi.v : cdi.value) / getVal(ref);
514+
return isFinite(result) ? result : 1;
494515
};
495516

496517
if(trace.type === 'treemap' && helpers.isHeader(pt, trace)) {
@@ -510,8 +531,6 @@ exports.formatSliceLabel = function(pt, entry, trace, cd, fullLayout) {
510531
var hasFlag = function(flag) { return parts.indexOf(flag) !== -1; };
511532
var thisText = [];
512533
var tx;
513-
var parent = helpers.isEntry(pt) ? pt._parent : pt.parent;
514-
var isRoot = helpers.isHierarchyRoot(pt);
515534

516535
if(hasFlag('label') && cdi.label) {
517536
thisText.push(cdi.label);
@@ -580,28 +599,26 @@ exports.formatSliceLabel = function(pt, entry, trace, cd, fullLayout) {
580599

581600
obj.currentPath = helpers.getPath(pt.data);
582601

583-
if(pt.parent) {
584-
ref = pt.parent;
585-
obj.percentParent = calcPercent();
586-
obj.percentParentLabel = helpers.formatPercent(
587-
obj.percentParent, separators
588-
);
589-
obj.parent = ref.data.data.label;
590-
}
602+
ref = parent;
603+
obj.percentParent = calcPercent();
604+
obj.percentParentLabel = helpers.formatPercent(
605+
obj.percentParent, separators
606+
);
607+
obj.parent = helpers.getLabelString(getLabel(ref));
591608

592609
ref = entry;
593610
obj.percentEntry = calcPercent();
594611
obj.percentEntryLabel = helpers.formatPercent(
595612
obj.percentEntry, separators
596613
);
597-
obj.entry = ref.data.data.label;
614+
obj.entry = helpers.getLabelString(getLabel(ref));
598615

599616
ref = hierarchy;
600617
obj.percentRoot = calcPercent();
601618
obj.percentRootLabel = helpers.formatPercent(
602619
obj.percentRoot, separators
603620
);
604-
obj.root = ref.data.data.label;
621+
obj.root = helpers.getLabelString(getLabel(ref));
605622

606623
if(cdi.hasOwnProperty('color')) {
607624
obj.color = cdi.color;

src/traces/treemap/constants.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,15 @@ module.exports = {
1313
CLICK_TRANSITION_EASING: 'poly',
1414
eventDataKeys: [
1515
// string
16+
'currentPath',
1617
'root',
1718
'entry',
18-
// 'parent', // no need to add parent here which is added somewhere else!
19-
'currentPath',
19+
// no need to add 'parent' here
2020

2121
// percentages i.e. ratios
2222
'percentRoot',
2323
'percentEntry',
24-
'percentParent',
25-
26-
// sums
27-
'sumRoot',
28-
'sumEntry',
29-
'sumParent'
24+
'percentParent'
3025
],
3126
gapWithPathbar: 1 // i.e. one pixel
3227
};
-3.99 KB
Loading

test/jasmine/tests/sunburst_test.js

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ describe('Test sunburst hover:', function() {
507507
curveNumber: 0,
508508
pointNumber: 0,
509509
label: 'Eve',
510-
parent: ''
510+
parent: '"root"'
511511
}
512512
}
513513
}]
@@ -1344,10 +1344,7 @@ describe('Test sunburst texttemplate without `values` should work:', function()
13441344
['text: %{text}', ['text: sixty-five', 'text: fourteen', 'text: twelve', 'text: ten', 'text: two', 'text: six', 'text: six', 'text: one', 'text: four']],
13451345
['%{percentRoot} of %{root}', ['100% of Eve', '33% of Eve', '17% of Eve', '17% of Eve', '17% of Eve', '17% of Eve', '17% of Eve', '17% of Eve', '17% of Eve']],
13461346
['%{percentEntry} of %{entry}', ['100% of Eve', '33% of Eve', '17% of Eve', '17% of Eve', '17% of Eve', '17% of Eve', '17% of Eve', '17% of Eve', '17% of Eve']],
1347-
['%{percentParent} of %{parent}', [
1348-
'%{percentParent} of %{parent}', // TODO: what should be printed for the parent of root?
1349-
'100% of Seth', '33% of Eve', '17% of Eve', '17% of Eve', '17% of Eve', '17% of Eve', '50% of Seth', '100% of Awan'
1350-
]],
1347+
['%{percentParent} of %{parent}', ['100% of "root"', '100% of Seth', '33% of Eve', '17% of Eve', '17% of Eve', '17% of Eve', '17% of Eve', '50% of Seth', '100% of Awan']],
13511348
[
13521349
[
13531350
'label: %{label}',
@@ -1390,10 +1387,7 @@ describe('Test sunburst texttemplate with *total* `values` should work:', functi
13901387
['text: %{text}', ['text: sixty-five', 'text: fourteen', 'text: twelve', 'text: ten', 'text: two', 'text: six', 'text: six', 'text: one', 'text: four']],
13911388
['%{percentRoot} of %{root}', ['100% of Eve', '22% of Eve', '18% of Eve', '9% of Eve', '9% of Eve', '6% of Eve', '15% of Eve', '3% of Eve', '2% of Eve']],
13921389
['%{percentEntry} of %{entry}', ['100% of Eve', '22% of Eve', '18% of Eve', '9% of Eve', '9% of Eve', '6% of Eve', '15% of Eve', '3% of Eve', '2% of Eve']],
1393-
['%{percentParent} of %{parent}', [
1394-
'%{percentParent} of %{parent}', // TODO: what should be printed for the parent of root?
1395-
'22% of Eve', '18% of Eve', '9% of Eve', '9% of Eve', '6% of Eve', '83% of Seth', '17% of Seth', '17% of Awan'
1396-
]],
1390+
['%{percentParent} of %{parent}', ['100% of "root"', '22% of Eve', '18% of Eve', '9% of Eve', '9% of Eve', '6% of Eve', '83% of Seth', '17% of Seth', '17% of Awan']],
13971391
[
13981392
[
13991393
'label: %{label}',
@@ -1436,10 +1430,7 @@ describe('Test sunburst texttemplate with *remainder* `values` should work:', fu
14361430
['text: %{text}', ['text: sixty-five', 'text: fourteen', 'text: twelve', 'text: ten', 'text: two', 'text: six', 'text: six', 'text: one', 'text: four']],
14371431
['%{percentRoot} of %{root}', ['54% of Eve', '10% of Eve', '12% of Eve', '5% of Eve', '5% of Eve', '3% of Eve', '8% of Eve', '2% of Eve', '1% of Eve']],
14381432
['%{percentEntry} of %{entry}', ['54% of Eve', '10% of Eve', '12% of Eve', '5% of Eve', '5% of Eve', '3% of Eve', '8% of Eve', '2% of Eve', '1% of Eve']],
1439-
['%{percentParent} of %{parent}', [
1440-
'%{percentParent} of %{parent}', // TODO: what should be printed for the parent of root?
1441-
'10% of Eve', '12% of Eve', '5% of Eve', '5% of Eve', '3% of Eve', '42% of Seth', '8% of Seth', '14% of Awan'
1442-
]],
1433+
['%{percentParent} of %{parent}', ['100% of "root"', '10% of Eve', '12% of Eve', '5% of Eve', '5% of Eve', '3% of Eve', '42% of Seth', '8% of Seth', '14% of Awan']],
14431434
[
14441435
[
14451436
'label: %{label}',

test/jasmine/tests/treemap_test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ describe('Test treemap hover:', function() {
616616
curveNumber: 0,
617617
pointNumber: 0,
618618
label: 'Eve',
619-
parent: ''
619+
parent: '"root"'
620620
}
621621
}
622622
}]

0 commit comments

Comments
 (0)