From 07f0d696294c8c47e5b8fc49d370a0896dccb2d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ha=CC=88cker?= Date: Mon, 2 Dec 2013 11:49:40 +0100 Subject: [PATCH] Respect series classes in legend renderer (to allow the color of the swatch to be controlled by css --- src/js/Rickshaw.Graph.Legend.js | 4 +++- tests/Rickshaw.Graph.Legend.js | 21 +++++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/js/Rickshaw.Graph.Legend.js b/src/js/Rickshaw.Graph.Legend.js index 213c989e..3643b452 100644 --- a/src/js/Rickshaw.Graph.Legend.js +++ b/src/js/Rickshaw.Graph.Legend.js @@ -50,7 +50,9 @@ Rickshaw.Graph.Legend = Rickshaw.Class.create( { if (series.disabled) { line.className += ' disabled'; } - + if (series.className) { + d3.select(line).classed(series.className, true); + } var swatch = document.createElement('div'); swatch.className = 'swatch'; swatch.style.backgroundColor = series.color; diff --git a/tests/Rickshaw.Graph.Legend.js b/tests/Rickshaw.Graph.Legend.js index c0503f8f..6144b956 100644 --- a/tests/Rickshaw.Graph.Legend.js +++ b/tests/Rickshaw.Graph.Legend.js @@ -68,15 +68,28 @@ exports.hasDefaultClassName = function(test) { }; exports.canOverrideClassName = function(test) { - var MyLegend = Rickshaw.Class.create( Rickshaw.Graph.Legend, { - className: 'fnord' - }); + var MyLegend = Rickshaw.Class.create( Rickshaw.Graph.Legend, { + className: 'fnord' + }); var legend = new MyLegend({ graph: this.graph, element: this.legendEl }); - + test.equal(this.legendEl.className, "fnord") test.done(); }; +exports['should put series classes on legend elements'] = function(test) { + this.graph.series[0].className = 'fnord-series-0'; + this.graph.series[1].className = 'fnord-series-1'; + + var legend = new Rickshaw.Graph.Legend({ + graph: this.graph, + element: this.legendEl + }); + test.equal(d3.select(this.legendEl).selectAll('.line').size(), 2); + test.equal(d3.select(this.legendEl).selectAll('.fnord-series-0').size(), 1); + test.equal(d3.select(this.legendEl).selectAll('.fnord-series-1').size(), 1); + test.done(); +}; \ No newline at end of file