APIs

Show:
  1. /**
  2. * BlockMRSS block resides inside a scene or timeline
  3. * @class BlockMRSS
  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 BlockMRSS = Block.extend({
  13.  
  14. /**
  15. Constructor
  16. @method initialize
  17. **/
  18. constructor: function (options) {
  19. var self = this;
  20. self.m_blockType = 3340;
  21. _.extend(options, {blockType: self.m_blockType})
  22. Block.prototype.constructor.call(this, options);
  23.  
  24. self.m_mrssLinkSelector = self.m_blockProperty.getMRssLinkSelector();
  25. self._initSubPanel(Elements.BLOCK_MRSS_COMMON_PROPERTIES);
  26. self._listenMRSSLinkChange();
  27. self._listenAspectRatioChange();
  28.  
  29. },
  30.  
  31. /**
  32. Listen to RSS aspect ratio change
  33. @method _listenAspectRatioChange
  34. **/
  35. _listenAspectRatioChange: function () {
  36. var self = this;
  37. self.m_aspectChange = function (e) {
  38. if (!self.m_selected)
  39. return;
  40. var domPlayerData = self._getBlockPlayerData();
  41. var xSnippet = $(domPlayerData).find('Rss');
  42. var v = $(e.target).prop('checked') == true ? 1 : 0;
  43. $(xSnippet).attr('maintainAspectRatio', v);
  44. self._setBlockPlayerData(domPlayerData);
  45. };
  46. $(Elements.MRSS_ASPECT_RATIO).on('change', self.m_aspectChange);
  47. },
  48.  
  49. /**
  50. Listen to RSS link changes
  51. @method _listenRSSLinkChange
  52. **/
  53. _listenMRSSLinkChange: function () {
  54. var self = this
  55. BB.comBroker.listenWithNamespace(BB.EVENTS.RSSLINK_CHANGED, self, function (e) {
  56. if (!self.m_selected || e.caller !== self.m_mrssLinkSelector)
  57. return;
  58. var domPlayerData = self._getBlockPlayerData();
  59. var xSnippet = $(domPlayerData).find('Rss');
  60. $(xSnippet).attr('url', e.edata);
  61. self._setBlockPlayerData(domPlayerData);
  62. });
  63. },
  64.  
  65. /**
  66. Load up property values in the RSS panel
  67. @method _populate
  68. @return none
  69. **/
  70. _populate: function () {
  71. var self = this;
  72. var domPlayerData = self._getBlockPlayerData();
  73. var xSnippet = $(domPlayerData).find('Rss');
  74. var url = xSnippet.attr('url');
  75. var maintainAspectRatio = xSnippet.attr('maintainAspectRatio');
  76. self.m_mrssLinkSelector.setMRssLink(url);
  77. $(Elements.MRSS_ASPECT_RATIO).prop('checked', maintainAspectRatio == "1" ? true : false);
  78. },
  79.  
  80. /**
  81. Populate the common block properties panel, called from base class if exists
  82. @method _loadBlockSpecificProps
  83. @return none
  84. **/
  85. _loadBlockSpecificProps: function () {
  86. var self = this;
  87. self._populate();
  88. this._viewSubPanel(Elements.BLOCK_MRSS_COMMON_PROPERTIES);
  89. },
  90.  
  91. /**
  92. Delete this block
  93. @method deleteBlock
  94. @params {Boolean} i_memoryOnly if true only remove from existance but not from msdb
  95. **/
  96. deleteBlock: function (i_memoryOnly) {
  97. var self = this;
  98. BB.comBroker.stopListenWithNamespace(BB.EVENTS.RSSLINK_CHANGED, self);
  99. BB.comBroker.stopListenWithNamespace(BB.EVENTS.FONT_SELECTION_CHANGED, self);
  100. $(Elements.MRSS_ASPECT_RATIO).off('change', self.m_aspectChange);
  101. self._deleteBlock(i_memoryOnly);
  102. }
  103. });
  104.  
  105. return BlockMRSS;
  106. });