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')
|
$original_tabs.removeClass('NB-disabled-page')
|
||||||
.removeClass('NB-disabled')
|
.removeClass('NB-disabled')
|
||||||
|
.removeClass('NB-hidden')
|
||||||
.removeClass('NB-exception-page');
|
.removeClass('NB-exception-page');
|
||||||
$original_tabs.each(function() {
|
$original_tabs.each(function() {
|
||||||
$(this).tipsy('disable');
|
$(this).tipsy('disable');
|
||||||
|
@ -1312,12 +1313,37 @@
|
||||||
});
|
});
|
||||||
} else if (this.flags.river_view) {
|
} else if (this.flags.river_view) {
|
||||||
$page_tab.addClass('NB-disabled');
|
$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') {
|
} else if (feed && feed.get('has_exception') && feed.get('exception_type') == 'page') {
|
||||||
if (view == 'page') {
|
if (view == 'page') {
|
||||||
view = 'feed';
|
view = 'feed';
|
||||||
}
|
}
|
||||||
$('.task_view_page').addClass('NB-exception-page');
|
$('.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') {
|
if (feed_id == 'starred') {
|
||||||
$page_tab.addClass('NB-disabled');
|
$page_tab.addClass('NB-disabled');
|
||||||
|
@ -1333,29 +1359,11 @@
|
||||||
switch_story_layout: function(story_layout) {
|
switch_story_layout: function(story_layout) {
|
||||||
story_layout = story_layout || NEWSBLUR.assets.preference('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;
|
if (story_layout == NEWSBLUR.assets.preference('story_layout')) return;
|
||||||
|
|
||||||
NEWSBLUR.assets.preference('story_layout', story_layout);
|
NEWSBLUR.assets.preference('story_layout', story_layout);
|
||||||
|
|
||||||
|
this.set_correct_story_view_for_feed();
|
||||||
this.apply_resizable_layout(true);
|
this.apply_resizable_layout(true);
|
||||||
|
|
||||||
if (story_layout == 'list') {
|
if (story_layout == 'list') {
|
||||||
|
@ -2206,7 +2214,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (feed) {
|
if (feed) {
|
||||||
NEWSBLUR.app.story_unread_counter = new NEWSBLUR.Views.FeedCount({
|
NEWSBLUR.app.story_unread_counter = new NEWSBLUR.Views.UnreadCount({
|
||||||
model: feed
|
model: feed
|
||||||
}).render();
|
}).render();
|
||||||
} else if (folder) {
|
} else if (folder) {
|
||||||
|
@ -2217,7 +2225,7 @@
|
||||||
} else {
|
} else {
|
||||||
collection = folder.folder_view.collection;
|
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
|
collection: collection
|
||||||
}).render();
|
}).render();
|
||||||
}
|
}
|
||||||
|
|
|
@ -163,7 +163,7 @@ NEWSBLUR.Views.FeedTitleView = Backbone.View.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
render_counts: function() {
|
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);
|
this.$('.feed_counts').html(this.counts_view.el);
|
||||||
if (this.options.type == 'story') {
|
if (this.options.type == 'story') {
|
||||||
this.$('.NB-story-title-indicator-count').html(this.counts_view.$el.clone());
|
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
|
collection: this.collection
|
||||||
}).render();
|
}).render();
|
||||||
var $counts = this.folder_count.$el;
|
var $counts = this.folder_count.$el;
|
||||||
|
|
|
@ -59,7 +59,7 @@ NEWSBLUR.Views.Sidebar = Backbone.View.extend({
|
||||||
|
|
||||||
show_counts: function(options) {
|
show_counts: function(options) {
|
||||||
var $header = NEWSBLUR.reader.$s.$river_blurblogs_header;
|
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
|
collection: NEWSBLUR.assets.social_feeds
|
||||||
}).render().$el;
|
}).render().$el;
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,17 @@
|
||||||
NEWSBLUR.Views.FeedCount = Backbone.View.extend({
|
NEWSBLUR.Views.UnreadCount = Backbone.View.extend({
|
||||||
|
|
||||||
className: 'feed_counts_floater',
|
className: 'feed_counts_floater',
|
||||||
|
|
||||||
initialize: function() {
|
initialize: function() {
|
||||||
_.bindAll(this, 'render');
|
_.bindAll(this, 'render');
|
||||||
if (!this.options.stale) {
|
if (!this.options.stale) {
|
||||||
this.model.bind('change:ps', this.render);
|
if (this.model) {
|
||||||
this.model.bind('change:nt', this.render);
|
this.model.bind('change:ps', this.render);
|
||||||
this.model.bind('change:ng', 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() {
|
render: function() {
|
||||||
var unread_class = "";
|
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']) {
|
if (counts['ps']) {
|
||||||
unread_class += ' unread_positive';
|
unread_class += ' unread_positive';
|
||||||
|
@ -58,19 +67,18 @@ NEWSBLUR.Views.FeedCount = Backbone.View.extend({
|
||||||
// ===========
|
// ===========
|
||||||
|
|
||||||
center: function() {
|
center: function() {
|
||||||
var i_width = this.$el.width();
|
var count_width = this.$el.width();
|
||||||
var o_width = NEWSBLUR.reader.$s.$story_taskbar.width();
|
var left_buttons_offset = $('.NB-taskbar-view').outerWidth(true);
|
||||||
var left = (o_width / 2.0) - (i_width / 2.0);
|
var right_buttons_offset = $(".NB-taskbar-layout").position().left;
|
||||||
var view_taskbar_width = $('.NB-taskbar-view').outerWidth(true);
|
var usable_space = right_buttons_offset - left_buttons_offset;
|
||||||
var story_buttons_offset = $(".NB-taskbar-layout").position().left;
|
var left = (usable_space / 2) - (count_width / 2) + left_buttons_offset;
|
||||||
|
|
||||||
if (i_width + 12 > (story_buttons_offset - view_taskbar_width)) {
|
// console.log(["Unread count offset", count_width, left, left_buttons_offset, right_buttons_offset]);
|
||||||
|
|
||||||
|
if (count_width + 12 > usable_space) {
|
||||||
this.$el.hide();
|
this.$el.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (left < view_taskbar_width + 12) {
|
|
||||||
left += view_taskbar_width - left + 12;
|
|
||||||
}
|
|
||||||
this.$el.css({'left': left});
|
this.$el.css({'left': left});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -85,20 +93,6 @@ NEWSBLUR.Views.FeedCount = Backbone.View.extend({
|
||||||
$floater.animate({'opacity': .2}, {'duration': 250, 'queue': false});
|
$floater.animate({'opacity': .2}, {'duration': 250, 'queue': false});
|
||||||
}, 400);
|
}, 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