]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/components/protocol/Item.js
allow admins to lock/unlock rounds
[alttp.git] / resources / js / components / protocol / Item.js
index 6127a92958ec1b4769442c5546efe903212a1391..3b16eeb11c9da1307a9f7b142affaba2e89c7060 100644 (file)
@@ -2,9 +2,11 @@ import moment from 'moment';
 import PropTypes from 'prop-types';
 import React from 'react';
 import { ListGroup } from 'react-bootstrap';
-import { withTranslation } from 'react-i18next';
+import { Trans, withTranslation } from 'react-i18next';
 
 import Icon from '../common/Icon';
+import Spoiler from '../common/Spoiler';
+import { formatTime } from '../../helpers/Result';
 import i18n from '../../i18n';
 
 const getEntryDate = entry => {
@@ -14,9 +16,35 @@ const getEntryDate = entry => {
                : dateStr;
 };
 
+const getEntryRoundNumber = entry =>
+       (entry && entry.details && entry.details.round && entry.details.round.number) || '?';
+
+const getEntryResultTime = entry => {
+       if (!entry || !entry.details || !entry.details.result) return 'ERROR';
+       const result = entry.details.result;
+       if (result.forfeit) return 'DNF XX';
+       return formatTime(result);
+};
+
 const getEntryDescription = entry => {
        switch (entry.type) {
+               case 'result.report': {
+                       const time = getEntryResultTime(entry);
+                       return <Trans i18nKey={`protocol.description.${entry.type}`}>
+                               <Spoiler>{{time}}</Spoiler>,
+                       </Trans>;
+               }
                case 'round.create':
+               case 'round.lock':
+               case 'round.unlock':
+                       return i18n.t(
+                               `protocol.description.${entry.type}`,
+                               {
+                                       ...entry,
+                                       number: getEntryRoundNumber(entry),
+                               },
+                       );
+               case 'tournament.lock':
                        return i18n.t(
                                `protocol.description.${entry.type}`,
                                entry,