add display of the name on the open card

to make disambiguation on the viewing round simpler
will style this later
This commit is contained in:
efim 2023-04-28 11:58:48 +04:00
parent d7d4e2be9d
commit a87f4f99c0
1 changed files with 23 additions and 13 deletions

View File

@ -34,8 +34,8 @@ object TableView {
trait CardState trait CardState
case class NoCard(name: String) extends CardState case class NoCard(name: String) extends CardState
case object CardBack extends CardState case class CardBack(name: String) extends CardState
case class Open(value: String) extends CardState case class Open(name: String, value: String) extends CardState
def getPlayerCardType( def getPlayerCardType(
id: PlayerID, id: PlayerID,
@ -46,36 +46,46 @@ object TableView {
state match { state match {
case isOpen: RoundStateView.Voting => case isOpen: RoundStateView.Voting =>
if (myId == id) { if (myId == id) {
isOpen.myCard.fold(NoCard(name))(vote => Open(vote)) isOpen.myCard.fold(NoCard(name))(vote => Open(name, vote))
} else isOpen.alreadyVoted.find(_ == id).fold(NoCard(name))(_ => CardBack) } else isOpen.alreadyVoted.find(_ == id).fold(NoCard(name))(_ => CardBack(name))
case isClosed: RoundStateView.Viewing => case isClosed: RoundStateView.Viewing =>
isClosed.votes isClosed.votes
.find(_._1 == id) .find(_._1 == id)
.fold { .fold {
g.console.error(s"missing vote for player $name") g.console.error(s"missing vote for player $name")
Open("error") Open(name, "error")
} { case (_, vote) => Open(vote) } } { case (_, vote) => Open(name, vote) }
} }
} }
def renderPlayerCard(state: Signal[CardState]): Element = { def renderPlayerCard(state: Signal[CardState]): Element = {
val cardTypeStyle = state.map { val cardTypeStyle = state.map {
case NoCard(_) => "bg-green-100 text-black border-2 border-black" case NoCard(_) => "bg-green-100 text-black border-2 border-black"
case CardBack => "bg-green-500 border-4 border-green-700" case CardBack(_) => "bg-green-500 border-4 border-green-700"
case Open(_) => "text-black bg-gray-50 border-black border-2" case Open(_, _) => "text-black bg-gray-50 border-black border-2"
} }
div( div(
className := "w-20 h-40 m-1 rounded flex justify-center items-center m-3", className := "w-20 h-40 m-1 rounded flex flex-col justify-center items-center m-3",
className <-- cardTypeStyle, className <-- cardTypeStyle,
// the diagonal card value \ place text
div( div(
className := "-rotate-45 text-xl", className := "-rotate-45 text-xl",
child.text <-- state.map { child.text <-- state.map {
case NoCard(name) => name case NoCard(name) => name
case CardBack => "" case CardBack(name) => name
case Open(vote) => vote case Open(_, vote) => vote
}
),
// name under viewing the votes
div(
className := "text-xl",
child.text <-- state.map {
case Open(name, _) => name
case _ => ""
} }
) )
) )
} }