|
3 | 3 | * Dual licensed under the MIT and GPLv2 licenses just as jQuery is: |
4 | 4 | * http://jquery.org/license |
5 | 5 | * |
6 | | - * Multi-columns fork by natinusala |
| 6 | + * Multi-columns support by natinusala |
7 | 7 | * |
8 | 8 | * documentation at http://gregweber.info/projects/uitablefilter |
9 | | - * https://github.com/natinusala/jquery-uitablefilter |
10 | 9 | * |
11 | 10 | * allows table rows to be filtered (made invisible) |
12 | 11 | * <code> |
|
23 | 22 | * default:whole <td>. useful if <td> has more than one elements inside but want to |
24 | 23 | * limit search within only some of elements or only visible elements. eg tdElem can be "td span" |
25 | 24 | */ |
26 | | -(function($) { |
27 | | - $.uiTableFilter = function(jq, phrase, column, ifHidden, tdElem){ |
28 | | - if(!tdElem) tdElem = "td"; |
29 | | - var new_hidden = false; |
30 | | - if( this.last_phrase === phrase ) return false; |
| 25 | +(function ($) { |
| 26 | + $.uiTableFilter = function (jq, phrase, column, ifHidden, tdElem) { |
| 27 | + if (!tdElem) tdElem = "td"; |
| 28 | + var new_hidden = false; |
| 29 | + if (this.last_phrase === phrase) return false; |
31 | 30 |
|
32 | | - var phrase_length = phrase.length; |
33 | | - var words = phrase.toLowerCase().split(" "); |
| 31 | + var phrase_length = phrase.length; |
| 32 | + var words = phrase.toLowerCase().split(" "); |
34 | 33 |
|
35 | | - // these function pointers may change |
36 | | - var matches = function(elem) { elem.show() } |
37 | | - var noMatch = function(elem) { elem.hide(); new_hidden = true } |
38 | | - var getText = function(elem) { return elem.text() } |
| 34 | + // these function pointers may change |
| 35 | + var matches = function (elem) { elem.show() } |
| 36 | + var noMatch = function (elem) { elem.hide(); new_hidden = true } |
| 37 | + var getText = function (elem) { return elem.text() } |
39 | 38 |
|
40 | | - if( column ) |
41 | | - { |
42 | | - if (!$.isArray(column)) |
43 | | - { |
44 | | - column = new Array(column); |
45 | | - } |
| 39 | + if (column) { |
| 40 | + if (!$.isArray(column)) { |
| 41 | + column = new Array(column); |
| 42 | + } |
46 | 43 |
|
47 | | - var index = new Array(); |
| 44 | + var index = new Array(); |
48 | 45 |
|
49 | | - jq.find("thead > tr:last > th").each(function(i) |
50 | | - { |
51 | | - for (var j = 0; j < column.length; j++) |
52 | | - { |
53 | | - if ($.trim($(this).text()) == column[j]) |
54 | | - { |
55 | | - index[j] = i; |
56 | | - break; |
57 | | - } |
58 | | - } |
| 46 | + jq.find("thead > tr:last > th").each(function (i) { |
| 47 | + for (var j = 0; j < column.length; j++) { |
| 48 | + if ($.trim($(this).text()) == column[j]) { |
| 49 | + index[j] = i; |
| 50 | + break; |
| 51 | + } |
| 52 | + } |
59 | 53 |
|
60 | | - }); |
| 54 | + }); |
61 | 55 |
|
62 | | - getText = function(elem) { |
63 | | - var selector = ""; |
64 | | - for (var i = 0; i < index.length; i++) |
65 | | - { |
66 | | - if (i != 0) {selector += ",";} |
67 | | - selector += tdElem + ":eq(" + index[i] + ")"; |
68 | | - } |
69 | | - return $(elem.find((selector))).text(); |
70 | | - } |
71 | | - } |
| 56 | + getText = function (elem) { |
| 57 | + var selector = ""; |
| 58 | + for (var i = 0; i < index.length; i++) { |
| 59 | + if (i != 0) { selector += ","; } |
| 60 | + selector += tdElem + ":eq(" + index[i] + ")"; |
| 61 | + } |
| 62 | + return $(elem.find((selector))).text(); |
| 63 | + } |
| 64 | + } |
72 | 65 |
|
73 | | - // if added one letter to last time, |
74 | | - // just check newest word and only need to hide |
75 | | - if( (words.size > 1) && (phrase.substr(0, phrase_length - 1) === |
76 | | - this.last_phrase) ) { |
| 66 | + // if added one letter to last time, |
| 67 | + // just check newest word and only need to hide |
| 68 | + if ((words.size > 1) && (phrase.substr(0, phrase_length - 1) === |
| 69 | + this.last_phrase)) { |
77 | 70 |
|
78 | | - if( phrase[-1] === " " ) |
79 | | - { this.last_phrase = phrase; return false; } |
| 71 | + if (phrase[-1] === " ") { this.last_phrase = phrase; return false; } |
80 | 72 |
|
81 | | - var words = words[-1]; // just search for the newest word |
| 73 | + var words = words[-1]; // just search for the newest word |
82 | 74 |
|
83 | | - // only hide visible rows |
84 | | - matches = function(elem) {;} |
85 | | - var elems = jq.find("tbody:first > tr:visible") |
86 | | - } |
87 | | - else { |
88 | | - new_hidden = true; |
89 | | - var elems = jq.find("tbody:first > tr") |
90 | | - } |
| 75 | + // only hide visible rows |
| 76 | + matches = function (elem) { ; } |
| 77 | + var elems = jq.find("tbody:first > tr:visible") |
| 78 | + } |
| 79 | + else { |
| 80 | + new_hidden = true; |
| 81 | + var elems = jq.find("tbody:first > tr") |
| 82 | + } |
91 | 83 |
|
92 | | - elems.each(function(){ |
93 | | - var elem = $(this); |
94 | | - $.uiTableFilter.has_words( getText(elem), words, false ) ? |
95 | | - matches(elem) : noMatch(elem); |
96 | | - }); |
| 84 | + elems.each(function () { |
| 85 | + var elem = $(this); |
| 86 | + $.uiTableFilter.has_words(getText(elem), words, false) ? |
| 87 | + matches(elem) : noMatch(elem); |
| 88 | + }); |
97 | 89 |
|
98 | | - last_phrase = phrase; |
99 | | - if( ifHidden && new_hidden ) ifHidden(); |
100 | | - return jq; |
101 | | - }; |
| 90 | + last_phrase = phrase; |
| 91 | + if (ifHidden && new_hidden) ifHidden(); |
| 92 | + return jq; |
| 93 | + }; |
102 | 94 |
|
103 | | - // caching for speedup |
104 | | - $.uiTableFilter.last_phrase = "" |
| 95 | + // caching for speedup |
| 96 | + $.uiTableFilter.last_phrase = "" |
105 | 97 |
|
106 | | - // not jQuery dependent |
107 | | - // "" [""] -> Boolean |
108 | | - // "" [""] Boolean -> Boolean |
109 | | - $.uiTableFilter.has_words = function( str, words, caseSensitive ) |
110 | | - { |
111 | | - var text = caseSensitive ? str : str.toLowerCase(); |
112 | | - for (var i=0; i < words.length; i++) { |
113 | | - if (text.indexOf(words[i]) === -1) return false; |
114 | | - } |
115 | | - return true; |
116 | | - } |
117 | | -}) (jQuery); |
| 98 | + // not jQuery dependent |
| 99 | + // "" [""] -> Boolean |
| 100 | + // "" [""] Boolean -> Boolean |
| 101 | + $.uiTableFilter.has_words = function (str, words, caseSensitive) { |
| 102 | + var text = caseSensitive ? str : str.toLowerCase(); |
| 103 | + for (var i = 0; i < words.length; i++) { |
| 104 | + if (text.indexOf(words[i]) === -1) return false; |
| 105 | + } |
| 106 | + return true; |
| 107 | + } |
| 108 | +})(jQuery); |
0 commit comments