chiark / gitweb /
pieces from code!
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 26 Jun 2020 17:03:03 +0000 (18:03 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 26 Jun 2020 17:03:03 +0000 (18:03 +0100)
src/bin/server.rs
templates/test.tera

index 6fa03697a4385076c268302ed0b74d0585b43984..7b3fe4bfff909945188b21ea2c1ed20917ae90a8 100644 (file)
@@ -54,6 +54,7 @@ fn loading(token : InstanceAccess) -> Result<Template,RE> {
 struct SessionRenderContext {
   clientid : u64,
   defs : Vec<String>,
+  uses : Vec<String>,
 }
 
 #[derive(Deserialize)]
@@ -70,6 +71,7 @@ fn session(form : Json<SessionForm>) -> Result<Template,RE> {
     let client = Client { };
     let clientid : slotmap::KeyData = user.clients.insert(client).into();
 
+    let mut uses = vec![];
     let mut defs = vec![];
     for (gpid, pr) in &g.gs.pieces {
       let id : slotmap::KeyData = gpid.into();
@@ -91,11 +93,17 @@ fn session(form : Json<SessionForm>) -> Result<Template,RE> {
                         pri.id_piece(),
                         pr.p.svg_select(&pri)));
       defs.push(pr.p.svg_x_defs(&pri));
+
+      uses.push(format!(r##"<use href="#{}" data-p="{}" x="{}" y="{}"/>"##,
+                        pri.id_piece(),
+                        pri.id,
+                        pr.pos[0], pr.pos[1]));
     }
 
     SessionRenderContext {
       clientid : clientid.as_ffi(),
       defs,
+      uses,
     }
   };
   Ok(Template::render("test",&c))
index ff9a676aa1459ceffd2b0b756b5e2d998c5dba9a..7e88db3f824a975df775cf95208cdb951cd85204 100644 (file)
@@ -10,6 +10,7 @@
         onmousedown="drag_mousedown(event)"
         >
       <rect fill="green" x="20" y="20" width="200" height="100"/>
+{% for piece in uses %}{{piece}}{% endfor %}
       <use href="#piece42" data-p="42" x="50" y="80" />
       <use href="#piece43" data-p="43" x="50" y="60" />
       <use href="#select43" x="50" y="60" />