diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2017-03-01 16:31:56 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2017-03-01 16:39:59 +0300 |
commit | b7c30cae4eedab5e8e41d9764ac08ca12361d054 (patch) | |
tree | e5a594dfd920a55a52a00b34e632dfb553de4c45 /app/assets/javascripts/groups_list.js | |
parent | 11dd2348c410949c98adfc10cdcf5be787742179 (diff) |
Add filter and sorting to dashboard groups page
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app/assets/javascripts/groups_list.js')
-rw-r--r-- | app/assets/javascripts/groups_list.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/app/assets/javascripts/groups_list.js b/app/assets/javascripts/groups_list.js new file mode 100644 index 00000000000..5358121b063 --- /dev/null +++ b/app/assets/javascripts/groups_list.js @@ -0,0 +1,50 @@ +/* eslint-disable func-names, space-before-function-paren, object-shorthand, quotes, no-var, one-var, one-var-declaration-per-line, prefer-arrow-callback, consistent-return, no-unused-vars, camelcase, prefer-template, comma-dangle, max-len */ + +(function() { + window.GroupsList = { + init: function() { + $(".groups-list-filter").off('keyup'); + this.initSearch(); + return this.initPagination(); + }, + initSearch: function() { + var debounceFilter, groupsListFilter; + groupsListFilter = $('.groups-list-filter'); + debounceFilter = _.debounce(window.GroupsList.filterResults, 500); + return groupsListFilter.on('keyup', function(e) { + if (groupsListFilter.val() !== '') { + return debounceFilter(); + } + }); + }, + filterResults: function() { + var form, group_filter_url, search; + $('.groups-list-holder').fadeTo(250, 0.5); + form = null; + form = $("form#group-filter-form"); + search = $(".groups-list-filter").val(); + group_filter_url = form.attr('action') + '?' + form.serialize(); + return $.ajax({ + type: "GET", + url: form.attr('action'), + data: form.serialize(), + complete: function() { + return $('.groups-list-holder').fadeTo(250, 1); + }, + success: function(data) { + $('.groups-list-holder').replaceWith(data.html); + return history.replaceState({ + page: group_filter_url + // Change url so if user reload a page - search results are saved + }, document.title, group_filter_url); + }, + dataType: "json" + }); + }, + initPagination: function() { + return $('.groups-list-holder .pagination').on('ajax:success', function(e, data) { + return $('.groups-list-holder').replaceWith(data.html); + }); + } + }; +}).call(window); |