var RenderControls = function(args) { var $ = jQuery; this.initialize = function() { this.element = args.element; this.graph = args.graph; this.settings = this.serialize(); this.inputs = { renderer: this.element.elements.renderer }; this.element.addEventListener('change', function(e) { this.settings = this.serialize(); this.syncOptions(); this.settings = this.serialize(); var config = { renderer: this.settings.renderer }; this.graph.configure(config); this.graph.render(); }.bind(this), false); } this.serialize = function() { var values = {}; var pairs = $(this.element).serializeArray(); pairs.forEach( function(pair) { values[pair.name] = pair.value; } ); return values; }; this.syncOptions = function() { var options = this.rendererOptions[this.settings.renderer]; }; this.rendererOptions = { area: { interpolation: true, offset: ['zero', 'wiggle', 'expand', 'value'], defaults: { offset: 'zero' } }, line: { interpolation: true, offset: ['expand', 'value'], defaults: { offset: 'value' } }, bar: { interpolation: false, offset: ['zero', 'wiggle', 'expand', 'value'], defaults: { offset: 'zero' } }, scatterplot: { interpolation: false, offset: ['value'], defaults: { offset: 'value' } } }; this.initialize(); };