72 lines
2.4 KiB
JavaScript
72 lines
2.4 KiB
JavaScript
(function() {
|
|
var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
|
|
|
|
this.ProtectedBranchSelect = (function() {
|
|
function ProtectedBranchSelect(currentProject) {
|
|
this.toggleCreateNewButton = bind(this.toggleCreateNewButton, this);
|
|
this.getProtectedBranches = bind(this.getProtectedBranches, this);
|
|
$('.dropdown-footer').hide();
|
|
this.dropdown = $('.js-protected-branch-select').glDropdown({
|
|
data: this.getProtectedBranches,
|
|
filterable: true,
|
|
remote: false,
|
|
search: {
|
|
fields: ['title']
|
|
},
|
|
selectable: true,
|
|
toggleLabel: function(selected) {
|
|
if (selected && 'id' in selected) {
|
|
return selected.title;
|
|
} else {
|
|
return 'Protected Branch';
|
|
}
|
|
},
|
|
fieldName: 'protected_branch[name]',
|
|
text: function(protected_branch) {
|
|
return _.escape(protected_branch.title);
|
|
},
|
|
id: function(protected_branch) {
|
|
return _.escape(protected_branch.id);
|
|
},
|
|
onFilter: this.toggleCreateNewButton,
|
|
clicked: function() {
|
|
return $('.protect-branch-btn').attr('disabled', false);
|
|
}
|
|
});
|
|
$('.create-new-protected-branch').on('click', (function(_this) {
|
|
return function(event) {
|
|
_this.dropdown.data('glDropdown').remote.execute();
|
|
return _this.dropdown.data('glDropdown').selectRowAtIndex(event, 0);
|
|
};
|
|
})(this));
|
|
}
|
|
|
|
ProtectedBranchSelect.prototype.getProtectedBranches = function(term, callback) {
|
|
if (this.selectedBranch) {
|
|
return callback(gon.open_branches.concat(this.selectedBranch));
|
|
} else {
|
|
return callback(gon.open_branches);
|
|
}
|
|
};
|
|
|
|
ProtectedBranchSelect.prototype.toggleCreateNewButton = function(branchName) {
|
|
this.selectedBranch = {
|
|
title: branchName,
|
|
id: branchName,
|
|
text: branchName
|
|
};
|
|
if (branchName === '') {
|
|
$('.protected-branch-select-footer-list').addClass('hidden');
|
|
return $('.dropdown-footer').hide();
|
|
} else {
|
|
$('.create-new-protected-branch').text("Create Protected Branch: " + branchName);
|
|
$('.protected-branch-select-footer-list').removeClass('hidden');
|
|
return $('.dropdown-footer').show();
|
|
}
|
|
};
|
|
|
|
return ProtectedBranchSelect;
|
|
|
|
})();
|
|
|
|
}).call(this);
|