From 397214caf0fe46cb1cd455908a67d36a931e7ec4 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Tue, 6 Sep 2022 21:00:00 -0400 Subject: Finish bidding table component --- webapp/src/main.rs | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) (limited to 'webapp/src/main.rs') diff --git a/webapp/src/main.rs b/webapp/src/main.rs index 81b8b39..846514a 100644 --- a/webapp/src/main.rs +++ b/webapp/src/main.rs @@ -4,6 +4,7 @@ use log::{debug, error, info, warn}; use yew::prelude::*; pub mod bridge_engine; pub mod card; +use bridge_engine::Bid; use bridge_engine::Bidding; use bridge_engine::Player; use bridge_engine::Raise; @@ -49,9 +50,20 @@ pub fn app() -> Html { }) }; + let bidding = Bidding::new(Player::North); + let bidding = bidding.bid("1NT".parse().unwrap()).unwrap().bidding(); + let bidding = bidding.bid("pass".parse().unwrap()).unwrap().bidding(); + let bidding = bidding.bid("2♦".parse().unwrap()).unwrap().bidding(); + let bidding = bidding.bid("pass".parse().unwrap()).unwrap().bidding(); + let bidding = bidding.bid("2♥".parse().unwrap()).unwrap().bidding(); + let bidding = bidding.bid("pass".parse().unwrap()).unwrap().bidding(); + let bidding = bidding.bid("4♥".parse().unwrap()).unwrap().bidding(); + html! { <> -

{ "Bids" }

+

{ "Bidding table" }

+ +

{ "Bidding box" }

().unwrap()} />

{ "North" }

@@ -145,7 +157,7 @@ fn padding(dealer: Player) -> Html { let mut padding : Vec = vec![]; let mut player = Player::West; while player != dealer { - padding.push(html! {
}); + padding.push(html! {
}); player = player.next(); } padding.into_iter().collect() @@ -153,19 +165,28 @@ fn padding(dealer: Player) -> Html { #[function_component(BiddingTable)] pub fn bidding_table(props: &BiddingTableProps) -> Html { + let bid = |bid: &Bid| match bid.as_raise() { + None => html!{
{ bid }
}, + Some(raise) => html!{ +
+ { raise.level } +
+
+ }, + }; let bids: Html = props .bidding .bids .iter() - .map(|bid| { - html! { -
{ bid }
- } - }) + .map(|b| { bid(b) }) .collect(); let padding : Html = padding(props.bidding.dealer); html! {
+
{ "West" }
+
{ "North" }
+
{ "East" }
+
{ "South" }
{ padding } { bids }
-- cgit v1.2.3