diff --git a/js/main.js b/js/main.js index c8c098e..ef6800c 100644 --- a/js/main.js +++ b/js/main.js @@ -1,39 +1,78 @@ var rss = [ - 'hamburg.freifunk.net' + 'hamburg.freifunk.net', ]; var MAX_RSS = 5; $(document).ready(function() { - var i = 0; - - var addItem = function(title, link) { - if(i >= MAX_RSS) return; - + var addItem = function(title, link, date) { var item = $('') .attr('class', 'css-truncate') .attr('href', link) .attr('target', '_blank') + .data('date', date) .text(title); $('#news').append($('
  • ').append(item)); + }; - i++; + var getAddedItems = function() { + var news = []; + $('#news').find('a').forEach(function(item) { + var a = $(item); + var title = a.text(); + var link = a.attr('href'); + var date = a.data('date'); + + news.push({title:title, link:link, date:date}); + }); + return news; + }; + + var clearNewsFeed = function() { + $('#news').children().forEach(function(child) { + child.remove(); + }); + }; + + var updateNewsFeed = function(news) { + var items = getAddedItems().concat(news);; + + items.sort(function(a, b) { + a = new Date(a.date); + b = new Date(b.date); + + return a > b ? -1 : a < b ? 1 : 0; + }); + + clearNewsFeed(); + + var i = 0; + items.forEach(function(item) { + if(i++ >= MAX_RSS) return; + addItem(item.title, item.link, item.date); + }); }; rss.forEach(function(feed) { $.get('/feeds/' + feed + '.rss', function(data) { + var news = []; + $(data).find('item').forEach(function(entry) { var title = $(entry).find('title').text(); var link = $(entry).find('link').text(); + var date = $(entry).find('pubDate').text(); - addItem(title, link); + news.push({title:title, link:link, date:date}); }); $(data).find('entry').forEach(function(entry) { var title = $(entry).find('title').text(); var link = $(entry).find('link').attr('href'); + var date = $(entry).find('published').text(); - addItem(title, link); + news.push({title:title, link:link, date:date}); }); + + updateNewsFeed(news); }); }); });