mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
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:
parent
0ff44aaf85
commit
c4ad789263
6 changed files with 55 additions and 142 deletions
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
});
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
});
|
Loading…
Add table
Reference in a new issue