From 6f2dbd6db9836b5b60c78ec457b07d1202527690 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Mon, 5 Sep 2022 18:15:09 -0400 Subject: Start bidding table component --- webapp/src/bridge_engine.rs | 2 +- webapp/src/main.rs | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) (limited to 'webapp') diff --git a/webapp/src/bridge_engine.rs b/webapp/src/bridge_engine.rs index a30591c..702faa9 100644 --- a/webapp/src/bridge_engine.rs +++ b/webapp/src/bridge_engine.rs @@ -237,7 +237,7 @@ pub struct Contract { modifier: ContractModifier, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct Bidding { pub dealer: Player, pub bids: Vec, diff --git a/webapp/src/main.rs b/webapp/src/main.rs index 4316d84..81b8b39 100644 --- a/webapp/src/main.rs +++ b/webapp/src/main.rs @@ -4,6 +4,8 @@ use log::{debug, error, info, warn}; use yew::prelude::*; pub mod bridge_engine; pub mod card; +use bridge_engine::Bidding; +use bridge_engine::Player; use bridge_engine::Raise; extern crate wee_alloc; @@ -139,6 +141,42 @@ pub fn bid_css_class(suit: Option) -> &'static str { } } +fn padding(dealer: Player) -> Html { + let mut padding : Vec = vec![]; + let mut player = Player::West; + while player != dealer { + padding.push(html! {
}); + player = player.next(); + } + padding.into_iter().collect() +} + +#[function_component(BiddingTable)] +pub fn bidding_table(props: &BiddingTableProps) -> Html { + let bids: Html = props + .bidding + .bids + .iter() + .map(|bid| { + html! { +
{ bid }
+ } + }) + .collect(); + let padding : Html = padding(props.bidding.dealer); + html! { +
+ { padding } + { bids } +
+ } +} + +#[derive(PartialEq, Properties, Clone)] +pub struct BiddingTableProps { + bidding: Bidding, +} + #[function_component(BiddingBox)] pub fn bidding_box(props: &BiddingBoxProps) -> Html { let bids: Html = Raise::all_raises() @@ -161,6 +199,9 @@ pub fn bidding_box(props: &BiddingBoxProps) -> Html { html! {
{ bids } +
{ "Pass" }
+
{ "X" }
+
{ "XX" }
} } -- cgit v1.2.3