- /**
- * BlockTwitter block resides inside a scene or timeline
- * @class BlockTwitter
- * @extends Block
- * @constructor
- * @param {string} i_placement location where objects resides which can be scene or timeline
- * @param {string} i_campaign_timeline_chanel_player_id required and set as block id when block is inserted onto timeline_channel
- * @return {Object} Block instance
- */
- define(['jquery', 'backbone', 'Block'], function ($, Backbone, Block) {
-
- var BlockTwitter = Block.extend({
-
- /**
- Constructor
- @method initialize
- **/
- constructor: function (options) {
- var self = this;
- self.m_blockType = 4500;
- _.extend(options, {blockType: self.m_blockType})
- Block.prototype.constructor.call(this, options);
- self._initSubPanel(Elements.BLOCK_TWITTER_COMMON_PROPERTIES);
- self._listenSceneListChange();
- self._listenScreenNameChange();
- self._listenSceneDropdownChange();
- self._listenIntervalChange();
- },
-
- /**
- Populate the LI with all available scenes from msdb
- @method _populateSceneDropdowb
- **/
- _populateSceneDropdowb: function () {
- var self = this;
- $(Elements.TWITTER_DROPDOWN).empty();
- var scenenames = BB.Pepper.getSceneNames();
- if (_.size(scenenames) == 0)
- return;
- _.forEach(scenenames, function (i_name, i_id) {
- // var pseudoID = pepper.getPseudoIdFromSceneId(i_id);
- var snippet = '<li><a name="resource" data-localize="profileImage" role="menuitem" tabindex="-1" href="#" data-scene_id="' + i_id + '">' + i_name.label + '</a></li>';
- $(Elements.TWITTER_DROPDOWN).append($(snippet));
- });
- },
-
- /**
- Populate the UI of the scene label selector
- @method _populateSceneLabel
- @param {Number} i_sceneName
- **/
- _populateSceneLabel: function(i_sceneName){
- var self = this;
- $(Elements.TWITTER_SCENE_LIST).text(i_sceneName);
- },
-
- /**
- Populate the UI of the scene interval selector
- @method _populateInterval
- @param {Number} i_interval
- **/
- _populateInterval: function(i_interval){
- var self = this;
- var interval = Number(i_interval);
- $('.spinner', Elements.BLOCK_TWITTER_COMMON_PROPERTIES).spinner('value', interval);
- },
-
- /**
- Load up property values in the common panel
- @method _populate
- @return none
- **/
- _populate: function () {
- var self = this;
- var domPlayerData = self._getBlockPlayerData();
- var xSnippet = $(domPlayerData).find('Twitter');
- var screenName = $(xSnippet).attr('screenName');
- var xSnippetPlayer = $(xSnippet).find('Player');
- var sceneID = $(xSnippetPlayer).attr('hDataSrc');
- var interval = $(xSnippet).attr('itemInterval');
-
- if (_.isEmpty(sceneID)){
- self._populateSceneLabel($(Elements.BOOTBOX_SELECT_SCENE).text());
- } else {
- var scenenames = BB.Pepper.getSceneNames();
- _.forEach(scenenames, function (i_name, i_id) {
- if (i_id == sceneID)
- self._populateSceneLabel(i_name.label);
- });
- }
- $(Elements.TWITTER_SCREEN_INPUT).val(screenName);
- self._populateSceneDropdowb();
- self._populateSceneLabel();
- self._populateInterval(interval);
- },
-
- /**
- Listen to changes in the scene interval control
- @method _listenIntervalChange
- **/
- _listenIntervalChange: function(){
- var self = this;
- $('.spinner', Elements.BLOCK_TWITTER_COMMON_PROPERTIES).spinner({value: 4, min: 1, max: 9999, step: 1});
- $(Elements.TWITTER_INTERVAL_INPUT).prop('disabled', true).css({backgroundColor: 'transparent'});
- self.m_intervalInput = _.debounce(function (e) {
- if (!self.m_selected)
- return;
- if ($(e.target).prop("tagName") == 'INPUT')
- return;
- var interval = $(Elements.TWITTER_INTERVAL_INPUT).val();
- var domPlayerData = self._getBlockPlayerData();
- var xSnippet = $(domPlayerData).find('Twitter');
- $(xSnippet).attr('itemInterval', interval);
- self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
- }, 250, false);
- //$(Elements.TWITTER_SCREEN_INPUT).on("input", self.m_screenNameChange);
- $('.spinner', Elements.BLOCK_TWITTER_COMMON_PROPERTIES).on('mouseup', self.m_intervalInput);
- },
-
- /**
- Wire changing of campaign name through scene properties
- @method _listenScreenNameChange
- @return none
- **/
- _listenScreenNameChange: function () {
- var self = this;
- self.m_screenNameChange = _.debounce(function (e) {
- if (!self.m_selected)
- return;
- var screenName = $(e.target).val();
- var domPlayerData = self._getBlockPlayerData();
- var xSnippet = $(domPlayerData).find('Twitter');
- $(xSnippet).attr('screenName', screenName);
- self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
- }, 333, false);
- $(Elements.TWITTER_SCREEN_INPUT).on("input", self.m_screenNameChange);
- },
-
- /**
- Listen to the global scene list changes event so we can update the list of available scenes
- @method _listenSceneListChange
- **/
- _listenSceneListChange: function(){
- var self = this;
- BB.comBroker.listenWithNamespace(BB.EVENTS.SCENE_LIST_UPDATED,self, function(e){
- if (!self.m_selected)
- return;
- self._populateSceneDropdowb();
- })
- },
-
- /**
- Listen to playlist changes dropdown
- @method _listenSceneDropdownChange
- **/
- _listenSceneDropdownChange: function () {
- var self = this;
- self.m_bindScene = function (e) {
- if (!self.m_selected)
- return;
- var listType = $(e.target).attr('name');
- if (_.isUndefined(listType))
- return;
- var sceneName = $(e.target).text();
- var sceneID = $(e.target).attr('data-scene_id');
- self._populateSceneLabel(sceneName);
- var domPlayerData = self._getBlockPlayerData();
- var xSnippet = $(domPlayerData).find('Twitter');
- var xSnippetPlayer = $(xSnippet).find('Player');
- $(xSnippetPlayer).attr('hDataSrc', sceneID);
- self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
-
- };
- $(Elements.TWITTER_DROPDOWN).on('click', self.m_bindScene);
- },
-
- /**
- Populate the common block properties panel, called from base class if exists
- @method _loadBlockSpecificProps
- @return none
- **/
- _loadBlockSpecificProps: function () {
- var self = this;
- self._populate();
- this._viewSubPanel(Elements.BLOCK_TWITTER_COMMON_PROPERTIES);
- },
-
- /**
- Delete this block
- @method deleteBlock
- @params {Boolean} i_memoryOnly if true only remove from existance but not from msdb
- **/
- deleteBlock: function (i_memoryOnly) {
- var self = this;
- $('.spinner', Elements.BLOCK_TWITTER_COMMON_PROPERTIES).off('mouseup', self.m_intervalInput);
- $(Elements.TWITTER_DROPDOWN).off('click', self.m_bindScene);
- $(Elements.TWITTER_SCREEN_INPUT).off("input", self.m_screenNameChange);
- BB.comBroker.stopListenWithNamespace(BB.EVENTS.SCENE_LIST_UPDATED,self);
- self._deleteBlock(i_memoryOnly);
- }
- });
-
- return BlockTwitter;
- });
-