Your IP : 3.135.223.175
/**
* Модуль.
* ваш К.О.
* @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);