]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5052 Rework table sort
authorStas Vilchik <vilchiks@gmail.com>
Wed, 12 Feb 2014 06:42:28 +0000 (12:42 +0600)
committerStas Vilchik <vilchiks@gmail.com>
Wed, 12 Feb 2014 06:42:28 +0000 (12:42 +0600)
Fix bug with attached events

sonar-server/src/main/webapp/javascripts/sortable.js

index a89dde491e08694ad992f29f15b04870d63bd918..6f3eae3147dff923b1cc48186b71579375ccff03 100644 (file)
 
 
   function _sort(container, rows, cellIndex, order) {
-    Array.prototype.sort.call(rows, function(a, b) {
-      var aCell = $(a).find('td').eq(cellIndex),
-          bCell = $(b).find('td').eq(cellIndex),
-          aValue = _getValue(aCell),
-          bValue = _getValue(bCell);
+    var sortArray = rows.map(function(index) {
+      var cell = $(this).find('td').eq(cellIndex);
+      return { index: index, value: _getValue(cell) };
+    }).get();
 
-      if (isNaN(aValue) || isNaN(bValue)) {
-        return order * (aValue > bValue ? 1 : -1);
+    Array.prototype.sort.call(sortArray, function(a, b) {
+      if (isNaN(a.value) || isNaN(a.value)) {
+        return order * (a.value > b.value ? 1 : -1);
       } else {
-        return order * (aValue - bValue);
+        return order * (a.value - b.value);
       }
     });
-    container.html(rows);
-    _stripe(rows);
+
+    rows.detach();
+    var newRows = jQuery();
+    sortArray.forEach(function(a) {
+      var row = rows.eq(a.index);
+      row.appendTo(container);
+      newRows = newRows.add(row);
+    });
+
+    _stripe(newRows);
   }