X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Frounds%2FItem.js;h=fa29f5404daeb71e71a5a5265292cfdc3faf5ccf;hb=a748d5724c8acff6e3bb3fe6c20aa5968b65d58a;hp=064c7dc992ead951105c661cd9dd861b3a557f69;hpb=edd0e97bfdc544114f30bf4c13a929631c44a555;p=alttp.git diff --git a/resources/js/components/rounds/Item.js b/resources/js/components/rounds/Item.js index 064c7dc..fa29f54 100644 --- a/resources/js/components/rounds/Item.js +++ b/resources/js/components/rounds/Item.js @@ -2,24 +2,89 @@ import PropTypes from 'prop-types'; import React from 'react'; import { withTranslation } from 'react-i18next'; +import LockButton from './LockButton'; +import SeedButton from './SeedButton'; +import SeedCode from './SeedCode'; import List from '../results/List'; +import ReportButton from '../results/ReportButton'; +import { isRunner } from '../../helpers/permissions'; +import { isComplete } from '../../helpers/Round'; +import { findParticipant } from '../../helpers/Tournament'; +import { hasFinishedRound } from '../../helpers/User'; +import { withUser } from '../../helpers/UserContext'; import i18n from '../../i18n'; -const Item = ({ round, tournament }) =>
  • -
    - {i18n.t('rounds.date', { date: new Date(round.created_at) })} +const getClassName = (round, tournament, user) => { + const classNames = ['round', 'd-flex']; + 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, +}) => +
  • +
    +

    + {round.number ? `#${round.number} ` : '#?'} + {i18n.t('rounds.date', { date: new Date(round.created_at) })} +

    +

    + {round.code ? + <> + + {' '} + + : null} + +

    + {isRunner(user, tournament) ? +

    + +

    + : null} +
  • ; Item.propTypes = { round: PropTypes.shape({ + code: PropTypes.arrayOf(PropTypes.string), created_at: PropTypes.string, + locked: PropTypes.bool, + number: PropTypes.number, + seed: PropTypes.string, }), tournament: PropTypes.shape({ participants: PropTypes.arrayOf(PropTypes.shape({ })), }), + user: PropTypes.shape({ + }), }; -export default withTranslation()(Item); +export default withTranslation()(withUser(Item));