summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/filterable_list.js
diff options
context:
space:
mode:
authorAlfredo Sumaran <alfredo@gitlab.com>2017-05-30 21:23:03 -0500
committerAlfredo Sumaran <alfredo@gitlab.com>2017-05-30 23:21:40 -0500
commit876107d520506a74c9984c08615dc74950add7b1 (patch)
treecee4895c03a49a153b694168bc697ad1fa935dca /app/assets/javascripts/filterable_list.js
parentc228ff0be4f5fdae9b03859707af51a06bd6006d (diff)
downloadgitlab-ce-876107d520506a74c9984c08615dc74950add7b1.tar.gz
Fix search by input
Diffstat (limited to 'app/assets/javascripts/filterable_list.js')
-rw-r--r--app/assets/javascripts/filterable_list.js20
1 files changed, 15 insertions, 5 deletions
diff --git a/app/assets/javascripts/filterable_list.js b/app/assets/javascripts/filterable_list.js
index 8149602f329..17c39cc7bbb 100644
--- a/app/assets/javascripts/filterable_list.js
+++ b/app/assets/javascripts/filterable_list.js
@@ -13,14 +13,18 @@ export default class FilterableList {
initSearch() {
// Wrap to prevent passing event arguments to .filterResults;
- this.debounceFilter = _.debounce(() => {
- this.filterResults();
- }, 500);
+ this.debounceFilter = _.debounce(this.onFilterInput.bind(this), 500);
this.unbindEvents();
this.bindEvents();
}
+ onFilterInput() {
+ const url = this.filterForm.getAttribute('action');
+ const data = $(this.filterForm).serialize();
+ this.filterResults(url, data, 'filter-input');
+ }
+
bindEvents() {
this.listFilterElement.addEventListener('input', this.debounceFilter);
}
@@ -29,7 +33,7 @@ export default class FilterableList {
this.listFilterElement.removeEventListener('input', this.debounceFilter);
}
- filterResults(url, data) {
+ filterResults(url, data, comingFrom) {
const endpoint = url || this.filterForm.getAttribute('action');
const additionalData = data || $(this.filterForm).serialize();
@@ -42,7 +46,13 @@ export default class FilterableList {
dataType: 'json',
context: this,
complete: this.onFilterComplete,
- success: this.onFilterSuccess,
+ success: (response, textStatus, xhr) => {
+ if (this.preOnFilterSuccess) {
+ this.preOnFilterSuccess(comingFrom);
+ }
+
+ this.onFilterSuccess(response, xhr);
+ },
});
}