Your IP : 3.149.236.120


Current Path : /usr/local/mgr5/skins/orion/src/
Upload File :
Current File : //usr/local/mgr5/skins/orion/src/App.StoreBasket.js

/**
 * Module provide basket in store in site
 *  @param {object} window  global object
 *  @param {function} $ jQuery library
 *  @param {object} EventMgr EventMgr library
 *  @param {object} App Application
 *  @return {object} api
 */
App.StoreBasket = function(window, $, EventMgr, App) {
  'use strict';

  var timeout = 60000,
      project = pageInfo.project || 1;

  var basketTempl = '({{=it.count}}шт.) {{=it.sum}} {{=it.iso}}';


  var tempFunc = window.doT.template(basketTempl);

  function $basketWrapper() {
    return App.Dom.byId(pageInfo.basket.blockId);
  }
  //init store func, get startform
  function storeBasketInit() {
    if (pageInfo.basket) {
      setTimeout(function() {
        getBasket();
      }, 300);
      setInterval(function() {
        getBasket();
      }, timeout);
    }
  }

  function getBasket() {
    var params = {
      func: 'showroom.menu',
      out: 'sjson'
    };
    params.storemode = 'on';
    EventMgr.trigger('ajaxRequest', {
      param: params,
      outtype: 'json',
      trfunc: 'storeBasketResp',
      invar: {
        showcaseForm: true
      }
    });
  }

  function updateBasket(basket) {
    var html = tempFunc(basket),
        $basketWrapperNode = $basketWrapper();
    if ($basketWrapperNode) {
      $basketWrapperNode.innerHTML = html;
    }
  }

  function storeBasketRespHandler(e, data) {
    EventMgr.trigger('storeUserMenuResp', data);
    if (data &&
        data.doc &&
        data.doc.basket &&
        data.doc.basket.count &&
        data.doc.basket.sum &&
        data.doc.basket.currency &&
        data.doc.basket.currency.iso) {
        var basket = data.doc.basket;
        updateBasket({ count: basket.count.$, sum: basket.sum.$, iso: basket.currency.iso.$ });
    }
  }

  function basketClickHandler(e) {
    e.preventDefault();
    EventMgr.trigger('openStoreBasket', {});
  }

  function init() {
    if (pageInfo.basket && pageInfo.basket.blockId) {
      EventMgr.bind('storeLoad', storeBasketInit);
      EventMgr.bind('storeBasketForceUpdate', getBasket);
      EventMgr.bind('storeBasketResp', storeBasketRespHandler);
      EventMgr.on($($basketWrapper()), '.i-store__basket', 'click', basketClickHandler);
    }
  }

  var api = {
    init: init
  };

  return api;

} (window, $, EventMgr, App);