From 340fcdcf41923558d045f8fd333729c64c799c1a Mon Sep 17 00:00:00 2001 From: efim Date: Fri, 28 Apr 2023 21:20:09 +0400 Subject: [PATCH] other players styling and cards calc logic --- .../sunshine/planningpoker/OtherPlayers.scala | 20 +++++++++++++++---- .../sunshine/planningpoker/TableView.scala | 4 ++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/frontend/src/main/scala/industries/sunshine/planningpoker/OtherPlayers.scala b/frontend/src/main/scala/industries/sunshine/planningpoker/OtherPlayers.scala index 340dbe6..8e2dda5 100644 --- a/frontend/src/main/scala/industries/sunshine/planningpoker/OtherPlayers.scala +++ b/frontend/src/main/scala/industries/sunshine/planningpoker/OtherPlayers.scala @@ -9,11 +9,23 @@ object OtherPlayers { val otherPlayers = roomStateSignal.map { state => state.players.filterNot(_.id == state.me).zipWithIndex } + def playerCardsAmountSignal(id: PlayerID): Signal[Int] = { + roomStateSignal.map(state => { + val totalCards = state.allowedCards.size + val playerModification = state.round match { + case RoundStateView.Viewing(votes) if votes.toMap.contains(id) => -1 + case RoundStateView.Voting(_, votedPlayers) if votedPlayers.contains(id) => -1 + case _ => 0 + } + + totalCards + playerModification + }) + } div( className := "flex flex-row", - children <-- otherPlayers.split(_._1.id) { (id, initial, playerSignal) => - renderPlayer(playerSignal, roomStateSignal.map(_.allowedCards.size)) + children <-- otherPlayers.split(_._1.id) { (playerID, initial, playerSignal) => + renderPlayer(playerSignal, playerCardsAmountSignal(playerID)) } ) } @@ -21,7 +33,7 @@ object OtherPlayers { def renderPlayer(p: Signal[(Player, Int)], cardsAmount: Signal[Int]): Element = { val xOffsetStyleSignal = p.map(_._2) div( - className := "w-20 h-20 border-2 border-amber-400 m-2 absolute", + className := "bg-green-200 border-b-2 border-black rounded p-2 m-2 absolute drop-shadow-xl", // left <-- p.map(tuple => ((1 + tuple._2) * 10000).toString()), styleAttr <-- p.map(tuple => s"left: ${(1 + tuple._2) * 100}px"), child.text <-- p.map(_._1.name), @@ -32,7 +44,7 @@ object OtherPlayers { def renderHandCardBacks(amountSignal: Signal[Int]): Element = { def renderCard(index: Int): Element = div( - className := "w-4 h-8 m-1 rounded bg-gray-600 text-yellow" + className := "w-8 h-12 rounded bg-green-500 text-yellow m-1 border border-green-700 drop-shadow-md" ) div( diff --git a/frontend/src/main/scala/industries/sunshine/planningpoker/TableView.scala b/frontend/src/main/scala/industries/sunshine/planningpoker/TableView.scala index e9c8109..ee7bd0b 100644 --- a/frontend/src/main/scala/industries/sunshine/planningpoker/TableView.scala +++ b/frontend/src/main/scala/industries/sunshine/planningpoker/TableView.scala @@ -19,9 +19,9 @@ object TableView { ) div( - className := "w-full h-full border-2 border-amber-700 flex flex-col justify-center items-center bg-green-100", + className := "w-full h-full flex flex-col justify-center items-center bg-green-100", div( - className := "w-full border-2 border-amber-600 flex flex-row justify-center items-center bg-green-100", + className := "w-full flex flex-row justify-center items-center bg-green-100", children <-- playerIdToCardTypeSignal.split(_._1) { (id, initial, cardTypeSignal) => renderPlayerCard(cardTypeSignal.map(_._2)) }