(function() { 'use strict'; var parseDate = d3.time.format("%d-%b-%y").parse; var LineChart = d3.chart("Line", { initialize: function(opts) { var path = this.base.append("path") .classed("line", true); var x = this.x = d3.time.scale() .range([0, opts.width]); var y = this.y = d3.scale.linear() .range([opts.height, 0]); var line = d3.svg.line() .x(function(d) { return x(d.date); }) .y(function(d) { return y(d.close); }); this.base.attr('height', opts.height); this.base.attr('width', opts.width); this.layer("line", path, { insert: function() { return this; }, dataBind: function(data) { return this.data([data]) .attr("d", line); } }); }, transform: function(data) { data.forEach(function(d) { d.date = parseDate(d.date); }); this.x.domain(d3.extent(data, function(d) { return d.date; })); this.y.domain(d3.extent(data, function(d) { return d.close; })); return data; } }); }());