import React from 'react'; import './App.scss'; import UserStatsMockService from "./mock/UserStatsMockService"; import UserStatsService from "./services/UserStatsService"; import {findDOMNode} from "react-dom"; import TableEntry from "./models/TableEntry"; interface State { error?: string, isLoaded: boolean, users?: TableEntry[], mock?: TableEntry[] } export default class App extends React.Component { private apiService: UserStatsService = new UserStatsService(); private mockService = new UserStatsMockService(); state: State = { error: undefined, isLoaded: false, users: undefined, mock: undefined } componentDidMount() { this.setState({isLoaded: false, mock: this.mockService.getStatsWithoutPromise()}); // this.mockService.getStats() // .then(data => this.setState({ // data: data, // mock: data // })) // .finally(() => { // }); this.apiService.getStats() .then(data => this.setState({ isLoaded: true, users: data })) .catch(error => { error.response.json() .then((err: any) => this.setState({ isLoaded: true, error: err.error })) }); } componentDidUpdate() { const element = findDOMNode(this); if (element != null) { window.scrollTo(0, 0); } } createTableEntries(entries: TableEntry[]) { return entries.map((entry, index) => { const placement = index + 1; const placementClassName = placement === 1 ? "first-place" : (placement === 2 ? "second-place" : (placement === 3 ? "third-place" : undefined)) return ( {placement} {entry.name} {entry.onlineTime} ) }); } renderTableData() { const { error, isLoaded, users, mock } = this.state; if (users != null && isLoaded && error == null) { return this.createTableEntries(users); } else if (isLoaded && error != null && mock != null) { return this.createTableEntries(mock); } else if (mock != null) { return this.createTableEntries(mock); } } render() { return (

Humenius' TeamSpeak 3-Ranking

{ this.state.error != null ?

{ this.state.error } Please try again later!

: null} {this.renderTableData()}
Placement Name Online time
); } }