Merge branch '3286-home-button' closes #3286
[arvados.git] / apps / workbench / app / assets / javascripts / filterable.js
1 $(document).
2     on('paste keyup change', 'input[type=text].filterable-control', function() {
3         var q = new RegExp($(this).val(), 'i');
4         $($(this).attr('data-filterable-target')).
5             addClass('filterable-container').
6             data('q', q).
7             trigger('refresh');
8     }).on('refresh', '.filterable-container', function() {
9         var q = $(this).data('q');
10         var filters = $(this).data('filters');
11         $('.filterable', this).hide().filter(function() {
12             var $row = $(this);
13             var pass = true;
14             if (q && !$row.text().match(q))
15                 return false;
16             if (filters) {
17                 $.each(filters, function(filterby, val) {
18                     if (!val) return;
19                     if (!pass) return;
20                     pass = false;
21                     $.each(val.split(" "), function(i, e) {
22                         if ($row.attr(filterby) == e)
23                             pass = true;
24                     });
25                 });
26             }
27             return pass;
28         }).show();
29         $('.infinite-scroller').add(window).trigger('scroll');
30     }).on('change', 'select.filterable-control', function() {
31         var val = $(this).val();
32         var filterby = $(this).attr('data-filterable-attribute');
33         var $target = $($(this).attr('data-filterable-target')).
34             addClass('filterable-container');
35         var filters = $target.data('filters') || {};
36         filters[filterby] = val;
37         $target.
38             data('filters', filters).
39             trigger('refresh');
40     }).on('ajax:complete', function() {
41         $('.filterable-control').trigger('change');
42     });