http://qs321.pair.com?node_id=500613


in reply to Introducing FilterOnClick for Perl

I _just_ implemented a similar functionality to an AJAX based website for log viewing. I send the data to the client then do sorting (no filtering yet, but the OP has me inspired :) ) based on the data stored in local browser memory, rather than having to re-query the servers each time. Not very perlish, but here's what I did in case anyone is interested.
var logs = new Array();function ListLogs(response) { theDoc.getElem +entById('logResults').deleteTFoot(); for (var i=0;i<response.getElementsByTagName('log').length;i++) { var members = response.getElementsByTagName('log')[i]; var columns = new Array('time','passfail','protocol','status', +'bytes','url'); var values = new Array(); for (var j=0;j<members.childNodes.length;j++) { var node = members.childNodes[j]; for (var k=0;k<columns.length;k++) { if (no +de.nodeName == columns[k] && node.firstChild) { values[columns[k]] = node.firstChild.nodeValue; } } } logs.push(values); addLog(values); } resort('url'); } var sortColumn = 'time'; function mysort(a,b) { if (a[sortColumn] > b[sortColumn]) return 1; if (a[sortColumn] < b[sortColumn]) return -1; if (a[sortColumn] == b[sortColumn]) return 0; } function resort(byfield) { theDoc.getElementById('logResults').dele +teTFoot(); sortColumn = byfield; var tmp = logs.sort(mysort); for (var i=0;i<logs.length;i++) { var a = logs[i]; addLog(a); } }

The function addLog(rec) simply adds a row to the table of log entries.