import extend from 'extend'; const DEFAULTS = { outer_width: 500, outer_height: 300, margin: {top: 0, left: 70, bottom: 50, right: 20}, domain_ticks: 10, range_ticks: 8, container: "container", time_series: true, range_label: "range", domain_attr: null, range_attr: titleize: function(series, datum){ var s = datum ? datum.name : series.name, words = s.split(' '), array = []; for (var i=0; i{ series_data.range_min = Math.min(series_data.range_min, value[line_chart.range_attr]); series_data.range_max = Math.max(series_data.range_max, value[line_chart.range_attr]); series_data.domain_min = Math.min(series_data.domain_min, value[line_chart.domain_attr]); series_data.domain_max = Math.max(series_data.domain_max, value[line_chart.domain_attr]); }); serialized_data.series.push(series); }); return serialized_data; }; drawData(data){ var line_chart = this; data = line_chart.serialize_data; // calibrate axes bar_chart.y_scale.domain([Math.min(0, data.range_min), data.range_max]); bar_chart.svg.select(".d3-chart-range.d3-chart-axis") .call(bar_chart.y_axis); bar_chart.x_scale.domain([Math.min(data.domain_min), data.domain_max]); bar_chart.svg.select(".d3-chart-domain.d3-chart-axis").call(bar_chart.x_axis); // draw lines var line = g.selectAll(".d3-chart-series") .data(data.series); [line.enter().append('g'), line.transition()].forEach((groups)=>{ line_chart.applyData(groups); }); line.exit().remove(); } applyData(groups){ var line_chart = this; groups .attr('class', function(series){ return "d3-chart-line " + series.css_class; ) .attr("title", function(series){ return series.title; }) .append("path") .attr("d", function(series){ return line_chart.line(series.values); }) .style("stroke", function(series){ return line_chart.color(series.title); }); } } export default LineChart;