mirror of
https://github.com/apache/superset.git
synced 2024-09-19 20:19:37 -04:00
60 lines
1.3 KiB
JavaScript
60 lines
1.3 KiB
JavaScript
// from http://bl.ocks.org/3687826
|
|
module.exports = function(config) {
|
|
var columns = [];
|
|
|
|
var dg = function(selection) {
|
|
if (columns.length == 0) columns = d3.keys(selection.data()[0][0]);
|
|
|
|
// header
|
|
selection.selectAll(".header")
|
|
.data([true])
|
|
.enter().append("div")
|
|
.attr("class", "header")
|
|
|
|
var header = selection.select(".header")
|
|
.selectAll(".cell")
|
|
.data(columns);
|
|
|
|
header.enter().append("div")
|
|
.attr("class", function(d,i) { return "col-" + i; })
|
|
.classed("cell", true)
|
|
|
|
selection.selectAll(".header .cell")
|
|
.text(function(d) { return d; });
|
|
|
|
header.exit().remove();
|
|
|
|
// rows
|
|
var rows = selection.selectAll(".row")
|
|
.data(function(d) { return d; })
|
|
|
|
rows.enter().append("div")
|
|
.attr("class", "row")
|
|
|
|
rows.exit().remove();
|
|
|
|
var cells = selection.selectAll(".row").selectAll(".cell")
|
|
.data(function(d) { return columns.map(function(col){return d[col];}) })
|
|
|
|
// cells
|
|
cells.enter().append("div")
|
|
.attr("class", function(d,i) { return "col-" + i; })
|
|
.classed("cell", true)
|
|
|
|
cells.exit().remove();
|
|
|
|
selection.selectAll(".cell")
|
|
.text(function(d) { return d; });
|
|
|
|
return dg;
|
|
};
|
|
|
|
dg.columns = function(_) {
|
|
if (!arguments.length) return columns;
|
|
columns = _;
|
|
return this;
|
|
};
|
|
|
|
return dg;
|
|
};
|