Bootstrap loading profiles via ajax

This commit is contained in:
Mark McDowall 2012-11-09 08:28:59 -08:00
commit 0ecbb30345
18 changed files with 92 additions and 122 deletions

View file

@ -1,27 +0,0 @@
NzbDrone = {};
NzbDrone.Views = {};
NzbDrone.Models = {};
NzbDrone.Collections = {};
NzbDrone.App = new Backbone.Marionette.Application();
// Setup default application views
NzbDrone.App.addInitializer(function () {
NzbDrone.App.addRegions({
main: '#main-region'
});
var layout = new NzbDrone.Views.AppLayout();
NzbDrone.App.Layout = layout;
NzbDrone.App.main.show(layout);
layout.header.show(new NzbDrone.Views.HeaderView());
});
NzbDrone.App.addInitializer(function () {
new NzbDrone.AppRouter();
Backbone.history.start();
});

View file

@ -0,0 +1,19 @@
QualityProfileApp = {};
QualityProfileApp.Views = {};
QualityProfileApp.Models = {};
QualityProfileApp.Collections = {};
QualityProfileApp.App = new Backbone.Marionette.Application();
// Setup default application views
QualityProfileApp.App.addInitializer(function () {
QualityProfileApp.App.addRegions({
mainRegion: '#profiles'
});
var qualityProfiles = new QualityProfileCollectionView();
QualityProfileApp.App.mainRegion.show(qualityProfiles);
});

View file

@ -1,11 +1,6 @@
NzbDrone.Constants = {
QualityProfileApp.Constants = {
Templates: {
AppLayout: '#AppLayout',
QualityProfilesView: '#QualityProfilesView',
QualityProfileView: '#QualityProfileView'
QualityProfileCollection: '#QualityProfileCollectionTemplate',
QualityProfile: '#QualityProfileTemplate'
},
Events: {
MenuItemSelected: 'MenuItemSelected'
}
};

View file

@ -1,18 +0,0 @@
window.ProfileCollection = Backbone.Collection.extend({
model: Profile,
url: '/api/qualityprofiles',
search: function (searchTerm, options) {
var self = this;
this.fetch({
success: function () {
if (options.success) {
options.success();
}
}
});
}
});

View file

@ -1,4 +1,4 @@
window.Profile = Backbone.Model.extend({
window.QualityProfile = Backbone.Model.extend({
urlRoot: '/api/qualityprofiles',

View file

@ -0,0 +1,4 @@
window.QualityProfileCollection = Backbone.Collection.extend({
model: QualityProfile,
url: '/api/qualityprofiles'
});

View file

@ -1,16 +0,0 @@
(function (nzbDrone, backbone) {
nzbDrone.AppRouter = backbone.Marionette.AppRouter.extend({
controller: new nzbDrone.AppController(),
appRoutes: {
'': 'home',
'wines': 'list',
'wines/page/:page': 'list',
'wines/add': 'addWine',
'wines/:id': 'wineDetails',
'about': 'about',
'search/:searchTerm': 'handleSearch'
}
});
})(window.NzbDrone, window.Backbone);s

View file

@ -1,37 +1,23 @@
window.QualityProfilesView = Backbone.View.extend({
initialize: function () {
this.render();
},
render: function () {
var profiles = this.model.models;
var len = profiles.length;
var startPos = (this.options.page - 1) * 8;
var endPos = Math.min(startPos + 8, len);
$(this.el).html('<ul class="thumbnails"></ul>');
for (var i = startPos; i < endPos; i++) {
$('.thumbnails', this.el).append(new QualityProfileView({ model: profiles[i] }).render().el);
}
return this;
}
QualityProfileView = Backbone.Marionette.ItemView.extend({
tagName: "div",
className: "quality-profile",
template: "#QualityProfileTemplate"
});
window.QualityProfileView = Backbone.View.extend({
tagName: "li",
QualityProfileCollectionView = Backbone.Marionette.CompositeView.extend({
tagName: "div",
id: "quality-profile-collection",
itemView: QualityProfileView,
template: QualityProfileApp.Constants.Templates.QualityProfileCollection,
//appendHtml: function (collectionView, itemView) {
// collectionView.$('#collection').append(itemView.el);
//},
initialize: function () {
this.model.bind("change", this.render, this);
this.model.bind("destroy", this.close, this);
},
render: function () {
$(this.el).html(this.template(this.model.toJSON()));
return this;
_.bindAll(this, 'render');
this.collection = new QualityProfileCollection();
this.collection.fetch();
this.collection.bind('reset', this.render);
}
});