Compare commits

..

No commits in common. "11e65c009ceb61139244ef98d2d6ef84df5f93b3" and "ecb1717eb371f6c73030f17f8108d06320dc0552" have entirely different histories.

3 changed files with 32 additions and 76 deletions

View File

@ -1,44 +0,0 @@
package industries.sunshine.planningpoker
import scala.scalajs.js
import com.raquo.laminar.api.L.{*, given}
import industries.sunshine.planningpoker.common.Models.*
object OtherPlayers {
def render(roomStateSignal: Signal[RoomStateView]): Element = {
val otherPlayers = roomStateSignal.map { state =>
state.players.filterNot(_.id == state.me).zipWithIndex
}
div(
className := "flex flex-row",
children <-- otherPlayers.split(_._1.id) { (id, initial, playerSignal) =>
renderPlayer(playerSignal, roomStateSignal.map(_.allowedCards.size))
}
)
}
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",
// 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),
renderHandCardBacks(cardsAmount)
)
}
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"
)
div(
className := "flex flex-row",
children <-- amountSignal.map { amount => (1 to amount).map(renderCard) }
)
}
}

View File

@ -1,30 +0,0 @@
package industries.sunshine.planningpoker
import scala.scalajs.js
import com.raquo.laminar.api.L.{*, given}
import industries.sunshine.planningpoker.common.Models.*
object OwnHandControls {
def render(roomStateSignal: Signal[RoomStateView]): Element = {
val a = 1
div(
className := "flex flex-row justify-center",
renderCard("xs"),
renderCard("s"),
renderCard("m"),
renderCard("l"),
)
}
def renderCard(value: String): Element = {
div(
className := "w-24 h-48 m-1 rounded flex justify-center items-center m-3",
className := "text-black bg-gray-50 border-black border-2",
div(
className := "-rotate-45 text-xl",
value
)
)
}
}

View File

@ -32,16 +32,46 @@ object RoomView {
val roomStateSignal: Signal[RoomStateView] = val roomStateSignal: Signal[RoomStateView] =
wsStream.received.startWith(RoomStateView.empty) wsStream.received.startWith(RoomStateView.empty)
val otherPlayers = roomStateSignal.map { state =>
state.players.filterNot(_.id == state.me).zipWithIndex
}
val wsFinalDeathSignal = wsStream.closed.collect { case (_, false) => () } val wsFinalDeathSignal = wsStream.closed.collect { case (_, false) => () }
div( div(
className := "w-full h-full border-4 border-amber-900 flex flex-col", className := "w-full h-full border-4 border-amber-900 flex flex-col",
OtherPlayers.render(roomStateSignal), div(
className := "flex flex-row",
children <-- otherPlayers.split(_._1.id) { (id, initial, playerSignal) =>
renderPlayer(playerSignal, roomStateSignal.map(_.allowedCards.size))
}
),
TableView.renderTable(roomStateSignal), TableView.renderTable(roomStateSignal),
OwnHandControls.render(roomStateSignal),
wsStream.connect, wsStream.connect,
wsFinalDeathSignal.map(_ => false) --> loggedIn wsFinalDeathSignal.map(_ => false) --> loggedIn
) )
} }
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",
// 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),
renderHandCardBacks(cardsAmount)
)
}
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"
)
div(
className := "flex flex-row",
children <-- amountSignal.map { amount => (1 to amount).map(renderCard) }
)
}
} }