summaryrefslogtreecommitdiff
path: root/webapp/src/main.rs
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-09-05 18:15:09 -0400
committerKjetil Orbekk <kj@orbekk.com>2022-09-05 18:15:09 -0400
commit6f2dbd6db9836b5b60c78ec457b07d1202527690 (patch)
tree83dc5a3c4d8bfa646cbadc697f780d733701ba20 /webapp/src/main.rs
parent1bead88ffe47ef193a8b2adc36b167967d8450ef (diff)
Start bidding table component
Diffstat (limited to 'webapp/src/main.rs')
-rw-r--r--webapp/src/main.rs41
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>
}
}