Add mock data and blur effect if error on API call occurs

This commit is contained in:
2020-06-01 15:23:32 +02:00
parent 52a0e48323
commit 053eb38cd2
2 changed files with 36 additions and 6 deletions

View File

@@ -6,9 +6,18 @@
align-items: center; align-items: center;
text-align: center; text-align: center;
color: whitesmoke; color: whitesmoke;
min-height: 100vh;
background-color: #282c34; background-color: #282c34;
} }
.blurred {
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);
}
.first-place { .first-place {
font-size: xx-large; font-size: xx-large;
font-weight: bolder; font-weight: bolder;

View File

@@ -1,28 +1,33 @@
import React from 'react'; import React from 'react';
import './App.scss'; import './App.scss';
import UserStatsMockService from "./mock/UserStatsMockService"; import UserStatsMockService from "./mock/UserStatsMockService";
import TableEntry from "./models/TableEntry"; import UserStats from "./models/TableEntry";
import UserStatsService from "./services/UserStatsService"; import UserStatsService from "./services/UserStatsService";
import {findDOMNode} from "react-dom"; import {findDOMNode} from "react-dom";
interface State { interface State {
error?: any, error?: any,
isLoaded: boolean, isLoaded: boolean,
users?: TableEntry[] users?: UserStats[],
mock?: UserStats[]
} }
export default class App extends React.Component { export default class App extends React.Component {
private apiService: UserStatsService = new UserStatsService(); private apiService: UserStatsService = new UserStatsService();
private mockService: UserStatsService = new UserStatsMockService();
state: State = { state: State = {
error: null, error: null,
isLoaded: false, isLoaded: false,
users: undefined users: undefined,
mock: undefined
} }
componentDidMount() { componentDidMount() {
this.setState({isLoaded: false}) this.setState({isLoaded: false})
this.mockService.getStats()
.then(data => this.setState({mock: data}));
this.apiService.getStats() this.apiService.getStats()
.then(data => this.setState({ .then(data => this.setState({
isLoaded: true, isLoaded: true,
@@ -42,8 +47,9 @@ export default class App extends React.Component {
} }
renderTableData() { renderTableData() {
const { error, isLoaded, users } = this.state; const { error, isLoaded, users, mock } = this.state;
if (users != null && isLoaded) { console.log(`${users} + ${isLoaded} + ${error}`)
if (users != null && isLoaded && error == null) {
return users.map((entry, index) => { return users.map((entry, index) => {
const placement = index + 1; const placement = index + 1;
const placementClassName = placement === 1 ? "first-place" const placementClassName = placement === 1 ? "first-place"
@@ -58,6 +64,21 @@ export default class App extends React.Component {
</tr> </tr>
) )
}); });
} 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 (
<tr key={index} className={placementClassName}>
<td>{placement}</td>
<td>{entry.name}</td>
<td>{entry.onlineTime}</td>
</tr>
)
});
} }
} }
@@ -73,7 +94,7 @@ export default class App extends React.Component {
<th>Online time</th> <th>Online time</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody className={this.state.error != null ? "blurred" : undefined}>
{this.renderTableData()} {this.renderTableData()}
</tbody> </tbody>
</table> </table>