APIs

Show:
/**
 * BlockMRSS block resides inside a scene or timeline
 * @class BlockMRSS
 * @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 BlockMRSS = Block.extend({

        /**
         Constructor
         @method initialize
         **/
        constructor: function (options) {
            var self = this;
            self.m_blockType = 3340;
            _.extend(options, {blockType: self.m_blockType})
            Block.prototype.constructor.call(this, options);

            self.m_mrssLinkSelector = self.m_blockProperty.getMRssLinkSelector();
            self._initSubPanel(Elements.BLOCK_MRSS_COMMON_PROPERTIES);
            self._listenMRSSLinkChange();
            self._listenAspectRatioChange();

        },

        /**
         Listen to RSS aspect ratio change
         @method _listenAspectRatioChange
         **/
        _listenAspectRatioChange: function () {
            var self = this;
            self.m_aspectChange = function (e) {
                if (!self.m_selected)
                    return;
                var domPlayerData = self._getBlockPlayerData();
                var xSnippet = $(domPlayerData).find('Rss');
                var v = $(e.target).prop('checked') == true ? 1 : 0;
                $(xSnippet).attr('maintainAspectRatio', v);
                self._setBlockPlayerData(domPlayerData);
            };
            $(Elements.MRSS_ASPECT_RATIO).on('change', self.m_aspectChange);
        },

        /**
         Listen to RSS link changes
         @method _listenRSSLinkChange
         **/
        _listenMRSSLinkChange: function () {
            var self = this
            BB.comBroker.listenWithNamespace(BB.EVENTS.RSSLINK_CHANGED, self, function (e) {
                if (!self.m_selected || e.caller !== self.m_mrssLinkSelector)
                    return;
                var domPlayerData = self._getBlockPlayerData();
                var xSnippet = $(domPlayerData).find('Rss');
                $(xSnippet).attr('url', e.edata);
                self._setBlockPlayerData(domPlayerData);
            });
        },

        /**
         Load up property values in the RSS panel
         @method _populate
         @return none
         **/
        _populate: function () {
            var self = this;
            var domPlayerData = self._getBlockPlayerData();
            var xSnippet = $(domPlayerData).find('Rss');
            var url = xSnippet.attr('url');
            var maintainAspectRatio = xSnippet.attr('maintainAspectRatio');
            self.m_mrssLinkSelector.setMRssLink(url);
            $(Elements.MRSS_ASPECT_RATIO).prop('checked', maintainAspectRatio == "1" ? true : false);
        },

        /**
         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_MRSS_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;
            BB.comBroker.stopListenWithNamespace(BB.EVENTS.RSSLINK_CHANGED, self);
            BB.comBroker.stopListenWithNamespace(BB.EVENTS.FONT_SELECTION_CHANGED, self);
            $(Elements.MRSS_ASPECT_RATIO).off('change', self.m_aspectChange);
            self._deleteBlock(i_memoryOnly);
        }
    });

    return BlockMRSS;
});