6688756a694923bc8534bb5d94244099a80b2085
[plewww.git] / planetlab / js / plc_filter.js
1 /* $Id$ */
2
3 /* set or clear the ' invisibleRow' in the tr's classname, according to visible */
4 function plc_table_row_visible (row,visible) {
5   var cn=row.className;
6   /* clear */
7   cn=cn.replace(" invisibleRow","");
8   if (! visible) cn += " invisibleRow";
9   row.className=cn;
10 }
11
12 // /* scan the table, and mark as visible the rows that have at least one cell that contains the pattern */
13 function plc_table_filter (table_id,pattern_id) {
14   var rows = document.getElementById(table_id).getElementsByTagName("tbody")[0].rows;
15   var pattern_text = document.getElementById(pattern_id).value;
16   var row_index, row, cells, cell_index, cell, visible;
17   var pattern,i;
18   
19   // remove whitespaces at the beginning and end
20   pattern_text = pattern_text.replace(/[ \t]+$/,"");
21   pattern_text = pattern_text.replace(/^[ \t]+/,"");
22   
23   var patterns = pattern_text.split(" ");
24
25   for (row_index = 0; row=rows[row_index]; row_index++) {
26     
27     /* xxx deal with empty patterns and whitespaces */
28     if (patterns.length == 0) {
29       visible=true;
30     } else {
31       visible=false;
32       cells=row.cells;
33       for (cell_index = 0; cell=cells[cell_index]; cell_index++) {
34         for (i in patterns) {
35           pattern=patterns[i];
36           if (cell.innerHTML.match(pattern)) visible=true;
37         }
38       }
39     }
40     plc_table_row_visible(row,visible);
41   }
42   tablePaginater.init(table_id);
43 }
44
45 function plc_table_filter_reset (table_id, pattern_id) {
46   /* reset pattern */
47   document.getElementById(pattern_id).value="";
48   plc_table_filter (table_id, pattern_id);
49 }