Initial stub of River of News (everything view). Breaks on collapsed folders with unreads. Also doesn't work at all.

This commit is contained in:
Samuel Clay 2010-12-10 15:26:50 -05:00
parent 144b04feb6
commit f6c841974f
4 changed files with 188 additions and 10 deletions

View file

@ -549,6 +549,24 @@ body.NB-theme-serif #story_pane .NB-feed-story-content {
display: block;
}
.NB-feedlist .folder .NB-feedlist-river-icon {
position: absolute;
right: 4px;
top: 2px;
width: 16px;
height: 16px;
background: transparent url('../img/icons/silk/application_view_list.png') no-repeat 0 0;
opacity: .65;
display: none;
}
.NB-feedlist .folder .folder_title:hover > .NB-feedlist-river-icon {
display: block;
}
.NB-feedlist .folder .NB-feedlist-river-icon:hover {
opacity: 1;
}
.NB-feedlist .feed.NB-hover.NB-toplevel .feed_favicon {
display: none;
}
@ -1266,7 +1284,7 @@ background: transparent;
width: 16px;
height: 16px;
}
#story_pane .NB-feed-story.NB-starred-story .NB-feed-story-sentiment {
#story_pane .NB-feed-story.NB-river-story .NB-feed-story-sentiment {
display: none;
}
@ -1550,6 +1568,76 @@ background: transparent;
display: none;
}
/* ========================== */
/* = Header - River Stories = */
/* ========================== */
.NB-feeds-header-river-container {
position: relative;
height: 20px;
display: block;
overflow: hidden;
}
.NB-feeds-header-river {
background: #4F5358 url("../img/reader/feeds_header_background.png") repeat-x scroll left top;
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 18px;
border-top: 1px solid #303030;
border-bottom: 1px solid #E9E9E9;
padding-right: 2px;
font-size: 10px;
cursor: pointer;
}
.NB-feeds-header-river.NB-selected {
background: #f6a828 url('../theme/images/ui-bg_highlight-hard_35_f6a828_1x100.png') 0 50% repeat-x;
}
.NB-feeds-header-river .NB-feeds-header-river-icon {
position: absolute;
top: 1px;
left: 2px;
background: transparent url('../img/icons/silk/application_view_list.png') no-repeat 1px 0;
width: 16px;
height: 16px;
}
.NB-feeds-header-river .NB-feeds-header-river-title {
display: block;
padding: 3px 40px 2px 23px;
text-decoration: none;
color: #F0F0F0;
line-height: 1.3em;
height: 14px;
overflow: hidden;
text-shadow: 0 1px 0 #060607;
text-transform: uppercase;
}
.NB-feeds-header-river:hover .NB-feeds-header-river-title {
color: #C1C1C1;
}
.NB-feeds-header-river.NB-selected .NB-feeds-header-river-title {
text-shadow: 0 1px 0 #FFC97D;
color: #000000;
}
.NB-feeds-header-river .NB-feeds-header-river-count {
background-color: #11448B;
display: block;
padding: 0 4px;
margin: 2px 3px 0 0;
}
.NB-feeds-header-river.NB-empty .NB-feeds-header-river-count {
display: none;
}
/* ============ */
/* = Task Bar = */
/* ============ */
@ -3618,6 +3706,10 @@ background: transparent;
background: transparent url('../img/icons/silk/folder.png') no-repeat 3px 1px;
}
.NB-modal-feedchooser .NB-feedlist .folder .NB-feedlist-river-icon {
display: none;
}
.NB-modal-feedchooser .unread_count_positive {
color: yellow;
}

View file

@ -36,7 +36,7 @@ NEWSBLUR.AssetModel.Reader.prototype = {
this.ajax['queue_clear'] = $.manageAjax.create('queue_clear', {queue: 'clear'});
this.ajax['feed'] = $.manageAjax.create('feed', {queue: 'clear', abortOld: true, domCompleteTrigger: true});
this.ajax['feed_page'] = $.manageAjax.create('feed_page', {queue: false, abortOld: true, abortIsNoSuccess: false, domCompleteTrigger: true});
this.ajax['statistics'] = $.manageAjax.create('feed', {queue: 'clear', abortOld: true});
this.ajax['statistics'] = $.manageAjax.create('statistics', {queue: 'clear', abortOld: true});
$.ajaxSettings.traditional = true;
return;
},
@ -243,7 +243,7 @@ NEWSBLUR.AssetModel.Reader.prototype = {
var self = this;
var pre_callback = function(data) {
return self.load_feed_precallback(data, null, callback, first_load);
return self.load_feed_precallback(data, 'starred', callback, first_load);
};
this.make_request('/reader/load_starred_stories', {
@ -253,6 +253,21 @@ NEWSBLUR.AssetModel.Reader.prototype = {
});
},
fetch_river_stories: function(feeds, page, callback, first_load) {
var self = this;
var pre_callback = function(data) {
return self.load_feed_precallback(data, 'river', callback, first_load);
};
this.make_request('/reader/load_river_stories', {
feeds: feeds,
page: page
}, pre_callback, null, {
'ajax_group': (page ? 'feed_page' : 'feed')
});
},
get_feeds_trainer: function(feed_id, callback) {
var self = this;
var params = {};

View file

@ -24,6 +24,7 @@
$feeds_progress: $('#NB-progress'),
$header: $('.NB-feeds-header'),
$starred_header: $('.NB-feeds-header-starred'),
$river_header: $('.NB-feeds-header-river'),
$taskbar: $('.taskbar_nav')
};
this.flags = {
@ -679,7 +680,8 @@
var $folder = $.make('li', { className: 'folder' }, [
$.make('div', { className: 'folder_title ' + (depth==0 ? 'NB-toplevel':'') }, [
$.make('span', { className: 'folder_title_text' }, o),
$.make('div', { className: 'NB-feedlist-manage-icon' })
$.make('div', { className: 'NB-feedlist-manage-icon' }),
$.make('div', { className: 'NB-feedlist-river-icon' })
]),
$.make('ul', { className: 'folder' }, [
$.make('li', { className: 'feed NB-empty' })
@ -1164,6 +1166,7 @@
this.$s.$story_titles.data('feed_id', null);
this.$s.$feed_view.empty();
this.$s.$starred_header.removeClass('NB-selected');
this.$s.$river_header.removeClass('NB-selected');
this.$s.$body.removeClass('NB-view-starred');
$('.task_view_page', this.$s.$taskbar).removeClass('NB-disabled');
},
@ -1403,15 +1406,66 @@
// NEWSBLUR.log(['post_open_starred_stories', data.stories, first_load]);
this.flags['feed_view_positions_calculated'] = false;
this.story_titles_clear_loading_endbar();
this.create_story_titles(data.stories, {'starred_stories': true});
this.create_story_titles(data.stories, {'river_stories': true});
this.hover_over_story_titles();
this.make_story_feed_entries(data.stories, first_load, {'starred_stories': true});
this.make_story_feed_entries(data.stories, first_load, {'river_stories': true});
this.show_story_titles_above_intelligence_level({'animate': false});
// $('.NB-feedbar-last-updated-date').text(data.last_update + ' ago');
this.flags['story_titles_loaded'] = true;
}
},
// =================
// = River of News =
// =================
open_river_stories: function(feeds) {
var $story_titles = this.$s.$story_titles;
$story_titles.empty().scrollTop('0px');
this.reset_feed();
this.hide_splash_page();
this.active_feed = 'river';
$story_titles.data('page', 0);
$story_titles.data('feed_id', null);
this.iframe_scroll = null;
this.mark_feed_as_selected(null, null);
this.$s.$river_header.addClass('NB-selected');
this.$s.$body.addClass('NB-view-river');
$('.task_view_page', this.$s.$taskbar).addClass('NB-disabled');
var explicit_view_setting = NEWSBLUR.Preferences.view_settings[this.active_feed];
if (!explicit_view_setting) {
explicit_view_setting = 'feed';
}
this.set_correct_story_view_for_feed(this.active_feed, explicit_view_setting);
// this.show_feed_title_in_stories(feed_id);
this.show_feedbar_loading();
// this.make_content_pane_feed_counter(feed_id);
this.switch_taskbar_view(this.story_view);
this.setup_mousemove_on_views();
this.model.fetch_river_stories(feeds, 0, _.bind(this.post_open_river_stories, this), true);
},
post_open_river_stories: function(data, first_load) {
if (this.active_feed == 'river') {
NEWSBLUR.log(['post_open_river_stories', data.stories, first_load]);
this.flags['feed_view_positions_calculated'] = false;
this.story_titles_clear_loading_endbar();
this.create_story_titles(data.stories, {'river_stories': true});
this.hover_over_story_titles();
this.make_story_feed_entries(data.stories, first_load, {'river_stories': true});
this.show_story_titles_above_intelligence_level({'animate': false});
// $('.NB-feedbar-last-updated-date').text(data.last_update + ' ago');
this.flags['story_titles_loaded'] = true;
}
},
list_feeds_with_unreads_in_folder: function($folder) {
},
// ==========================
// = Story Pane - All Views =
// ==========================
@ -1929,7 +1983,7 @@
$.make('span', { className: 'NB-storytitles-author' }, story.story_authors),
$story_tags
]),
(story.starred && feed && options['starred_stories'] &&
(story.starred && feed && options['river_stories'] &&
$.make('div', { className: 'NB-story-feed' }, [
$.make('img', { className: 'feed_favicon', src: NEWSBLUR.Globals.google_favicon_url + feed.feed_link }),
$.make('span', { className: 'feed_title' }, feed.feed_title)
@ -2172,6 +2226,9 @@
if (this.active_feed == 'starred') {
this.model.fetch_starred_stories(page+1,
_.bind(this.post_open_starred_stories, this), false);
} else if (this.active_feed == 'river') {
this.model.fetch_river_stories(page+1,
_.bind(this.post_open_river_stories, this), false);
} else {
this.model.load_feed(feed_id, page+1, false,
$.rescope(this.post_open_feed, this));
@ -2304,13 +2361,13 @@
: '';
var score = this.compute_story_score(story);
var score_color = 'neutral';
var starred_stories = options.starred_stories
? ' NB-starred-story '
var river_stories = options['river_stories']
? ' NB-river-story '
: '';
if (score > 0) score_color = 'positive';
if (score < 0) score_color = 'negative';
var $story = $.make('li', { className: 'NB-feed-story ' + read + starred_stories + ' NB-story-' + score_color }, [
var $story = $.make('li', { className: 'NB-feed-story ' + read + river_stories + ' NB-story-' + score_color }, [
$.make('div', { className: 'NB-feed-story-header' }, [
$.make('div', { className: 'NB-feed-story-sentiment' }),
( story.story_authors &&
@ -3721,6 +3778,11 @@
e.preventDefault();
self.open_starred_stories();
});
$.targetIs(e, { tagSelector: '.NB-feeds-header-river' }, function($t, $p){
e.preventDefault();
var feeds = self.list_feeds_with_unreads_in_folder($t);
self.open_river_stories(feeds);
});
// = Feed Bar =====================================================

View file

@ -332,6 +332,15 @@ $(document).ready(function() {
</div>
<div class="NB-feeds-header-home">Dashboard</div>
</div>
<div class="NB-feeds-header-river-container">
<div class="NB-feeds-header-river NB-empty">
<div class="NB-feeds-header-river-count unread_count"></div>
<div class="NB-feeds-header-river-icon"></div>
<div class="NB-feeds-header-river-title">
Everything
</div>
</div>
</div>
<div class="NB-feeds-header-starred-container">
<div class="NB-feeds-header-starred NB-empty">
<div class="NB-feeds-header-starred-count unread_count"></div>