Browse Source

Make batch messages consistent.

dev_h
Finn Krein 3 years ago
parent
commit
e5e43b87c6
3 changed files with 29 additions and 34 deletions
  1. 6
    14
      client-data/tools/hand/hand.js
  2. 1
    3
      server/boardData.js
  3. 22
    17
      server/sockets.js

+ 6
- 14
client-data/tools/hand/hand.js View File

@@ -140,8 +140,7 @@
140 140
 	    }
141 141
 	})
142 142
 	var msg = {
143
-	    type: "batch",
144
-	    msgs: msgs
143
+	    _children: msgs
145 144
 	};
146 145
 	{
147 146
 	    let tmatrix = get_translate_matrix(selectionRect);
@@ -184,19 +183,11 @@
184 183
 	}
185 184
 
186 185
     function draw(data) {
186
+	if (data._children) {
187
+	    batchCall(draw, data._children);
188
+	}
189
+	else {
187 190
 	switch (data.type) {
188
-	case "batch":
189
-	    for ([i,msg] of data.msgs.entries()) {
190
-		switch (msg.type) {
191
-		case "update":
192
-		    let tmatrix = get_translate_matrix(Tools.svg.getElementById(msg.id));
193
-		    tmatrix.e = msg.deltax || 0;
194
-		    tmatrix.f = msg.deltay || 0;
195
-		    break;
196
-		    // Eventually also "delete"?
197
-		}
198
-	    }
199
-	    break;
200 191
 		case "update":
201 192
 			var elem = Tools.svg.getElementById(data.id);
202 193
 			if (!elem) throw new Error("Mover: Tried to move an element that does not exist.");
@@ -208,6 +199,7 @@
208 199
 	    throw new Error("Mover: 'move' instruction with unknown type. ", data);
209 200
 		}
210 201
 	}
202
+    }
211 203
 
212 204
     function clickSelector(x ,y , evt) {
213 205
 	var scale = Tools.drawingArea.getCTM().a

+ 1
- 3
server/boardData.js View File

@@ -113,7 +113,7 @@ class BoardData {
113 113
    * @param {envelope} array of messages to be delegated to the other methods
114 114
    */
115 115
   batch(envelope) {
116
-    for (const message of envelope.msgs) {
116
+    for (const message of envelope._children) {
117 117
       let id = message.id;
118 118
       switch (message.type) {
119 119
         case "delete":
@@ -125,8 +125,6 @@ class BoardData {
125 125
         case "child":
126 126
           this.addChild(message.parent, message);
127 127
           break;
128
-        case "batch":
129
-          throw new Error("Nested batch message: ", message);
130 128
         default:
131 129
           //Add data
132 130
           if (!id) throw new Error("Invalid message: ", message);

+ 22
- 17
server/sockets.js View File

@@ -160,24 +160,29 @@ function handleMessage(boardName, message, socket) {
160 160
 
161 161
 async function saveHistory(boardName, message) {
162 162
   var id = message.id;
163
+  if (!message.tool && !message._children) {
164
+    console.error("Received a badly formatted message (no tool). ", message);
165
+  }
163 166
   var board = await getBoard(boardName);
164
-  switch (message.type) {
165
-    case "delete":
166
-      if (id) board.delete(id);
167
-      break;
168
-    case "update":
169
-      if (id) board.update(id, message);
170
-      break;
171
-    case "child":
172
-      board.addChild(message.parent, message);
173
-      break;
174
-    case "batch":
175
-      board.batch(message);
176
-      break;
177
-    default:
178
-      //Add data
179
-      if (!id) throw new Error("Invalid message: ", message);
180
-      board.set(id, message);
167
+  if (message._children) {
168
+    board.batch(message);
169
+  }
170
+  else {
171
+    switch (message.type) {
172
+      case "delete":
173
+        if (id) board.delete(id);
174
+        break;
175
+      case "update":
176
+        if (id) board.update(id, message);
177
+        break;
178
+      case "child":
179
+        board.addChild(message.parent, message);
180
+        break;
181
+      default:
182
+        //Add data
183
+        if (!id) throw new Error("Invalid message: ", message);
184
+        board.set(id, message);
185
+    }
181 186
   }
182 187
 }
183 188
 

Loading…
Cancel
Save