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