feat: initial commit
This commit is contained in:
159
node_modules/istanbul-reports/lib/html-spa/src/summaryTableLine.js
generated
vendored
Normal file
159
node_modules/istanbul-reports/lib/html-spa/src/summaryTableLine.js
generated
vendored
Normal file
@@ -0,0 +1,159 @@
|
||||
const React = require('react');
|
||||
|
||||
function MetricCells({ metrics }) {
|
||||
const { classForPercent, pct, covered, missed, total } = metrics;
|
||||
|
||||
return (
|
||||
<>
|
||||
<td className={'pct ' + classForPercent}>{Math.round(pct)}% </td>
|
||||
<td className={classForPercent}>
|
||||
<div className="bar">
|
||||
<div
|
||||
className={`bar__data ${classForPercent} ${classForPercent}--dark`}
|
||||
style={{ width: pct + '%' }}
|
||||
></div>
|
||||
</div>
|
||||
</td>
|
||||
<td className={'abs ' + classForPercent}>{covered}</td>
|
||||
<td className={'abs ' + classForPercent}>{missed}</td>
|
||||
<td className={'abs ' + classForPercent}>{total}</td>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
function FileCell({
|
||||
file,
|
||||
prefix,
|
||||
expandedLines,
|
||||
setExpandedLines,
|
||||
hasChildren,
|
||||
setFileFilter
|
||||
}) {
|
||||
if (hasChildren) {
|
||||
const expandedIndex = expandedLines.indexOf(prefix + file);
|
||||
const isExpanded = expandedIndex >= 0;
|
||||
const newExpandedLines = isExpanded
|
||||
? [
|
||||
...expandedLines.slice(0, expandedIndex),
|
||||
...expandedLines.slice(expandedIndex + 1)
|
||||
]
|
||||
: [...expandedLines, prefix + file];
|
||||
|
||||
return (
|
||||
<>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => setExpandedLines(newExpandedLines)}
|
||||
className="expandbutton"
|
||||
>
|
||||
{isExpanded ? String.fromCharCode(0x2013) : '+'}
|
||||
</button>
|
||||
<a
|
||||
href="javascript:void(0)"
|
||||
onClick={() => setFileFilter(prefix + file)}
|
||||
>
|
||||
{file}
|
||||
</a>
|
||||
</>
|
||||
);
|
||||
} else {
|
||||
return <a href={`./${prefix}${file}.html`}>{file}</a>;
|
||||
}
|
||||
}
|
||||
|
||||
function getWorstMetricClassForPercent(metricsToShow, metrics) {
|
||||
let classForPercent = 'none';
|
||||
for (const metricToShow in metricsToShow) {
|
||||
if (metricsToShow[metricToShow]) {
|
||||
const metricClassForPercent = metrics[metricToShow].classForPercent;
|
||||
|
||||
// ignore none metrics so they don't change whats shown
|
||||
if (metricClassForPercent === 'none') {
|
||||
continue;
|
||||
}
|
||||
|
||||
// if the metric low or lower than whats currently being used, replace it
|
||||
if (
|
||||
metricClassForPercent == 'low' ||
|
||||
(metricClassForPercent === 'medium' &&
|
||||
classForPercent !== 'low') ||
|
||||
(metricClassForPercent === 'high' &&
|
||||
classForPercent !== 'low' &&
|
||||
classForPercent !== 'medium')
|
||||
) {
|
||||
classForPercent = metricClassForPercent;
|
||||
}
|
||||
}
|
||||
}
|
||||
return classForPercent;
|
||||
}
|
||||
|
||||
module.exports = function SummaryTableLine({
|
||||
prefix,
|
||||
metrics,
|
||||
file,
|
||||
children,
|
||||
tabSize,
|
||||
metricsToShow,
|
||||
expandedLines,
|
||||
setExpandedLines,
|
||||
fileFilter,
|
||||
setFileFilter
|
||||
}) {
|
||||
tabSize = tabSize || 0;
|
||||
if (children && tabSize > 0) {
|
||||
tabSize--;
|
||||
}
|
||||
prefix = (fileFilter ? fileFilter + '/' : '') + (prefix || '');
|
||||
|
||||
return (
|
||||
<>
|
||||
<tr>
|
||||
<td
|
||||
className={
|
||||
'file ' +
|
||||
getWorstMetricClassForPercent(metricsToShow, metrics)
|
||||
}
|
||||
>
|
||||
{/* eslint-disable-line prefer-spread */ Array.apply(null, {
|
||||
length: tabSize
|
||||
}).map((nothing, index) => (
|
||||
<span className="filetab" key={index} />
|
||||
))}
|
||||
<FileCell
|
||||
file={file}
|
||||
prefix={prefix}
|
||||
expandedLines={expandedLines}
|
||||
setExpandedLines={setExpandedLines}
|
||||
hasChildren={Boolean(children)}
|
||||
setFileFilter={setFileFilter}
|
||||
/>
|
||||
</td>
|
||||
{metricsToShow.statements && (
|
||||
<MetricCells metrics={metrics.statements} />
|
||||
)}
|
||||
{metricsToShow.branches && (
|
||||
<MetricCells metrics={metrics.branches} />
|
||||
)}
|
||||
{metricsToShow.functions && (
|
||||
<MetricCells metrics={metrics.functions} />
|
||||
)}
|
||||
{metricsToShow.lines && <MetricCells metrics={metrics.lines} />}
|
||||
</tr>
|
||||
{children &&
|
||||
expandedLines.indexOf(prefix + file) >= 0 &&
|
||||
children.map(child => (
|
||||
<SummaryTableLine
|
||||
{...child}
|
||||
tabSize={tabSize + 2}
|
||||
key={child.file}
|
||||
prefix={prefix + file + '/'}
|
||||
metricsToShow={metricsToShow}
|
||||
expandedLines={expandedLines}
|
||||
setExpandedLines={setExpandedLines}
|
||||
setFileFilter={setFileFilter}
|
||||
/>
|
||||
))}
|
||||
</>
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user