ui/infra-compare/InfraCompareTable.jsx (91 lines of code) (raw):
import React from 'react';
import { Table } from 'reactstrap';
import PropTypes from 'prop-types';
import { getJobsUrl } from '../helpers/url';
import { hashFunction } from '../helpers/utils';
import InfraCompareTableRow from './InfraCompareTableRow';
import { getHashBasedId } from './helpers';
export default class InfraCompareTable extends React.PureComponent {
render() {
const {
data,
platform,
validated: { originalProject, newProject, originalRevision, newRevision },
} = this.props;
return (
<Table
id={platform}
aria-label="Comparison table"
sz="small"
className="compare-table mb-0 px-0"
key={platform}
innerRef={(el) => {
this.header = el;
}}
>
<thead>
<tr className="subtest-header bg-lightgray">
<th className="3text-left, table-width-lg">
<span>{platform}</span>
</th>
<th className="table-width-sm">
<a
href={getJobsUrl({
repo: originalProject,
revision: originalRevision,
searchStr: platform,
})}
target="_blank"
rel="noopener noreferrer"
>
sec(Base)
</a>
</th>
{/* empty for less than/greater than data */}
<th className="table-width-sm" aria-label="Comparison" />
<th className="table-width-sm">
<a
href={getJobsUrl({
repo: newProject,
revision: newRevision,
searchStr: platform,
})}
target="_blank"
rel="noopener noreferrer"
>
sec(Base)
</a>
</th>
<th className="table-width-sm">fails(Base)</th>
{/* empty for less than/greater than data */}
<th className="table-width-sm" aria-label="Comparison" />
<th className="table-width-sm">fails(New)</th>
<th className="table-width-sm">Data Points(Base)</th>
{/* empty for less than/greater than data */}
<th className="table-width-sm" aria-label="Comparison" />
<th className="table-width-sm">Data Points(New)</th>
</tr>
</thead>
{data.map((suiteResults) => (
<tbody>
<InfraCompareTableRow
hashkey={getHashBasedId(
suiteResults.suite,
hashFunction,
suiteResults.platform,
)}
rowLevelResults={suiteResults}
{...this.props}
/>
</tbody>
))}
</Table>
);
}
}
InfraCompareTable.propTypes = {
data: PropTypes.arrayOf(PropTypes.shape({})),
};
InfraCompareTable.defaultProps = {
data: null,
};