Refactoring unread count view to merge feed and folder unread count views. Also re-centering unread counts (still need to re-center loading bar). Hiding Original tab in river view.

This commit is contained in:
Samuel Clay 2013-04-03 12:37:20 -07:00
parent 0ff44aaf85
commit c4ad789263
6 changed files with 55 additions and 142 deletions

View file

@ -1290,6 +1290,7 @@
$original_tabs.removeClass('NB-disabled-page')
.removeClass('NB-disabled')
.removeClass('NB-hidden')
.removeClass('NB-exception-page');
$original_tabs.each(function() {
$(this).tipsy('disable');
@ -1312,12 +1313,37 @@
});
} else if (this.flags.river_view) {
$page_tab.addClass('NB-disabled');
$('.NB-taskbar-button.task_view_page').addClass('NB-hidden');
$('.NB-taskbar-button.task_view_feed').addClass('NB-first');
} else if (feed && feed.get('has_exception') && feed.get('exception_type') == 'page') {
if (view == 'page') {
view = 'feed';
}
$('.task_view_page').addClass('NB-exception-page');
}
var $split = $(".NB-task-layout-split");
var $list = $(".NB-task-layout-list");
var story_layout = NEWSBLUR.assets.preference('story_layout');
if (story_layout == 'list') {
$('.NB-taskbar-button.task_view_page').addClass('NB-hidden');
$('.NB-taskbar-button.task_view_feed').addClass('NB-first');
$('.NB-taskbar-button.task_view_story').addClass('NB-hidden');
$('.NB-taskbar-button.task_view_text').addClass('NB-last');
$split.removeClass('NB-active');
$list.addClass('NB-active');
} else if (story_layout == 'split') {
if (!this.flags.river_view) {
$('.NB-taskbar-button.task_view_page').removeClass('NB-hidden');
$('.NB-taskbar-button.task_view_feed').removeClass('NB-first');
}
$('.NB-taskbar-button.task_view_story').removeClass('NB-hidden');
$('.NB-taskbar-button.task_view_text').removeClass('NB-last');
$split.addClass('NB-active');
$list.removeClass('NB-active');
}
if (feed_id == 'starred') {
$page_tab.addClass('NB-disabled');
@ -1333,29 +1359,11 @@
switch_story_layout: function(story_layout) {
story_layout = story_layout || NEWSBLUR.assets.preference('story_layout');
var $split = $(".NB-task-layout-split");
var $list = $(".NB-task-layout-list");
if (story_layout == 'list') {
$('.NB-taskbar-button.task_view_page').addClass('NB-hidden');
$('.NB-taskbar-button.task_view_story').addClass('NB-hidden');
$('.NB-taskbar-button.task_view_text').addClass('NB-last');
$('.NB-taskbar-button.task_view_feed').addClass('NB-first');
$split.removeClass('NB-active');
$list.addClass('NB-active');
} else if (story_layout == 'split') {
$('.NB-taskbar-button.task_view_page').removeClass('NB-hidden');
$('.NB-taskbar-button.task_view_story').removeClass('NB-hidden');
$('.NB-taskbar-button.task_view_text').removeClass('NB-last');
$('.NB-taskbar-button.task_view_feed').removeClass('NB-first');
$split.addClass('NB-active');
$list.removeClass('NB-active');
}
if (story_layout == NEWSBLUR.assets.preference('story_layout')) return;
NEWSBLUR.assets.preference('story_layout', story_layout);
this.set_correct_story_view_for_feed();
this.apply_resizable_layout(true);
if (story_layout == 'list') {
@ -2206,7 +2214,7 @@
}
if (feed) {
NEWSBLUR.app.story_unread_counter = new NEWSBLUR.Views.FeedCount({
NEWSBLUR.app.story_unread_counter = new NEWSBLUR.Views.UnreadCount({
model: feed
}).render();
} else if (folder) {
@ -2217,7 +2225,7 @@
} else {
collection = folder.folder_view.collection;
}
NEWSBLUR.app.story_unread_counter = new NEWSBLUR.Views.FolderCount({
NEWSBLUR.app.story_unread_counter = new NEWSBLUR.Views.UnreadCount({
collection: collection
}).render();
}

View file

@ -163,7 +163,7 @@ NEWSBLUR.Views.FeedTitleView = Backbone.View.extend({
},
render_counts: function() {
this.counts_view = new NEWSBLUR.Views.FeedCount({model: this.model}).render();
this.counts_view = new NEWSBLUR.Views.UnreadCount({model: this.model}).render();
this.$('.feed_counts').html(this.counts_view.el);
if (this.options.type == 'story') {
this.$('.NB-story-title-indicator-count').html(this.counts_view.$el.clone());

View file

@ -1,89 +0,0 @@
NEWSBLUR.Views.FolderCount = Backbone.View.extend({
className: 'feed_counts_floater',
initialize: function() {
_.bindAll(this, 'render');
if (!this.options.stale) {
this.collection.bind('change:counts', this.render);
}
},
// ==========
// = Render =
// ==========
render: function() {
var unread_class = "";
var counts = this.collection.unread_counts();
if (counts['ps']) {
unread_class += ' unread_positive';
}
if (counts['nt']) {
unread_class += ' unread_neutral';
}
if (counts['ng']) {
unread_class += ' unread_negative';
}
this.$el.html(this.template({
ps : counts['ps'],
nt : counts['nt'],
ng : counts['ng'],
unread_class : unread_class
}));
return this;
},
template: _.template('\
<div class="<%= unread_class %>">\
<span class="unread_count unread_count_positive <% if (ps) { %>unread_count_full<% } else { %>unread_count_empty<% } %>">\
<%= ps %>\
</span>\
<span class="unread_count unread_count_neutral <% if (nt) { %>unread_count_full<% } else { %>unread_count_empty<% } %>">\
<%= nt %>\
</span>\
<span class="unread_count unread_count_negative <% if (ng) { %>unread_count_full<% } else { %>unread_count_empty<% } %>">\
<%= ng %>\
</span>\
</div>\
'),
// ===========
// = Actions =
// ===========
center: function() {
var i_width = this.$el.width();
var o_width = NEWSBLUR.reader.$s.$story_taskbar.width();
var left = (o_width / 2.0) - (i_width / 2.0);
var view_taskbar_width = $('.NB-taskbar-view').outerWidth(true);
var story_buttons_offset = $(".NB-taskbar-nav").position().left;
if (i_width + 12 > (story_buttons_offset - view_taskbar_width)) {
this.$el.hide();
}
if (left < view_taskbar_width + 12) {
left += view_taskbar_width - left + 12;
}
this.$el.css({'left': left});
},
flash: function() {
var $floater = this.$el;
if (!NEWSBLUR.assets.preference('animations')) return;
_.defer(function() {
$floater.animate({'opacity': 1}, {'duration': 250, 'queue': false});
_.delay(function() {
$floater.animate({'opacity': .2}, {'duration': 250, 'queue': false});
}, 400);
});
}
});

View file

@ -198,7 +198,7 @@ NEWSBLUR.Views.Folder = Backbone.View.extend({
});
}
this.folder_count = new NEWSBLUR.Views.FolderCount({
this.folder_count = new NEWSBLUR.Views.UnreadCount({
collection: this.collection
}).render();
var $counts = this.folder_count.$el;

View file

@ -59,7 +59,7 @@ NEWSBLUR.Views.Sidebar = Backbone.View.extend({
show_counts: function(options) {
var $header = NEWSBLUR.reader.$s.$river_blurblogs_header;
var $counts = new NEWSBLUR.Views.FolderCount({
var $counts = new NEWSBLUR.Views.UnreadCount({
collection: NEWSBLUR.assets.social_feeds
}).render().$el;

View file

@ -1,13 +1,17 @@
NEWSBLUR.Views.FeedCount = Backbone.View.extend({
NEWSBLUR.Views.UnreadCount = Backbone.View.extend({
className: 'feed_counts_floater',
initialize: function() {
_.bindAll(this, 'render');
if (!this.options.stale) {
this.model.bind('change:ps', this.render);
this.model.bind('change:nt', this.render);
this.model.bind('change:ng', this.render);
if (this.model) {
this.model.bind('change:ps', this.render);
this.model.bind('change:nt', this.render);
this.model.bind('change:ng', this.render);
} else if (this.collection) {
this.collection.bind('change:counts', this.render);
}
}
},
@ -17,7 +21,12 @@ NEWSBLUR.Views.FeedCount = Backbone.View.extend({
render: function() {
var unread_class = "";
var counts = this.model.unread_counts();
var counts;
if (this.model) {
counts = this.model.unread_counts();
} else if (this.collection) {
counts = this.collection.unread_counts();
}
if (counts['ps']) {
unread_class += ' unread_positive';
@ -58,19 +67,18 @@ NEWSBLUR.Views.FeedCount = Backbone.View.extend({
// ===========
center: function() {
var i_width = this.$el.width();
var o_width = NEWSBLUR.reader.$s.$story_taskbar.width();
var left = (o_width / 2.0) - (i_width / 2.0);
var view_taskbar_width = $('.NB-taskbar-view').outerWidth(true);
var story_buttons_offset = $(".NB-taskbar-layout").position().left;
if (i_width + 12 > (story_buttons_offset - view_taskbar_width)) {
var count_width = this.$el.width();
var left_buttons_offset = $('.NB-taskbar-view').outerWidth(true);
var right_buttons_offset = $(".NB-taskbar-layout").position().left;
var usable_space = right_buttons_offset - left_buttons_offset;
var left = (usable_space / 2) - (count_width / 2) + left_buttons_offset;
// console.log(["Unread count offset", count_width, left, left_buttons_offset, right_buttons_offset]);
if (count_width + 12 > usable_space) {
this.$el.hide();
}
if (left < view_taskbar_width + 12) {
left += view_taskbar_width - left + 12;
}
this.$el.css({'left': left});
},
@ -85,20 +93,6 @@ NEWSBLUR.Views.FeedCount = Backbone.View.extend({
$floater.animate({'opacity': .2}, {'duration': 250, 'queue': false});
}, 400);
});
},
fall: function() {
var $floater = this.$el;
_.delay(function() {
$floater.animate({
'top': $('#story_taskbar').height()
}, {
'duration': 500,
'queue': false,
'easing': 'easeOutQuint'
});
}, 500);
}
});