Skip to content

Commit 742df85

Browse files
committed
fix move down rowcode
1 parent 5a511cd commit 742df85

File tree

3 files changed

+32
-17
lines changed

3 files changed

+32
-17
lines changed

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
<!DOCTYPE html>
12
<html>
23
<head>
34
<meta charset="utf-8">

js/interact.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -522,9 +522,9 @@ function setWordToXW(word, xval, wval) {
522522

523523
}
524524

525-
function dragWord(x, y, word) {
525+
function dragWord(x, y, word, direction) {
526526

527-
var dragDir = checkDragDirection(x);
527+
var dragDir = direction || checkDragDirection(x);
528528

529529
if (dragDir == directions.BACKWARD) {
530530
return checkIfCanMoveLeft(x + rowOffsetX, word.underneathRect.width(), y, word, false);

js/wordcollapser.js

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ const WordCollapser = (function() {
3636
if (c === 65) { // A
3737
listenForLeftWord();
3838
}
39+
else if (c === 83) { // S
40+
listenForUnjoin();
41+
}
3942
else {
4043
cancel();
4144
}
@@ -54,7 +57,7 @@ const WordCollapser = (function() {
5457
text = text.slice(0, 12) + "…" + text.slice(-12);
5558
}
5659

57-
let phrase = new Word(text, leftWord.idx);
60+
let phrase = new Word(text, leftWord.idx, ' ');
5861

5962
let row = leftWord.row;
6063

@@ -133,35 +136,46 @@ const WordCollapser = (function() {
133136
}
134137

135138
function unjoinWord(word) {
139+
let i = word.row.words.indexOf(word);
140+
let row = word.row;
141+
136142
[].splice.apply(wordObjs, [wordObjs.indexOf(word), 1].concat(word.removedWords));
137-
[].splice.apply(word.row.words, [word.row.words.indexOf(word), 1].concat(word.removedWords));
143+
[].splice.apply(row.words, [i, 1].concat(word.removedWords));
138144

139145
// set position of uncollapsed words
140146
const rowWidth = Config.svgWidth - Config.edgePadding * 2;
141147
let x = word.leftX;
142-
const y = word.underneathRect.y();
148+
let y = word.underneathRect.y();
143149
word.removedWords.forEach(rw => {
144-
rw.row = word.row;
145-
moveWordToNewPosition(rw, x, y);
146-
x += rw.underneathRect.width() + Config.wordPadding;
150+
rw.row = row;
151+
rw.leftX = -1;
147152
rw.svg.show();
148153
});
154+
149155
// rearrange remaining words on row
150-
let i = word.row.words.indexOf(word.removedWords[word.removedWords.length - 1]) + 1;
151-
while (word.row.words[i]) {
152-
if (x <= word.row.words[i].leftX) {
156+
while (row.words[i]) {
157+
if (x <= row.words[i].leftX) {
153158
break;
154159
}
155-
moveWordToNewPosition(word.row.words[i], x, y);
156-
x += word.row.words[i].underneathRect.width() + Config.wordPadding;
160+
moveWordToNewPosition(row.words[i], x, y);
161+
x += row.words[i].underneathRect.width() + Config.wordPadding;
157162
if (x > rowWidth) {
158-
if (word.row.idx + 1 === rows.length) { appendRow(); }
159-
moveWordDownARow(word.row.words[i]);
163+
// move down a row
164+
if (row.idx + 1 === rows.length) { appendRow(); }
165+
let w = row.words[i];
166+
for (let j = row.words.length - 1; j >=i; --j) {
167+
moveWordDownARow(row.words[j]);
168+
}
169+
row = w.row;
170+
x = w.leftX + w.underneathRect.width() + Config.wordPadding;
171+
y = w.underneathRect.y();
172+
i = 1;
173+
}
174+
else {
175+
++i;
160176
}
161-
++i;
162177
}
163178

164-
165179
// revert assigned references to word in link
166180
function revertLinkWordObject(link) {
167181
['leftWord', 'rightWord', 'nearestConnectedMaxWord', 'nearestConnectedMinWord', 'rootMaxWord', 'rootMinWord'].forEach(prop => {

0 commit comments

Comments
 (0)