APIs

Show:
/**
 Resolution selector used to select new campaign width x height
 @class ResolutionSelectorView
 @constructor
 @return {Object} instantiated ResolutionSelectorView
 **/
define(['jquery', 'backbone'], function ($, Backbone) {

    BB.SERVICES.RESOLUTION_SELECTOR_VIEW = 'ResolutionSelectorView';
    BB.CONSTS.RESOLUTION = 'RESOLUTION';

    var ResolutionSelectorView = BB.View.extend({

        /**
         Constructor
         @method initialize
         **/
        initialize: function () {
            var self = this;
            $(this.el).find(Elements.PREVIOUS).on('click', function (e) {
                if (self.options.from == null)
                    return;
                self.options.stackView.slideToPage(self.options.from, 'left');
                return false;
            });
        },

        /**
         Draw the UI for resolution selection
         @method render
         **/
        render: function () {
            var self = this;
            var screens = '';
            var i = 0;

            $(Elements.CLASS_SELECTED_RESOLUTION, self.el).off('click');
            require(['ScreenTemplate'], function () {
                self.orientationSelector = BB.comBroker.getService(BB.SERVICES.ORIENTATION_SELECTOR_VIEW);
                var orientation = self.orientationSelector.model.get(BB.CONSTS.ORIENTATION);
                $(Elements.RESOLUTION_LIST).empty();
                for (var screenResolution in ScreenTemplate[orientation]) {
                    screens += '<a href="#" data-resolution="' + screenResolution + '" class="' + BB.lib.unclass(Elements.CLASS_SELECTED_RESOLUTION) + ' list-group-item">' +
                        '<input name="resolutionOption" id="resSelector' + i + '" type="radio"/>' +
                        '<label class="screenResolutionLabel"> ' + screenResolution + ' </label></a>'
                    i++;
                }
                $(Elements.RESOLUTION_LIST).append(screens);
                $('.selectedResolution', self.el).on('click', function (e) {
                    var a = ($(e.target).is('a')) ? $(e.target) : $(e.target).closest('a');
                    $(a).find(':input').prop('checked', true);
                    self.model.set(BB.CONSTS.RESOLUTION, $(a).data('resolution'))
                    setTimeout(function () {
                        self.options.stackView.slideToPage(self.options.to, 'right');
                    }, 500);
                });
            });
        },

        /**
         Set the campaign's screen resolution
         @method setResolution
         @param {Number} i_resolution
         @return {Number} i_resolution
         **/
        setResolution: function (i_resolution) {
            return this.model.set(BB.CONSTS.RESOLUTION, i_resolution)
        },

        /**
         Get the campaign's screen resolution
         @method getResolution
         @return {Number} i_resolution
         **/
        getResolution: function () {
            return this.model.get(BB.CONSTS.RESOLUTION)
        }
    });

    return ResolutionSelectorView;

});