summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsvncommit <devs@roundcube.net>2007-02-21 10:11:59 +0000
committersvncommit <devs@roundcube.net>2007-02-21 10:11:59 +0000
commit6ea80c84afa782ed650ec07123f885586fe4de27 (patch)
treef9fb802ebb58f06cc536efb55e623f1e23287f48
parent9bebdfcb6ad7e91a218e5811f6fce9e1a956ecc8 (diff)
Faster sorting of subscription folder list.
-rw-r--r--program/js/app.js31
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();
};