diff --git a/backend/src/main.ts b/backend/src/main.ts
index 13cad38..2031452 100644
--- a/backend/src/main.ts
+++ b/backend/src/main.ts
@@ -3,6 +3,6 @@ import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
- await app.listen(3000);
+ await app.listen(3500);
}
bootstrap();
diff --git a/frontend/package.json b/frontend/package.json
index e9ad51d..477eafa 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -2,6 +2,7 @@
"name": "ts-onlinetime-ranks",
"version": "0.1.0",
"private": true,
+ "proxy": "http://localhost:3500",
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
diff --git a/frontend/src/App.scss b/frontend/src/App.scss
index 1287ae1..6682593 100644
--- a/frontend/src/App.scss
+++ b/frontend/src/App.scss
@@ -5,7 +5,6 @@
justify-content: center;
align-items: center;
text-align: center;
- height: 100vh;
color: whitesmoke;
background-color: #282c34;
}
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index ed0a3bd..5c593d5 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -1,26 +1,67 @@
import React from 'react';
import './App.scss';
-import Mock from "./mock/Mock";
+import UserStatsMockService from "./mock/UserStatsMockService";
import TableEntry from "./models/TableEntry";
-import {SinusBot} from "@support-pp/sinusbot-ts";
-import SinusBotService from "./services/SinusBotService";
+import UserStatsService from "./services/UserStatsService";
+import {findDOMNode} from "react-dom";
+
+interface State {
+ error?: any,
+ isLoaded: boolean,
+ users?: TableEntry[]
+}
export default class App extends React.Component {
- //private tableContent: TableEntry[] = Mock.tableContent;
+ private apiService: UserStatsService = new UserStatsService();
- state = {
+ state: State = {
error: null,
isLoaded: false,
- users: [],
+ users: undefined
}
componentDidMount() {
+ this.setState({isLoaded: false})
+ 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 } = this.state;
+ if (users != null && isLoaded) {
+ 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} |
+
+ )
+ });
+ }
}
render() {
- const { error, isLoaded, users } = this.state;
return (
Humenius' TeamSpeak 3-Ranking
@@ -33,33 +74,15 @@ export default class App extends React.Component {
- {
- users.map((tableEntry: TableEntry, i) => {
- let className;
- switch (i+1) {
- case 1: className = "first-place"; break;
- case 2: className = "second-place"; break;
- case 3: className = "third-place"; break;
- default: className = ""; break;
- }
-
- return (
-
- | {i+1} |
- {tableEntry.name} |
- {tableEntry.onlineTime} |
-
- );
- })
- }
+ {this.renderTableData()}