Skip to content

Commit b9f5abe

Browse files
author
Xing
committed
almost there...
1 parent 4d4399d commit b9f5abe

File tree

2 files changed

+112
-41
lines changed

2 files changed

+112
-41
lines changed

js/enums.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,9 @@ var swapside = {
2727
NO: 0
2828
};
2929

30+
var rowtypes = {
31+
ONLY: 0,
32+
MIDDLE: 1,
33+
START: 2,
34+
END: 3
35+
};

js/render.js

Lines changed: 106 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -789,26 +789,43 @@ function getLeftXForWord(word, link) {
789789
if (word instanceof Word) { //is a word
790790
return word.leftX;
791791
} else { //is a link
792+
if (determineSide(link) == swapside.YES) {
793+
if (link.leftAttach == sides.RIGHT) {
794+
return word.linesLeftX[0];
795+
} else if (link.leftAttach == sides.LEFT){
796+
return word.linesLeftX[0];
797+
}
798+
}
799+
else {
800+
if (link.leftAttach == sides.LEFT) {
801+
return word.linesLeftX[0];
802+
} else if (link.leftAttach == sides.RIGHT){
803+
return word.linesLeftX[0];
804+
}
805+
}
792806

793-
if (link.leftAttach == sides.LEFT) {
794-
return word.linesLeftX[0];
795-
} else if (link.leftAttach == sides.RIGHT){
796-
return word.linesLeftX[0];
797-
798807
// return word.linesLeftX[word.numLineSegments-1];
799-
}
800808
}
801809
}
802810

803811
function getRightXForWord(word, link) {
804812
if (word instanceof Word) { //is a word
805813
return word.rightX;
806814
} else { //is a link
807-
if (link.leftAttach == sides.LEFT) {
808-
return word.linesRightX[0];
809-
} else if (link.leftAttach == sides.RIGHT) {
810-
return word.linesRightX[0];
811-
// return word.linesRightX[word.numLineSegments-1];
815+
if (determineSide(link) == swapside.YES) {
816+
if (link.leftAttach == sides.RIGHT) {
817+
return word.linesRightX[0];
818+
} else if (link.leftAttach == sides.LEFT) {
819+
return word.linesRightX[0];
820+
// return word.linesRightX[word.numLineSegments-1];
821+
}
822+
}
823+
else{
824+
if (link.leftAttach == sides.LEFT) {
825+
return word.linesLeftX[0];
826+
} else if (link.leftAttach == sides.RIGHT){
827+
return word.linesLeftX[0];
828+
}
812829
}
813830
}
814831
}
@@ -983,7 +1000,7 @@ function getLinkStyles(link, xpts) {
9831000
function storeOnlyArrows(rowNum, y1, link, xPositions) {
9841001

9851002
arrowPos = [];
986-
1003+
console.log("xPos Length: " + xPositions.length);
9871004
for (var i = 0; i < xPositions.length; i++) {
9881005

9891006
var wordIdx = xPositions[i].wordIdx;
@@ -1116,7 +1133,7 @@ function calculateStartRow(idx, rowNum, link, percentagePadding, xPositions, lin
11161133

11171134
console.log("START link.polylines[i] style = " + linkStyles[idx] );
11181135

1119-
//storeArrow(0, p1x, p1y, link, link.leftWord, link.leftAttach, getLeftXForLeftWord(link), getRightXForLeftWord(link));
1136+
//storeArrow(0, p1x, p1y, link, link.leftWord, link.leftAttach, getLeftXForLeftWord(link), getRightXForLeftWord(link));
11201137

11211138
//storeLeftArrow(p1x, p1y, link, link.leftWord, link.leftAttach, getLeftXForLeftWord(link), getRightXForLeftWord(link));
11221139

@@ -1407,20 +1424,20 @@ function drawLink(link) {
14071424
var percentagePadding = availableHeight / (rows[i].maxSlots + 1);
14081425

14091426
if (i == minRow && minRow == maxRow) { //ONLY ROW
1410-
var rowAttachXPos = filterXPositionsForOnlyThisRow(attachmentXPositions, i, link);
1427+
var rowAttachXPos = filterXPositionsForOnlyThisRow(attachmentXPositions, i, link, rowtypes.ONLY);
14111428

14121429
calculateOnlyRow(minRow, link, percentagePadding, rowAttachXPos, linkStyles);
14131430
} else if (i == minRow) { //FIRST ROW
14141431

1415-
var rowAttachXPos = filterXPositionsForOnlyThisRow(attachmentXPositions, minRow, link, -1);
1432+
var rowAttachXPos = filterXPositionsForOnlyThisRow(attachmentXPositions, minRow, link, rowtypes.START);
14161433

14171434
calculateStartRow(rowNum, i, link, percentagePadding, rowAttachXPos, linkStyles);
14181435
} else if (i == maxRow) { //LAST ROW
14191436

1420-
var rowAttachXPos = filterXPositionsForOnlyThisRow(attachmentXPositions, maxRow, link, 1);
1437+
var rowAttachXPos = filterXPositionsForOnlyThisRow(attachmentXPositions, maxRow, link, rowtypes.END);
14211438
calculateEndRow(rowNum, i, link, percentagePadding, rowAttachXPos, linkStyles);
14221439
} else { //MIDDLE ROW
1423-
var rowAttachXPos = filterXPositionsForOnlyThisRow(attachmentXPositions, i, link);
1440+
var rowAttachXPos = filterXPositionsForOnlyThisRow(attachmentXPositions, i, link, rowtypes.MIDDLE);
14241441

14251442
calculateMiddleRow(rowNum, i, link, percentagePadding, rowAttachXPos, linkStyles);
14261443
}
@@ -1431,19 +1448,30 @@ function drawLink(link) {
14311448

14321449

14331450

1434-
function filterXPositionsForOnlyThisRow(attachmentXPositions, row, link, which) {
1435-
1451+
function filterXPositionsForOnlyThisRow(attachmentXPositions, row, link, type) {
1452+
// type:
1453+
// 0 only/middle
1454+
// 1 start
1455+
// 2 end
14361456
var rowAttachXPos = [];
1437-
1457+
//console.log("attachmentXPositions: " + attachmentXPositions.length);
14381458
for (var aaa = 0; aaa < attachmentXPositions.length; aaa++) {
1459+
14391460
if (link.words[aaa] instanceof Link) {
14401461

14411462
console.log("rootMinWord = " + link.words[aaa].rootMinWord.toString());
14421463
console.log("rootMaxWord = " + link.words[aaa].rootMaxWord.toString());
1443-
1444-
if (link.words[aaa].rootMinWord.row.idx == row) {
1445-
rowAttachXPos.push( {wordIdx:aaa, xpos:attachmentXPositions[aaa]} );
1464+
//console.log("link idx: " + link.words[aaa].rootMinWord.row.idx + " row: " + row);
1465+
if (link.words[aaa].rootMinWord.row.idx == row ) {
1466+
rowAttachXPos.push( {wordIdx:aaa, xpos:attachmentXPositions[aaa]} );
1467+
console.log("linkaaa: " + link.words[aaa].rootMinWord);
14461468
}
1469+
else if (type == rowtypes.END) {
1470+
if (link.words[aaa].rootMinWord.row.idx != link.words[aaa].rootMaxWord.row.idx) {
1471+
console.log("linkaaa: " + link.words[aaa].rootMinWord );
1472+
rowAttachXPos.push( {wordIdx:aaa, xpos:attachmentXPositions[aaa+1]} );
1473+
}
1474+
}
14471475

14481476
} else if (link.words[aaa] instanceof Word) {
14491477

@@ -1452,11 +1480,12 @@ function filterXPositionsForOnlyThisRow(attachmentXPositions, row, link, which)
14521480
}
14531481
}
14541482
}
1455-
1483+
//console.log("rowAttachXpos: " + rowAttachXPos);
14561484
return rowAttachXPos;
14571485
}
14581486

14591487

1488+
14601489
function storeArrow(idx, x, y, link, word, side, leftX, rightX) {
14611490
console.log("\n *** in storedArrow \n x: " + x + " y: " + y + " word: " + word );
14621491
link.arrows[idx] = {x:x, y:y, link:link, word:word, side:side, leftX:leftX, rightX: rightX, visibility:true};
@@ -1479,22 +1508,40 @@ function getLeftXForLeftWord(link) {
14791508
if (link.leftType == types.WORD) {
14801509
return link.leftWord.leftX;
14811510
} else { //link
1482-
if (link.leftAttach == sides.LEFT) {
1483-
return link.leftWord.linesLeftX[0];
1484-
} else if (link.leftAttach == sides.RIGHT){
1485-
return link.leftWord.linesLeftX[link.leftWord.numLineSegments-1];
1486-
}
1511+
if (determineSide(link) == swapside.YES) {
1512+
if (link.leftAttach == sides.RIGHT) {
1513+
return link.leftWord.linesLeftX[0];
1514+
} else if (link.leftAttach == sides.LEFT){
1515+
return link.leftWord.linesLeftX[link.leftWord.numLineSegments-1];
1516+
}
1517+
}
1518+
else {
1519+
if (link.leftAttach == sides.LEFT) {
1520+
return link.leftWord.linesLeftX[0];
1521+
} else if (link.leftAttach == sides.RIGHT){
1522+
return link.leftWord.linesLeftX[link.leftWord.numLineSegments-1];
1523+
}
1524+
}
14871525
}
14881526
}
14891527

14901528
function getRightXForLeftWord(link) {
14911529
if (link.leftType == types.WORD) {
14921530
return link.leftWord.rightX;
14931531
} else { //link
1494-
if (link.leftAttach == sides.LEFT) {
1495-
return link.leftWord.linesRightX[0];
1496-
} else if (link.leftAttach == sides.RIGHT) {
1497-
return link.leftWord.linesRightX[link.leftWord.numLineSegments-1];
1532+
if (determineSide(link) == swapside.YES) {
1533+
if (link.leftAttach == sides.RIGHT) {
1534+
return link.leftWord.linesRightX[0];
1535+
} else if (link.leftAttach == sides.LEFT) {
1536+
return link.leftWord.linesRightX[link.leftWord.numLineSegments-1];
1537+
}
1538+
}
1539+
else {
1540+
if (link.leftAttach == sides.LEFT) {
1541+
return link.leftWord.linesRightX[0];
1542+
} else if (link.leftAttach == sides.RIGHT) {
1543+
return link.leftWord.linesRightX[link.leftWord.numLineSegments-1];
1544+
}
14981545
}
14991546
}
15001547
}
@@ -1503,10 +1550,19 @@ function getLeftXForRightWord(link) {
15031550
if (link.rightType == types.WORD) {
15041551
return link.rightWord.leftX;
15051552
} else { //link
1506-
if (link.rightAttach == sides.LEFT) {
1507-
return link.rightWord.linesLeftX[0];
1508-
} else if (link.rightAttach == sides.RIGHT) {
1509-
return link.rightWord.linesLeftX[link.rightWord.numLineSegments-1];
1553+
if (determineSide(link) == swapside.YES) {
1554+
if (link.rightAttach == sides.RIGHT) {
1555+
return link.rightWord.linesLeftX[0];
1556+
} else if (link.rightAttach == sides.LEFT) {
1557+
return link.rightWord.linesLeftX[link.rightWord.numLineSegments-1];
1558+
}
1559+
}
1560+
else {
1561+
if (link.rightAttach == sides.LEFT) {
1562+
return link.rightWord.linesLeftX[0];
1563+
} else if (link.rightAttach == sides.RIGHT) {
1564+
return link.rightWord.linesLeftX[link.rightWord.numLineSegments-1];
1565+
}
15101566
}
15111567
}
15121568
}
@@ -1515,10 +1571,19 @@ function getRightXForRightWord(link) {
15151571
if (link.rightType == types.WORD) {
15161572
return link.rightWord.rightX;
15171573
} else { //link
1518-
if (link.rightAttach == sides.LEFT) {
1519-
return link.rightWord.linesRightX[0];
1520-
} else if (link.rightAttach == sides.RIGHT) {
1521-
return link.rightWord.linesRightX[link.rightWord.numLineSegments-1];
1574+
if (determineSide(link) == swapside.YES) {
1575+
if (link.rightAttach == sides.RIGHT) {
1576+
return link.rightWord.linesRightX[0];
1577+
} else if (link.rightAttach == sides.LEFT) {
1578+
return link.rightWord.linesRightX[link.rightWord.numLineSegments-1];
1579+
}
1580+
}
1581+
else {
1582+
if (link.rightAttach == sides.LEFT) {
1583+
return link.rightWord.linesLeftX[0];
1584+
} else if (link.rightAttach == sides.RIGHT) {
1585+
return link.rightWord.linesLeftX[link.rightWord.numLineSegments-1];
1586+
}
15221587
}
15231588
}
15241589
}

0 commit comments

Comments
 (0)