X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;ds=sidebyside;f=resources%2Fjs%2Fcomponents%2Frounds%2FItem.js;h=3197f6d9aa64da0a8df2c68a02b7f1a522deae7b;hb=c5b15dc5518c627daa4f02f653ff900e4fe13db7;hp=d352cd126263fb49044157ff31b093a1c658609e;hpb=a907ef7c6676fef11f42933b2d79bdd496b20122;p=alttp.git diff --git a/resources/js/components/rounds/Item.js b/resources/js/components/rounds/Item.js index d352cd1..3197f6d 100644 --- a/resources/js/components/rounds/Item.js +++ b/resources/js/components/rounds/Item.js @@ -1,47 +1,98 @@ import PropTypes from 'prop-types'; import React from 'react'; -import { Button } from 'react-bootstrap'; import { withTranslation } from 'react-i18next'; +import EditButton from './EditButton'; +import LockButton from './LockButton'; import SeedButton from './SeedButton'; +import SeedCode from './SeedCode'; +import SeedRolledBy from './SeedRolledBy'; import List from '../results/List'; import ReportButton from '../results/ReportButton'; -import { maySetSeed, isParticipant } from '../../helpers/permissions'; -import { findParticipant } from '../../helpers/Tournament'; +import { mayEditRound, mayReportResult, isRunner } from '../../helpers/permissions'; +import { isComplete } from '../../helpers/Round'; +import { hasFinishedRound } from '../../helpers/User'; import { withUser } from '../../helpers/UserContext'; import i18n from '../../i18n'; +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, user, }) => -
{i18n.t('rounds.date', { date: new Date(round.created_at) })}
-
-
-
+ {round.number ? `#${round.number} ` : '#?'}
+ {i18n.t('rounds.date', { date: new Date(round.created_at) })}
+
+ {round.code && round.code.length ?
+ <>
+
+ {round.title}
+ : null}
+
+ >
+ : null}
+
;
Item.propTypes = {
round: PropTypes.shape({
+ code: PropTypes.arrayOf(PropTypes.string),
created_at: PropTypes.string,
+ game: PropTypes.string,
+ locked: PropTypes.bool,
+ number: PropTypes.number,
seed: PropTypes.string,
+ title: PropTypes.string,
}),
tournament: PropTypes.shape({
participants: PropTypes.arrayOf(PropTypes.shape({