X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Fresults%2FItem.js;h=84395222407e1d50854e283a282a31002b73a328;hb=d32516335ea2534e15256c948e9c38d3de40794b;hp=771c7b62a68ad825a9fe74288db70935c51bdcb5;hpb=d748feb96453d74aeffec648d6f5f68d9ef3b520;p=alttp.git diff --git a/resources/js/components/results/Item.js b/resources/js/components/results/Item.js index 771c7b6..8439522 100644 --- a/resources/js/components/results/Item.js +++ b/resources/js/components/results/Item.js @@ -2,26 +2,62 @@ import PropTypes from 'prop-types'; import React from 'react'; import { withTranslation } from 'react-i18next'; +import Icon from '../common/Icon'; import Box from '../users/Box'; import { formatTime } from '../../helpers/Result'; import { findResult } from '../../helpers/Participant'; -import i18n from '../../i18n'; +import { maySeeResults } from '../../helpers/permissions'; +import { withUser } from '../../helpers/UserContext'; + +const getIcon = (result, maySee) => { + if (!result || !result.has_finished) { + return ; + } + if (result.forfeit && maySee) { + return ; + } + if (result.placement === 1) { + return ; + } + if (result.placement === 2) { + return ; + } + if (result.placement === 3) { + return ; + } + return ; +}; + +const getTime = (result, maySee) => { + if (!result || !maySee) { + return null; + } + if (result.time) { + return formatTime(result); + } + if (result.forfeit) { + return 'DNF'; + } + return '?'; +}; const Item = ({ participant, round, + tournament, + user, }) => { const result = findResult(participant, round); - return ( -
- -
- {result ? - {i18n.t('results.time', { time: formatTime(result) })} - : null} -
+ const maySee = maySeeResults(user, tournament, round); + return
+ +
+ + {getTime(result, maySee)} + + {getIcon(result, maySee)}
- ); +
; }; Item.propTypes = { @@ -37,4 +73,4 @@ Item.propTypes = { }), }; -export default withTranslation()(Item); +export default withTranslation()(withUser(Item));