- /**
- Settings Backbone > View
- @class SettingsView
- @constructor
- @return {Object} instantiated SettingsView
- **/
- define(['jquery', 'backbone'], function ($, Backbone) {
-
- /**
- Station polling time changes
- @event STATIONS_POLL_TIME_CHANGED
- @param {This} caller
- @param {Self} context caller
- @param {Event}
- @static
- @final
- **/
- BB.EVENTS.STATIONS_POLL_TIME_CHANGED = 'STATIONS_POLL_TIME_CHANGED';
-
- /**
- Theme changed
- @event THEME_CHANGED
- @param {This} caller
- @param {Self} context caller
- @param {Event}
- @static
- @final
- **/
- BB.EVENTS.THEME_CHANGED = 'THEME_CHANGED';
-
- var SettingsView = Backbone.View.extend({
-
- /**
- Constructor
- @method initialize
- **/
- initialize: function () {
- var self = this;
- BB.comBroker.setService(BB.SERVICES['SETTINGS_VIEW'], self);
- self.m_simpleStorage = undefined;
- self.listenTo(self.options.stackView, BB.EVENTS.SELECTED_STACK_VIEW, function (e) {
- if (e == self && !self.m_rendered) {
- self.m_rendered = true;
- self._render();
- }
- });
- },
-
- /**
- Draw UI settings (singleton event) including station poll slider and load corresponding modules
- @method _render
- **/
- _render: function () {
- var self = this;
- require(['nouislider', 'simplestorage'], function (nouislider, simpleStorage) {
- self.m_simpleStorage = simpleStorage;
-
- var pollStationsTime = self.m_simpleStorage.get('pollStationsTime');
- if (_.isUndefined(pollStationsTime)) {
- pollStationsTime = 120;
- self.m_simpleStorage.set('pollStationsTime', pollStationsTime);
- }
-
- BB.CONSTS['THEME'] = self.m_simpleStorage.get('theme');
- if (_.isUndefined(BB.CONSTS['THEME']))
- BB.CONSTS['THEME'] = 'light';
- $(Elements.THEME_OPTION + ' option[value=' + BB.CONSTS['THEME'] + ']').attr("selected", "selected");
-
- var bannerMode = self.m_simpleStorage.get('bannerMode');
- if (_.isUndefined(bannerMode)) {
- bannerMode = 1;
- self.m_simpleStorage.set('bannerMode', bannerMode);
- }
- $(Elements.PREVIEW_FULL_OPTION + ' option[value=' + bannerMode + ']').attr("selected", "selected");
-
- var fqSwitchMode = self.m_simpleStorage.get('fqSwitchMode');
- if (_.isUndefined(fqSwitchMode)) {
- fqSwitchMode = 0;
- self.m_simpleStorage.set('fqSwitchMode', fqSwitchMode);
- }
- $(Elements.FQ_SWITCH_OPTION + ' option[value=' + fqSwitchMode + ']').attr("selected", "selected");
-
- var adStatsSwitchMode = self.m_simpleStorage.get('adStatsMode');
- if (_.isUndefined(adStatsSwitchMode)) {
- adStatsSwitchMode = 0;
- self.m_simpleStorage.set('adStatsMode', adStatsSwitchMode);
- }
- $(Elements.AD_STATS_SWITCH_OPTION + ' option[value=' + adStatsSwitchMode + ']').attr("selected", "selected");
-
- self.m_stationsPollingSlider = $(Elements.STATION_POLL_SLIDER).noUiSlider({
- handles: 1,
- start: [pollStationsTime],
- step: 1,
- range: [60, 360],
- serialization: {
- to: [ $(Elements.STATION_POLL_LABEL), 'text' ]
- }
- });
-
- self._listenStationsPollingSlider();
- self._listenBannerPreviewChange();
- self._listenFasterQueueSwitchChange();
- self._listenAdStatsSwitchChange();
- self._listenThemeChange();
-
- });
- },
-
- /**
- Listen changes in FasterQueue settings options
- @method _listenFasterQueueSwitchChange
- **/
- _listenFasterQueueSwitchChange: function () {
- var self = this;
- $(Elements.FQ_SWITCH_OPTION).on('change', function (e) {
- var state = $(Elements.FQ_SWITCH_OPTION + ' option:selected').val();
- self.m_simpleStorage.set('fqSwitchMode', state);
- if (state=="1"){
- $(Elements.CLASS_FASTERQ_PANEL).fadeIn();
- } else {
- $(Elements.CLASS_FASTERQ_PANEL).fadeOut();
- }
- });
- },
-
- /**
- Listen changes in FasterQueue settings options
- @method _listenAdStatsSwitchChange
- **/
- _listenAdStatsSwitchChange: function () {
- var self = this;
- $(Elements.AD_STATS_SWITCH_OPTION).on('change', function (e) {
- var state = $(Elements.AD_STATS_SWITCH_OPTION + ' option:selected').val();
- self.m_simpleStorage.set('adStatsMode', state);
- if (state=="1"){
- $(Elements.CLASS_ADSTATS_PANEL).fadeIn();
- } else {
- $(Elements.CLASS_ADSTATS_PANEL).fadeOut();
- }
- });
- },
-
- /**
- Listen changes in full screen preview settings options
- @method _listenBannerPreviewChange
- **/
- _listenBannerPreviewChange: function () {
- var self = this;
- $(Elements.PREVIEW_FULL_OPTION).on('change', function (e) {
- // var state = $(Elements.PREVIEW_FULL_OPTION + ' option:selected').val() == "on" ? 1 : 0;
- var state = $(Elements.PREVIEW_FULL_OPTION + ' option:selected').val();
- self.m_simpleStorage.set('bannerMode', state);
- });
- },
-
- /**
- Listen changes in theme style
- @method _listenThemeChange
- **/
- _listenThemeChange: function () {
- var self = this;
- $(Elements.THEME_OPTION).on('change', function (e) {
- BB.CONSTS['THEME'] = $(Elements.THEME_OPTION + ' option:selected').val();
- self.m_simpleStorage.set('theme', BB.CONSTS['THEME']);
- if (BB.CONSTS['THEME'] == 'light'){
- bootbox.alert($(Elements.MSG_BOOTBOX_RELOAD_THEME).text());
- } else {
- BB.lib.loadCss('style_' + BB.CONSTS['THEME'] + '.css');
- }
- BB.comBroker.fire(BB.EVENTS.THEME_CHANGED);
- });
- },
-
- /**
- Listen to stations polling slider changes
- @method _listenStationsPollingSlider
- **/
- _listenStationsPollingSlider: function () {
- var self = this;
- $(self.m_stationsPollingSlider).change(function (e) {
- var pollStationsTime = $(Elements.STATION_POLL_LABEL).text();
- self.m_simpleStorage.set('pollStationsTime', pollStationsTime);
- BB.comBroker.fire(BB.EVENTS['STATIONS_POLL_TIME_CHANGED'], this, null, pollStationsTime);
- });
- }
- });
-
- return SettingsView;
- });
-
-
-