Your IP : 3.135.223.175


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

/**
 *  Модуль.
 *  ваш К.О.
 *  @param {object} window  global object
 *  @param {function} $ jQuery library
 *  @param {object} EventMgr EventMgr library
 *  @param {object} App Application
 */
App.ActionHandlerDashboard = function(window, $, EventMgr, App) {
  'use strict';

  var storage = App.Common.storage,

      refDashboardBlock = '.dashblock-reload',
      pageNumDashSel = '.pager-list_type_dashboard .pager-list__item_act',
      actionMultiBtnSel = '.multi-item a, .multi-item span',

      $content = function() {
        return $('#main-wrapper');
      },
      
      blockToUpdate = [];

  function dashboardLoad() {
    var url = pageInfo.url,
        param = { func: 'dashboard' };
    EventMgr.trigger('ajaxRequest', {
      url: url,
      param: param,
      invar: { exType: 'dashboard' },
      type: 'get',
      outtype: 'json',
      trfunc: 'ajaxResponse',
      queue: 'dashboard' });
  }

  function dashoardCheckSwitchTab(e, data) {
    var tabId = data.tabId;
    if (tabId === 'tab0') {
      dashboardLoad();
      EventMgr.unbind('activateTab', dashoardCheckSwitchTab);
    }
  }

  //startpage
  function dashBoard() {
    if (pageInfo.startpage !== 'dashboard' || pageInfo.startform) {
      var data = { 'lateLoad': true, exType: 'dashboard' };
      EventMgr.trigger('ajaxResponse', data);
      EventMgr.bind('activateTab', dashoardCheckSwitchTab);
    } else {
      dashboardLoad();
    }
  }
  //for autoupdate
  function refreshDashBlock(e, data) {
    var block = data.block;
    if (block && $('#cont-tab0').hasClass('tab-content_st_active')) {
      $('#tblock-' + block.name).find('.dashblock-reload').trigger('click');
    }
    if (block.autoupdate) {
      setTimeout(function(block) {
        return function() {
          EventMgr.trigger('refreshDashBlock', { block: block });
        };
      } (block), block.autoupdate * 1000);
    }
  }

  function addBlockToUpdate(e, block) {
    blockToUpdate.push(block);
  }

  function checkForUpdate(e, d) {
    if (d && d.tabId === 'tab0') {
      update();
    }
  }

  function update(e, data) {
    for (var i = 0, l = blockToUpdate.length; i < l; i++) {
      EventMgr.trigger('refreshDashBlock', { block: blockToUpdate[i] });
    }
  }

  function refDashboardBlockHandler(e) {
    e = e || window.event;
    e.preventDefault();
    e.stopPropagation();
    var id = $(this).closest('.l-form-page__title-wr')
            .attr('data-name').replace('.', '_'),
        blockId = 'block-' + id,
        block = App.Dom.byId(blockId),
        name, param, pNum, tblock,
        startTime;
    if (block) {
      tblock = App.Dom.byId('t' + blockId);
      if (tblock) {
        startTime = (new Date()).getTime();
        tblock.className += ' loading ';
      }
      name = block.getAttribute('data-block-name');
      param = storage.dashboard[name];
      pNum = $('#' + blockId + ' .page.active').attr('data-n');

      if (pNum) {
        /* jslint camelcase: false */
        param.p_num = pNum;
        /* jslint camelcase: true */
      }
      EventMgr.trigger('ajaxRequest', {
        param: param,
        invar: { blockId: blockId, startTime: startTime },
        type: 'get',
        outtype: 'json',
        trfunc: 'ajaxResponseForDashboard',
        failfunc: 'failedAjaxResponseForDashboard',
        queue: 'dash_pager' + id });
    }
  }

  //pager on dashboard block
  function pagerHandlerDash() {
    var self = $(this),
        parent = self.parents('.block-table'),
        id = parent.attr('id'),
        pNum = self.attr('data-n'),
        name = parent.attr('data-block-name'),
        tblock = App.Dom.byId('t' + id),
        param = storage.dashboard[name],
        startTime;
    /* jslint camelcase: false */
    param.p_num = pNum;
    /* jslint camelcase: true */
    if (tblock) {
      startTime = (new Date()).getTime();
      tblock.className += ' loading ';
    }
    EventMgr.trigger('ajaxRequest', {
      param: param,
      invar: { blockId: id, startTime: startTime },
      type: 'get',
      outtype: 'json',
      trfunc: 'ajaxResponseForDashboard',
      failfunc: 'failedAjaxResponseForDashboard',
      queue: 'dash_pager' + id });
  }

  //handler for dashboard button
  function actionMultiController(e) {
    if (e) { e.preventDefault(); }
    var form = this.getAttribute('data-form'),
        list = this.getAttribute('data-list'),
        top = this.getAttribute('data-top'),
        type = this.getAttribute('data-type'),
        tabs, param;
    if (type === 'form-list') {
      tabs = [];
      tabs.push([{
        'title': '',
        status: 1,
        params: { func: list } },
      { title: '',
        status: 1,
        params: { func: form } }]);
      EventMgr.trigger('multiLoadTab', { tabs: tabs });
    } else if (type === 'list' || type === 'form') {
      param = { func: list || form };
      EventMgr.trigger('ajaxRequest', {
        param: param,
        type: 'get',
        invar: {
          __src: 'dashboardBtn'
        },
        outtype: 'json',
        trfunc: 'ajaxResponse',
        failfunc: 'failCommonAjaxResponse',
        queue: 'multiload' });
    } else if (type === 'top') {
      //reload desktop by reload flag for build tab function
      param = { func: top };
      EventMgr.trigger('ajaxRequest', {
        param: param,
        type: 'get',
        outtype: 'json',
        invar: {
          dataSaved: true,
          reload: true
        },
        trfunc: 'ajaxResponse',
        failfunc: 'failCommonAjaxResponse',
        queue: 'multiload' });
    }
  }

  function init() {
    EventMgr.bind('refreshDashBlock', refreshDashBlock);
    EventMgr.bind('loadPage', dashBoard);
    EventMgr.bind('addBlockToUpdate', addBlockToUpdate);
    EventMgr.bind('changedTab', checkForUpdate);
    EventMgr.on($content(), refDashboardBlock, 'click',
        refDashboardBlockHandler);
    EventMgr.on($content(), pageNumDashSel, 'click', pagerHandlerDash);
    EventMgr.on($content(), actionMultiBtnSel, 'click', actionMultiController);
  }

  var api = {
    init: init
  };

  return api;

}(window, $, EventMgr, App);