summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArinde Eniola <eniolaarinde1@gmail.com>2016-03-31 23:33:32 +0100
committerArinde Eniola <eniolaarinde1@gmail.com>2016-04-02 16:58:35 +0100
commit261c8e765f5b13dd627fcda5ca1ae263ecfad0c8 (patch)
treecc6bbc32235a57dbd30fbd2fb31fe8e8c27df3ba
parent2ed6cd9e469ffcdb60f21d1738de1eff8c258432 (diff)
downloadgitlab-ce-261c8e765f5b13dd627fcda5ca1ae263ecfad0c8.tar.gz
fix missing filters on status tab when user swithches to another state
-rw-r--r--app/assets/javascripts/issues.js.coffee15
-rw-r--r--app/assets/javascripts/lib/url_utility.js33
2 files changed, 48 insertions, 0 deletions
diff --git a/app/assets/javascripts/issues.js.coffee b/app/assets/javascripts/issues.js.coffee
index b1479bfb449..8d069a209d2 100644
--- a/app/assets/javascripts/issues.js.coffee
+++ b/app/assets/javascripts/issues.js.coffee
@@ -26,6 +26,20 @@
$(".selected_issue").bind "change", Issues.checkChanged
+ # Update state filters if present in page
+ updateStateFilters: ->
+ stateFilters = $('.issues-state-filters')
+ newParams = {}
+ paramKeys = ['author_id', 'label_name', 'milestone_title', 'assignee_id', 'issue_search']
+
+ for paramKey in paramKeys
+ newParams[paramKey] = getUrlParameter(paramKey) or ''
+
+ if stateFilters.length
+ stateFilters.find('a').each ->
+ initialUrl = $(this).attr 'href'
+ $(this).attr 'href', mergeUrlParams(newParams, initialUrl)
+
# Make sure we trigger ajax request only after user stop typing
initSearch: ->
@timer = null
@@ -54,6 +68,7 @@
# Change url so if user reload a page - search results are saved
history.replaceState {page: issuesUrl}, document.title, issuesUrl
Issues.reload()
+ Issues.updateStateFilters()
dataType: "json"
checkChanged: ->
diff --git a/app/assets/javascripts/lib/url_utility.js b/app/assets/javascripts/lib/url_utility.js
new file mode 100644
index 00000000000..5fa3a4c69d3
--- /dev/null
+++ b/app/assets/javascripts/lib/url_utility.js
@@ -0,0 +1,33 @@
+function getUrlParameter(sParam) {
+ var sPageURL = decodeURIComponent(window.location.search.substring(1)),
+ sURLVariables = sPageURL.split('&'),
+ sParameterName,
+ i;
+
+ for (i = 0; i < sURLVariables.length; i++) {
+ sParameterName = sURLVariables[i].split('=');
+
+ if (sParameterName[0] === sParam) {
+ return sParameterName[1] === undefined ? true : sParameterName[1];
+ }
+ }
+}
+
+/**
+ * @param {Object} params - url keys and value to merge
+ * @param {String} url
+ */
+function mergeUrlParams(params, url){
+ var newUrl = decodeURIComponent(url);
+
+ Object.keys(params).forEach(function(paramName) {
+ var pattern = new RegExp('\\b('+paramName+'=).*?(&|$)')
+ if (url.search(pattern) >= 0){
+ newUrl = newUrl.replace(pattern,'$1' + params[paramName] + '$2');
+ } else {
+ newUrl = newUrl + (newUrl.indexOf('?') > 0 ? '&' : '?') + paramName + '=' + params[paramName]
+ }
+ });
+
+ return newUrl;
+} \ No newline at end of file