Index: modules/simpletest/simpletest.js =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.js,v retrieving revision 1.5 diff -u -r1.5 simpletest.js --- modules/simpletest/simpletest.js 29 Oct 2008 10:01:27 -0000 1.5 +++ modules/simpletest/simpletest.js 18 Nov 2008 19:21:05 -0000 @@ -5,6 +5,7 @@ */ Drupal.behaviors.simpleTestMenuCollapse = { attach: function() { + var timeout = null; // Adds expand-collapse functionality. $('div.simpletest-image').each(function() { direction = Drupal.settings.simpleTest[$(this).attr('id')].imageDirection; @@ -12,27 +13,36 @@ }); $('div.simpletest-image').click(function() { // Toggle all of the trs. - if (!Drupal.settings.simpleTest[$(this).attr('id')].clickActive) { - Drupal.settings.simpleTest[$(this).attr('id')].clickActive = true; - var trs = $(this).parents('tbody').children().filter('.' + Drupal.settings.simpleTest[$(this).attr('id')].testClass), trs_formatted = [], direction = Drupal.settings.simpleTest[$(this).attr('id')].imageDirection, self = $(this); - for (var i = 0; i < trs.length; i++) { - trs_formatted.push(trs[i]); - } - var toggleTrs = function(trs, action, action2) { - tr = trs[action](); - if (tr) { - $(tr)[action2](1, function() { - toggleTrs(trs, action, action2); - }); + var trs = $(this).parents('tbody').children('.' + Drupal.settings.simpleTest[this.id].testClass); + var direction = Drupal.settings.simpleTest[this.id].imageDirection; + var row = direction ? trs.size() - 1 : 0; + + if (timeout) { + clearTimeout(timeout); + } + + function rowToggle() { + if (direction) { + if (row >= 0) { + $(trs[row]).hide(); + row--; + timeout = setTimeout(rowToggle, 20); } - else { - Drupal.settings.simpleTest[self.attr('id')].clickActive = false; + } + else { + if (row < trs.size()) { + $(trs[row]).removeClass('js-hide').show(); + row++; + timeout = setTimeout(rowToggle, 20); } } - toggleTrs(trs_formatted, (direction ? 'pop' : 'shift'), (direction ? 'fadeOut' : 'fadeIn')); - Drupal.settings.simpleTest[$(this).attr('id')].imageDirection = !direction; - $(this).html(Drupal.settings.simpleTest.images[(direction? 0 : 1)]); } + + rowToggle(); + + $(this).html(Drupal.settings.simpleTest.images[(direction ? 0 : 1)]); + Drupal.settings.simpleTest[this.id].imageDirection = !direction; + }); } };