+const getClassName = (round, tournament, user) => {
+ const classNames = ['round'];
+ if (round.locked) {
+ classNames.push('is-locked');
+ } else {
+ classNames.push('is-unlocked');
+ }
+ if (isComplete(tournament, round)) {
+ classNames.push('is-complete');
+ } else {
+ classNames.push('is-incomplete');
+ }
+ if (hasFinishedRound(user, round)) {
+ classNames.push('has-finished');
+ } else if (isRunner(user, tournament)) {
+ classNames.push('has-not-finished');
+ }
+ return classNames.join(' ');
+};
+
+const Item = ({
+ round,
+ tournament,
+}) => {
+ const { t } = useTranslation();
+ const { user } = useUser();
+
+return <li className={getClassName(round, tournament, user)}>
+ {round.title ?
+ <h3>{round.title}</h3>
+ : null}
+ <div className="d-flex">
+ <div className="info">
+ <p className="date">
+ {tournament.show_numbers && round.number ? `#${round.number} ` : ''}
+ {t('rounds.date', { date: new Date(round.created_at) })}
+ </p>
+ <p className="seed">
+ {round.code && round.code.length ?
+ <>
+ <SeedCode code={round.code} game={round.game || 'alttpr'} />
+ <br />
+ </>
+ : null}
+ <SeedButton
+ round={round}
+ tournament={tournament}
+ />
+ {' '}
+ <SeedRolledBy round={round} />
+ </p>
+ {mayReportResult(user, tournament) ?
+ <p className="report">
+ <ReportButton
+ round={round}
+ tournament={tournament}
+ user={user}
+ />
+ </p>
+ : null}
+ {tournament.type === 'open-async' && round.results && round.results.length ?
+ <p>{t('rounds.numberOfResults', { count: round.results.length })}</p>
+ : null}
+ <div className="button-bar">
+ <LockButton round={round} tournament={tournament} />
+ {mayEditRound(user, tournament, round) ?
+ <EditButton round={round} tournament={tournament} />
+ : null}
+ </div>
+ </div>
+ <List round={round} tournament={tournament} />
+ </div>
+ </li>;
+};