source: trip-planner-front/node_modules/istanbul-reports/lib/html-spa/src/summaryTableHeader.js

Last change on this file was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 3.8 KB
Line 
1const React = require('react');
2
3function getSortDetails(sortKey, activeSort) {
4 let newSort = { sortKey, order: 'desc' };
5 let sortClass = '';
6 if (activeSort && activeSort.sortKey === sortKey) {
7 sortClass = 'sorted';
8 if (activeSort.order === 'desc') {
9 sortClass += '-desc';
10 newSort.order = 'asc';
11 } else {
12 if (sortKey !== 'file') {
13 newSort = { sortKey: 'file', order: 'desc' };
14 }
15 }
16 }
17
18 return {
19 newSort,
20 sortClass
21 };
22}
23
24function SummaryTableHeaderCell({ name, onSort, sortKey, activeSort }) {
25 const { newSort, sortClass } = getSortDetails(sortKey, activeSort);
26 return (
27 <th
28 className={'sortable headercell ' + sortClass}
29 onClick={() => onSort(newSort)}
30 >
31 {name}
32 <span className="sorter" />
33 </th>
34 );
35}
36
37function FileHeaderCell({ onSort, activeSort }) {
38 const { newSort, sortClass } = getSortDetails('file', activeSort);
39
40 return (
41 <th
42 className={'sortable file ' + sortClass}
43 onClick={() => onSort(newSort)}
44 >
45 File
46 <span className="sorter" />
47 </th>
48 );
49}
50
51function SubHeadings({ sortKeyPrefix, onSort, activeSort }) {
52 return (
53 <>
54 <SummaryTableHeaderCell
55 name="%"
56 onSort={onSort}
57 sortKey={sortKeyPrefix + '.pct'}
58 activeSort={activeSort}
59 />
60 <th className="headercell"></th>
61 <SummaryTableHeaderCell
62 name="Covered"
63 onSort={onSort}
64 sortKey={sortKeyPrefix + '.covered'}
65 activeSort={activeSort}
66 />
67 <SummaryTableHeaderCell
68 name="Missed"
69 onSort={onSort}
70 sortKey={sortKeyPrefix + '.missed'}
71 activeSort={activeSort}
72 />
73 <SummaryTableHeaderCell
74 name="Total"
75 onSort={onSort}
76 sortKey={sortKeyPrefix + '.total'}
77 activeSort={activeSort}
78 />
79 </>
80 );
81}
82
83module.exports = function SummaryTableHeader({
84 onSort,
85 activeSort,
86 metricsToShow
87}) {
88 return (
89 <thead>
90 <tr className="topheading">
91 <th></th>
92 {metricsToShow.statements && <th colSpan={4}>Statements</th>}
93 {metricsToShow.branches && <th colSpan={4}>Branches</th>}
94 {metricsToShow.functions && <th colSpan={4}>Functions</th>}
95 {metricsToShow.lines && <th colSpan={4}>Lines</th>}
96 </tr>
97 <tr className="subheading">
98 <FileHeaderCell onSort={onSort} activeSort={activeSort} />
99 {metricsToShow.statements && (
100 <SubHeadings
101 sortKeyPrefix="statements"
102 onSort={onSort}
103 activeSort={activeSort}
104 />
105 )}
106 {metricsToShow.branches && (
107 <SubHeadings
108 sortKeyPrefix="branches"
109 onSort={onSort}
110 activeSort={activeSort}
111 />
112 )}
113 {metricsToShow.functions && (
114 <SubHeadings
115 sortKeyPrefix="functions"
116 onSort={onSort}
117 activeSort={activeSort}
118 />
119 )}
120 {metricsToShow.lines && (
121 <SubHeadings
122 sortKeyPrefix="lines"
123 onSort={onSort}
124 activeSort={activeSort}
125 />
126 )}
127 </tr>
128 </thead>
129 );
130};
Note: See TracBrowser for help on using the repository browser.