forked from hpcc-systems/Visualization
-
Notifications
You must be signed in to change notification settings - Fork 1
/
ARIATable.js
50 lines (47 loc) · 1.73 KB
/
ARIATable.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
"use strict";
(function (root, factory) {
if (typeof define === "function" && define.amd) {
define(["d3", "css!./ARIATable"], factory);
} else {
root.common_ARIATable = factory(root.d3, root.common_HTMLWidget);
}
}(this, function (d3, HTMLWidget) {
return function (id, element, columns, data) {
var root = columns && columns.length && data ? ["dummy"] : [];
var table = element.selectAll("table").data(root);
table.enter().append("table")
.attr("class", "common_ARIATable sr-only")
.each(function (d) {
var element = d3.select(this);
element.append("thead").append("tr");
element.append("tbody");
})
;
var _tableHeader = table.select("thead > tr");
var headerCells = _tableHeader.selectAll(".th_" + id).data(columns);
headerCells.enter().append("th")
.attr("class", "th_" + id)
.attr("id", function (d, i) { return "c" + id + "_" + i; })
;
headerCells
.text(function (d) { return d; })
;
headerCells.exit().remove();
var _tableBody = table.select("tbody");
var rows = _tableBody.selectAll(".tr_" + id).data(data);
rows.enter().append("tr")
.attr("class", "tr_" + id)
;
var cells = rows.selectAll(".td_" + id).data(function (d) { return d; });
cells.enter().append("td")
.attr("class", "td_" + id)
.attr("headers", function (d, i) { return "c" + id + "_" + i; })
;
cells
.text(function (d) { return d; })
;
cells.exit().remove();
rows.exit().remove();
table.exit().remove();
};
}));