Show:
  1. /**
  2. Settings Backbone > View
  3. @class SettingsView
  4. @constructor
  5. @return {Object} instantiated SettingsView
  6. **/
  7. define(['jquery', 'backbone'], function ($, Backbone) {
  8.  
  9. /**
  10. Station polling time changes
  11. @event STATIONS_POLL_TIME_CHANGED
  12. @param {This} caller
  13. @param {Self} context caller
  14. @param {Event}
  15. @static
  16. @final
  17. **/
  18. BB.EVENTS.STATIONS_POLL_TIME_CHANGED = 'STATIONS_POLL_TIME_CHANGED';
  19.  
  20. /**
  21. Theme changed
  22. @event THEME_CHANGED
  23. @param {This} caller
  24. @param {Self} context caller
  25. @param {Event}
  26. @static
  27. @final
  28. **/
  29. BB.EVENTS.THEME_CHANGED = 'THEME_CHANGED';
  30.  
  31. var SettingsView = Backbone.View.extend({
  32.  
  33. /**
  34. Constructor
  35. @method initialize
  36. **/
  37. initialize: function () {
  38. var self = this;
  39. BB.comBroker.setService(BB.SERVICES['SETTINGS_VIEW'], self);
  40. self.m_simpleStorage = undefined;
  41. self.listenTo(self.options.stackView, BB.EVENTS.SELECTED_STACK_VIEW, function (e) {
  42. if (e == self && !self.m_rendered) {
  43. self.m_rendered = true;
  44. self._render();
  45. }
  46. });
  47. },
  48.  
  49. /**
  50. Draw UI settings (singleton event) including station poll slider and load corresponding modules
  51. @method _render
  52. **/
  53. _render: function () {
  54. var self = this;
  55. require(['nouislider', 'simplestorage'], function (nouislider, simpleStorage) {
  56. self.m_simpleStorage = simpleStorage;
  57.  
  58. var pollStationsTime = self.m_simpleStorage.get('pollStationsTime');
  59. if (_.isUndefined(pollStationsTime)) {
  60. pollStationsTime = 120;
  61. self.m_simpleStorage.set('pollStationsTime', pollStationsTime);
  62. }
  63.  
  64. BB.CONSTS['THEME'] = self.m_simpleStorage.get('theme');
  65. if (_.isUndefined(BB.CONSTS['THEME']))
  66. BB.CONSTS['THEME'] = 'light';
  67. $(Elements.THEME_OPTION + ' option[value=' + BB.CONSTS['THEME'] + ']').attr("selected", "selected");
  68.  
  69. var bannerMode = self.m_simpleStorage.get('bannerMode');
  70. if (_.isUndefined(bannerMode)) {
  71. bannerMode = 1;
  72. self.m_simpleStorage.set('bannerMode', bannerMode);
  73. }
  74. $(Elements.PREVIEW_FULL_OPTION + ' option[value=' + bannerMode + ']').attr("selected", "selected");
  75.  
  76. var fqSwitchMode = self.m_simpleStorage.get('fqSwitchMode');
  77. if (_.isUndefined(fqSwitchMode)) {
  78. fqSwitchMode = 0;
  79. self.m_simpleStorage.set('fqSwitchMode', fqSwitchMode);
  80. }
  81. $(Elements.FQ_SWITCH_OPTION + ' option[value=' + fqSwitchMode + ']').attr("selected", "selected");
  82.  
  83. var adStatsSwitchMode = self.m_simpleStorage.get('adStatsMode');
  84. if (_.isUndefined(adStatsSwitchMode)) {
  85. adStatsSwitchMode = 0;
  86. self.m_simpleStorage.set('adStatsMode', adStatsSwitchMode);
  87. }
  88. $(Elements.AD_STATS_SWITCH_OPTION + ' option[value=' + adStatsSwitchMode + ']').attr("selected", "selected");
  89.  
  90. self.m_stationsPollingSlider = $(Elements.STATION_POLL_SLIDER).noUiSlider({
  91. handles: 1,
  92. start: [pollStationsTime],
  93. step: 1,
  94. range: [60, 360],
  95. serialization: {
  96. to: [ $(Elements.STATION_POLL_LABEL), 'text' ]
  97. }
  98. });
  99.  
  100. self._listenStationsPollingSlider();
  101. self._listenBannerPreviewChange();
  102. self._listenFasterQueueSwitchChange();
  103. self._listenAdStatsSwitchChange();
  104. self._listenThemeChange();
  105.  
  106. });
  107. },
  108.  
  109. /**
  110. Listen changes in FasterQueue settings options
  111. @method _listenFasterQueueSwitchChange
  112. **/
  113. _listenFasterQueueSwitchChange: function () {
  114. var self = this;
  115. $(Elements.FQ_SWITCH_OPTION).on('change', function (e) {
  116. var state = $(Elements.FQ_SWITCH_OPTION + ' option:selected').val();
  117. self.m_simpleStorage.set('fqSwitchMode', state);
  118. if (state=="1"){
  119. $(Elements.CLASS_FASTERQ_PANEL).fadeIn();
  120. } else {
  121. $(Elements.CLASS_FASTERQ_PANEL).fadeOut();
  122. }
  123. });
  124. },
  125.  
  126. /**
  127. Listen changes in FasterQueue settings options
  128. @method _listenAdStatsSwitchChange
  129. **/
  130. _listenAdStatsSwitchChange: function () {
  131. var self = this;
  132. $(Elements.AD_STATS_SWITCH_OPTION).on('change', function (e) {
  133. var state = $(Elements.AD_STATS_SWITCH_OPTION + ' option:selected').val();
  134. self.m_simpleStorage.set('adStatsMode', state);
  135. if (state=="1"){
  136. $(Elements.CLASS_ADSTATS_PANEL).fadeIn();
  137. } else {
  138. $(Elements.CLASS_ADSTATS_PANEL).fadeOut();
  139. }
  140. });
  141. },
  142.  
  143. /**
  144. Listen changes in full screen preview settings options
  145. @method _listenBannerPreviewChange
  146. **/
  147. _listenBannerPreviewChange: function () {
  148. var self = this;
  149. $(Elements.PREVIEW_FULL_OPTION).on('change', function (e) {
  150. // var state = $(Elements.PREVIEW_FULL_OPTION + ' option:selected').val() == "on" ? 1 : 0;
  151. var state = $(Elements.PREVIEW_FULL_OPTION + ' option:selected').val();
  152. self.m_simpleStorage.set('bannerMode', state);
  153. });
  154. },
  155.  
  156. /**
  157. Listen changes in theme style
  158. @method _listenThemeChange
  159. **/
  160. _listenThemeChange: function () {
  161. var self = this;
  162. $(Elements.THEME_OPTION).on('change', function (e) {
  163. BB.CONSTS['THEME'] = $(Elements.THEME_OPTION + ' option:selected').val();
  164. self.m_simpleStorage.set('theme', BB.CONSTS['THEME']);
  165. if (BB.CONSTS['THEME'] == 'light'){
  166. bootbox.alert($(Elements.MSG_BOOTBOX_RELOAD_THEME).text());
  167. } else {
  168. BB.lib.loadCss('style_' + BB.CONSTS['THEME'] + '.css');
  169. }
  170. BB.comBroker.fire(BB.EVENTS.THEME_CHANGED);
  171. });
  172. },
  173.  
  174. /**
  175. Listen to stations polling slider changes
  176. @method _listenStationsPollingSlider
  177. **/
  178. _listenStationsPollingSlider: function () {
  179. var self = this;
  180. $(self.m_stationsPollingSlider).change(function (e) {
  181. var pollStationsTime = $(Elements.STATION_POLL_LABEL).text();
  182. self.m_simpleStorage.set('pollStationsTime', pollStationsTime);
  183. BB.comBroker.fire(BB.EVENTS['STATIONS_POLL_TIME_CHANGED'], this, null, pollStationsTime);
  184. });
  185. }
  186. });
  187.  
  188. return SettingsView;
  189. });
  190.  
  191.