APIs

Show:
  1. /**
  2. Application fonts list
  3. @class RSSLinks
  4. @constructor
  5. @return {object} instantiated RSSLinks
  6. **/
  7. define(['jquery', 'backbone'], function ($, Backbone) {
  8.  
  9. /**
  10. Custom event fired when a new RSS link selected
  11. @event RSSLINK_CHANGED
  12. @param {This} caller
  13. @param {Self} context caller
  14. @param {Event} rss link
  15. @static
  16. @final
  17. **/
  18. BB.EVENTS.RSSLINK_CHANGED = 'RSSLINK_CHANGED';
  19.  
  20. Backbone.SERVICES.RSS_LINKS = 'RSSLinks';
  21.  
  22. var RSSLinks = Backbone.StackView.Fader.extend({
  23.  
  24. /**
  25. Constructor
  26. @method initialize
  27. **/
  28. initialize: function () {
  29. var self = this;
  30.  
  31. self.m_rssLinks = '<TextRss>' +
  32. '<Rss label="Top Stories" url="http://rss.news.yahoo.com/rss/topstories"/>' +
  33. '<Rss label="U.S. National" url="http://rss.news.yahoo.com/rss/us"/>' +
  34. '<Rss label="Elections" url="http://rss.news.yahoo.com/rss/elections"/>' +
  35. '<Rss label="Terrorism" url="http://rss.news.yahoo.com/rss/terrorism"/>' +
  36. '<Rss label="World" url="http://rss.news.yahoo.com/rss/world"/>' +
  37. '<Rss label="Mideast Conflict" url="http://rss.news.yahoo.com/rss/mideast"/>' +
  38. '<Rss label="Iraq" url="http://rss.news.yahoo.com/rss/iraq"/>' +
  39. '<Rss label="Politics" url="http://rss.news.yahoo.com/rss/politics"/>' +
  40. '<Rss label="Business" url="http://rss.news.yahoo.com/rss/business"/>' +
  41. '<Rss label="Technology" url="http://rss.news.yahoo.com/rss/tech"/>' +
  42. '<Rss label="Sports" url="http://rss.news.yahoo.com/rss/sports"/>' +
  43. '<Rss label="Entertainment" url="http://rss.news.yahoo.com/rss/entertainment"/>' +
  44. '<Rss label="Health" url="http://rss.news.yahoo.com/rss/health"/>' +
  45. '<Rss label="Odd News" url="http://rss.news.yahoo.com/rss/oddlyenough"/>' +
  46. '<Rss label="Science" url="http://rss.news.yahoo.com/rss/science"/>' +
  47. '<Rss label="Opinion/Editorial" url="http://rss.news.yahoo.com/rss/oped"/>' +
  48. '<Rss label="Obituaries" url="http://rss.news.yahoo.com/rss/obits"/>' +
  49. '<Rss label="Most Emailed" url="http://rss.news.yahoo.com/rss/mostemailed"/>' +
  50. '<Rss label="Most Viewed" url="http://rss.news.yahoo.com/rss/mostviewed"/>' +
  51. '<Rss label="Most Recommended" url="http://rss.news.yahoo.com/rss/highestrated"/>' +
  52. '<Rss label="Custom" url=""/>' +
  53. '</TextRss>';
  54.  
  55. self._populateRssLinks();
  56. self._listenInputChange();
  57. },
  58.  
  59. /**
  60. When user changes a URL link for the feed, update the msdb
  61. @method _listenInputChange
  62. @return none
  63. **/
  64. _listenInputChange: function () {
  65. var self = this;
  66.  
  67. // Text input change
  68. var onChange = _.debounce(function (e) {
  69. var text = $(e.target).val();
  70. BB.comBroker.fire(BB.EVENTS.RSSLINK_CHANGED,self,self,text);
  71. }, 150);
  72. self.m_inputChangeHandler = $(Elements.RSS_LINK).on("input", onChange);
  73.  
  74. // drop selection box
  75. $(Elements.RSS_SOURCE).on('change', function (e) {
  76. var url = $("option:selected", e.target).val();
  77. if (url==''){
  78. $(Elements.RSS_LINK).val('');
  79. $(Elements.RSS_LINK).fadeIn('fast');
  80. } else {
  81. $(Elements.RSS_LINK).fadeOut('fast');
  82. }
  83. onChange(e);
  84. });
  85. },
  86.  
  87. /**
  88. Build list of available RSS links from embedded XML
  89. @method _populateRssLinks
  90. **/
  91. _populateRssLinks: function(){
  92. var self = this;
  93. var snippet = '';
  94. self.m_rssLinks = $($.parseXML(self.m_rssLinks)).find('Rss');
  95. $.each(self.m_rssLinks,function(k,v){
  96. snippet = snippet + '\n<option value="' + $(v).attr('url') + '">' + $(v).attr('label') + '</option>';
  97. });
  98. self.$el.append(snippet);
  99. },
  100.  
  101. /**
  102. Insert selected RSS URL and load appropriate select UI selection
  103. @method setRssLink
  104. @param {String} i_url
  105. **/
  106. setRssLink: function(i_url){
  107. var self = this;
  108. $(Elements.RSS_LINK).val(i_url);
  109. var found = 0;
  110. self.$el.children().each(function(k,v){
  111. if ( $(v).val() == i_url){
  112. $(v).prop('selected','selected');
  113. found = 1;
  114. return false;
  115. }
  116. });
  117. if (found){
  118. $(Elements.RSS_LINK).fadeOut('fast');
  119. } else {
  120. $("option:last",self.$el).prop("selected","selected");
  121. $(Elements.RSS_LINK).fadeIn('fast');
  122. }
  123. }
  124. });
  125.  
  126. return RSSLinks;
  127. });