UNPKG

study-overview

Version:

a high-level summary of study accrual and data cleaning metrics

92 lines (90 loc) 4.21 kB
export default function createTable(by = null) { this.settings.modules.forEach(module => { module.containers = { card: this.containers.cards.filter(d => d.spec === module.spec), header: this.containers.headers.filter(d => d.spec === module.spec), table: this.containers.tables.filter(d => d.spec === module.spec) }; if (by) { module.containers.header = module.containers.table .append('thead') .classed('so-card__table__header', true) .append('tr') .selectAll('th') .data([...[''], ...(module.byValues || []), ...['Overall']]) .enter() .append('th') .classed('so-card__table__header__cell', true) .text(d => d); } if (module.results) { module.containers.body = module.containers.table.append('tbody'); module.containers.rows = module.containers.body .selectAll('tr') .data(module.results) .enter() .append('tr') .classed('so-card__table__row', true); module.containers.rows.each(function(d) { //console.log(d); const row = d3.select(this); row.selectAll('td') .data( d3.merge([ [{ value: d.label }], [...(module.byValues || []), ...['_overall_']].map( cell => d.summary.row[cell] || { numerator: null, value: null } ) ]) ) .enter() .append('td') .attr( 'class', (d, i) => `so-card__table__row__cell ${ i === 0 ? 'so-card__table__row__cell-key' : 'so-card__table__row__cell-value' }` ) .text(di => di.value || ''); if (d.summary.rows) { row.classed('so-card__table__row--by-group', true); d.summary.rows .filter(row => row.key !== '_overall_') .reverse() .forEach(row => { const el = document.createElement('tr'); this.parentNode.insertBefore(el, this.nextSibling); const byRow = d3 .select(el) .classed('so-card__table__row so-card__table__row--by-value', true); byRow .selectAll('td') .data( d3.merge([ [{ value: row.key }], [...(module.byValues || []), ...['_overall_']].map( cell => row[cell] || { numerator: null, value: null } ) ]) ) .enter() .append('td') .attr( 'class', (di, i) => `so-card__table__row__cell ${ i === 0 ? 'so-card__table__row__cell-key' : 'so-card__table__row__cell-value' }` ) .text(di => di.value || ''); }); } }); } }); }