d3table.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import * as d3 from "https://cdn.jsdelivr.net/npm/d3@7/+esm";
  2. function tabulate(data, containerID) {
  3. var container = d3.select(containerID);
  4. var table = container.append('table');
  5. table.attr("id","table");
  6. var thead = table.append('thead');
  7. var tbody = table.append('tbody');
  8. var columns = data.head.vars;
  9. // append the header row
  10. thead.append('tr')
  11. .selectAll('th')
  12. .data(columns).enter()
  13. .append('th')
  14. .text(function (column) {
  15. return column.replace(/\b\w/g, (match) => match.toUpperCase()).replace(/([A-Z])/g, " $1");
  16. });
  17. // create a row for each object in the data
  18. var rows = tbody.selectAll('tr')
  19. .data(data.results.bindings).enter()
  20. .append('tr');
  21. // create a cell in each row for each column
  22. var cells = rows.selectAll('td')
  23. .data(function (row) {
  24. return columns.map(function (column) {
  25. return {column: column, value: row[column] ? row[column].value : ""};
  26. });
  27. })
  28. .enter()
  29. .append('td')
  30. .text(function (d) { return d.value; });
  31. return table;
  32. }
  33. export { tabulate };
  34. export default tabulate;