QualityGateRouter
) ->
+ # Create a generic error handler for ajax requests
+ jQuery.ajaxSetup
+ error: (jqXHR) ->
+ if jqXHR.responseJSON?.errors?
+ alert _.pluck(jqXHR.responseJSON.errors, 'msg').join '. '
+ else
+ alert jqXHR.responseText
+
# Create a Quality Gate Application
App = new Marionette.Application
App.openFirstQualityGate() if initial
# Load metrics and the list of quality gates before start the application
- jQuery.when(App.metrics.fetch(), App.qualityGates.fetch()).done ->
- jQuery('.quality-gate-page-loader').remove()
- # Start the application
- App.start()
+ jQuery.when(App.metrics.fetch(), App.qualityGates.fetch())
+ .done ->
+ jQuery('.quality-gate-page-loader').remove()
+ # Start the application
+ App.start()
requirejs(['backbone', 'backbone.marionette', 'handlebars', 'quality-gate/collections/quality-gates', 'quality-gate/collections/metrics', 'quality-gate/views/quality-gate-sidebar-list-view', 'quality-gate/router', 'handlebars-extensions'], function(Backbone, Marionette, Handlebars, QualityGates, Metrics, QualityGateSidebarListItemView, QualityGateRouter) {
var App;
+ jQuery.ajaxSetup({
+ error: function(jqXHR) {
+ var _ref;
+ if (((_ref = jqXHR.responseJSON) != null ? _ref.errors : void 0) != null) {
+ return alert(_.pluck(jqXHR.responseJSON.errors, 'msg').join('. '));
+ } else {
+ return alert(jqXHR.responseText);
+ }
+ }
+ });
App = new Marionette.Application;
App.metrics = new Metrics;
App.qualityGates = new QualityGates;
op: @ui.operatorSelect.val()
warning: @ui.warningInput.val()
error: @ui.errorInput.val()
- @model.save().done =>
- @options.collectionView.updateConditions()
- @hideSpinner()
+ @model.save()
+ .always =>
+ @hideSpinner()
+ .done =>
+ @options.collectionView.updateConditions()
deleteCondition: ->
warning: this.ui.warningInput.val(),
error: this.ui.errorInput.val()
});
- return this.model.save().done(function() {
- _this.options.collectionView.updateConditions();
+ return this.model.save().always(function() {
return _this.hideSpinner();
+ }).done(function() {
+ return _this.options.collectionView.updateConditions();
});
};
@options.detailView.showHeaderSpinner()
data = if set then { id: @model.id } else {}
method = if set then 'set_as_default' else 'unset_default'
- jQuery.ajax({
+ jQuery.ajax
type: 'POST'
url: "#{baseUrl}/api/qualitygates/#{method}"
data: data
- }).done =>
+ .always =>
+ @options.detailView.hideHeaderSpinner()
+ .done =>
@options.app.unsetDefaults @model.id
@model.set 'default', !@model.get('default')
- @options.detailView.hideHeaderSpinner()
setAsDefault: ->
type: 'POST',
url: "" + baseUrl + "/api/qualitygates/" + method,
data: data
+ }).always(function() {
+ return _this.options.detailView.hideHeaderSpinner();
}).done(function() {
_this.options.app.unsetDefaults(_this.model.id);
- _this.model.set('default', !_this.model.get('default'));
- return _this.options.detailView.hideHeaderSpinner();
+ return _this.model.set('default', !_this.model.get('default'));
});
};
rename: ->
@options.detailView.showHeaderSpinner()
newName = @ui.input.val()
- jQuery.ajax({
+ jQuery.ajax
url: "#{baseUrl}/api/qualitygates/rename"
type: 'POST'
data:
id: @model.id
name: newName
- }).done =>
+ .always =>
+ @options.detailView.hideHeaderSpinner()
+ .done =>
@model.set 'name', newName
@options.detailView.showHeader()
- @options.detailView.hideHeaderSpinner()
cancel: ->
id: this.model.id,
name: newName
}
+ }).always(function() {
+ return _this.options.detailView.hideHeaderSpinner();
}).done(function() {
_this.model.set('name', newName);
- _this.options.detailView.showHeader();
- return _this.options.detailView.hideHeaderSpinner();
+ return _this.options.detailView.showHeader();
});
};
save: ->
@showHeaderSpinner()
name = @ui.input.val()
- jQuery.ajax({
+ jQuery.ajax
url: "#{baseUrl}/api/qualitygates/create"
type: 'POST'
data: name: name
- }).done (r) =>
+ .done (r) =>
@model.set r
@options.app.qualityGates.add @model
@options.app.router.navigate "show/#{@model.id}", trigger: true