import React from 'react';
import './App.scss';
import UserStatsMockService from "./mock/UserStatsMockService";
import UserStats from "./models/TableEntry";
import UserStatsService from "./services/UserStatsService";
import {findDOMNode} from "react-dom";
interface State {
error?: any,
isLoaded: boolean,
users?: UserStats[],
mock?: UserStats[]
}
export default class App extends React.Component {
private apiService: UserStatsService = new UserStatsService();
private mockService: UserStatsService = new UserStatsMockService();
state: State = {
error: null,
isLoaded: false,
users: undefined,
mock: undefined
}
componentDidMount() {
this.setState({isLoaded: false})
this.mockService.getStats()
.then(data => this.setState({mock: data}));
this.apiService.getStats()
.then(data => this.setState({
isLoaded: true,
users: data
}))
.catch(error => this.setState({
isLoaded: true,
error: error
}));
}
componentDidUpdate() {
const element = findDOMNode(this);
if (element != null) {
window.scrollTo(0, 0);
}
}
renderTableData() {
const { error, isLoaded, users, mock } = this.state;
console.log(`${users} + ${isLoaded} + ${error}`)
if (users != null && isLoaded && error == null) {
return users.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} |
)
});
} else if (isLoaded && error != null && mock != null) {
return mock.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} |
)
});
}
}
render() {
return (
Humenius' TeamSpeak 3-Ranking
| Placement |
Name |
Online time |
{this.renderTableData()}
);
}
}
// const App = () => {
// return (
//
//
//
// | Placement |
// Name |
// Online time |
//
//
// | 1 |
// Humen |
// 0d 1h 0m 0m |
//
//
// | 2 |
// Humen |
// 0d 1h 0m 0m |
//
//
// | 3 |
// Humen |
// 0d 1h 0m 0m |
//
//
// | 4 |
// Humen |
// 0d 1h 0m 0m |
//
//
//
// );
// }
// function App() {
// return (
//
//
//
// | Placement |
// Name |
// Online time |
//
//
// | 1 |
// Humen |
// 0d 1h 0m 0m |
//
//
// | 2 |
// Humen |
// 0d 1h 0m 0m |
//
//
// | 3 |
// Humen |
// 0d 1h 0m 0m |
//
//
// | 4 |
// Humen |
// 0d 1h 0m 0m |
//
//
//
// );
// }
// export default App;