67 lines
1.7 KiB
JavaScript
67 lines
1.7 KiB
JavaScript
;(function (define) {
|
|
|
|
define(['jquery', 'backbone'], function ($, Backbone) {
|
|
'use strict';
|
|
|
|
return Backbone.View.extend({
|
|
|
|
el: '#discovery-form',
|
|
events: {
|
|
'submit form': 'submitForm',
|
|
},
|
|
|
|
initialize: function () {
|
|
this.$searchField = this.$el.find('input');
|
|
this.$searchButton = this.$el.find('button');
|
|
this.$message = this.$el.find('#discovery-message');
|
|
this.$loadingIndicator = this.$el.find('#loading-indicator');
|
|
},
|
|
|
|
submitForm: function (event) {
|
|
event.preventDefault();
|
|
this.doSearch();
|
|
},
|
|
|
|
doSearch: function (term) {
|
|
if (term) {
|
|
this.$searchField.val(term);
|
|
}
|
|
else {
|
|
term = this.$searchField.val();
|
|
}
|
|
this.trigger('search', $.trim(term));
|
|
this.$message.empty();
|
|
},
|
|
|
|
clearSearch: function () {
|
|
this.$message.empty();
|
|
this.$searchField.val('');
|
|
},
|
|
|
|
showLoadingIndicator: function () {
|
|
this.$message.empty();
|
|
this.$loadingIndicator.removeClass('hidden');
|
|
},
|
|
|
|
hideLoadingIndicator: function () {
|
|
this.$loadingIndicator.addClass('hidden');
|
|
},
|
|
|
|
showNotFoundMessage: function (term) {
|
|
var msg = interpolate(
|
|
gettext('We couldn\'t find any results for "%s".'),
|
|
[_.escape(term)]
|
|
);
|
|
this.$message.html(msg);
|
|
},
|
|
|
|
showErrorMessage: function () {
|
|
this.$message.html(gettext('There was an error, try searching again.'));
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
})(define || RequireJS.define);
|