in torchci/pages/minihud.tsx [212:276]
function CommitSummary({ row }: { row: RowData }) {
const [jobFilter, _setJobFilter] = useContext(JobFilterContext);
const [hover, setHover] = useState(false);
const [highlighted, setHighlighted] = useState(false);
const existingJobs = row.jobs.filter((job) => job.conclusion !== undefined);
const jobs =
jobFilter === null
? existingJobs
: existingJobs.filter((job) =>
includesCaseInsensitive(job.name!, jobFilter)
);
const failedJobs = jobs.filter(isFailedJob);
const pendingJobs = jobs.filter((job) => job.conclusion === "pending");
let className;
if (jobs.length === 0) {
className = styles.workflowBoxNone;
} else if (failedJobs.length !== 0) {
className = styles.workflowBoxFail;
} else if (pendingJobs.length === 0) {
className = styles.workflowBoxSuccess;
} else {
className = styles.workflowBoxPending;
}
if (highlighted) {
className += " " + styles.workflowBoxHighlight;
}
useEffect(() => {
const onHashChanged = () => {
if (window.location.hash === "") {
return;
}
const hash = window.location.hash.slice(1);
setHighlighted(hash === row.sha);
};
onHashChanged();
window.addEventListener("hashchange", onHashChanged);
return () => {
window.removeEventListener("hashchange", onHashChanged);
};
}, [row.sha]);
return (
<div
id={row.sha}
onMouseEnter={() => setHover(true)}
onMouseLeave={() => setHover(false)}
className={className}
>
<CommitSummaryLine
row={row}
numPending={pendingJobs.length}
showRevert={failedJobs.length !== 0}
showAnchorLink={hover}
/>
<FailedJobs failedJobs={failedJobs} />
</div>
);
}