Skip to content

Commit 026ecae

Browse files
committed
[dc-js#105] implement mutli-selection in ordinal bar chart
1 parent 69057ba commit 026ecae

File tree

6 files changed

+23
-20
lines changed

6 files changed

+23
-20
lines changed

dc.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2452,13 +2452,17 @@ dc.barChart = function (parent, chartGroup) {
24522452
var extent = _chart.brush().extent();
24532453

24542454
if (_chart.isOrdinal()) {
2455-
if (_chart.filter() != null)
2455+
if (_chart.hasFilter()) {
2456+
bars.classed(dc.constants.SELECTED_CLASS, function (d) {
2457+
return _chart.hasFilter(_chart.keyAccessor()(d));
2458+
});
24562459
bars.classed(dc.constants.DESELECTED_CLASS, function (d) {
2457-
var key = _chart.keyAccessor()(d);
2458-
return key != _chart.filter();
2460+
return !_chart.hasFilter(_chart.keyAccessor()(d));
24592461
});
2460-
else
2462+
} else {
2463+
bars.classed(dc.constants.SELECTED_CLASS, false);
24612464
bars.classed(dc.constants.DESELECTED_CLASS, false);
2465+
}
24622466
} else {
24632467
if (!_chart.brushIsEmpty(extent)) {
24642468
var start = extent[0];

dc.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/bar-chart.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,17 @@ dc.barChart = function (parent, chartGroup) {
144144
var extent = _chart.brush().extent();
145145

146146
if (_chart.isOrdinal()) {
147-
if (_chart.filter() != null)
147+
if (_chart.hasFilter()) {
148+
bars.classed(dc.constants.SELECTED_CLASS, function (d) {
149+
return _chart.hasFilter(_chart.keyAccessor()(d));
150+
});
148151
bars.classed(dc.constants.DESELECTED_CLASS, function (d) {
149-
var key = _chart.keyAccessor()(d);
150-
return key != _chart.filter();
152+
return !_chart.hasFilter(_chart.keyAccessor()(d));
151153
});
152-
else
154+
} else {
155+
bars.classed(dc.constants.SELECTED_CLASS, false);
153156
bars.classed(dc.constants.DESELECTED_CLASS, false);
157+
}
154158
} else {
155159
if (!_chart.brushIsEmpty(extent)) {
156160
var start = extent[0];

test/bar-chart-test.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -516,10 +516,11 @@ suite.addBatch({'ordinal bar chart': {
516516
assert.match(d3.select(chart.selectAll("rect.bar")[0][5]).attr("x"), /467.\d+/);
517517
},
518518
'should fade deselected bars': function (chart) {
519-
chart.filter("Ontario").redraw();
519+
chart.filter("Ontario").filter("Colorado").redraw();
520520
assert.isTrue(d3.select(chart.selectAll("rect.bar")[0][0]).classed("deselected"));
521+
assert.isFalse(d3.select(chart.selectAll("rect.bar")[0][1]).classed("deselected"));
521522
assert.isFalse(d3.select(chart.selectAll("rect.bar")[0][5]).classed("deselected"));
522-
assert.equal(stateDimension.top(Infinity).length, 2);
523+
assert.equal(stateDimension.top(Infinity).length, 3);
523524
},
524525
teardown: function (topic) {
525526
resetAllFilters();

test/dc.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
.dc-chart rect.bar {
66
stroke: none;
77
fill: steelblue;
8+
cursor: pointer;
89
}
910

1011
.dc-chart rect.bar:hover {

test/play-ground.html

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -799,14 +799,7 @@
799799
.group(stateGroup)
800800
.elasticY(true)
801801
.x(d3.scale.ordinal().domain(["California", "Colorado", "Delaware", "Mississippi", "Oklahoma", "Ontario"]))
802-
.xUnits(dc.units.ordinal)
803-
.renderlet(function(chart){
804-
var colors =d3.scale.ordinal().domain(["California", "Colorado", "Delaware", "Mississippi", "Oklahoma", "Ontario"])
805-
.range(["steelblue", "brown", "red", "green", "yellow", "grey"]);
806-
chart.selectAll('rect.bar').each(function(d){
807-
d3.select(this).attr("style", "fill: " + colors(d.key));
808-
});
809-
});
802+
.xUnits(dc.units.ordinal);
810803

811804
var ordinalLineChart = dc.lineChart("#ordinal-line-chart");
812805
ordinalLineChart.width(500)

0 commit comments

Comments
 (0)