This code didn't work when Trivabble was served as text/html, which adds
a <tbody> tag in the DOM, while this tag is not added when Trivabble is
served as application/xhtml+xml.
rackBCR = rack.getBoundingClientRect();
bagBCR = bag.getBoundingClientRect();
- let from;
+ let from = null;
let index;
- let p = movingTile.parentNode;
- let oldP = movingTile;
- let oldOldP = null;
+ let p = movingTile;
- while (p) {
- if (p === board) {
+ while (p && !from) {
+ index = boardCells.indexOf(p);
+ if (index !== -1) {
from = "board";
- index = boardCells.indexOf(oldOldP);
-
break;
}
- if (p === rack) {
+ index = playerLetters.indexOf(p);
+ if (index !== -1) {
from = "rack";
- index = playerLetters.indexOf(oldP);
-
break;
}
- oldOldP = oldP;
- oldP = p;
p = p.parentNode;
}
+ if (!from) {
+ fatalError(new Error("Error: did not find the parent of the moving tile"));
+ return;
+ }
+
moveCMD = {
cmd: "moveLetter",
from: from,