APIs

Show:
  1. ///<reference path="../../typings/lite/app_references.d.ts" />
  2. var __extends = (this && this.__extends) || function (d, b) {
  3. for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
  4. function __() { this.constructor = d; }
  5. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  6. };
  7. //GULP_ABSTRACT_END
  8. define(['jquery', 'SceneTemplates'], function ($, SceneTemplates) {
  9. BB.SERVICES.SCENE_CREATOR_TEMPLATE_VIEW = 'SceneCreatorTemplateView';
  10. /**
  11. Wizard which allows user to select which scene to create, such as from a template, blank, with mimetype etc
  12. @class SceneCreatorTemplateView
  13. @constructor
  14. @return {Object} instantiated SceneCreatorTemplateView
  15. **/
  16. var SceneCreatorTemplateView = (function (_super) {
  17. __extends(SceneCreatorTemplateView, _super);
  18. function SceneCreatorTemplateView(options) {
  19. this.m_options = options;
  20. _super.call(this);
  21. }
  22. SceneCreatorTemplateView.prototype.initialize = function () {
  23. var self = this;
  24. self.id = self.m_options.el;
  25. self.$el = $(this.id);
  26. self.el = this.$el.get(0);
  27. self.m_counter = 1;
  28. //self.m_count_set = 100;
  29. self.m_sceneTemplates = new SceneTemplates();
  30. self.m_counter_max = _.size(this.m_sceneTemplates.m_scenes);
  31. BB.comBroker.setService(BB.SERVICES.SCENE_CREATOR_TEMPLATE_VIEW, this);
  32. self._listenSceneImportSelection();
  33. self.listenTo(self.m_options.stackView, BB.EVENTS.SELECTED_STACK_VIEW, function (e) {
  34. if (e === self)
  35. self._render();
  36. });
  37. $(self.el).find('#prev').on('click', function () {
  38. self._goBack();
  39. return false;
  40. });
  41. };
  42. SceneCreatorTemplateView.prototype._listenSceneImportSelection = function () {
  43. var self = this;
  44. $('#sceneCreatorTemplate').on('click', function (e) {
  45. if ($(e.target).hasClass('sceneImportThumb')) {
  46. var businessID = $(e.target).data('businessid');
  47. var nativeID = $(e.target).data('native');
  48. var sceneName = $(e.target).data('scenename');
  49. var largePreview = "http://s3.signage.me/business1000/resources/scenes_snaps/" + sceneName + ".png";
  50. bootbox.dialog({
  51. title: "" + sceneName,
  52. message: "<center>\n <img src=\"" + largePreview + "\" width=\"512\" height=\"286\"/>\n </center>\n ",
  53. buttons: {
  54. success: {
  55. label: "Download it now",
  56. className: "btn-success",
  57. callback: function () {
  58. BB.Pepper.m_loaderManager.importScene(businessID, nativeID, function (i_SceneId) {
  59. BB.Pepper.injectPseudoScenePlayersIDs(i_SceneId);
  60. var navigationView = BB.comBroker.getService(BB.SERVICES.NAVIGATION_VIEW);
  61. navigationView.save(function () {
  62. BB.comBroker.fire(BB.EVENTS.SCENE_LIST_UPDATED, this, this, 'pushToTop');
  63. self._goBack();
  64. });
  65. });
  66. }
  67. }
  68. }
  69. });
  70. }
  71. });
  72. };
  73. /**
  74. Open modal dialog for scene import and render all images via imageLoaded
  75. @method _listenImportSceneModal
  76. **/
  77. SceneCreatorTemplateView.prototype._loadSceneTemplates = function () {
  78. var self = this;
  79. $(Elements.SCENE_IMPORT_MODAL).modal('now');
  80. if (self.m_counter > self.m_counter_max)
  81. return;
  82. var $progress, $status;
  83. var supportsProgress;
  84. var loadedImageCount, imageCount;
  85. $('#image-container').empty();
  86. var $demo = $('#selectSceneTypeCreateTemplate');
  87. var $container = $demo.find('#image-container');
  88. $status = $demo.find('#status');
  89. $progress = $demo.find('progress');
  90. supportsProgress = $progress[0] &&
  91. // IE does not support progress
  92. $progress[0].toString().indexOf('Unknown') === -1;
  93. function populateScenes() {
  94. // add new images
  95. var items = getItems();
  96. //console.log(items);
  97. $container.prepend($(items));
  98. // use ImagesLoaded
  99. $container.imagesLoaded()
  100. .progress(onProgress)
  101. .always(function () {
  102. onAlways();
  103. //setTimeout(function () {
  104. // if (self.m_counter > self.m_counter_max) {
  105. // $(Elements.IMPORT_SCENEL_DIALOG_CONTAINER).find('button').fadeIn();
  106. // return;
  107. // }
  108. // //populateScenes();
  109. //}, 500);
  110. })
  111. .fail(function (e) {
  112. //console.log('some fail ' + e)
  113. })
  114. .done(function () {
  115. //console.log('completed...')
  116. });
  117. // reset progress counter
  118. imageCount = $container.find('img').length;
  119. resetProgress();
  120. updateProgress(0);
  121. }
  122. // reset container
  123. $('#reset').click(function () {
  124. $container.empty();
  125. self.m_counter = 0;
  126. });
  127. function getItems() {
  128. var items = '';
  129. for (var sceneName in self.m_sceneTemplates.m_scenes) {
  130. var sceneConfig = self.m_sceneTemplates.m_scenes[sceneName];
  131. switch (self.m_selectedSceneMime) {
  132. case 'Json.digg':
  133. {
  134. if (sceneName.indexOf('Digg') == -1)
  135. continue;
  136. break;
  137. }
  138. case 'Json.twitter':
  139. {
  140. if (sceneName.indexOf('Twitter') == -1)
  141. continue;
  142. break;
  143. }
  144. case 'Json.instagram':
  145. {
  146. if (sceneName.indexOf('Instagram') == -1)
  147. continue;
  148. break;
  149. }
  150. case 'Json.calendar':
  151. {
  152. if (sceneName.indexOf('Calendar') == -1)
  153. continue;
  154. break;
  155. }
  156. case 'Json.spreadsheet':
  157. {
  158. if (sceneName.indexOf('Sheet') == -1)
  159. continue;
  160. break;
  161. }
  162. case 'Json.weather':
  163. {
  164. if (sceneName.indexOf('Weather') == -1)
  165. continue;
  166. break;
  167. }
  168. default:
  169. {
  170. }
  171. }
  172. var item = "<li class=\"is-loading\">\n <img class=\"sceneImportThumb\" data-native=\"" + sceneConfig[2] + "\" data-scenename=\"" + sceneName + "\" data-businessid=\"" + sceneConfig[0] + "\" src=\"_assets/scenes/" + sceneName + ".jpg\"/>\n </li>";
  173. items = items + item;
  174. }
  175. return items;
  176. }
  177. // return an <li> with a <img> in it
  178. function getImageItem(index) {
  179. var item = '<li class="is-loading">';
  180. item += '<img style="width: 139px; height: 78px" src="_assets/scenes/Template' + index + '.jpg"/></li>';
  181. return item;
  182. }
  183. function resetProgress() {
  184. $status.css({ opacity: 1 });
  185. loadedImageCount = 0;
  186. if (supportsProgress) {
  187. $progress.attr('max', imageCount);
  188. }
  189. }
  190. function updateProgress(value) {
  191. if (supportsProgress) {
  192. $progress.attr('value', value);
  193. }
  194. else {
  195. // if you don't support progress elem
  196. $status.text(value + ' / ' + imageCount);
  197. }
  198. }
  199. // triggered after each item is loaded
  200. function onProgress(imgLoad, image) {
  201. // change class if the image is loaded or broken
  202. var $item = $(image.img).parent();
  203. $item.removeClass('is-loading');
  204. if (!image.isLoaded) {
  205. $item.addClass('is-broken');
  206. }
  207. // update progress element
  208. loadedImageCount++;
  209. updateProgress(loadedImageCount);
  210. }
  211. // hide status when done
  212. function onAlways() {
  213. $status.css({ opacity: 0 });
  214. }
  215. populateScenes();
  216. };
  217. SceneCreatorTemplateView.prototype._goBack = function () {
  218. var self = this;
  219. self.m_options.stackView.slideToPage(self.m_options.from, 'left');
  220. };
  221. /**
  222. Render the view
  223. @method _render
  224. **/
  225. SceneCreatorTemplateView.prototype._render = function () {
  226. var self = this;
  227. setTimeout(function (e) { return self._loadSceneTemplates(); }, 500);
  228. };
  229. /**
  230. Returns this model's attributes as...
  231. @method setSceneMimeType
  232. @param {Number} i_playerData
  233. @return {Number} Unique clientId.
  234. **/
  235. SceneCreatorTemplateView.prototype.setSceneMimeType = function (i_selectedSceneMime) {
  236. var self = this;
  237. self.m_selectedSceneMime = i_selectedSceneMime;
  238. //self._render();
  239. };
  240. return SceneCreatorTemplateView;
  241. }(Backbone.View));
  242. return SceneCreatorTemplateView;
  243. });
  244. //# sourceMappingURL=SceneCreatorTemplateView.js.map