(function(d3, fc) { 'use strict'; fc.series.table = function() { var columns; var tabulate = function(selection) { selection.each(function(data) { var table = d3.select(this).append('table').attr('class', 'pure-table' ), thead = table.append('thead'), tbody = table.append('tbody'); // append header row thead.append('tr') .selectAll('th') .data(columns) .enter() .append('th') .text(function(column) { return column; }); // table rows var rows = tbody.selectAll('tr') .data(data) .enter() .append('tr'); // table cells var cells = rows.selectAll('td') .data(function(row) { return columns.map(function(column) { return { column: column, value: row[column] }; }); }) .enter() .append('td') .text(function(d) { return d.value; }); return table; }); }; tabulate.columns = function(value) { if (!arguments.length) return columns; columns = value; return this; }; return tabulate; }; }(d3, fc));