profile: add winrate
This commit is contained in:
parent
570b19134f
commit
c38ca69dd2
@ -75,14 +75,32 @@ export default class extends AbstractView {
|
|||||||
statusIndicator.classList.add('bg-danger');
|
statusIndicator.classList.add('bg-danger');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {[Object]} games
|
||||||
|
*/
|
||||||
async fillStatistics(games)
|
async fillStatistics(games)
|
||||||
{
|
{
|
||||||
|
const winrateDiv = document.getElementById("winrate");
|
||||||
|
|
||||||
|
const win = 0;
|
||||||
|
const lose = 0;
|
||||||
|
|
||||||
|
games.forEach(game => {
|
||||||
|
if (game.finished === false)
|
||||||
|
return
|
||||||
|
|
||||||
|
if (client.me.id === game.winner.id)
|
||||||
|
win++;
|
||||||
|
else
|
||||||
|
lose++;
|
||||||
|
});
|
||||||
|
|
||||||
|
winrateDiv.innerText = `winrate: ${win + lose === 0 ? "🤓" : win / (win + lose)}`
|
||||||
}
|
}
|
||||||
|
|
||||||
async fillHistory(games)
|
async fillHistory(games)
|
||||||
{
|
{
|
||||||
let game_list = document.getElementById("game-list");
|
const game_list = document.getElementById("game-list");
|
||||||
|
|
||||||
games.forEach(game => {
|
games.forEach(game => {
|
||||||
|
|
||||||
@ -96,7 +114,7 @@ export default class extends AbstractView {
|
|||||||
if (game.started)
|
if (game.started)
|
||||||
game_item.style.backgroundColor = "yellow";
|
game_item.style.backgroundColor = "yellow";
|
||||||
if (game.finished)
|
if (game.finished)
|
||||||
game_item.style.backgroundColor = this.profile.id === game.winner_id ? "green" : "red";
|
game_item.style.backgroundColor = this.profile.id === game.winner.id ? "green" : "red";
|
||||||
|
|
||||||
game.players.forEach(player => {
|
game.players.forEach(player => {
|
||||||
let player_score = document.createElement("a");
|
let player_score = document.createElement("a");
|
||||||
@ -133,9 +151,12 @@ export default class extends AbstractView {
|
|||||||
<button class='btn btn-sm btn-danger d-none' id='blockButton'>Block</button>
|
<button class='btn btn-sm btn-danger d-none' id='blockButton'>Block</button>
|
||||||
<button class='btn btn-sm btn-secondary d-none' id='unblockButton'>Unblock</button>
|
<button class='btn btn-sm btn-secondary d-none' id='unblockButton'>Unblock</button>
|
||||||
</div>
|
</div>
|
||||||
|
<h1>Games</h1>
|
||||||
|
<div>
|
||||||
|
<h1 id='winrate'></h1>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<link rel="stylesheet" href="/static/css/gameHistory.css">
|
<link rel="stylesheet" href="/static/css/gameHistory.css">
|
||||||
<h1>Game History</h1>
|
|
||||||
<div id="game-list"></div>
|
<div id="game-list"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,7 +9,7 @@ from profiles.serializers import ProfileSerializer
|
|||||||
class GameSerializer(serializers.ModelSerializer):
|
class GameSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
players = serializers.SerializerMethodField()
|
players = serializers.SerializerMethodField()
|
||||||
winner_id = serializers.ReadOnlyField()
|
winner = serializers.ReadOnlyField()
|
||||||
state = serializers.SerializerMethodField()
|
state = serializers.SerializerMethodField()
|
||||||
started = serializers.ReadOnlyField()
|
started = serializers.ReadOnlyField()
|
||||||
finished = serializers.ReadOnlyField()
|
finished = serializers.ReadOnlyField()
|
||||||
@ -19,7 +19,7 @@ class GameSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = GameModel
|
model = GameModel
|
||||||
fields = ["id", "winner_id", "state", "started", "finished", "players", "start_timestamp", "stop_timestamp", "game_type"]
|
fields = ["id", "winner", "state", "started", "finished", "players", "start_timestamp", "stop_timestamp", "game_type"]
|
||||||
|
|
||||||
def get_state(self, instance: GameModel):
|
def get_state(self, instance: GameModel):
|
||||||
if (instance.finished):
|
if (instance.finished):
|
||||||
|
Loading…
Reference in New Issue
Block a user