APIs

Show:
  1. /**
  2. * BlockVideo block resides inside a scene or timeline
  3. * @class BlockVideo
  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 BlockVideo = Block.extend({
  13.  
  14. /**
  15. Constructor
  16. @method initialize
  17. **/
  18. constructor: function (options) {
  19. var self = this;
  20. self.m_blockType = 3100;
  21. _.extend(options, {blockType: self.m_blockType})
  22. Block.prototype.constructor.call(this, options);
  23. self._initSubPanel(Elements.BLOCK_VIDEO_COMMON_PROPERTIES);
  24. self._listenAspectChange();
  25. self._listenRewind();
  26. self._listenVolumeChange();
  27. self._initResourcesData();
  28. },
  29.  
  30. /**
  31. Listen to changes in volume control
  32. @method _listenVolumeChange
  33. **/
  34. _listenVolumeChange: function(){
  35. var self = this;
  36. self.m_inputVolumeHandler = function (e) {
  37. if (!self.m_selected)
  38. return;
  39. var volume = e.edata;
  40. var domPlayerData = self._getBlockPlayerData();
  41. var xSnippet = $(domPlayerData).find('Video');
  42. $(xSnippet).attr('volume', volume);
  43. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  44. };
  45. BB.comBroker.listen(BB.EVENTS.VIDEO_VOLUME_CHANGED, self.m_inputVolumeHandler);
  46. },
  47.  
  48. /**
  49. Set the instance resource data from msdb which includes resource_id (handle of a resource)
  50. as well as the description of the resource and icon.
  51. @method _initResourcesData
  52. **/
  53. _initResourcesData: function () {
  54. var self = this;
  55. var domPlayerData = self._getBlockPlayerData();
  56. var xSnippet = $(domPlayerData).find('Resource');
  57. self.m_resourceID = $(xSnippet).attr('hResource');
  58. var resRec = self.m_blockName = pepper.getResourceRecord(self.m_resourceID);
  59. if (_.isNull(resRec)){
  60. self._selfDestruct();
  61. return;
  62. }
  63. self.m_blockName = resRec['resource_name'];
  64. self.m_blockDescription = pepper.getResourceName(self.m_resourceID);
  65. var fileFormat = pepper.getResourceType(self.m_resourceID);
  66. self.m_blockFontAwesome = BB.PepperHelper.getFontAwesome(fileFormat);
  67. },
  68.  
  69. /**
  70. Populate the common block properties panel, called from base class if exists
  71. @method _loadBlockSpecificProps
  72. @return none
  73. **/
  74. _loadBlockSpecificProps: function () {
  75. var self = this;
  76. self._populate();
  77. this._viewSubPanel(Elements.BLOCK_VIDEO_COMMON_PROPERTIES);
  78. },
  79.  
  80. /**
  81. Update the video's properties title
  82. @method override _updateTitle
  83. @return none
  84. **/
  85. _updateTitle: function () {
  86. var self = this;
  87. $(Elements.SELECTED_CHANNEL_RESOURCE_NAME).text(self.m_blockDescription);
  88. },
  89.  
  90. /**
  91. When user changes aspect ratio checkbox
  92. @method _listenAspectChange
  93. @return none
  94. **/
  95. _listenAspectChange: function () {
  96. var self = this;
  97. self.m_inputAspectHandler = function (e) {
  98. if (!self.m_selected)
  99. return;
  100. var v = $(e.target).prop('checked') == true ? 1 : 0;
  101. var domPlayerData = self._getBlockPlayerData();
  102. var xSnippet = $(domPlayerData).find('AspectRatio');
  103. $(xSnippet).attr('maintain', v);
  104. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  105. };
  106. $(Elements.VIDEO_ASPECT_RATIO).on('change', self.m_inputAspectHandler);
  107. },
  108.  
  109. /**
  110. When user changes rewind checkbox
  111. @method _listenRewind
  112. @return none
  113. **/
  114. _listenRewind: function () {
  115. var self = this;
  116. self.m_inputRewind = function (e) {
  117. if (!self.m_selected)
  118. return;
  119. var v = $(e.target).prop('checked') == true ? 1 : 0;
  120. var domPlayerData = self._getBlockPlayerData();
  121. var xSnippet = $(domPlayerData).find('Video');
  122. $(xSnippet).attr('autoRewind', v);
  123. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  124. };
  125. $(Elements.VIDEO_AUTO_REWIND).on('change', self.m_inputRewind);
  126. },
  127.  
  128. /**
  129. Load up property values in the common panel
  130. @method _populate
  131. @return none
  132. **/
  133. _populate: function () {
  134. var self = this;
  135. var domPlayerData = self._getBlockPlayerData();
  136. var xSnippet = $(domPlayerData).find('AspectRatio');
  137. var xSnippetVideo = $(domPlayerData).find('Video');
  138. var aspectRatio = xSnippet.attr('maintain') == '1' ? true : false;
  139. var autoRewind = xSnippetVideo.attr('autoRewind') == '1' ? true : false;
  140. var volume = parseFloat(xSnippetVideo.attr('volume')) * 100;
  141. $(Elements.VIDEO_AUTO_REWIND).prop('checked', autoRewind);
  142. $(Elements.VIDEO_ASPECT_RATIO).prop('checked', aspectRatio);
  143. $(Elements.VIDEO_VOLUME_WRAP_SLIDER).val(volume);
  144. },
  145.  
  146. /**
  147. Get the resource id of the embedded resource
  148. @method getResourceID
  149. @return {Number} resource_id;
  150. **/
  151. getResourceID: function () {
  152. var self = this;
  153. return self.m_resourceID;
  154. },
  155.  
  156. /**
  157. Delete this block
  158. @method deleteBlock
  159. @params {Boolean} i_memoryOnly if true only remove from existance but not from msdb
  160. **/
  161. deleteBlock: function (i_memoryOnly) {
  162. var self = this;
  163. $(Elements.VIDEO_AUTO_REWIND).off('change', self.m_inputRewind);
  164. $(Elements.VIDEO_ASPECT_RATIO).off('change', self.m_inputAspectHandler);
  165. BB.comBroker.stopListen(BB.EVENTS.VIDEO_VOLUME_CHANGED, self.m_inputVolumeHandler);
  166. self._deleteBlock(i_memoryOnly);
  167. }
  168. });
  169.  
  170. return BlockVideo;
  171. });