Your IP : 18.219.40.177


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

/**
 * Multi load tabs
 * @param {object} window global object
 * @param {object|function} $ jQuery
 * @param {object} EventMgr Event manager
 */
App.MultiLoadTabs = function(window, $, EventMgr) {
  'use strict';
  var init = function() {
    EventMgr.bind('readStorage', loadFromStorage);
    EventMgr.bind('loadChildren', loadChildren);
    EventMgr.bind('multiLoadTab', loadTabs);
  },

      pageInfo = window.pageInfo,

      loadFromStorage = function(e, data) {
        var cookie = data.tabs,
            tabsObj;
        try {
          tabsObj = $.parseJSON(cookie);
          EventMgr.trigger('multiLoadTab', { tabs: tabsObj.tabs });
        } catch (exp) {}
      },

      loadTabs = function(e, data) {
        var delay = 50,
            children,
            tabs = data.tabs,
            isNotInit = data.isNotInit,
            keyVar, len, param, curTab,
            urlParams = App.u.parseParams(window.location.search),
            showDashboard = (urlParams.sfrom === 'loginform') &&
                !(pageInfo.startform !== '' ||
                pageInfo.startpage !== 'dashboard');
        if (pageInfo.tabPin && pageInfo.tabPin.length > 1 && !isNotInit) {
          for (var i = 1, l = pageInfo.tabPin.length; i < l; i++) {
            tabs.unshift([pageInfo.tabPin[i]]);
          }
        }
        if (tabs !== null) {
          /* jslint forin:true */
          for (keyVar in tabs) {
            curTab = tabs[keyVar][0];
            len = tabs[keyVar].length;
            delay += 50;
            if (len > 1) {
              tabs[keyVar].splice(0, 1);
              children = tabs[keyVar];
            } else {
              children = null;
            }
            if (typeof curTab.params === 'object') {
                if (curTab.beforeRequest) {
                    EventMgr.trigger('ajaxRequest', {
                        param: App.u.parseParams(curTab.beforeRequest),
                        trfunc: 'DoNothing',
                        queue: 'multiload'
                          });
                }
              /* jshint loopfunc:true*/
              setTimeout(function(children, curTab) {
                return function() {
                  if (curTab.status === 1 && !showDashboard) {
                    EventMgr.trigger('ajaxRequest', {
                      param: curTab.params,
                      noesc: pageInfo.startform !== '',
                      invar: { newtab: true, children: children, ignErr: true, __src_func: curTab.menuFunc },
                      type: 'get',
                      outtype: 'json',
                      trfunc: 'ajaxResponse',
                      queue: 'multiload' });
                  } else {
                    if (curTab.title) {
                      EventMgr.trigger('ajaxResponse', {
                        newtab: true,
                        children: children,
                        ignErr: true,
                        pin: curTab.pin,
                        __src_func: curTab.menuFunc,
                        pinIcon: curTab.pinIcon,
                        type: 'empty',
                        title: curTab.title,
                        urlObj: curTab.params });
                    }
                  }
                  param = null; children = null;
                };
              } (children, curTab), delay);
            }
          }
        }
        data = null;
      },

      loadChildren = function(e, data) {
        var parent = data.parent,
            children = data.children,
            curTab = children[0],
            urlParams = App.u.parseParams(window.location.search),
            showDashboard = (urlParams.sfrom === 'loginform') &&
                !(pageInfo.startform !== '' ||
                pageInfo.startpage !== 'dashboard');
        if (children.length > 1) {
          children = children.splice(1, 1);
        } else {
          children = null;
        }
        if (curTab.beforeRequest) {
          EventMgr.trigger('ajaxRequest', {
              param: App.u.parseParams(curTab.beforeRequest),
              trfunc: 'DoNothing',
              queue: 'multiload'
                  });
        }
        setTimeout(function(children, parent, curTab) {
          return function() {
            if (curTab.status === 1 && !showDashboard) {
              EventMgr.trigger('ajaxRequest', {
                param: curTab.params,
                invar: { parent: parent, children: children, ignErr: true, help: curTab.help },
                type: 'get',
                noesc: pageInfo.startform !== '',
                outtype: 'json',
                trfunc: 'ajaxResponse',
                queue: 'multiload' });
              EventMgr.trigger('tabLoading', { tabId: parent });
            } else {
              EventMgr.trigger('ajaxResponse', {
                parent: parent,
                children: children,
                ignErr: true,
                help: curTab.help,
                type: 'empty',
                title: curTab.title,
                pinIcon: curTab.pinIcon,
                urlObj: curTab.params });
            }
          };
        } (children, parent, curTab), 50);
      };

  return {
    init: init
  };
}(window, $, EventMgr);