APIs

Show:
  1. /**
  2. * BlockFasterQ block resides inside a scene or timeline
  3. * @class BlockFasterQ
  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 BlockFasterQ = Block.extend({
  13.  
  14. /**
  15. Constructor
  16. @method initialize
  17. **/
  18. constructor: function (options) {
  19. var self = this;
  20. self.m_blockType = 6100;
  21. _.extend(options, {blockType: self.m_blockType});
  22. Block.prototype.constructor.call(this, options);
  23. self._initSubPanel(Elements.BLOCK_FASTERQ_COMMON_PROPERTIES);
  24. self._listenInputChanges();
  25. self._listenBackgroundColorChange();
  26. },
  27.  
  28. /**
  29. Listen to changes in the line id selection
  30. @method _listenInputChanges
  31. **/
  32. _listenInputChanges: function () {
  33. var self = this;
  34. self.m_inputNameChangeHandler = _.debounce(function (e) {
  35. if (!self.m_selected)
  36. return;
  37. var $elem = $(Elements.CLASS_FASTERQ_LINE_NUMBER);
  38. var domPlayerData = self._getBlockPlayerData();
  39. var xWebKit = $(domPlayerData).find('Webkit');
  40. var xWebKitData = $(xWebKit).find('Data');
  41. $(xWebKitData).attr('lineID1',BB.lib.cleanChar($elem.eq(0).val()));
  42. $(xWebKitData).attr('lineID2',BB.lib.cleanChar($elem.eq(1).val()));
  43. $(xWebKitData).attr('lineID3',BB.lib.cleanChar($elem.eq(2).val()));
  44. $(xWebKitData).attr('lineID4',BB.lib.cleanChar($elem.eq(3).val()));
  45. $(xWebKitData).attr('lineID5',BB.lib.cleanChar($elem.eq(4).val()));
  46. self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
  47. }, 200);
  48. $(Elements.CLASS_FASTERQ_LINE_NUMBER).on("input", self.m_inputNameChangeHandler);
  49. },
  50.  
  51. /**
  52. Load up property values in the common panel
  53. @method _populate
  54. @return none
  55. **/
  56. _populate: function () {
  57. var self = this;
  58. var domPlayerData = self._getBlockPlayerData();
  59. var xWebKit = $(domPlayerData).find('Webkit');
  60. var xWebKitData = $(xWebKit).find('Data');
  61. var $elem = $(Elements.CLASS_FASTERQ_LINE_NUMBER);
  62. $elem.eq(0).val($(xWebKitData).attr('lineID1'));
  63. $elem.eq(1).val($(xWebKitData).attr('lineID2'));
  64. $elem.eq(2).val($(xWebKitData).attr('lineID3'));
  65. $elem.eq(3).val($(xWebKitData).attr('lineID4'));
  66. $elem.eq(4).val($(xWebKitData).attr('lineID5'));
  67. var bgColor = BB.lib.colorToHex(BB.lib.decimalToHex($(xWebKitData).attr('bgColor')));
  68. $('.minicolors-swatch-color',Elements.BLOCK_FASTERQ_COMMON_PROPERTIES).css({'backgroundColor': bgColor});
  69. },
  70.  
  71. /**
  72. Listen to changes in font UI background color from common Block property and take action on changes
  73. @method _listenBackgroundColorChange
  74. **/
  75. _listenBackgroundColorChange: function () {
  76. var self = this;
  77. BB.comBroker.listenWithNamespace(BB.EVENTS.FASTERQ_BG_COLOR_CHANGE, self, function (e) {
  78. if (!self.m_selected)
  79. return;
  80. var color = e.edata;
  81. var domPlayerData = self._getBlockPlayerData();
  82. var xWebKit = $(domPlayerData).find('Webkit');
  83. $(xWebKit).find('Data').attr('bgColor', BB.lib.colorToDecimal(color));
  84. self._setBlockPlayerData(domPlayerData);
  85. });
  86. },
  87.  
  88. /**
  89. Populate the common block properties panel, called from base class if exists
  90. @method _loadBlockSpecificProps
  91. @return none
  92. **/
  93. _loadBlockSpecificProps: function () {
  94. var self = this;
  95. self._populate();
  96. this._viewSubPanel(Elements.BLOCK_FASTERQ_COMMON_PROPERTIES);
  97. },
  98.  
  99. /**
  100. Delete this block
  101. @method deleteBlock
  102. @params {Boolean} i_memoryOnly if true only remove from existance but not from msdb
  103. **/
  104. deleteBlock: function (i_memoryOnly) {
  105. var self = this;
  106. $(Elements.CLASS_FASTERQ_LINE_NUMBER).off("input", self.m_inputNameChangeHandler);
  107. BB.comBroker.stopListenWithNamespace(BB.EVENTS.FASTERQ_BG_COLOR_CHANGE, self);
  108. self._deleteBlock(i_memoryOnly);
  109. }
  110. });
  111.  
  112. return BlockFasterQ;
  113. });