Commit 1a21fa26 authored by Phil Hughes's avatar Phil Hughes Committed by Jacob Schatz

Improved ref switcher dropdown performance

Closes #18202
parent d17f5068
...@@ -63,7 +63,8 @@ ...@@ -63,7 +63,8 @@
return $.ajax({ return $.ajax({
url: $dropdown.data('refs-url'), url: $dropdown.data('refs-url'),
data: { data: {
ref: $dropdown.data('ref') ref: $dropdown.data('ref'),
search: term
}, },
dataType: "json" dataType: "json"
}).done(function(refs) { }).done(function(refs) {
...@@ -72,16 +73,26 @@ ...@@ -72,16 +73,26 @@
}, },
selectable: true, selectable: true,
filterable: true, filterable: true,
filterRemote: true,
filterByText: true, filterByText: true,
fieldName: $dropdown.data('field-name'), fieldName: $dropdown.data('field-name'),
renderRow: function(ref) { renderRow: function(ref) {
var link; var li = document.createElement('li');
if (ref.header != null) { if (ref.header != null) {
return $('<li />').addClass('dropdown-header').text(ref.header); li.className = 'dropdown-header';
li.textContent = ref.header;
} else { } else {
link = $('<a />').attr('href', '#').addClass(ref === selected ? 'is-active' : '').text(ref).attr('data-ref', ref); var link = document.createElement('a');
return $('<li />').append(link); link.href = '#';
link.className = ref.name === selected ? 'is-active' : '';
link.textContent = ref.name;
link.dataset.ref = ref.name;
li.appendChild(link);
} }
return li;
}, },
id: function(obj, $el) { id: function(obj, $el) {
return $el.attr('data-ref'); return $el.attr('data-ref');
......
...@@ -267,12 +267,15 @@ class ProjectsController < Projects::ApplicationController ...@@ -267,12 +267,15 @@ class ProjectsController < Projects::ApplicationController
end end
def refs def refs
branches = BranchesFinder.new(@repository, params).execute
options = { options = {
'Branches' => @repository.branch_names, 'Branches' => Kaminari.paginate_array(branches).page(params[:page]).per(100),
} }
unless @repository.tag_count.zero? unless @repository.tag_count.zero?
options['Tags'] = VersionSorter.rsort(@repository.tag_names) tags = TagsFinder.new(@repository, params).execute
options['Tags'] = Kaminari.paginate_array(tags).page(params[:page]).per(100)
end end
# If reference is commit id - we should add it to branch/tag selectbox # If reference is commit id - we should add it to branch/tag selectbox
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment