123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- const React = require('react');
- function getSortDetails(sortKey, activeSort) {
- let newSort = { sortKey, order: 'desc' };
- let sortClass = '';
- if (activeSort && activeSort.sortKey === sortKey) {
- sortClass = 'sorted';
- if (activeSort.order === 'desc') {
- sortClass += '-desc';
- newSort.order = 'asc';
- } else {
- if (sortKey !== 'file') {
- newSort = { sortKey: 'file', order: 'desc' };
- }
- }
- }
- return {
- newSort,
- sortClass
- };
- }
- function SummaryTableHeaderCell({ name, onSort, sortKey, activeSort }) {
- const { newSort, sortClass } = getSortDetails(sortKey, activeSort);
- return (
- <th
- className={'sortable headercell ' + sortClass}
- onClick={() => onSort(newSort)}
- >
- {name}
- <span className="sorter" />
- </th>
- );
- }
- function FileHeaderCell({ onSort, activeSort }) {
- const { newSort, sortClass } = getSortDetails('file', activeSort);
- return (
- <th
- className={'sortable file ' + sortClass}
- onClick={() => onSort(newSort)}
- >
- File
- <span className="sorter" />
- </th>
- );
- }
- function SubHeadings({ sortKeyPrefix, onSort, activeSort }) {
- return (
- <>
- <SummaryTableHeaderCell
- name="%"
- onSort={onSort}
- sortKey={sortKeyPrefix + '.pct'}
- activeSort={activeSort}
- />
- <th className="headercell"></th>
- <SummaryTableHeaderCell
- name="Covered"
- onSort={onSort}
- sortKey={sortKeyPrefix + '.covered'}
- activeSort={activeSort}
- />
- <SummaryTableHeaderCell
- name="Missed"
- onSort={onSort}
- sortKey={sortKeyPrefix + '.missed'}
- activeSort={activeSort}
- />
- <SummaryTableHeaderCell
- name="Total"
- onSort={onSort}
- sortKey={sortKeyPrefix + '.total'}
- activeSort={activeSort}
- />
- </>
- );
- }
- module.exports = function SummaryTableHeader({
- onSort,
- activeSort,
- metricsToShow
- }) {
- return (
- <thead>
- <tr className="topheading">
- <th></th>
- {metricsToShow.statements && <th colSpan={4}>Statements</th>}
- {metricsToShow.branches && <th colSpan={4}>Branches</th>}
- {metricsToShow.functions && <th colSpan={4}>Functions</th>}
- {metricsToShow.lines && <th colSpan={4}>Lines</th>}
- </tr>
- <tr className="subheading">
- <FileHeaderCell onSort={onSort} activeSort={activeSort} />
- {metricsToShow.statements && (
- <SubHeadings
- sortKeyPrefix="statements"
- onSort={onSort}
- activeSort={activeSort}
- />
- )}
- {metricsToShow.branches && (
- <SubHeadings
- sortKeyPrefix="branches"
- onSort={onSort}
- activeSort={activeSort}
- />
- )}
- {metricsToShow.functions && (
- <SubHeadings
- sortKeyPrefix="functions"
- onSort={onSort}
- activeSort={activeSort}
- />
- )}
- {metricsToShow.lines && (
- <SubHeadings
- sortKeyPrefix="lines"
- onSort={onSort}
- activeSort={activeSort}
- />
- )}
- </tr>
- </thead>
- );
- };
|