From be7994e1c5fc86d4facfc8fa07e087b2bc79f16f Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Wed, 23 Jul 2014 17:49:23 -0700 Subject: [PATCH] Adding stats to organizer. --- apps/rss_feeds/models.py | 2 ++ media/js/newsblur/reader/reader_organizer.js | 28 +++++++++++++++----- media/js/newsblur/views/feed_list_view.js | 9 +++++-- media/js/newsblur/views/feed_title_view.js | 21 +++++++++++++-- media/js/newsblur/views/folder_view.js | 7 +++-- 5 files changed, 55 insertions(+), 12 deletions(-) diff --git a/apps/rss_feeds/models.py b/apps/rss_feeds/models.py index b81bb0456..21ee0e3b0 100644 --- a/apps/rss_feeds/models.py +++ b/apps/rss_feeds/models.py @@ -153,6 +153,8 @@ class Feed(models.Model): 'updated': relative_timesince(self.last_update), 'updated_seconds_ago': seconds_timesince(self.last_update), 'last_story_date': self.last_story_date, + 'stories_last_month': self.stories_last_month, + 'average_stories_per_month': self.average_stories_per_month, 'min_to_decay': self.min_to_decay, 'subs': self.num_subscribers, 'is_push': self.is_push, diff --git a/media/js/newsblur/reader/reader_organizer.js b/media/js/newsblur/reader/reader_organizer.js index a78abb799..b27bce999 100644 --- a/media/js/newsblur/reader/reader_organizer.js +++ b/media/js/newsblur/reader/reader_organizer.js @@ -56,7 +56,8 @@ _.extend(NEWSBLUR.ReaderOrganizer.prototype, { this.feed_count = _.unique(NEWSBLUR.assets.folders.feed_ids_in_folder()).length; var $feeds = new NEWSBLUR.Views.FeedList({ - feed_chooser: true + feed_chooser: true, + organizer: true }).make_feeds().$el; if ($feeds.data('sortable')) $feeds.data('sortable').disable(); @@ -76,8 +77,27 @@ _.extend(NEWSBLUR.ReaderOrganizer.prototype, { $('.unread_count_positive', $feeds).text('On'); $('.unread_count_negative', $feeds).text('Off'); + $('.selected', $feeds).removeClass('selected'); + return $feeds; }, + + // ============= + // = Selecting = + // ============= + + toggle_feed: function(feed_id) { + var feed = NEWSBLUR.assets.get_feed(feed_id); + if (feed.get('organizer_selected')) { + this.deselect_feed(feed); + } else { + this.select_feed(feed); + } + }, + + select_feed: function(feed) { + feed.set('organizer_selected', true); + }, // =========== // = Actions = @@ -90,11 +110,7 @@ _.extend(NEWSBLUR.ReaderOrganizer.prototype, { e.preventDefault(); var feed_id = parseInt($t.attr('data-id'), 10); - if (_.contains(this.approve_list, feed_id)) { - this.add_feed_to_decline(feed_id, true); - } else { - this.add_feed_to_approve(feed_id, true); - } + this.toggle_feed(feed_id); }, this)); } diff --git a/media/js/newsblur/views/feed_list_view.js b/media/js/newsblur/views/feed_list_view.js index 82a9b184e..50db5eac6 100644 --- a/media/js/newsblur/views/feed_list_view.js +++ b/media/js/newsblur/views/feed_list_view.js @@ -15,7 +15,11 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({ if (this.options.feed_chooser) { this.$el.addClass('NB-feedchooser'); this.$el.addClass('unread_view_positive'); - this.$el.attr('id', 'NB-feedchooser-feeds'); + if (this.options.organizer) { + this.$el.attr('id', 'NB-organizer-feeds'); + } else { + this.$el.attr('id', 'NB-feedchooser-feeds'); + } return; } @@ -57,7 +61,8 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({ var $feeds = new NEWSBLUR.Views.Folder({ collection: folders, root: true, - feed_chooser: this.options.feed_chooser + feed_chooser: this.options.feed_chooser, + organizer: this.options.organizer }).render().el; this.$el.css({ 'display': 'block', diff --git a/media/js/newsblur/views/feed_title_view.js b/media/js/newsblur/views/feed_title_view.js index 92e8b001f..ceeeaeb3c 100644 --- a/media/js/newsblur/views/feed_title_view.js +++ b/media/js/newsblur/views/feed_title_view.js @@ -110,6 +110,20 @@ NEWSBLUR.Views.FeedTitleView = Backbone.View.extend({
\
\
\ + <% if (organizer) { %>\ +
\ + <%= pluralize("subscriber", feed.get("num_subscribers"), true) %>\ +
\ +
\ + <%= feed.get("last_story_date") %>\ +
\ +
\ + <%= pluralize("story", feed.get("average_stories_per_month"), true) %> per month\ +
\ +
\ + <%= pluralize("open", feed.get("feed_opens"), true) %>\ +
\ + <% } %>\ >\ ', { feed : feed, @@ -118,9 +132,11 @@ NEWSBLUR.Views.FeedTitleView = Backbone.View.extend({ extra_classes : extra_classes, toplevel : this.options.depth == 0, list_type : this.options.type == 'feed' ? 'li' : 'div', - selected : this.model.get('selected') + selected : this.model.get('selected'), + organizer : this.options.organizer, + pluralize : Inflector.pluralize })); - + if (this.options.type == 'story') { this.search_view = new NEWSBLUR.Views.FeedSearchView({ feedbar_view: this @@ -302,6 +318,7 @@ NEWSBLUR.Views.FeedTitleView = Backbone.View.extend({ if (dblclick_pref == "ignore") return; if (this.options.type == "story") return; if (this.options.starred_tag) return; + if (this.options.feed_chooser) return; if ($('.NB-modal-feedchooser').is(':visible')) return; this.flags.double_click = true; diff --git a/media/js/newsblur/views/folder_view.js b/media/js/newsblur/views/folder_view.js index a7c6377f7..37be00b91 100644 --- a/media/js/newsblur/views/folder_view.js +++ b/media/js/newsblur/views/folder_view.js @@ -68,6 +68,7 @@ NEWSBLUR.Views.Folder = Backbone.View.extend({ var depth = this.options.depth; var folder_title = this.options.folder_title; var feed_chooser = this.options.feed_chooser; + var organizer = this.options.organizer; var folder_collection = this.collection; this.options.collapsed = folder_title && _.contains(NEWSBLUR.Preferences.collapsed_folders, folder_title); var $folder = this.render_folder(); @@ -82,7 +83,8 @@ NEWSBLUR.Views.Folder = Backbone.View.extend({ depth: depth, folder_title: folder_title, folder: folder_collection, - feed_chooser: feed_chooser + feed_chooser: feed_chooser, + organizer: organizer }).render(); item.feed.views.push(feed_title_view); item.feed.folders.push(folder_collection); @@ -92,7 +94,8 @@ NEWSBLUR.Views.Folder = Backbone.View.extend({ model: item, collection: item.folders, depth: depth + 1, - feed_chooser: feed_chooser + feed_chooser: feed_chooser, + organizer: organizer }).render(); item.folder_views.push(folder_view); return folder_view.el;