@@ -210,16 +210,33 @@ function createQueryFields() {
210
210
filterByAssignee ( name ) ;
211
211
} ) ;
212
212
213
+ var filter = document . createElement ( "span" ) ;
214
+
215
+ var filterIcon = document . createElement ( "i" ) ;
216
+ filterIcon . className = "fa fa-search" ;
217
+ filterIcon . title = "Filter" ;
218
+
219
+ var filterText = document . createElement ( "input" ) ;
220
+ filterText . id = 'textFilter' ;
221
+ filterText . name = 'textFilter' ;
222
+ filterText . placeholder = 'Filter' ;
223
+ filterText . addEventListener ( "keyup" , function ( ) {
224
+ debounce ( filterByString ( document . getElementById ( "textFilter" ) . value ) , 500 ) ;
225
+ } ) ;
226
+
213
227
product . appendChild ( productIcon ) ;
214
228
product . appendChild ( productList ) ;
215
229
milestone . appendChild ( milestoneIcon ) ;
216
230
milestone . appendChild ( milestoneList ) ;
217
231
assignee . appendChild ( assigneeIcon ) ;
218
232
assignee . appendChild ( assigneeList ) ;
233
+ filter . appendChild ( filterIcon ) ;
234
+ filter . appendChild ( filterText ) ;
219
235
220
236
query . appendChild ( product ) ;
221
237
query . appendChild ( milestone ) ;
222
238
query . appendChild ( assignee ) ;
239
+ query . appendChild ( filter ) ;
223
240
224
241
return query ;
225
242
}
@@ -898,6 +915,21 @@ function filterByAssignee(name) {
898
915
showColumnCounts ( ) ;
899
916
}
900
917
918
+ function filterByString ( string ) {
919
+ var cards = document . querySelectorAll ( ".card" ) ;
920
+ cards . forEach ( function ( card ) {
921
+ var regex = new RegExp ( string , "i" ) ;
922
+ if ( card . innerHTML . match ( regex ) || string == "" ) {
923
+ card . style . display = "block" ;
924
+ } else {
925
+ card . style . display = "none" ;
926
+ }
927
+ } ) ;
928
+
929
+ // force reload
930
+ showColumnCounts ( ) ;
931
+ }
932
+
901
933
function updateUnconfirmedColumnVisibilty ( ) {
902
934
var col = document . querySelector ( ".board-column#UNCONFIRMED" ) ;
903
935
if ( col !== null ) {
@@ -909,6 +941,28 @@ function updateUnconfirmedColumnVisibilty() {
909
941
}
910
942
}
911
943
944
+ function debounce ( func , wait , immediate ) {
945
+ var timeout ;
946
+
947
+ return function executedFunction ( ) {
948
+ var context = this ;
949
+ var args = arguments ;
950
+
951
+ var later = function ( ) {
952
+ timeout = null ;
953
+ if ( ! immediate ) func . apply ( context , args ) ;
954
+ } ;
955
+
956
+ var callNow = immediate && ! timeout ;
957
+
958
+ clearTimeout ( timeout ) ;
959
+
960
+ timeout = setTimeout ( later , wait ) ;
961
+
962
+ if ( callNow ) func . apply ( context , args ) ;
963
+ } ;
964
+ } ;
965
+
912
966
function httpPut ( url , dataObj , successCallback , errorCallback ) {
913
967
httpRequest ( "PUT" , url , dataObj , successCallback , errorCallback ) ;
914
968
}
0 commit comments