Split frontend and backend

This commit is contained in:
2020-05-30 17:59:40 +02:00
parent 22e31b51dc
commit 42b558254f
42 changed files with 11604 additions and 0 deletions

156
frontend/src/App.tsx Normal file
View File

@@ -0,0 +1,156 @@
import React from 'react';
import './App.scss';
import Mock from "./mock/Mock";
import TableEntry from "./models/TableEntry";
import {SinusBot} from "@support-pp/sinusbot-ts";
import SinusBotService from "./services/SinusBotService";
export default class App extends React.Component {
//private tableContent: TableEntry[] = Mock.tableContent;
state = {
error: null,
isLoaded: false,
users: [],
}
componentDidMount() {
fetch('https://sinusbot.humenius.me/api/v1/bot/i/51314e26-13a1-4779-b2ac-e36d493687d4/event/tunakill_rank_all_user')
.then(res => res.json())
.then((data) => SinusBotService.consumeTunakillResponse(data))
.then(
(result) => {
this.setState({
isLoaded: true,
users: result
});
},
(error) => {
this.setState({
isLoaded: true,
error: error
});
}
);
}
render() {
const { error, isLoaded, users } = this.state;
return (
<div className="App">
<p className="title">Humenius' TeamSpeak 3-Ranking</p>
<table>
<thead>
<tr>
<th>Placement</th>
<th>Name</th>
<th>Online time</th>
</tr>
</thead>
<tbody>
{
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 (
<tr key={i} className={className}>
<td>{i+1}</td>
<td>{tableEntry.name}</td>
<td>{tableEntry.onlineTime}</td>
</tr>
);
})
}
</tbody>
</table>
<footer>
Made by <a href="https://humenius.me"
>Humenius</a>.
Powered by <a href="https://reactjs.org/"
>React</a>.
<br />
<a href="ts3server://ts.humenius.me">
Click here to join my TeamSpeak server
</a>
</footer>
</div>
);
}
}
// const App = () => {
// return (
// <div className="App">
// <table>
// <tr>
// <th>Placement</th>
// <th>Name</th>
// <th>Online time</th>
// </tr>
// <tr className="first-place">
// <td>1</td>
// <td>Humen</td>
// <td>0d 1h 0m 0m</td>
// </tr>
// <tr className="second-place">
// <td>2</td>
// <td>Humen</td>
// <td>0d 1h 0m 0m</td>
// </tr>
// <tr className="third-place">
// <td>3</td>
// <td>Humen</td>
// <td>0d 1h 0m 0m</td>
// </tr>
// <tr>
// <td>4</td>
// <td>Humen</td>
// <td>0d 1h 0m 0m</td>
// </tr>
// </table>
// </div>
// );
// }
// function App() {
// return (
// <div className="App">
// <table>
// <tr>
// <th>Placement</th>
// <th>Name</th>
// <th>Online time</th>
// </tr>
// <tr className="first-place">
// <td>1</td>
// <td>Humen</td>
// <td>0d 1h 0m 0m</td>
// </tr>
// <tr className="second-place">
// <td>2</td>
// <td>Humen</td>
// <td>0d 1h 0m 0m</td>
// </tr>
// <tr className="third-place">
// <td>3</td>
// <td>Humen</td>
// <td>0d 1h 0m 0m</td>
// </tr>
// <tr>
// <td>4</td>
// <td>Humen</td>
// <td>0d 1h 0m 0m</td>
// </tr>
// </table>
// </div>
// );
// }
// export default App;