From 311a82ebbf755a47d4b74e104d55b82f60d5a254 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 6 Jul 2020 18:27:51 +0100 Subject: [PATCH] wip grab/ungrab api --- src/bin/server.rs | 1 - templates/script.js | 33 ++++++++++++++++++--------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/bin/server.rs b/src/bin/server.rs index 144c39e4..8b4bddd8 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -119,7 +119,6 @@ struct ApiPiece { piece : VisiblePieceId, gen : Generation, cseq : ClientSequence, - #[serde(flatten)] op : O, } trait ApiPieceOp : Debug { diff --git a/templates/script.js b/templates/script.js index 30afbbb1..c554986a 100644 --- a/templates/script.js +++ b/templates/script.js @@ -96,6 +96,18 @@ function api_posted() { api_check(); } +function api_piece(meth, piece, pelem, op) { + cseq += 1; + pelem.dataset.cseq = cseq; + api(meth, { + ctoken : ctoken, + piece : piece, + gen : gen, + cseq : cseq, + op : op, + }) +} + // ----- clicking/dragging pieces ----- const DRAGGING = { // bitmask @@ -124,16 +136,9 @@ function drag_mousedown(e) { if (gplayer == us) { dragging = DRAGGING.MAYBE_UNGRAB; } else { - cseq += 1; dragging = DRAGGING.MAYBE_GRAB; pelem = set_grab(drag_uelem, piece, us); - pelem.dataset.cseq = cseq; - api('grab', { - ctoken : ctoken, - piece : piece, - gen : gen, - cseq : cseq, - }) + api_piece('grab', piece, pelem, { }); } window.addEventListener('mousemove', drag_mousemove, true); @@ -143,7 +148,7 @@ function drag_mousedown(e) { function set_grab(uelem, piece, owner) { uelem.dataset.gplayer = owner; // var [p, piece] = - pelem = piece_cleanup_grab(piece); + var pelem = piece_cleanup_grab(piece); var nelem = document.createElementNS(svg_ns,'use'); nelem.setAttributeNS(null,'href','#select'+piece); nelem.setAttributeNS(null,'stroke-dasharray',"3 1 1 1 1 1"); @@ -153,7 +158,8 @@ function set_grab(uelem, piece, owner) { } function set_ungrab(uelem, piece) { uelem.dataset.gplayer = ""; - piece_cleanup_grab(piece); + var pelem = piece_cleanup_grab(piece); + return pelem; } function piece_cleanup_grab(piece) { var pelem = document.getElementById('piece'+piece); @@ -195,11 +201,8 @@ function drag_mouseup(e) { if (dragging == DRAGGING.MAYBE_UNGRAB || dragging == (DRAGGING.MAYBE_GRAB | DRAGGING.YES)) { piece = drag_uelem.dataset.piece; - set_ungrab(drag_uelem, piece); - api('ungrab', { - ctoken : token, - piece : drag_uelem.dataset.piece, - }); + var pelem = set_ungrab(drag_uelem, piece); + api_piece('ungrab', drag_uelem.dataset.piece, pelem, { }); } drag_cancel(e); } -- 2.30.2