Show pending delegates

O01eg
Oct 22, 2022, 5:16 PM
SBYGGRXY42JTOHAXRJMJR5HFAF5EYMI7TISBPDWOVPALW46UCQEAC

Dependencies

  • [2] JG2BQCRD Implement query for delegation
  • [3] LOFH5LIA Make bold player name
  • [4] 6TPV5GQ3 Show delegates in player table
  • [5] AEWYJHUD Start to show player list
  • [6] TEB4R7OU Add form to join game
  • [7] 5RQCVFRH Start leave game form
  • [8] B7PYGLH3 Show delegate bold if it's logged user itself
  • [*] 6NYILMKI Add page for slow game
  • [*] 6BDGQ4VM Show player names for registered players
  • [*] OJO4B4QO Add login form and empty handler

Change contents

  • edit in src/templates/slow-game.html at line 91
    [3.700]
    [3.700]
    {{#if pending_delegates}}
    {{#each pending_delegates as |delegate|}}
    <span class="pending">{{delegate}}</span>
    {{/each}}
    {{/if}}
  • edit in src/pages/slow_game.rs at line 18
    [2.721]
    [11.207]
    pending_delegates: Option<Vec<String>>,
  • replacement in src/pages/slow_game.rs at line 137
    [3.429][3.747:948](),[3.330][3.432:602](),[3.396][3.432:602](),[3.948][3.432:602](),[3.432][3.432:602]()
    let stmt = match dbclient.prepare("select p.player_name, p.delegate_name, p.player_name = $2, p.delegate_name = $2 from games.players p where p.game_uid = $1 and p.client_type = 'p';").await {
    Ok(stmt) => stmt,
    Err(e) => {
    log::error!("{}", e);
    return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());
    [3.429]
    [3.602]
    let stmt = match dbclient.prepare("select q.player_name, q.player_name = $2, q.delegate_name, q.delegate_name = $2 from games.query_delegation q where (q.player_name = $2 or q.delegate_name = $2) and q.game_uid = $1;").await {
    Ok(stmt) => stmt,
    Err(e) => {
    log::error!("{}", e);
    return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());
    }
    };
    let rows = match dbclient.query(&stmt, &[&gameuid, user]).await {
    Ok(rows) => rows,
    Err(e) => {
    log::error!("{}", e);
    return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());
    }
    };
    // player_name is user
    let mut delegations_from = std::collections::HashSet::new();
    // delegate_name is user
    let mut delegations_to = std::collections::HashSet::new();
    for row in rows {
    if row.get::<_, bool>(1) {
    delegations_from.insert(row.get::<_, String>(2));
    } else if row.get::<_, bool>(3) {
    delegations_to.insert(row.get::<_, &str>(0).to_lowercase());
    }
  • replacement in src/pages/slow_game.rs at line 162
    [3.612][3.612:619]()
    };
    [3.612]
    [3.397]
    let stmt = match dbclient.prepare("select p.player_name, p.delegate_name, p.player_name = $2, p.delegate_name = $2 from games.players p where p.game_uid = $1 and p.client_type = 'p';").await {
    Ok(stmt) => stmt,
    Err(e) => {
    log::error!("{}", e);
    return HttpResponse::ServiceUnavailable().body(actix_web::body::None::new());
    }
    };
  • edit in src/pages/slow_game.rs at line 184
    [3.1031]
    [3.564]
    let pending_delegates = if player_itself && !delegations_from.is_empty() {
    Some(
    delegations_from
    .iter()
    .map(std::string::String::clone)
    .collect(),
    )
    } else if delegations_to.contains(&player_name.to_lowercase()) {
    Some([user].into_iter().map(std::string::String::clone).collect())
    } else {
    None
    };
  • edit in src/pages/slow_game.rs at line 253
    [2.1485]
    [11.343]
    pending_delegates,
  • edit in public/style.css at line 31
    [3.693]
    [3.693]
    }
    span.pending {
    font-style: italic;