LoginController
by david_i_smith
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/async/2.0.1/async.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.1/backbone.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.marionette/2.4.5/backbone.marionette.min.js"></script>
<div id="viewer-region"></div>
JavaScript
var LoginController = Marionette.Object.extend({
initialize: function () {
_.bindAll(this, 'onReportsLoad', 'onReportsFail', 'onReportsComplete', 'onLoginReportLoad', 'onLoginReportFail', 'onLoginReportComplete');
},
bootstrap: function () {
this.getReports({
onSuccess: this.onReportsLoad,
onError: this.onReportsFail,
onComplete: this.onReportsComplete
});
},
getReports: function (callbacks) {
return this.getResource(this.loadReports, null, callbacks);
},
getLoginReport: function (reportsData, callbacks) {
return this.getResource(this.loadLoginReport, reportsData, callbacks);
},
getResource: function (func, arg, callbacks) {
$.when(func(arg))
.done(function () {
callbacks.onSuccess.apply(this, arguments);
})
.fail(function () {
callbacks.onError.apply(this, arguments);
})
.always(function () {
callbacks.onComplete.apply(this);
});
},
onReportsLoaded: function (reportsData) {
this.getLoginReport(reportsData, {
onSuccess: this.onLoginReportLoad,
onError: this.onLoginReportFail,
onComplete: this.onLoginReportComplete
});
},
onLoginReportLoaded: function (loginData) {
this.next();
},
loadReports: function () {
var dfd = $.Deferred();
dfd.resolve([{name: 'scores-by-org'}]);
return dfd.promise();
},
loadLoginReport: function () {
var dfd = $.Deferred();
dfd.resolve(true);
return dfd.promise();
},
onReportsLoad: function () {
alert('reports load');
this.onReportsLoaded.apply(this, arguments);
},
onReportsFail: function () {
alert('reports fail');
},
onReportsComplete: function () {
alert('reports complete');
},
onLoginReportLoad: function () {
alert('login report load');
this.onLoginReportLoaded.apply(this, arguments);
},
onLoginReportFail: function () {
alert('login report fail');
},
onLoginReportComplete: function () {
alert('login...