Browse Source

Merge pull request #1337 from teichmaj/issue_1028_tooltip_order

fix data order of tooltip
pull/1344/head
Masayuki Tanaka 9 years ago
parent
commit
9bf1f229c7
  1. 2
      Gruntfile.coffee
  2. 21
      spec/tooltip-spec.js
  3. 21
      src/tooltip.js

2
Gruntfile.coffee

@ -92,7 +92,7 @@ module.exports = (grunt) ->
specs: 'spec/*-spec.js' specs: 'spec/*-spec.js'
helpers: 'spec/*-helper.js' helpers: 'spec/*-helper.js'
styles: 'c3.css' styles: 'c3.css'
vendor: 'https://raw.githubusercontent.com/mbostock/d3/v3.5.0/d3.min.js' vendor: 'https://rawgit.com/mbostock/d3/v3.5.0/d3.min.js'
uglify: uglify:
c3: c3:

21
spec/tooltip-spec.js

@ -98,4 +98,25 @@ describe('c3 chart tooltip', function () {
expect(left).toBe(leftExpected); expect(left).toBe(leftExpected);
}); });
}); });
describe('tooltip getTooltipContent', function () {
beforeAll(function () {
tooltipConfiguration = {
data_order: 'desc'
};
});
it('should sort values desc', function () {
var eventRect = d3.select('.c3-event-rect-2').node();
window.setMouseEvent(chart, 'mousemove', 100, 100, eventRect);
var tooltipTable = d3.select('.c3-tooltip')[0];
var expected = ["", "c3-tooltip-name--data3",
"c3-tooltip-name--data1", "c3-tooltip-name--data2"];
var i;
for (i = 0; i < tooltipTable[0].rows.length; i++) {
expect(tooltipTable[0].rows[i].className).toBe(expected[i]);
}
});
});
}); });

21
src/tooltip.js

@ -29,7 +29,26 @@ c3_chart_internal_fn.getTooltipContent = function (d, defaultTitleFormat, defaul
titleFormat = config.tooltip_format_title || defaultTitleFormat, titleFormat = config.tooltip_format_title || defaultTitleFormat,
nameFormat = config.tooltip_format_name || function (name) { return name; }, nameFormat = config.tooltip_format_name || function (name) { return name; },
valueFormat = config.tooltip_format_value || defaultValueFormat, valueFormat = config.tooltip_format_value || defaultValueFormat,
text, i, title, value, name, bgcolor; text, i, title, value, name, bgcolor,
orderAsc = $$.isOrderAsc();
if (config.data_groups.length === 0) {
d.sort(function(a,b){
return orderAsc ? a.value - b.value : b.value - a.value;
});
} else {
var ids = $$.orderTargets($$.data.targets).map(function (i) {
return i.id;
});
d.sort(function(a, b) {
if (a.value > 0 && b.value > 0) {
return orderAsc ? ids.indexOf(a.id) - ids.indexOf(b.id) : ids.indexOf(b.id) - ids.indexOf(a.id);
} else {
return orderAsc ? a.value - b.value : b.value - a.value;
}
});
}
for (i = 0; i < d.length; i++) { for (i = 0; i < d.length; i++) {
if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; } if (! (d[i] && (d[i].value || d[i].value === 0))) { continue; }

Loading…
Cancel
Save