From 003782090509bca1c5022c308231b7560dd9b23d Mon Sep 17 00:00:00 2001 From: Janis Date: Thu, 27 Nov 2025 10:01:19 +0100 Subject: [PATCH] feat(ui): Popups (#91) Fixed sorting and added popups for trickend and roundend Co-authored-by: LQ63 Reviewed-on: https://git.janis-eccarius.de/KnockOutWhist/KnockOutWhist-Web/pulls/91 --- .../app/util/mapper/RoundEndEventMapper.scala | 20 +++++++++++++++++++ knockoutwhistweb/public/javascripts/events.js | 13 +++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 knockoutwhistweb/app/util/mapper/RoundEndEventMapper.scala diff --git a/knockoutwhistweb/app/util/mapper/RoundEndEventMapper.scala b/knockoutwhistweb/app/util/mapper/RoundEndEventMapper.scala new file mode 100644 index 0000000..33ac58f --- /dev/null +++ b/knockoutwhistweb/app/util/mapper/RoundEndEventMapper.scala @@ -0,0 +1,20 @@ +package util.mapper + +import controllers.routes +import de.knockoutwhist.events.global.RoundEndEvent +import model.sessions.UserSession +import play.api.libs.json.{JsObject, Json} + +object RoundEndEventMapper extends SimpleEventMapper[RoundEndEvent] { + + override def id: String = "RoundEndEvent" + + override def toJson(event: RoundEndEvent, session: UserSession): JsObject = { + + Json.obj( + "player" -> event.winner.name, + "tricks" -> event.amountOfTricks + ) + } + +} diff --git a/knockoutwhistweb/public/javascripts/events.js b/knockoutwhistweb/public/javascripts/events.js index ea88b70..b796bf8 100644 --- a/knockoutwhistweb/public/javascripts/events.js +++ b/knockoutwhistweb/public/javascripts/events.js @@ -128,8 +128,8 @@ function trickEndEvent(eventData) { } ) const playerorder = players.sort((playerA, playerB) => { - const countA = playercounts.get(playerA.name) || 0; - const countB = playercounts.get(playerB.name) || 0; + const countA = playercounts.get(playerA) || 0; + const countB = playercounts.get(playerB) || 0; return countB - countA; }); playerorder.forEach( player => { @@ -142,7 +142,9 @@ function trickEndEvent(eventData) { ` }); + alertMessage(`${winner} won the trick!`) tricktable.html(newHtml); + } function newTrickEvent() { const firstCardContainer = $('#first-card-container'); @@ -309,7 +311,11 @@ function receiveTurnEvent(eventData) { nextPlayersContainer.html(nextPlayersHtml); } } - +function receiveRoundEndEvent(eventData) { + const player = eventData.player + const tricks = eventData.tricks + alertMessage(`${player} won this round with ${tricks} tricks!`) +} onEvent("ReceivedHandEvent", receiveHandEvent) onEvent("GameStateChangeEvent", receiveGameStateChange) onEvent("NewRoundEvent", newRoundEvent) @@ -322,5 +328,6 @@ onEvent("LeftEvent", receiveGameStateChange) onEvent("KickEvent", receiveKickEvent) onEvent("SessionClosed", receiveSessionClosedEvent) onEvent("TurnEvent", receiveTurnEvent) +onEvent("RoundEndEvent", receiveRoundEndEvent) globalThis.alertMessage = alertMessage \ No newline at end of file