Moving towards folders as collections and an intermediary model that chooses between feeds or more folders. Still needs rendering.

This commit is contained in:
Samuel Clay 2012-05-17 20:50:08 -07:00
parent bfe7ee1634
commit fe5c286de7
9 changed files with 73 additions and 13 deletions

View file

@ -275,11 +275,13 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({
var pre_callback = function(feeds, subscriptions) {
NEWSBLUR.log(['subscriptions', feeds, subscriptions]);
self.flags['favicons_fetching'] = self.feeds.any(function(feed) { return feed.get('favicons_fetching'); });
self.folders = subscriptions.folders;
self.folders = new NEWSBLUR.Collections.Folders();
self.folders.parse(subscriptions.folders);
self.starred_count = subscriptions.starred_count;
self.social_feeds.reset(subscriptions.social_feeds);
self.user_profile.set(subscriptions.social_profile);
if (!_.isEqual(self.favicons, {})) {
self.feeds.each(function(feed) {
if (self.favicons[feed.id]) {
@ -289,6 +291,8 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({
}
self.detect_any_inactive_feeds();
self.feeds.trigger('reset');
};
var data = {

View file

@ -2,7 +2,7 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({
initialize: function() {
this.$s = NEWSBLUR.reader.$s;
this.model = NEWSBLUR.reader.model;
this.model = NEWSBLUR.assets;
if (!$('#feed_list').length) return;
$('.NB-callout-ftux .NB-callout-text').text('Loading feeds...');
@ -12,7 +12,6 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({
this.make_feeds();
this.make_social_feeds();
this.load_router();
callback && callback();
}, this));
NEWSBLUR.assets.load_feeds();
},
@ -27,14 +26,14 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({
$feed_list.empty();
this.$s.$story_taskbar.css({'display': 'block'});
var $feeds = this.make_feeds_folder(folders, 0);
var $feeds = new NEWSBLUR.Views.Folder(this.model.folders).render().el;
$feed_list.css({
'display': 'block',
'opacity': 0
});
$feed_list.html($feeds);
this.count_collapsed_unread_stories();
$feed_list.animate({'opacity': 1}, {'duration': 700});
this.count_collapsed_unread_stories();
this.hover_over_feed_titles($feed_list);
this.$s.$feed_link_loader.fadeOut(250);

View file

@ -12,13 +12,13 @@ NEWSBLUR.Collections.Feeds = Backbone.Collection.extend({
options = _.extend({
data: {
v: 2
}
},
silent: true
}, options);
return Backbone.Collection.prototype.fetch.call(this, options);
},
parse: function(data) {
console.log(["parsing collection", data]);
return data.feeds;
}

View file

@ -1,5 +0,0 @@
NEWSBLUR.Models.Folder = Backbone.Model.extend({
});

View file

@ -0,0 +1,27 @@
NEWSBLUR.Models.FeedOrFolder = Backbone.Model.extend({
initialize: function(model) {
console.log(["constructing model", model]);
if (_.isNumber(model)) {
this.model = NEWSBLUR.assets.feeds.get(model);
} else {
this.model = new NEWSBLUR.Collections.Folders();
this.title = _.keys(model)[0];
var children = model[this.title];
this.model.parse(children);
}
}
});
NEWSBLUR.Collections.Folders = Backbone.Collection.extend({
model: NEWSBLUR.Models.FeedOrFolder,
parse: function(models) {
console.log(["parse", this.models, models]);
this.reset(models);
}
});

View file

@ -0,0 +1,10 @@
NEWSBLUR.Views.Feed = Backbone.View.extend({
className: 'NB-feed',
render: function() {
$(this.el).html(this.make('div', {}, this.model.get('feed_title')));
return this;
}
});

View file

@ -0,0 +1,25 @@
NEWSBLUR.Views.Folder = Backbone.View.extend({
className: 'NB-folder',
initialize: function(models) {
this.models = models;
},
render: function() {
console.log(["render models", this.models]);
var $feeds = _.map(this.models, function(model) {
var $model;
console.log(["model", model]);
if (_.isNumber(model)) {
var model = NEWSBLUR.assets.feeds.get(model);
return new NEWSBLUR.Views.Feed({model: model}).render().el;
} else {
return new NEWSBLUR.Views.Folder(model).render().el;
}
});
$(this.el).append($feeds);
return this;
}
});