diff --git a/src/main/scala/industries/sunshine/planningpoker/Models.scala b/src/main/scala/industries/sunshine/planningpoker/Models.scala index c3f074a..d063552 100644 --- a/src/main/scala/industries/sunshine/planningpoker/Models.scala +++ b/src/main/scala/industries/sunshine/planningpoker/Models.scala @@ -23,19 +23,18 @@ final case class RoomStateView( } object RoomStateView { + val me = Player("wormy", PlayerID()) val testRoom = { - val me = Player("wormy", PlayerID()) val pony = Player("pony", PlayerID()) RoomStateView( players = List(me, Player("birdy", PlayerID()), pony), me = me.id, allowedCards = List("xs", "s", "m", "l", "xl"), - round = VotingRound(myCard = Some("l"), alreadyVoted = List(me, pony)), + round = VotingRound(myCard = Some("s"), alreadyVoted = List(me, pony)), canCloseRound = true ) } val testOpenedRoom = { - val me = Player("wormy", PlayerID()) val pony = Player("pony", PlayerID()) val birdy = Player("birdy", PlayerID()) val horsey = Player("horsey", PlayerID()) diff --git a/src/main/scala/industries/sunshine/planningpoker/LiveChart.scala b/src/main/scala/industries/sunshine/planningpoker/PlanningPokerUrgh.scala similarity index 73% rename from src/main/scala/industries/sunshine/planningpoker/LiveChart.scala rename to src/main/scala/industries/sunshine/planningpoker/PlanningPokerUrgh.scala index e6b2821..800d1d5 100644 --- a/src/main/scala/industries/sunshine/planningpoker/LiveChart.scala +++ b/src/main/scala/industries/sunshine/planningpoker/PlanningPokerUrgh.scala @@ -11,20 +11,24 @@ import org.scalajs.dom val javascriptLogo: String = js.native @main -def LiveChart(): Unit = +def PlanningPokerUrgh(): Unit = renderOnDomContentLoaded( dom.document.getElementById("app"), Main.appElement() ) object Main { - val bgColor = "bg-green-200" + final case class AppState( + myId: Option[PlayerID] + ) + // TODO is this ok for state creation? link with auth component and use in another? + val appStateSignal = Var(AppState(Some(RoomStateView.me.id))).signal + def appElement(): Element = { div( className := "w-screen h-screen flex flex-col justify-center items-center", div( - className := "h-24 w-full flex flex-for justify-center items-center", - className := bgColor, + className := "h-24 w-full flex flex-for justify-center items-center bg-green-200", p(className := "text-2xl", "Here be header"), ), RoomView.renderRoom(RoomStateView.testRoom) diff --git a/src/main/scala/industries/sunshine/planningpoker/TableView.scala b/src/main/scala/industries/sunshine/planningpoker/TableView.scala index dc535c3..b5d0b92 100644 --- a/src/main/scala/industries/sunshine/planningpoker/TableView.scala +++ b/src/main/scala/industries/sunshine/planningpoker/TableView.scala @@ -12,9 +12,9 @@ object TableView { // so, it's more efficient to share an observable, than to create multiple copies... def renderTable(roundSignal: Signal[RoomStateView]): Element = { val playerIdToCardTypeSignal = - roundSignal.map(state => + roundSignal.combineWith(Main.appStateSignal.map(_.myId)).map((state, myIdOpt) => state.players.map(p => - p.id -> getPlayerCardType(p.id, state.round, p.name) + p.id -> getPlayerCardType(p.id, state.round, p.name, myIdOpt) ) ) @@ -35,11 +35,14 @@ object TableView { def getPlayerCardType( id: PlayerID, state: RoundState, - name: String + name: String, + myId: Option[PlayerID] ): CardState = { state match { case isOpen: VotingRound => - isOpen.alreadyVoted.find(_.id == id).fold(NoCard(name))(_ => CardBack) + if (myId.forall(_ == id)) { + isOpen.myCard.fold(NoCard(name))(vote => Open(vote)) + } else isOpen.alreadyVoted.find(_.id == id).fold(NoCard(name))(_ => CardBack) case isClosed: ViewingRound => isClosed.votes .get(id)