blob: c34ce287192f2cb1298081a65e23c975f03700a8 [file] [log] [blame]
SlaveallocController = Backbone.Router.extend({
initialize: function(args) {
this.activateRoute = $.proxy(this, 'activateRoute');
viewSpecs = [
{ name: '', title: null, rendered: false,
view_factory: function() { return new DashboardView(); } },
{ name: 'slaves', title: 'Slaves', rendered: false,
view_factory: function() { return new SlavesTableView(); } },
{ name: 'masters', title: 'Masters', rendered: false,
view_factory: function() { return new MastersTableView(); } },
{ name: 'silos', title: 'Silos', rendered: false,
view_factory: function() { return new SilosTableView(); } }
];
this.currentViewSpec = null;
this.viewTabsView = new ViewTabsView({
viewSpecs: viewSpecs,
el: $('#viewtabs')
});
this.viewTabsView.render();
var self = this;
$.each(viewSpecs, function (i, viewSpec) {
self.route(viewSpec.name, viewSpec.name,
function() { self.activateRoute(viewSpec); });
});
},
activateRoute: function(viewSpec) {
// done loading..
$('.loading').remove();
// render the new one, if necessary
// TODO: spinner
if (!viewSpec.rendered) {
viewSpec.view = viewSpec.view_factory();
viewSpec.view.render();
$(viewSpec.view.el).hide();
$('#viewcontent').append(viewSpec.view.el);
viewSpec.rendered = true;
}
// hide the previous view from the DOM
if (this.currentViewSpec) {
$(this.currentViewSpec.view.el).hide();
}
// .. and show the new one
$(viewSpec.view.el).show();
// then record the updated current view
this.currentViewSpec = viewSpec;
}
});