Skip to content

Commit

Permalink
[FIXED JENKINS-11551] Preserve ordering even if there are same values
Browse files Browse the repository at this point in the history
  • Loading branch information
ohtake authored and kohsuke committed Nov 7, 2011
1 parent 117ed69 commit 951f447
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 13 deletions.
4 changes: 3 additions & 1 deletion changelog.html
Expand Up @@ -58,7 +58,9 @@
<li class=bug>
java.io.IOException: Unexpected termination of the channel - SEVERE: I/O error in channel Chunked connection when using jenkins-cli.jar (works on older Hudson version)
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-11130">issue 11130</a>)
<li class=>
<li class=rfe>
Sortable table wasn't "stable" when there are same values in different rows
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-11551">issue 11551</a>)
</ul>
</div><!--=TRUNK-END=-->

Expand Down
25 changes: 13 additions & 12 deletions war/src/main/webapp/scripts/sortable.js
Expand Up @@ -98,13 +98,11 @@ function extractData(x) {
var arrowTable = {
up: {
id: "up",
text: "&nbsp;&nbsp;&uarr;",
reorder: function(rows) { rows.reverse(); }
text: "&nbsp;&nbsp;&uarr;"
},
down: {
id: "down",
text: "&nbsp;&nbsp;&darr;",
reorder: function() {}
text: "&nbsp;&nbsp;&darr;"
},
none: {
id: "none",
Expand Down Expand Up @@ -137,21 +135,24 @@ function ts_resortTable(lnk) {
for (i=0;i<table.rows[0].length;i++) { firstRow[i] = table.rows[0][i]; }
for (j=1;j<table.rows.length;j++) { newRows[j-1] = table.rows[j]; }

newRows.sort(function(a,b) {
return sortfn(
extractData(a.cells[column]),
extractData(b.cells[column]));
});

var dir = span.sortdir;
if (arrowTable.lnkRef != lnk) {
if (dir == null) dir = arrowTable.up;
} else {
dir = dir.next; // new sort direction
}

var sortfn2 = sortfn;
if(dir === arrowTable.up) {
// ascending
sortfn2 = function(a,b){return -sortfn(a,b)};
}
newRows.sort(function(a,b) {
return sortfn2(
extractData(a.cells[column]),
extractData(b.cells[column]));
});

arrowTable.lnkRef = lnk; // make column sort down only if column selected is same as last
dir.reorder(newRows);
span.sortdir = dir;

// We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
Expand Down

0 comments on commit 951f447

Please sign in to comment.