diff options
author | svncommit <devs@roundcube.net> | 2007-02-21 10:11:59 +0000 |
---|---|---|
committer | svncommit <devs@roundcube.net> | 2007-02-21 10:11:59 +0000 |
commit | 6ea80c84afa782ed650ec07123f885586fe4de27 (patch) | |
tree | f9fb802ebb58f06cc536efb55e623f1e23287f48 /program/js | |
parent | 9bebdfcb6ad7e91a218e5811f6fce9e1a956ecc8 (diff) |
Faster sorting of subscription folder list.
Diffstat (limited to 'program/js')
-rw-r--r-- | program/js/app.js | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/program/js/app.js b/program/js/app.js index 34fa68572..376990cb1 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -2737,28 +2737,27 @@ function rcube_webmail() // sort subscription folder list this.sort_subscription_list = function() { + var index = new Array(); var tbody = this.gui_objects.subscriptionlist.tBodies[0]; + var swapped = false; for (var i = 0; i<(tbody.childNodes.length-1); i++) - { if (this.env.subscriptionrows[tbody.childNodes[i].id]!=null) + index.push(i); + for (i = 0; i<(index.length-1); i++) + { + if (this.env.subscriptionrows[tbody.childNodes[index[i]].id][0]> + this.env.subscriptionrows[tbody.childNodes[index[i+1]].id][0]) { - var swapped = false; - for (var j = i+1; j<(tbody.childNodes.length); j++) - { - if ((this.env.subscriptionrows[tbody.childNodes[j].id]!=null) && - (this.env.subscriptionrows[tbody.childNodes[i].id][0]> - this.env.subscriptionrows[tbody.childNodes[j].id][0])) - { - var swap = tbody.replaceChild(tbody.childNodes[i], tbody.childNodes[j]); - if (typeof(tbody.childNodes[i]) != 'undefined') - tbody.insertBefore(swap, tbody.childNodes[i]) - else - tbody.appendChild(swap); - swapped = true; - } - } + var swap = tbody.replaceChild(tbody.childNodes[index[i]], tbody.childNodes[index[i+1]]); + if (typeof(tbody.childNodes[index[i]]) != 'undefined') + tbody.insertBefore(swap, tbody.childNodes[index[i]]) + else + tbody.appendChild(swap); + swapped = true; } } + if (swapped) + this.sort_subscription_list(); }; |