diff --git a/src/view.graph.js b/src/view.graph.js index bcde3e57..d0371d69 100644 --- a/src/view.graph.js +++ b/src/view.graph.js @@ -15,9 +15,10 @@ this.recline.View = this.recline.View || {}; // { // group: {column name for x-axis}, // series: [{column name for series A}, {column name series B}, ... ], -// graphType: 'line' +// graphType: 'line', +// graphOptions: {custom [Flotr2 options](http://www.humblesoftware.com/flotr2/documentation#configuration)} // } -// +// // NB: should *not* provide an el argument to the view but must let the view // generate the element itself (you can then append view.el to the DOM. my.Graph = Backbone.View.extend({ @@ -247,7 +248,14 @@ my.Graph = Backbone.View.extend({ }, grid: { hoverable: true, clickable: true } }; - return optionsPerGraphType[typeId]; + + if (self.state.get('graphOptions')){ + return _.extend(optionsPerGraphType[typeId], + self.state.get('graphOptions') + ) + }else{ + return optionsPerGraphType[typeId]; + } }, createSeries: function() { diff --git a/test/view.graph.test.js b/test/view.graph.test.js index d7de87c5..25a04d6c 100644 --- a/test/view.graph.test.js +++ b/test/view.graph.test.js @@ -69,3 +69,18 @@ test('GraphControls basics', function () { view.remove(); }); +test('Overriding graph options', function () { + var dataset = Fixture.getDataset(); + var randomWidth = Math.random(); + var view = new recline.View.Graph({ + model: dataset, + state: { + 'graphType': 'bars', + 'group': 'date', + 'series': ['y', 'z'], + 'graphOptions': { bars: {barWidth: randomWidth}} + } + }); + equal(view.getGraphOptions('bars').bars.barWidth, randomWidth) + view.remove(); +}); \ No newline at end of file