summaryrefslogtreecommitdiff
path: root/app/assets
diff options
context:
space:
mode:
authorJacob Schatz <jschatz@gitlab.com>2017-02-03 15:03:57 +0000
committerJacob Schatz <jschatz@gitlab.com>2017-02-03 15:03:57 +0000
commit806b038a44cda37fa7d8ba9afae4b7adb07afe94 (patch)
treef8841e93eb070feae34fa2cc5f61e0efecf88bd0 /app/assets
parent52ea505126da19717c9137e6bb301f55965eb6e4 (diff)
parent50d58c14cd2cd1b8fb1bb9e4a7a1091b5af90c04 (diff)
downloadgitlab-ce-806b038a44cda37fa7d8ba9afae4b7adb07afe94.tar.gz
Merge branch 'ref-switcher-perf' into 'master'
Improved ref switcher dropdown performance Closes #18202 See merge request !7239
Diffstat (limited to 'app/assets')
-rw-r--r--app/assets/javascripts/project.js29
-rw-r--r--app/assets/javascripts/protected_branches/protected_branch_dropdown.js.es62
2 files changed, 25 insertions, 6 deletions
diff --git a/app/assets/javascripts/project.js b/app/assets/javascripts/project.js
index 7cf630a1d76..67f8804666d 100644
--- a/app/assets/javascripts/project.js
+++ b/app/assets/javascripts/project.js
@@ -58,6 +58,11 @@
};
Project.prototype.initRefSwitcher = function() {
+ var refListItem = document.createElement('li'),
+ refLink = document.createElement('a');
+
+ refLink.href = '#';
+
return $('.js-project-refs-dropdown').each(function() {
var $dropdown, selected;
$dropdown = $(this);
@@ -67,7 +72,8 @@
return $.ajax({
url: $dropdown.data('refs-url'),
data: {
- ref: $dropdown.data('ref')
+ ref: $dropdown.data('ref'),
+ search: term
},
dataType: "json"
}).done(function(refs) {
@@ -76,16 +82,29 @@
},
selectable: true,
filterable: true,
+ filterRemote: true,
filterByText: true,
fieldName: $dropdown.data('field-name'),
renderRow: function(ref) {
- var link;
+ var li = refListItem.cloneNode(false);
+
if (ref.header != null) {
- return $('<li />').addClass('dropdown-header').text(ref.header);
+ li.className = 'dropdown-header';
+ li.textContent = ref.header;
} else {
- link = $('<a />').attr('href', '#').addClass(ref === selected ? 'is-active' : '').text(ref).attr('data-ref', ref);
- return $('<li />').append(link);
+ var link = refLink.cloneNode(false);
+
+ if (ref === selected) {
+ link.className = 'is-active';
+ }
+
+ link.textContent = ref;
+ link.dataset.ref = ref;
+
+ li.appendChild(link);
}
+
+ return li;
},
id: function(obj, $el) {
return $el.attr('data-ref');
diff --git a/app/assets/javascripts/protected_branches/protected_branch_dropdown.js.es6 b/app/assets/javascripts/protected_branches/protected_branch_dropdown.js.es6
index 03f4531abf5..5cf28aa7a73 100644
--- a/app/assets/javascripts/protected_branches/protected_branch_dropdown.js.es6
+++ b/app/assets/javascripts/protected_branches/protected_branch_dropdown.js.es6
@@ -49,7 +49,7 @@ class ProtectedBranchDropdown {
onClickCreateWildcard() {
// Refresh the dropdown's data, which ends up calling `getProtectedBranches`
this.$dropdown.data('glDropdown').remote.execute();
- this.$dropdown.data('glDropdown').selectRowAtIndex(0);
+ this.$dropdown.data('glDropdown').selectRowAtIndex();
}
getProtectedBranches(term, callback) {