- /**
- Settings Backbone > View
- @class FQCreatorView
- @constructor
- @return {Object} instantiated FQCreatorView
- **/
- define(['jquery', 'backbone', 'LinesCollection', 'LineModel', 'FQLinePropView', 'text!_templates/_fasterQLineItem.html'], function ($, Backbone, LinesCollection, LineModel, FQLinePropView, FQLineItemTemplate) {
-
- BB.SERVICES.FQCREATORVIEW = 'FQCreatorView';
-
- var FQCreatorView = Backbone.View.extend({
-
- /**
- Constructor
- @method initialize
- **/
- initialize: function () {
- var self = this;
- BB.comBroker.setService(BB.SERVICES.FQCREATORVIEW, self);
- self.m_selectedLineID = undefined;
- self.m_fasterQLineItemTemplate = _.template(FQLineItemTemplate);
- self.m_linesCollection = new LinesCollection();
- self._populateLines();
- self._listenAddNewLine();
- self._listenRemoveLine();
- self._listenResetQueueCounter();
- self._listenCollectionChanged();
-
- self.m_fqLinePropView = new FQLinePropView({
- el: Elements.FASTERQ_LINE_PROPERTIES,
- collection: self.m_linesCollection
- });
-
- $(Elements.FASTERQ_LINE_BACK).on('click', function () {
- self.options.stackView.selectView(Elements.FASTERQ_NAVIGATION_CONTAINER);
- });
-
- self.listenTo(self.options.stackView, BB.EVENTS.SELECTED_STACK_VIEW, function (e) {
- if (e == self && !self.m_rendered) {
- self.m_rendered = true;
- self._render();
- }
- });
- },
-
- _render: function () {
- var self = this;
- },
-
- /**
- Listen to Line selection, populate the properties panel and open it if needed.
- @method _listenResourceSelected
- **/
- _listenLineSelected: function () {
- var self = this;
- $(Elements.CLASS_LINE_LIST_ITEMS).off('click');
- $(Elements.CLASS_LINE_LIST_ITEMS).on('click', function (e) {
- var lineElem = $(e.target).closest('li');
- self.m_selectedLineID = $(lineElem).data('line_id');
- self._highlightLine();
- self.m_fqLinePropView.lineSelected((self.m_selectedLineID));
-
- if (!$(e.target).hasClass('prop')) {
- setTimeout(function(){
- self.options.stackView.selectView(Elements.FASTERQ_MANAGER_CONTAINER);
- },250);
- }
- return false;
- });
- },
-
- /**
- Popular the list Line items from server
- @method _populateLines
- **/
- _populateLines: function () {
- var self = this;
- self.m_linesCollection.sort();
- self._getLines();
- },
-
- /**
- Returns this model's attributes as...
- @method _getLines server:getLines
- @param {Number} i_playerData
- @return {Number} Unique clientId.
- **/
- _getLines: function () {
- var self = this;
- self.m_linesCollection.fetch({
- success: function (data) {
- $(Elements.FASTERQ_CUSTOMER_LINES).empty();
- if (data.models.length == 0)
- return;
- _.each(data.models, $.proxy(self._appendNewLine, self));
- self._listenLineSelected();
- self._highlightLine();
- },
- error: function (e) {
- log('error loading collection data ' + e);
- }
- });
- },
-
- /**
- Set the selected line background color properties
- @method _highlightLine
- **/
- _highlightLine: function () {
- var self = this;
- if (_.isUndefined(self.m_selectedLineID))
- return;
- var lineElem = $(Elements.FASTERQ_CUSTOMER_LINES).find('[data-line_id="' + self.m_selectedLineID + '"]');
- $(Elements.CLASS_LINE_LIST_ITEMS).removeClass('activated').find('a').removeClass('whiteFont');
- $(lineElem).addClass('activated').find('a').addClass('whiteFont');
- },
-
- /**
- Append the model Line item to list in UI
- @method _appendNewLine
- @param {i_model} Model
- **/
- _appendNewLine: function (i_model) {
- var self = this;
- $(Elements.FASTERQ_CUSTOMER_LINES).append(self.m_fasterQLineItemTemplate(i_model.toJSON()));
- },
-
- /**
- Listen to new Line item button
- @method _listenAddNewLine server:setLine
- **/
- _listenAddNewLine: function () {
- var self = this;
- $(Elements.FATSERQ_ADD_NEW_LINE).on('click', function (e) {
- var model = new LineModel({
- name: 'New line',
- business_id: BB.Pepper.getUserData().business_id
- });
- model.save({}, {
- success: function (model) {
- self.m_linesCollection.add(model);
- self._appendNewLine(model);
- self._listenLineSelected();
- },
- error: function () {
- log('error loading collection data');
- }
- });
- });
- },
-
- /**
- Listen to remove existing Line item button
- @method _listenRemoveLine server:destroyLine
- **/
- _listenRemoveLine: function () {
- var self = this;
- $(Elements.FASTERQ_REMOVE_LINE).on('click', function () {
- if (_.isUndefined(self.m_selectedLineID)) {
- bootbox.alert('no line selected');
- return;
- }
- bootbox.confirm("Are you sure you want to delete the Line and associated queues?", function (result) {
- if (!result)
- return;
- var model = self.m_linesCollection.get(self.m_selectedLineID);
- model.destroy({
- success: function (model, response) {
- log('model deleted');
- self._populateLines();
- self.m_selectedLineID = undefined;
- }, error: function () {
- log('error delete failed');
- }
- });
- });
- });
- },
-
- /**
- Listen to changes in Line collection and re-populate Line list
- @method _listenCollectionChanged
- **/
- _listenCollectionChanged: function () {
- var self = this;
- self.m_linesCollection.on('change', function (e) {
- self._populateLines();
- });
- },
-
- /**
- Reset queue counter
- @method _listenResetQueueCounter server:ResetQueueCounter
- **/
- _listenResetQueueCounter: function(){
- var self = this;
- $(Elements.FQ_RESET_QUEUE_COUNTER).on('click',function(){
- bootbox.prompt('are you sure you want to reset the counter? (enter YES)',function(i_password){
- if (i_password != 'YES') return;
- $.ajax({
- url: BB.CONSTS.ROOT_URL + '/ResetQueueCounter',
- data: {
- business_id: BB.Pepper.getUserData().businessID,
- line_id: self.m_selectedLineID,
- counter: 1
- },
- success: function (e) {
- bootbox.alert('counter was reset successfully');
- },
- error: function (e) {
- log('error ajax ResetQueueCounter ' + e);
- },
- dataType: 'json'
- });
- });
- });
- },
-
- /**
- Expose private member selectedLineID
- @method getSelectedLine
- **/
- getSelectedLine: function(){
- var self = this;
- return self.m_selectedLineID;
- },
-
- getSelectedLineName: function(i_lineID){
- var self = this;
- return self.m_linesCollection.get(i_lineID).get('name');
- }
- });
-
- return FQCreatorView;
- });
-
-
-
-