APIs

Show:
  1. /**
  2. * BlockRSS block resides inside a scene or timeline
  3. * @class BlockRSS
  4. * @extends Block
  5. * @constructor
  6. * @param {string} i_placement location where objects resides which can be scene or timeline
  7. * @param {string} i_campaign_timeline_chanel_player_id required and set as block id when block is inserted onto timeline_channel
  8. * @return {Object} Block instance
  9. */
  10. define(['jquery', 'backbone', 'Block'], function ($, Backbone, Block) {
  11.  
  12. var BlockRSS = Block.extend({
  13.  
  14. /**
  15. Constructor
  16. @method initialize
  17. **/
  18. constructor: function (options) {
  19. var self = this;
  20. self.m_blockType = 3345;
  21. _.extend(options, {blockType: self.m_blockType})
  22. Block.prototype.constructor.call(this, options);
  23.  
  24. self.m_rssFontSelector = self.m_blockProperty.getRssFontSelector();
  25. self.m_rssLinkSelector = self.m_blockProperty.getRssLinkSelector();
  26. self._initSubPanel(Elements.BLOCK_RSS_COMMON_PROPERTIES);
  27.  
  28. self._listenRSSLinkChange();
  29. self._listenFontSelectionChange();
  30. self._listenMinRefreshTime();
  31. self._listenScrollDirection();
  32. self._listenScrollSpeed();
  33. },
  34.  
  35. /**
  36. Listen to changes in font UI selection from Block property and take action on changes
  37. @method _listenFontSelectionChange
  38. **/
  39. _listenFontSelectionChange: function () {
  40. var self = this;
  41. BB.comBroker.listenWithNamespace(BB.EVENTS.FONT_SELECTION_CHANGED, self, function (e) {
  42. if (!self.m_selected || e.caller !== self.m_rssFontSelector)
  43. return;
  44. var config = e.edata;
  45. var domPlayerData = self._getBlockPlayerData();
  46. var xSnippet = $(domPlayerData).find('Rss');
  47. var xSnippetTitle = $(xSnippet).find('Font').eq(0);
  48. var xSnippetDescription = $(xSnippet).find('Font').eq(1);
  49.  
  50. $.each([xSnippetTitle, xSnippetDescription],function(k,xmlData){
  51. config.bold == true ? xmlData.attr('fontWeight', 'bold') : xmlData.attr('fontWeight', 'normal');
  52. config.italic == true ? xmlData.attr('fontStyle', 'italic') : xmlData.attr('fontStyle', 'normal');
  53. config.underline == true ? xmlData.attr('textDecoration', 'underline') : xmlData.attr('textDecoration', 'none');
  54. xmlData.attr('fontColor', BB.lib.colorToDecimal(config.color));
  55. xmlData.attr('fontSize', config.size);
  56. xmlData.attr('fontFamily', config.font);
  57. xmlData.attr('textAlign', config.alignment);
  58.  
  59. });
  60. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  61. });
  62. },
  63.  
  64. /**
  65. Listen to RSS link changes
  66. @method _listenRSSLinkChange
  67. **/
  68. _listenRSSLinkChange: function () {
  69. var self = this
  70. BB.comBroker.listenWithNamespace(BB.EVENTS.RSSLINK_CHANGED, self, function (e) {
  71. if (!self.m_selected || e.caller !== self.m_rssLinkSelector)
  72. return;
  73. var domPlayerData = self._getBlockPlayerData();
  74. var xSnippet = $(domPlayerData).find('Rss');
  75. $(xSnippet).attr('url', e.edata);
  76. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  77. // log(xSnippet[0].outerHTML);
  78. });
  79. },
  80.  
  81. /**
  82. Listen to RSS Poll time value changes
  83. @method _listenMinRefreshTime
  84. **/
  85. _listenMinRefreshTime: function () {
  86. var self = this;
  87. self.m_rssPollSpinner = function (e) {
  88. if (!self.m_selected)
  89. return;
  90. var minRefreshTime = $('input', e.target).val();
  91. if (_.isEmpty(minRefreshTime))
  92. minRefreshTime = 30;
  93. var domPlayerData = self._getBlockPlayerData();
  94. var xSnippet = $(domPlayerData).find('Rss');
  95. $(xSnippet).attr('minRefreshTime', minRefreshTime);
  96. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  97. }
  98. $(Elements.RSS_POLL_SPINNER).on('change', self.m_rssPollSpinner);
  99. },
  100.  
  101. /**
  102. Listen to RSS scroll direction changes
  103. @method _listenMinRefreshTime
  104. **/
  105. _listenScrollDirection: function () {
  106. var self = this;
  107. self.m_rssModeSelect = function (e) {
  108. if (!self.m_selected)
  109. return;
  110. var modeSelect = $(e.target).val();
  111. modeSelect = modeSelect == 'Vertical mode' ? 1 : 0;
  112. var domPlayerData = self._getBlockPlayerData();
  113. var xSnippet = $(domPlayerData).find('Rss');
  114. $(xSnippet).attr('vertical', modeSelect);
  115. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  116. };
  117. $(Elements.RSS_MODE_SELECT).on('change', self.m_rssModeSelect);
  118. },
  119.  
  120. /**
  121. Listen to RSS scroll speed changes
  122. @method _listenMinRefreshTime
  123. **/
  124. _listenScrollSpeed: function () {
  125. var self = this;
  126. self.m_rssScrollSpeed = function (e) {
  127. if (!self.m_selected)
  128. return;
  129. var scrollSpeed = $(e.target).val();
  130. if (scrollSpeed == 'Slow')
  131. scrollSpeed = 20;
  132. if (scrollSpeed == 'Medium')
  133. scrollSpeed = 50;
  134. if (scrollSpeed == 'Fast')
  135. scrollSpeed = 100;
  136. var domPlayerData = self._getBlockPlayerData();
  137. var xSnippet = $(domPlayerData).find('Rss');
  138. $(xSnippet).attr('speed', scrollSpeed);
  139. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  140. };
  141. $(Elements.RSS_SCROLL_SPEED).on('change', self.m_rssScrollSpeed);
  142. },
  143.  
  144. /**
  145. Load up property values in the RSS panel
  146. @method _populate
  147. @return none
  148. **/
  149. _populate: function () {
  150. var self = this;
  151.  
  152. switch (self.m_placement) {
  153.  
  154. case BB.CONSTS.PLACEMENT_CHANNEL:
  155. {
  156. var domPlayerData = self._getBlockPlayerData();
  157. break;
  158. }
  159.  
  160. case BB.CONSTS.PLACEMENT_SCENE:
  161. {
  162. domPlayerData = pepper.getScenePlayerdataBlock(self.m_sceneID, self.m_block_id);
  163. break;
  164. }
  165. }
  166.  
  167. var xSnippet = $(domPlayerData).find('Rss');
  168. var xSnippetTitle = $(xSnippet).find('Font').eq(0);
  169. var url = xSnippet.attr('url');
  170. self.m_rssLinkSelector.setRssLink(url);
  171.  
  172. var minRefreshTime = xSnippet.attr('minRefreshTime');
  173. $(Elements.RSS_MIN_REFRESH_TIME).closest('div').spinner('value', parseInt(minRefreshTime));
  174.  
  175. var scrollDirection = parseInt(xSnippet.attr('vertical'));
  176. $(Elements.RSS_MODE_SELECT + ' option').eq(scrollDirection).prop('selected', 'selected');
  177.  
  178. var scrollSpeed = parseInt(xSnippet.attr('speed'));
  179. if (scrollSpeed == '20')
  180. scrollSpeed = 0;
  181. if (scrollSpeed == '50')
  182. scrollSpeed = 1;
  183. if (scrollSpeed == '100')
  184. scrollSpeed = 2;
  185. $(Elements.RSS_SCROLL_SPEED + ' option').eq(scrollSpeed).prop('selected', 'selected');
  186.  
  187. self.m_rssFontSelector.setConfig({
  188. bold: xSnippetTitle.attr('fontWeight') == 'bold' ? true : false,
  189. italic: xSnippetTitle.attr('fontStyle') == 'italic' ? true : false,
  190. underline: xSnippetTitle.attr('textDecoration') == 'underline' ? true : false,
  191. alignment: xSnippetTitle.attr('textAlign'),
  192. font: xSnippetTitle.attr('fontFamily'),
  193. color: BB.lib.colorToHex(BB.lib.decimalToHex(xSnippetTitle.attr('fontColor'))),
  194. size: xSnippetTitle.attr('fontSize')
  195. });
  196. },
  197.  
  198. /**
  199. Populate the common block properties panel, called from base class if exists
  200. @method _loadBlockSpecificProps
  201. @return none
  202. **/
  203. _loadBlockSpecificProps: function () {
  204. var self = this;
  205. self._populate();
  206. this._viewSubPanel(Elements.BLOCK_RSS_COMMON_PROPERTIES);
  207. },
  208.  
  209. /**
  210. Delete this block
  211. @method deleteBlock
  212. @params {Boolean} i_memoryOnly if true only remove from existance but not from msdb
  213. **/
  214. deleteBlock: function (i_memoryOnly) {
  215. var self = this;
  216. BB.comBroker.stopListenWithNamespace(BB.EVENTS.RSSLINK_CHANGED, self);
  217. BB.comBroker.stopListenWithNamespace(BB.EVENTS.FONT_SELECTION_CHANGED, self);
  218. $(Elements.RSS_POLL_SPINNER).off('change', self.m_rssPollSpinner);
  219. $(Elements.RSS_MODE_SELECT).off('change', self.m_rssModeSelect);
  220. $(Elements.RSS_SCROLL_SPEED).off('change', self.m_rssScrollSpeed);
  221. self._deleteBlock(i_memoryOnly);
  222. }
  223. });
  224.  
  225. return BlockRSS;
  226. });