diff options
author | Clement Ho <ClemMakesApps@gmail.com> | 2017-06-05 20:06:38 -0500 |
---|---|---|
committer | Clement Ho <ClemMakesApps@gmail.com> | 2017-06-05 20:06:38 -0500 |
commit | 63746d2d22b79f0d0a53d7ad37121440308f0c57 (patch) | |
tree | 62aa00341ff1c3bb7ba10767f9665929188e037d /app/assets/javascripts/filtered_search | |
parent | 5578506eb1e7e911fa7b283e81b3751be370977b (diff) | |
download | gitlab-ce-63746d2d22b79f0d0a53d7ad37121440308f0c57.tar.gz |
Perform filtered search when state tab is changed
Diffstat (limited to 'app/assets/javascripts/filtered_search')
-rw-r--r-- | app/assets/javascripts/filtered_search/filtered_search_manager.js | 49 |
1 files changed, 47 insertions, 2 deletions
diff --git a/app/assets/javascripts/filtered_search/filtered_search_manager.js b/app/assets/javascripts/filtered_search/filtered_search_manager.js index 3be889c684b..fbb1a08089f 100644 --- a/app/assets/javascripts/filtered_search/filtered_search_manager.js +++ b/app/assets/javascripts/filtered_search/filtered_search_manager.js @@ -77,6 +77,47 @@ class FilteredSearchManager { } } + bindStateEvents() { + const stateFilters = document.querySelector('.container-fluid .issues-state-filters'); + + if (stateFilters) { + this.searchStateOpened = this.search.bind(this, 'opened'); + this.searchStateMerged = this.search.bind(this, 'merged'); + this.searchStateClosed = this.search.bind(this, 'closed'); + this.searchStateAll = this.search.bind(this, 'all'); + + stateFilters.querySelector('.state-opened') + .addEventListener('click', this.searchStateOpened); + stateFilters.querySelector('.state-closed') + .addEventListener('click', this.searchStateClosed); + stateFilters.querySelector('.state-all') + .addEventListener('click', this.searchStateAll); + + const mergedState = stateFilters.querySelector('.state-merged'); + if (mergedState) { + mergedState.addEventListener('click', this.searchStateMerged); + } + } + } + + unbindStateEvents() { + const stateFilters = document.querySelector('.container-fluid .issues-state-filters'); + + if (stateFilters) { + stateFilters.querySelector('.state-opened') + .removeEventListener('click', this.searchStateOpened); + stateFilters.querySelector('.state-closed') + .removeEventListener('click', this.searchStateClosed); + stateFilters.querySelector('.state-all') + .removeEventListener('click', this.searchStateAll); + + const mergedState = stateFilters.querySelector('.state-merged'); + if (mergedState) { + mergedState.removeEventListener('click', this.searchStateMerged); + } + } + } + bindEvents() { this.handleFormSubmit = this.handleFormSubmit.bind(this); this.setDropdownWrapper = this.dropdownManager.setDropdown.bind(this.dropdownManager); @@ -114,6 +155,8 @@ class FilteredSearchManager { document.addEventListener('click', this.removeInputContainerFocusWrapper); document.addEventListener('keydown', this.removeSelectedTokenKeydownWrapper); eventHub.$on('recentSearchesItemSelected', this.onrecentSearchesItemSelectedWrapper); + + this.bindStateEvents(); } unbindEvents() { @@ -136,6 +179,8 @@ class FilteredSearchManager { document.removeEventListener('click', this.removeInputContainerFocusWrapper); document.removeEventListener('keydown', this.removeSelectedTokenKeydownWrapper); eventHub.$off('recentSearchesItemSelected', this.onrecentSearchesItemSelectedWrapper); + + this.unbindStateEvents(); } checkForBackspace(e) { @@ -459,7 +504,7 @@ class FilteredSearchManager { } } - search() { + search(state = null) { const paths = []; const searchQuery = gl.DropdownUtils.getSearchQuery(); @@ -467,7 +512,7 @@ class FilteredSearchManager { const { tokens, searchToken } = this.tokenizer.processTokens(searchQuery, this.filteredSearchTokenKeys.getKeys()); - const currentState = gl.utils.getParameterByName('state') || 'opened'; + const currentState = state || gl.utils.getParameterByName('state') || 'opened'; paths.push(`state=${currentState}`); tokens.forEach((token) => { |