From: Niklas Laxström Date: Fri, 24 Feb 2006 23:28:00 +0000 (+0000) Subject: Should be a little bit faster now X-Git-Tag: 1.6.0~283 X-Git-Url: http://git.cyclocoop.org/url?a=commitdiff_plain;h=30053886c35a892dc7af53868e7e4189e13ed395;p=lhc%2Fweb%2Fwiklou.git Should be a little bit faster now --- diff --git a/skins/common/wikibits.js b/skins/common/wikibits.js index ce2811ca14..a43028c784 100644 --- a/skins/common/wikibits.js +++ b/skins/common/wikibits.js @@ -552,22 +552,41 @@ function allmessagesfilter() { text = document.getElementById('allmessagesinput').value; k = document.getElementById('allmessagestable'); if (!k) { return;} - items = k.getElementsByTagName('span'); - for (var i = 0; i< items.length; i++) { - var hItem = items[i].getAttribute('id'); - if (hItem.substring(0,17) == 'sp-allmessages-i-') { - if (items[i].firstChild && items[i].firstChild.nodeName == '#text' && items[i].firstChild.nodeValue.indexOf(text) != -1) { - var s = "allmessageshelper(\"" + hItem + "\",'')"; - var k = window.setTimeout(s,i); - } else { - var s = "allmessageshelper(\"" + hItem + "\",'none')"; - var k = window.setTimeout(s,i); + + var items = k.getElementsByTagName('span'); + + if ( text.length > allmessages_prev.length ) { + for (var i = items.length-1, j = 0; i >= 0; i--) { + j = allmessagesforeach(items, i, j); + } + } else { + for (var i = 0, j = 0; i < items.length; i++) { + j = allmessagesforeach(items, i, j); + } + } + allmessages_prev = text; +} + +function allmessagesforeach(items, i, j) { + var hItem = items[i].getAttribute('id'); + if (hItem.substring(0,17) == 'sp-allmessages-i-') { + if (items[i].firstChild && items[i].firstChild.nodeName == '#text' && items[i].firstChild.nodeValue.indexOf(text) != -1) { + if ( document.getElementById( hItem.replace('i', 'r1') ).style.display != '' ) { + var s = "allmessageshider(\"" + hItem + "\",'')"; + var k = window.setTimeout(s,j++*5); + } + } else { + if ( document.getElementById( hItem.replace('i', 'r1') ).style.display != 'none' ) { + var s = "allmessageshider(\"" + hItem + "\",'none')"; + var k = window.setTimeout(s,j++*5); } } } + return j; } -function allmessageshelper(hItem, style) { + +function allmessageshider(hItem, style) { document.getElementById( hItem.replace('i', 'r1') ).style.display = style; var row = document.getElementById( hItem.replace('i', 'r2') ); if (row) { row.style.display = style; } @@ -594,6 +613,8 @@ function allmessagesmodified() { function allmessagesshow() { k = document.getElementById('allmessagesfilter'); if (k) { k.style.display = ''; } + + allmessages_prev = ''; } hookEvent("load", allmessagesshow); \ No newline at end of file