chiark / gitweb /
wip
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 5 Jul 2020 20:33:06 +0000 (21:33 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 5 Jul 2020 20:33:10 +0000 (21:33 +0100)
src/bin/server.rs
templates/script.js

index 758af9665eacea1a93a2fd81dc1776c1a84dbf26..98268e274de4c7c0cc88e42d6f5c6a144b55fe44 100644 (file)
@@ -92,7 +92,8 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
       alldefs.push((pri.id, defs));
 
       uses.push(format!(
-        r##"<use href="#{}" data-piece="{}" data-gplayer="" x="{}" y="{}"/>"##,
+        r##"<use id="use{}" href="#{}" data-piece="{}" data-gplayer="" x="{}" y="{}"/>"##,
+                        pri.id_piece(),
                         pri.id_piece(),
                         pri.id,
                         pr.pos[0], pr.pos[1]));
index 2e13955de1fecb831f48e1605f2fe61ca9a658b8..872ee1242265b28c807f45f40d5af335e3c17c80 100644 (file)
@@ -8,7 +8,8 @@
 // In svg toplevel
 //
 //   uelem
-//      <use href="#piece{}" x= y= >
+//      #use{}
+//      <use id="use{}", href="#piece{}" x= y= >
 //         .piece   piece id (static)
 //         .gplayer  grabbed user (player id string, or "")
 //      container to allow quick movement and hang stuff off
@@ -213,6 +214,19 @@ function drag_cancel() {
 
 messages.PieceUpdate = function(data) {
   console.log('PIECE UPDATE ',data)
+  var piece = data[0];
+  var info = data [1];
+  var uelem = document.getElementById('use'+piece);
+  var delem = document.getElementById('defs'+piece);
+  delem.innerHTML = info.svgs;
+  uelem.setAttributeNS(null, "x", info.pos[0]);
+  uelem.setAttributeNS(null, "y", info.pos[1]);
+  // xxx do something about conflict
+  if (info.held == '') {
+    set_ungrab(uelem, piece);
+  } else {
+    set_grab(uelem, piece, info.held);
+  }
 }
 
 function startup() {