2016-12-14 00:26:26 -05:00
|
|
|
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, one-var, one-var-declaration-per-line, object-shorthand, prefer-arrow-callback, comma-dangle, prefer-template, quotes, no-else-return, padded-blocks, max-len */
|
|
|
|
/* global Api */
|
|
|
|
|
2016-07-24 16:45:11 -04:00
|
|
|
(function() {
|
|
|
|
this.Search = (function() {
|
|
|
|
function Search() {
|
|
|
|
var $groupDropdown, $projectDropdown;
|
|
|
|
$groupDropdown = $('.js-search-group-dropdown');
|
|
|
|
$projectDropdown = $('.js-search-project-dropdown');
|
|
|
|
this.eventListeners();
|
|
|
|
$groupDropdown.glDropdown({
|
|
|
|
selectable: true,
|
|
|
|
filterable: true,
|
|
|
|
fieldName: 'group_id',
|
|
|
|
data: function(term, callback) {
|
2016-10-31 13:37:13 -04:00
|
|
|
return Api.groups(term, {}, function(data) {
|
2016-07-24 16:45:11 -04:00
|
|
|
data.unshift({
|
|
|
|
name: 'Any'
|
|
|
|
});
|
|
|
|
data.splice(1, 0, 'divider');
|
|
|
|
return callback(data);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
id: function(obj) {
|
|
|
|
return obj.id;
|
|
|
|
},
|
|
|
|
text: function(obj) {
|
|
|
|
return obj.name;
|
|
|
|
},
|
|
|
|
toggleLabel: function(obj) {
|
|
|
|
return ($groupDropdown.data('default-label')) + " " + obj.name;
|
|
|
|
},
|
|
|
|
clicked: (function(_this) {
|
|
|
|
return function() {
|
|
|
|
return _this.submitSearch();
|
|
|
|
};
|
|
|
|
})(this)
|
|
|
|
});
|
|
|
|
$projectDropdown.glDropdown({
|
|
|
|
selectable: true,
|
|
|
|
filterable: true,
|
|
|
|
fieldName: 'project_id',
|
|
|
|
data: function(term, callback) {
|
|
|
|
return Api.projects(term, 'id', function(data) {
|
|
|
|
data.unshift({
|
|
|
|
name_with_namespace: 'Any'
|
|
|
|
});
|
|
|
|
data.splice(1, 0, 'divider');
|
|
|
|
return callback(data);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
id: function(obj) {
|
|
|
|
return obj.id;
|
|
|
|
},
|
|
|
|
text: function(obj) {
|
|
|
|
return obj.name_with_namespace;
|
|
|
|
},
|
|
|
|
toggleLabel: function(obj) {
|
|
|
|
return ($projectDropdown.data('default-label')) + " " + obj.name_with_namespace;
|
|
|
|
},
|
|
|
|
clicked: (function(_this) {
|
|
|
|
return function() {
|
|
|
|
return _this.submitSearch();
|
|
|
|
};
|
|
|
|
})(this)
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
Search.prototype.eventListeners = function() {
|
|
|
|
$(document).off('keyup', '.js-search-input').on('keyup', '.js-search-input', this.searchKeyUp);
|
|
|
|
return $(document).off('click', '.js-search-clear').on('click', '.js-search-clear', this.clearSearchField);
|
|
|
|
};
|
|
|
|
|
|
|
|
Search.prototype.submitSearch = function() {
|
|
|
|
return $('.js-search-form').submit();
|
|
|
|
};
|
|
|
|
|
|
|
|
Search.prototype.searchKeyUp = function() {
|
|
|
|
var $input;
|
|
|
|
$input = $(this);
|
|
|
|
if ($input.val() === '') {
|
|
|
|
return $('.js-search-clear').addClass('hidden');
|
|
|
|
} else {
|
|
|
|
return $('.js-search-clear').removeClass('hidden');
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
Search.prototype.clearSearchField = function() {
|
|
|
|
return $('.js-search-input').val('').trigger('keyup').focus();
|
|
|
|
};
|
|
|
|
|
|
|
|
return Search;
|
|
|
|
|
|
|
|
})();
|
|
|
|
|
|
|
|
}).call(this);
|