front: leaderboard
This commit is contained in:
parent
5168e38710
commit
992a1f3a23
@ -0,0 +1,34 @@
|
|||||||
|
package djmil.cordacheckers.api;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import djmil.cordacheckers.cordaclient.CordaClient;
|
||||||
|
import djmil.cordacheckers.cordaclient.dao.Rank;
|
||||||
|
import djmil.cordacheckers.user.HoldingIdentityResolver;
|
||||||
|
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("api/leaderboard")
|
||||||
|
public class LeaderboardController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
HoldingIdentityResolver holdingIdentityResolver;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
CordaClient cordaClient;
|
||||||
|
|
||||||
|
@GetMapping
|
||||||
|
public ResponseEntity<Map<String, Rank>> getLeaderboard() {
|
||||||
|
final var hiCustodian = holdingIdentityResolver.getCustodian();
|
||||||
|
final Map<String, Rank> leaderboard = cordaClient.fetchRanking(hiCustodian);
|
||||||
|
|
||||||
|
return ResponseEntity.ok(leaderboard);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
trust.store=classpath:keystore/truststore.p12
|
trust.store=classpath:keystore/truststore.p12
|
||||||
trust.store.password=test123
|
trust.store.password=test123
|
||||||
|
|
||||||
corda.host=https://localhost
|
corda.host=https://192.168.10.8
|
||||||
corda.port=8888
|
corda.port=8888
|
||||||
corda.root.login=admin
|
corda.root.login=admin
|
||||||
corda.root.passw=admin
|
corda.root.passw=admin
|
||||||
|
@ -1,17 +1,15 @@
|
|||||||
import './App.css';
|
import './App.css';
|
||||||
|
import Leaderboard from "./Leaderboard";
|
||||||
import React, { useState, useEffect } from 'react';
|
import React, { useState, useEffect } from 'react';
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
|
const [data, setData] = useState(null);
|
||||||
const [activeGames, setActiveGames] = useState(null);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
fetch('/api/activegames')
|
fetch('/api/leaderboard')
|
||||||
.then((response) => response.json())
|
.then((response) => response.json())
|
||||||
.then((games) => {
|
.then((data) => {
|
||||||
console.log(games.ActiveGames.length);
|
setData(data);
|
||||||
console.log("games: " +games.ActiveGames);
|
|
||||||
setActiveGames(games.ActiveGames);
|
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log(err.message);
|
console.log(err.message);
|
||||||
@ -21,9 +19,10 @@ function App() {
|
|||||||
return (
|
return (
|
||||||
<div className="App">
|
<div className="App">
|
||||||
<header className="App-header">
|
<header className="App-header">
|
||||||
<p>
|
<h1>Leaderboard</h1>
|
||||||
Here is list of your active games: {activeGames ? <span>{activeGames}</span> : <span>Loading...</span>}
|
{
|
||||||
</p>
|
data ? <Leaderboard hashmap={data} /> : <span>Loading...</span>
|
||||||
|
}
|
||||||
</header>
|
</header>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
46
webapp/src/Leaderboard.js
Normal file
46
webapp/src/Leaderboard.js
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
import React from "react";
|
||||||
|
|
||||||
|
//const Leaderboard = ({hashmap}) => {
|
||||||
|
|
||||||
|
// var listItems = Object.keys(hashmap).map(playerName => {
|
||||||
|
// var rank = hashmap[playerName];
|
||||||
|
|
||||||
|
// return <li key={playerName}>
|
||||||
|
// {playerName}: played {rank.gamesPlayed}, won {rank.gamesWon}, draw {rank.gamesDraw}
|
||||||
|
// </li>
|
||||||
|
// });
|
||||||
|
|
||||||
|
// return <ul>{listItems}</ul>;
|
||||||
|
|
||||||
|
const Leaderboard = ({ hashmap }) => {
|
||||||
|
|
||||||
|
const tableRows = Object.keys(hashmap).map(playerName => {
|
||||||
|
var rank = hashmap[playerName];
|
||||||
|
|
||||||
|
return <tr key={playerName}>
|
||||||
|
<td>{playerName}</td>
|
||||||
|
<td>{rank.gamesPlayed}</td>
|
||||||
|
<td>{rank.gamesWon}</td>
|
||||||
|
<td>{rank.gamesDraw}</td>
|
||||||
|
</tr>
|
||||||
|
});
|
||||||
|
|
||||||
|
return <div>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Played</th>
|
||||||
|
<th>Won</th>
|
||||||
|
<th>Draw</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{ tableRows }
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export default Leaderboard;
|
Loading…
Reference in New Issue
Block a user