Icon.STOP = makePreset('StopIcon', 'stop');
Icon.STREAM = makePreset('StreamIcon', ['fab', 'twitch']);
Icon.THIRD_PLACE = makePreset('ThirdPlaceIcon', 'award');
+Icon.TIME_REVERSE = makePreset('TimeReverseIcon', 'clock-rotate-left');
Icon.TWITCH = makePreset('TwitchIcon', ['fab', 'twitch']);
Icon.UNKNOWN = makePreset('UnknownIcon', 'square-question');
Icon.UNLOCKED = makePreset('UnlockedIcon', 'lock-open');
ongoing: 'Laufende Veranstaltungen',
past: 'Vergangene Veranstaltungen',
pastEpisodes: 'Vergangene Rennen',
+ setFutureMode: 'Anstehende Rennen zeigen',
+ setPastMode: 'Vergangene Rennen zeigen',
start: 'Start',
upcomingEpisodes: 'Anstehende Rennen',
},
import axios from 'axios';
import moment from 'moment';
import React from 'react';
-import { Container } from 'react-bootstrap';
+import { Button, Container } from 'react-bootstrap';
import { Helmet } from 'react-helmet';
import { useTranslation } from 'react-i18next';
import { useParams } from 'react-router-dom';
import CanonicalLinks from '../components/common/CanonicalLinks';
import ErrorBoundary from '../components/common/ErrorBoundary';
import ErrorMessage from '../components/common/ErrorMessage';
+import Icon from '../components/common/Icon';
import Loading from '../components/common/Loading';
import EpisodeList from '../components/episodes/List';
import Detail from '../components/events/Detail';
const [editContent, setEditContent] = React.useState(null);
const [episodes, setEpisodes] = React.useState([]);
+ const [pastMode, setPastMode] = React.useState(false);
const [showContentDialog, setShowContentDialog] = React.useState(false);
const actions = React.useMemo(() => ({
if (hasConcluded(event)) {
params.limit = 25;
params.reverse = '1';
+ } else if (pastMode) {
+ params.before = moment().add(3, 'hours').toISOString();
+ params.limit = 25;
+ params.reverse = '1';
} else {
params.after = moment().subtract(3, 'hours').toISOString();
params.before = moment().add(14, 'days').toISOString();
console.error(e);
}
});
- }, []);
+ }, [pastMode]);
const saveContent = React.useCallback(async values => {
try {
<Container>
<Detail actions={actions} event={event} />
{episodes.length ? <>
- <h2 className="mt-4">
- {t(hasConcluded(event)
- ? 'events.pastEpisodes'
- : 'events.upcomingEpisodes'
- )}
- </h2>
+ <div className="d-flex align-items-center justify-content-between">
+ <h2 className="mt-4">
+ {t(pastMode || hasConcluded(event)
+ ? 'events.pastEpisodes'
+ : 'events.upcomingEpisodes'
+ )}
+ </h2>
+ <div className="button-bar">
+ {!hasConcluded(event) ?
+ <Button
+ className="ms-3"
+ onClick={() => setPastMode(!pastMode)}
+ title={t(pastMode ? 'events.setFutureMode' : 'events.setPastMode')}
+ variant="outline-secondary"
+ >
+ <Icon.TIME_REVERSE title="" />
+ </Button>
+ : null}
+ </div>
+ </div>
<EpisodeList episodes={episodes} />
</> : null}
</Container>