APIs

Show:
  1. /**
  2. Select new screen layout (template) for a campaign > timeline
  3. @class ScreenLayoutSelectorView
  4. @constructor
  5. @return {Object} instantiated ScreenLayoutSelectorView
  6. **/
  7. define(['jquery', 'backbone', 'StackView', 'ScreenTemplateFactory'], function ($, Backbone, StackView, ScreenTemplateFactory) {
  8.  
  9. BB.SERVICES.SCREEN_LAYOUT_SELECTOR_VIEW = 'ScreenLayoutSelectorView';
  10.  
  11. var ScreenLayoutSelectorView = BB.View.extend({
  12.  
  13. /**
  14. Constructor
  15. @method initialize
  16. **/
  17. initialize: function () {
  18. var self = this;
  19. self.m_screens = [];
  20. self.m_direction = 'left';
  21. self._listenOutsideClick();
  22.  
  23. self.listenTo(self.options.stackView, BB.EVENTS.SELECTED_STACK_VIEW, function (e) {
  24. if (e == self) {
  25. self._render();
  26. }
  27. });
  28.  
  29. $(this.el).find(Elements.PREVIOUS).on('click', function (e) {
  30. if (self.options.from == null)
  31. return;
  32. if (self.m_direction == 'left'){
  33. self.options.stackView.slideToPage(self.options.from, 'left');
  34. } else {
  35. self.options.stackView.slideToPage(self.options.to, 'right');
  36. }
  37.  
  38. return false;
  39. });
  40. },
  41.  
  42. /**
  43. Listen to clicks outside the layout and shoot them down to assist
  44. the Wizard in preventing false positive
  45. @method _listenOutsideClick
  46. **/
  47. _listenOutsideClick: function(){
  48. var self = this;
  49. $(Elements.SCREEN_LAYOUT_LIST).on('click',function(e){
  50. if (e.target.tagName != 'rect'){
  51. e.preventDefault();
  52. e.stopImmediatePropagation()
  53. return false;
  54. }
  55. });
  56. },
  57.  
  58. /**
  59. Build the list of templates a user can select from.
  60. @method render
  61. @return none
  62. **/
  63. _render: function () {
  64. var self = this;
  65.  
  66. BB.comBroker.getService(BB.SERVICES.PROPERTIES_VIEW).resetPropertiesView();
  67.  
  68. $(Elements.SCREEN_LAYOUT_LIST).empty();
  69. var resolution = BB.comBroker.getService(BB.SERVICES.RESOLUTION_SELECTOR_VIEW).model.get(BB.CONSTS.RESOLUTION);
  70. var orientation = BB.comBroker.getService(BB.SERVICES.ORIENTATION_SELECTOR_VIEW).model.get(BB.CONSTS.ORIENTATION);
  71.  
  72. BB.comBroker.listenOnce(BB.EVENTS.ON_VIEWER_SELECTED, function () {
  73. setTimeout(function () {
  74. self.options.stackView.slideToPage(self.options.to, 'right');
  75. }, 700)
  76. });
  77.  
  78. $(Elements.SCREEN_LAYOUT_LIST).empty();
  79.  
  80. require(['ScreenTemplate'], function (ScreenTemplate) {
  81. for (var screenType in ScreenTemplate[orientation][resolution]) {
  82.  
  83. var screenTemplateData = {
  84. orientation: orientation,
  85. resolution: resolution,
  86. screenType: screenType,
  87. screenProps: ScreenTemplate[orientation][resolution][screenType],
  88. scale: 14
  89. };
  90.  
  91. var screenTemplate = new ScreenTemplateFactory({
  92. i_screenTemplateData: screenTemplateData,
  93. i_selfDestruct: true,
  94. i_owner: self
  95. });
  96. var snippet = screenTemplate.create();
  97. $(Elements.SCREEN_LAYOUT_LIST).append($(snippet));
  98. screenTemplate.selectableFrame();
  99. self.m_screens.push(screenTemplate);
  100. }
  101. });
  102. },
  103.  
  104. /**
  105. Slide back to specified direction to / from
  106. @method slideBackDirection
  107. @param {String} i_direction
  108. **/
  109. slideBackDirection: function(i_direction){
  110. var self = this;
  111. self.m_direction = i_direction;
  112. }
  113. });
  114.  
  115. return ScreenLayoutSelectorView;
  116.  
  117. });
  118.  
  119.