summaryrefslogtreecommitdiff
path: root/webapp/src/main.rs
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-09-06 21:00:00 -0400
committerKjetil Orbekk <kj@orbekk.com>2022-09-06 21:00:00 -0400
commit397214caf0fe46cb1cd455908a67d36a931e7ec4 (patch)
tree943cab72b679c069f93744e0bd91eba059318652 /webapp/src/main.rs
parent6f2dbd6db9836b5b60c78ec457b07d1202527690 (diff)
Finish bidding table component
Diffstat (limited to 'webapp/src/main.rs')
-rw-r--r--webapp/src/main.rs35
1 files changed, 28 insertions, 7 deletions
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! {
<>
- <p>{ "Bids" }</p>
+ <p>{ "Bidding table" }</p>
+ <BiddingTable { bidding } />
+ <p>{ "Bidding box" }</p>
<BiddingBox lower_limit={"1H".parse::<Raise>().unwrap()} />
<p>{ "North" }</p>
<Hand ..(*north).clone() />
@@ -145,7 +157,7 @@ fn padding(dealer: Player) -> Html {
let mut padding : Vec<Html> = vec![];
let mut player = Player::West;
while player != dealer {
- padding.push(html! { <div /> });
+ padding.push(html! { <div/> });
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!{ <div class="bid">{ bid }</div> },
+ Some(raise) => html!{
+ <div class="bid">
+ { raise.level }
+ <div class={ bid_css_class(raise.suit) }/>
+ </div>
+ },
+ };
let bids: Html = props
.bidding
.bids
.iter()
- .map(|bid| {
- html! {
- <div class="bid">{ bid }</div>
- }
- })
+ .map(|b| { bid(b) })
.collect();
let padding : Html = padding(props.bidding.dealer);
html! {
<div class="bidding-table">
+ <div class="header">{ "West" }</div>
+ <div class="header">{ "North" }</div>
+ <div class="header">{ "East" }</div>
+ <div class="header">{ "South" }</div>
{ padding }
{ bids }
</div>