diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-09-05 18:15:09 -0400 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-09-05 18:15:09 -0400 |
commit | 6f2dbd6db9836b5b60c78ec457b07d1202527690 (patch) | |
tree | 83dc5a3c4d8bfa646cbadc697f780d733701ba20 /webapp/src/main.rs | |
parent | 1bead88ffe47ef193a8b2adc36b167967d8450ef (diff) |
Start bidding table component
Diffstat (limited to 'webapp/src/main.rs')
-rw-r--r-- | webapp/src/main.rs | 41 |
1 files changed, 41 insertions, 0 deletions
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<Suit>) -> &'static str { } } +fn padding(dealer: Player) -> Html { + let mut padding : Vec<Html> = vec![]; + let mut player = Player::West; + while player != dealer { + padding.push(html! { <div /> }); + 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! { + <div class="bid">{ bid }</div> + } + }) + .collect(); + let padding : Html = padding(props.bidding.dealer); + html! { + <div class="bidding-table"> + { padding } + { bids } + </div> + } +} + +#[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! { <div class="bidding-box"> { bids } + <div>{ "Pass" }</div> + <div>{ "X" }</div> + <div>{ "XX" }</div> </div> } } |