Jeztah wrote:
> Good morning....
> 
> I have a site that can be heavy server load and decided to try and
> take out some filtering on a page..
> 
> Example. I have a page with a table of search results and would like
> to be able to put client side searching (ala Crtl+f on firefox)....
> 
> What i would like to do is make the rows not matched less opaque in
> the table so the rows that matched the string found stand out more...
> 
> Anyone done this before or know of a good resource i can look at to
> get me started....
> 
> Of course the other way is to do an ajax request for the filter but i
> dont want to load the server to much!....
> 

I wrote similar functionality for our intranet system. I can't share 
the code (contract does not allow me to), but I'll give you some tips.

I made a class to which I pass an ID/references to the filtering 
(empty) <select> elements, each of them along with css selector of 
corresponding table cells, and a reference to function which gathers 
their values and labels for values.

The configuration array looks like this:
[ { selectElem: 'id-of-select',
     columnSelector: '#myTable>tbody.content>tr>td.filteredCell_year',
     getValue: function (cell) {
        var result = cell.innerHTML.stripTags();
        return { value: result, label: result.escapeHTML() } ;
     }
    },
    { ...next filter field...}
]

Then the initialize() function iterates over the array, for each 
select element it executes gavers the cells using the selector, and 
for each cell it gets the values, I then filter the values so I keep 
only the uniqe entries. The values are then .map()'ed to new 
Options(entry.label, entry.value) and added to the corresponding select();

then, the initialize() attaches an change observer to the form 
containing the  filtering selects, so when any of the selects is 
changed I run the selector again and check if the value of the cell is 
equal to the selected one. If so i .show() the row, else - I .hide() it.

I might be not optimal approch, as I gather the cells values on each 
change, but for our ca 100 rows tables I is fast enought, so I don't 
care (yet). I'll optimize when necessary.

I didn't bother to create the selects dynamically, but it would be 
possible to achieve that.

Anyway,
A good read through the Enumerable documentation will be helpful while 
writing this function.

Hope this helps,
SWilk

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to