Improved ref switcher dropdown performance

Closes #18202
This commit is contained in:
Phil Hughes 2016-11-02 11:11:47 +00:00 committed by Jacob Schatz
parent d17f506811
commit 1a21fa26f6
2 changed files with 21 additions and 7 deletions

View file

@ -63,7 +63,8 @@
return $.ajax({
url: $dropdown.data('refs-url'),
data: {
ref: $dropdown.data('ref')
ref: $dropdown.data('ref'),
search: term
},
dataType: "json"
}).done(function(refs) {
@ -72,16 +73,26 @@
},
selectable: true,
filterable: true,
filterRemote: true,
filterByText: true,
fieldName: $dropdown.data('field-name'),
renderRow: function(ref) {
var link;
var li = document.createElement('li');
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 = document.createElement('a');
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) {
return $el.attr('data-ref');

View file

@ -267,12 +267,15 @@ class ProjectsController < Projects::ApplicationController
end
def refs
branches = BranchesFinder.new(@repository, params).execute
options = {
'Branches' => @repository.branch_names,
'Branches' => Kaminari.paginate_array(branches).page(params[:page]).per(100),
}
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
# If reference is commit id - we should add it to branch/tag selectbox