Updating starred count on load.

This commit is contained in:
Samuel Clay 2010-12-01 14:11:42 -05:00
parent 82dd89b161
commit 822ad26c63
5 changed files with 62 additions and 17 deletions

View file

@ -164,7 +164,13 @@ def load_feeds(request):
if 'not_yet_fetched' not in feeds[f]: if 'not_yet_fetched' not in feeds[f]:
feeds[f]['not_yet_fetched'] = False feeds[f]['not_yet_fetched'] = False
data = dict(feeds=feeds, folders=json.decode(folders.folders)) starred_count = MStarredStory.objects(user_id=request.user.pk).count()
data = {
'feeds': feeds,
'folders': json.decode(folders.folders),
'starred_count': starred_count,
}
return data return data
@ajax_login_required @ajax_login_required

View file

@ -1407,7 +1407,19 @@ background: transparent;
/* = Header - Starred Stories = */ /* = Header - Starred Stories = */
/* ============================ */ /* ============================ */
.NB-feeds-header-container .NB-feeds-header-starred { .NB-feeds-header-starred-container {
position: relative;
height: 20px;
display: none;
overflow: hidden;
}
.NB-feeds-header-starred {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 18px;
border-top: 1px solid #303030; border-top: 1px solid #303030;
border-bottom: 1px solid #E9E9E9; border-bottom: 1px solid #E9E9E9;
padding-right: 2px; padding-right: 2px;
@ -1416,22 +1428,22 @@ background: transparent;
cursor: pointer; cursor: pointer;
} }
.NB-feeds-header-container .NB-feeds-header-starred.NB-selected { .NB-feeds-header-starred.NB-selected {
background: #f6a828 url('../theme/images/ui-bg_highlight-hard_35_f6a828_1x100.png') 0 50% repeat-x; background: #f6a828 url('../theme/images/ui-bg_highlight-hard_35_f6a828_1x100.png') 0 50% repeat-x;
} }
.NB-feeds-header-container .NB-feeds-header-starred .NB-feeds-header-starred-icon { .NB-feeds-header-starred .NB-feeds-header-starred-icon {
position: absolute; position: absolute;
top: 2px; top: 1px;
left: 2px; left: 2px;
background: transparent url('../img/reader/star_blue.png') no-repeat 0 0; background: transparent url('../img/reader/star_blue.png') no-repeat 0 0;
width: 16px; width: 16px;
height: 16px; height: 16px;
} }
.NB-feeds-header-container .NB-feeds-header-starred .NB-feeds-header-starred-title { .NB-feeds-header-starred .NB-feeds-header-starred-title {
display: block; display: block;
padding: 4px 40px 2px 23px; padding: 3px 40px 2px 23px;
text-decoration: none; text-decoration: none;
color: #F0F0F0; color: #F0F0F0;
line-height: 1.3em; line-height: 1.3em;
@ -1441,19 +1453,24 @@ background: transparent;
text-transform: uppercase; text-transform: uppercase;
} }
.NB-feeds-header-container .NB-feeds-header-starred:hover .NB-feeds-header-starred-title { .NB-feeds-header-starred:hover .NB-feeds-header-starred-title {
color: #DCDCDC; color: #DCDCDC;
} }
.NB-feeds-header-container .NB-feeds-header-starred.NB-selected .NB-feeds-header-starred-title { .NB-feeds-header-starred.NB-selected .NB-feeds-header-starred-title {
text-shadow: 0 1px 0 #FFC97D; text-shadow: 0 1px 0 #FFC97D;
color: #000000; color: #000000;
} }
.NB-feeds-header-container .NB-feeds-header-starred-count { .NB-feeds-header-starred .NB-feeds-header-starred-count {
background-color: #11448B; background-color: #11448B;
display: block; display: block;
padding: 0 4px; padding: 0 4px;
margin-top: 2px;
}
.NB-feeds-header-starred.NB-empty .NB-feeds-header-starred-count {
display: none;
} }
/* ============ */ /* ============ */

View file

@ -22,6 +22,7 @@ NEWSBLUR.AssetModel.Reader = function() {
this.read_stories = {}; this.read_stories = {};
this.classifiers = {}; this.classifiers = {};
this.starred_stories = []; this.starred_stories = [];
this.starred_count = 0;
this.DEFAULT_VIEW = NEWSBLUR.Preferences.default_view || 'page'; this.DEFAULT_VIEW = NEWSBLUR.Preferences.default_view || 'page';
}; };
@ -169,6 +170,7 @@ NEWSBLUR.AssetModel.Reader.prototype = {
} }
}); });
self.folders = subscriptions.folders; self.folders = subscriptions.folders;
self.starred_count = subscriptions.starred_count;
callback(); callback();
}; };

View file

@ -21,7 +21,8 @@
$mouse_indicator: $('#mouse-indicator'), $mouse_indicator: $('#mouse-indicator'),
$feed_link_loader: $('#NB-feeds-list-loader'), $feed_link_loader: $('#NB-feeds-list-loader'),
$feeds_progress: $('#NB-progress'), $feeds_progress: $('#NB-progress'),
$header: $(".NB-feeds-header") $header: $('.NB-feeds-header'),
$starred_header: $('.NB-feeds-header-starred')
}; };
this.flags = { this.flags = {
'feed_view_images_loaded': {}, 'feed_view_images_loaded': {},
@ -618,6 +619,7 @@
$('.feed', $feed_list).tsort('.feed_title'); $('.feed', $feed_list).tsort('.feed_title');
$('.folder', $feed_list).tsort('.folder_title_text'); $('.folder', $feed_list).tsort('.folder_title_text');
this.update_header_counts(); this.update_header_counts();
_.delay(_.bind(this.update_starred_count, this), 250);
} }
}, },
@ -646,6 +648,22 @@
}); });
}, },
update_starred_count: function() {
var starred_count = this.model.starred_count;
var $starred_count = $('.NB-feeds-header-starred-count', this.$s.$starred_header);
var $starred_container = this.$s.$starred_header.closest('.NB-feeds-header-starred-container');
if (starred_count <= 0) {
this.$s.$starred_header.addClass('NB-empty');
$starred_count.text('');
$starred_container.slideUp(350);
} else if (starred_count > 0) {
$starred_count.text(starred_count);
this.$s.$starred_header.removeClass('NB-empty');
$starred_container.slideDown(350);
}
},
detect_all_inactive_feeds: function() { detect_all_inactive_feeds: function() {
var feeds = this.model.feeds; var feeds = this.model.feeds;
var has_chosen_feeds = _.any(feeds, function(feed) { var has_chosen_feeds = _.any(feeds, function(feed) {

View file

@ -330,11 +330,13 @@ $(document).ready(function() {
</div> </div>
<div class="NB-feeds-header-home">Dashboard</div> <div class="NB-feeds-header-home">Dashboard</div>
</div> </div>
<div class="NB-feeds-header-starred"> <div class="NB-feeds-header-starred-container">
<div class="NB-feeds-header-starred-count unread_count">4</div> <div class="NB-feeds-header-starred NB-empty">
<div class="NB-feeds-header-starred-icon"></div> <div class="NB-feeds-header-starred-count unread_count"></div>
<div class="NB-feeds-header-starred-title"> <div class="NB-feeds-header-starred-icon"></div>
Starred Stories <div class="NB-feeds-header-starred-title">
Starred Stories
</div>
</div> </div>
</div> </div>
</div> </div>