chiark / gitweb /
infopane: Plumbing for player list
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 14 Jan 2021 00:00:41 +0000 (00:00 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 14 Jan 2021 00:00:41 +0000 (00:00 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/session.rs
src/global.rs
templates/macros.tera

index 29735b7656eb27ddf5e8879fdddb5a1124e45757..d78b139f6308b9b6650cdfe0d49912b32ea8d5ec 100644 (file)
@@ -20,6 +20,7 @@ struct SessionRenderContext {
   sse_url_prefix: String,
   links: Html,
   scale: f64,
+  player_info_pane: Html,
 }
 
 #[derive(Debug,Serialize)]
@@ -87,6 +88,8 @@ fn session_inner(form : Json<SessionForm>,
     let mut uses = vec![];
     let mut alldefs = vec![];
 
+    let player_info_pane = ig.player_info_pane()?;
+
     let mut load_players = HashMap::new();
     for (player, _pl) in &ig.gs.players {
       let dataload = DataLoadPlayer::from_player(ig, player);
@@ -196,6 +199,7 @@ fn session_inner(form : Json<SessionForm>,
       scale: SVG_SCALE,
       nick: gpl.nick.clone(),
       sse_url_prefix,
+      player_info_pane,
       ptoken: form.ptoken.clone(),
       links: (&*ig.links).into(),
       load: serde_json::to_string(&DataLoad {
index 0383c300e11f47355f41488680e28766048dc6d0..f873f1f836438c1a3952bf969908b7844083e20d 100644 (file)
@@ -408,9 +408,9 @@ impl Instance {
   }
 
   #[throws(InternalError)]
-  fn player_info_pane(&self) -> Arc<Html> {
+  pub fn player_info_pane(&self) -> Html {
     let html = Html::from_txt("Players list from server, but NYI");// xxx
-    Arc::new(html)
+    html
   }
 }
 
@@ -528,7 +528,7 @@ impl<'ig> InstanceGuard<'ig> {
     self.c.g.iplayers.insert(player, record);
 
     let update = (||{
-      let new_info_pane = self.player_info_pane()?;
+      let new_info_pane = Arc::new(self.player_info_pane()?);
 
       let update = PreparedUpdateEntry::AddPlayer {
         player, new_info_pane,
@@ -652,7 +652,7 @@ impl<'ig> InstanceGuard<'ig> {
     swap_things(self);
     undo.push(Box::new(swap_things));
 
-    let new_info_pane = self.player_info_pane()?;
+    let new_info_pane = Arc::new(self.player_info_pane()?);
 
     self.save_game_now().map_err(|e|{
       // oof
index 099c76962bd52856e9b814047c010e2301a3d749..20ccbf5957a17fef610f26fc15057c735ce05dd2 100644 (file)
@@ -102,7 +102,7 @@ Hi {{nick | escape}}
  </div>
 
  <div id="pane_players" class="somepane" style="display:none">
-   Player list will appear here.
+{{ player_info_pane }}
  </div>
 
 </div id="infopane">