// Глобальные переменные и операции
// ОС
var OSName = window.parent.OSName;
if (!window.location.origin) {
window.location.origin = window.location.protocol + "//" +
window.location.hostname +
(window.location.port ? ':' + window.location.port : '');
}
var curUrl = window.location.pathname.split('/');
window.onunload = function() {
localStorage['JustCRM_lastURL'] = document.location;
setCookie("JustCRM_lastURL", document.location);
};
// Если указано, что необходимо вернуться по определенному URL, то определяем глобальную переменную и удаляем куки
if (getCookie('toBack')) {
var toBack = getCookie('toBack');
}
// Обработка ошибок из скриптов, выполняемых до загрузки main.js
// Уведомление при отсутствии модуля, или неверном URL
if (typeof moduleError !== 'undefined') {
popup('bad', 'Ошибка!', '404 - Некорректный адрес.', true, true);
setTimeout(function() { window.location.href = '/tasks' }, 3000);
}
// Уведомление при отсутствии записей АТС
if (typeof noCdrError !== 'undefined') {
popup('bad', '', 'Записи разговоров отсутствуют.', true, false);
delayReload(1000, noCdrError);
}
// Изменение в функционале ядра jQuery
// Регистронезависимый метод contains
$.expr[":"].contains = $.expr.createPseudo(function(arg) {
return function(elem) {
return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
// Событие появления элемента
(function($) {
var defaults = {
callback: function() {},
runOnLoad: true,
frequency: 100,
previousVisibility: null
};
var methods = {};
methods.checkVisibility = function(element, options) {
if (jQuery.contains(document, element[0])) {
var previousVisibility = options.previousVisibility;
var isVisible = element.is(':visible');
options.previousVisibility = isVisible;
if (previousVisibility == null) {
if (options.runOnLoad) {
options.callback(element, isVisible);
}
} else if (previousVisibility !== isVisible) {
options.callback(element, isVisible);
}
setTimeout(function() {
methods.checkVisibility(element, options);
}, options.frequency);
}
};
$.fn.visibilityChanged = function(options) {
var settings = $.extend({}, defaults, options);
return this.each(function() {
methods.checkVisibility($(this), settings);
});
};
})(jQuery);
// Событие на изменение размеров элемента $().sizeChanged(function(){})
(function($) {
$.fn.sizeChanged = function(handleFunction) {
var element = this;
var lastWidth = element.width();
var lastHeight = element.height();
setInterval(function() {
if (lastWidth === element.width() && lastHeight === element.height())
return;
if (typeof(handleFunction) == 'function') {
handleFunction({ width: lastWidth, height: lastHeight }, { width: element.width(), height: element.height() });
lastWidth = element.width();
lastHeight = element.height();
}
}, 100);
return element;
};
}(jQuery));
// Изменение внешнего вида scrollbars
(function($) {
$.fn.hasScrollBar = function() {
return this.get(0).scrollHeight > this.height();
};
$.fn.lionbars = function(options) {
options = options || {};
autohide = options.autohide;
// Flags
var timeout,
HDragging = false,
VDragging = false,
activeScroll = 0,
activeWrap = 0,
eventX,
eventY,
mouseX,
mouseY,
currentRatio,
initPos,
scrollValue,
hideTimeoutSet = false,
vEventFired = false,
hEventFired = false;
// Initialization
var elements = $(this),
id = 0,
vScrollWidth = 0,
hScrollWidth = 0,
addHScroll = false,
addVScroll = false,
paddingTop = 0,
paddingLeft = 0,
paddingBottom = 0,
paddingRight = 0,
borderTop = 0,
borderRight = 0,
borderBottom = 0,
borderLeft = 0,
scrollHeight = 0,
scrollWidth = 0,
offsetWidth = 0,
offsetHeight = 0,
clientWidth = 0,
clientHeight = 0,
vRatio = 0,
hRatio = 0,
vSliderHeight = 0,
hSliderHeight = 0,
vLbHeight = 0,
hLbHeight = 0;
// Main Loop
mainLoop();
function mainLoop() {
for (var i = 0; elements[i] !== undefined; i++) {
if (needScrollbars(elements[i]) && !$(elements[i]).hasClass('nolionbars')) {
// add the element to the main array
target = elements[i];
// get some values before the element is wrapped
getDimentions(target);
// wrap the element
wrap(target, addVScroll, addHScroll);
// hide the default scrollbar
hideScrollbars(target, addVScroll, addHScroll);
// Calculate the size of the scrollbars
reduceScrollbarsWidthHeight(target);
setSlidersHeight(target);
// Set variables needed to calculate scroll speed, etc.
setScrollRatios(target);
// Set events
setEvents(target);
// prepare for next element
resetVars();
}
}
}
// Set document events
$(document).mousemove(function(e) {
if (VDragging) {
mouseY = e.pageY;
activeWrap.scrollTop((initPos + mouseY - eventY) * Math.abs(currentRatio));
}
if (HDragging) {
mouseX = e.pageX;
activeWrap.scrollLeft((initPos + mouseX - eventX) * Math.abs(currentRatio));
}
});
$(document).mouseup(function(e) {
if (VDragging) {
VDragging = false;
}
if (HDragging) {
HDragging = false;
}
});
// Core functions
function setEvents(elem) {
var el = $(elem);
if (addVScroll || addHScroll) {
el.find('.lb-wrap').scroll(function(e) {
el.find('.lb-v-scrollbar-slider').css({ "top": -$(this).scrollTop() / el.attr('vratio') });
el.find('.lb-h-scrollbar-slider').css({ "left": -$(this).scrollLeft() / el.attr('hratio') });
if (el.find('.lb-v-scrollbar').height() == (parseInt(el.find('.lb-v-scrollbar-slider').css('top')) + el.find('.lb-v-scrollbar-slider').height()) &&
typeof(options.reachedBottom) == 'function' &&
!vEventFired
) {
vEventFired = true;
var self = $(this);
options.reachedBottom.apply($(this).children('.lb-content'), [function() {
getDimentions($(self).parent(), {
height: $(self).children('.lb-content').get(0).scrollHeight,
width: $(self).children('.lb-content').get(0).scrollWidth
});
// Calculate the size of the scrollbars
reduceScrollbarsWidthHeight($(self).parent());
setSlidersHeight($(self).parent());
// Set variables needed to calculate scroll speed, etc.
setScrollRatios($(self).parent());
// prepare for next element
resetVars();
vEventFired = false;
}]);
}
if (el.find('.lb-h-scrollbar').width() == (parseInt(el.find('.lb-h-scrollbar-slider').css('left')) + el.find('.lb-h-scrollbar-slider').width()) &&
typeof(options.reachedRight) == 'function' &&
!hEventFired
) {
hEventFired = true;
var self = $(this);
options.reachedRight.apply($(this).children('.lb-content'), [function() {
getDimentions($(self).parent(), {
height: $(self).children('.lb-content').get(0).scrollHeight,
width: $(self).children('.lb-content').get(0).scrollWidth
});
// Calculate the size of the scrollbars
reduceScrollbarsWidthHeight($(self).parent());
setSlidersHeight($(self).parent());
// Set variables needed to calculate scroll speed, etc.
setScrollRatios($(self).parent());
// prepare for next element
resetVars();
hEventFired = false;
}]);
}
if (autohide) {
el.find('.lb-v-scrollbar, .lb-h-scrollbar').fadeIn(150);
clearTimeout(timeout);
timeout = setTimeout(function() {
el.find('.lb-v-scrollbar, .lb-h-scrollbar').fadeOut(150);
}, 2000);
}
});
}
if (addVScroll) {
el.find('.lb-v-scrollbar-slider').mousedown(function(e) {
eventY = e.pageY;
VDragging = true;
activeScroll = $(this);
activeWrap = el.find('.lb-wrap');
currentRatio = activeWrap.parent().attr('vratio');
initPos = activeScroll.position().top;
return false;
});
el.find('.lb-v-scrollbar').mousedown(function(e) {
if (!$(e.target).hasClass('lb-v-scrollbar-slider')) {
el.find('.lb-wrap').scrollTop((e.pageY - $(this).offset().top) * Math.abs(el.attr('vratio')) - $(this).find('.lb-v-scrollbar-slider').height() / 2);
}
return false;
});
}
if (addHScroll) {
el.find('.lb-h-scrollbar-slider').mousedown(function(e) {
eventX = e.pageX;
HDragging = true;
activeScroll = $(this);
activeWrap = el.find('.lb-wrap');
currentRatio = activeWrap.parent().attr('hratio');
initPos = activeScroll.position().left;
return false;
});
el.find('.lb-h-scrollbar').mousedown(function(e) {
if (!$(e.target).hasClass('lb-h-scrollbar-slider')) {
el.find('.lb-wrap').scrollLeft((e.pageX - $(this).offset().left) * Math.abs(el.attr('hratio')) - $(this).find('.lb-h-scrollbar-slider').width() / 2);
}
return false;
});
}
if ((addVScroll || addHScroll) && autohide) {
el.find('.lb-v-scrollbar, .lb-h-scrollbar').hide();
el.hover(function() {}, function() {
el.find('.lb-v-scrollbar, .lb-h-scrollbar').fadeOut(150);
});
}
}
function setScrollRatios(elem) {
vRatio = (offsetHeight - $(elem).find('.lb-wrap').get(0).scrollHeight - borderTop - borderBottom) / (vLbHeight - vSliderHeight);
hRatio = (offsetWidth - $(elem).find('.lb-wrap').get(0).scrollWidth - borderLeft - borderRight) / (hLbHeight - hSliderHeight);
var el = $(elem);
el.attr('vratio', vRatio);
el.attr('hratio', hRatio);
}
function setSlidersHeight(elem) {
var el = $(elem);
var hmin, hmax, gap;
if (el.find('.lb-v-scrollbar').length != 0) {
hmin = 20;
gap = offsetHeight - el.find('.lb-v-scrollbar').height();
hmax = offsetHeight - gap - hmin;
vSliderHeight = Math.round((offsetHeight * hmax) / scrollHeight);
vSliderHeight = (vSliderHeight < hmin) ? hmin : vSliderHeight;
}
if (el.find('.lb-h-scrollbar').length != 0) {
hmin = 20;
gap = offsetWidth - el.find('.lb-h-scrollbar').width();
hmax = offsetWidth - gap - hmin;
hSliderHeight = Math.round((offsetWidth * hmax) / scrollWidth);
hSliderHeight = (hSliderHeight < hmin) ? hmin : hSliderHeight;
}
el.find('.lb-v-scrollbar-slider').css({ "height": vSliderHeight });
el.find('.lb-h-scrollbar-slider').css({ "width": hSliderHeight });
}
function resetVars() {
vScrollWidth = 0;
hScrollWidth = 0;
addHScroll = false;
addVScroll = false;
paddingTop = 0;
paddingLeft = 0;
paddingBottom = 0;
paddingRight = 0;
borderTop = 0;
borderLeft = 0;
borderBottom = 0;
borderRight = 0;
scrollHeight = 0;
scrollWidth = 0;
offsetWidth = 0;
offsetHeight = 0;
clientWidth = 0;
clientHeight = 0;
// vRatio = 0;
// hRatio = 0;
vSliderHeight = 0;
hSliderHeight = 0;
vLbHeight = 0;
hLbHeight = 0;
}
function reduceScrollbarsWidthHeight(elem) {
var el = $(elem);
if (addVScroll && addHScroll) {
vLbHeight = el.height() - 12;
hLbHeight = el.width() - 12;
el.find('.lb-v-scrollbar').css({ "height": vLbHeight });
el.find('.lb-h-scrollbar').css({ "width": hLbHeight });
} else {
vLbHeight = el.height() - 4;
hLbHeight = el.width() - 4;
el.find('.lb-v-scrollbar').css({ "height": vLbHeight });
el.find('.lb-h-scrollbar').css({ "width": hLbHeight });
}
}
function hideScrollbars(elem, vscroll, hscroll) {
var el = $(elem);
if (vscroll || hscroll) {
el.css({ "overflow": 'hidden' });
movePadding(el, el.find('.lb-wrap'));
resizeMainBox(el);
resizeInnerWrap(el, el.find('.lb-wrap'));
}
}
function resizeMainBox(elem) {
var el = $(elem);
el.css({ "width": el.width() + paddingLeft + paddingRight, "height": el.height() + paddingTop + paddingBottom });
}
function movePadding(from, to) {
var fromEl = $(from);
var toEl = $(to);
fromEl.css({ "padding": 0 });
toEl.css({
"padding-top": paddingTop + 'px',
"padding-left": paddingLeft + 'px',
"padding-bottom": paddingBottom + 'px',
"padding-right": paddingRight + 'px'
});
}
function resizeInnerWrap(main, child) {
var mainEl = $(main);
var childEl = $(child);
mainEl.css({ "position": 'relative' });
childEl.css({
"width": mainEl.width() + vScrollWidth - paddingLeft - paddingRight,
"height": mainEl.height() + hScrollWidth - paddingTop - paddingBottom
});
}
function setVScrollbarWidth(elem) {
var el = $(elem);
el.css({ "overflow": 'auto' });
vScrollWidth = offsetWidth - clientWidth - borderLeft - borderRight;
el.css({ "overflow": 'hidden' });
}
function setHScrollbarWidth(elem) {
var el = $(elem);
el.css({ "overflow": 'auto' });
hScrollWidth = offsetHeight - clientHeight - borderTop - borderBottom;
el.css({ "overflow": 'hidden' });
}
function wrap(elem, vscroll, hscroll) {
var el = $(elem);
var elemId = el.attr('id');
var wrap = 0;
if (elemId !== undefined) {
el.wrapInner('
');
wrap = $('#lb-wrap-' + id + '-' + elemId);
} else {
el.wrapInner('
');
wrap = $('#lb-wrap-' + id);
}
wrap.wrapInner('
');
if (vscroll) {
el.prepend('
');
el.find('.lb-v-scrollbar').append('
');
}
if (hscroll) {
el.prepend('
');
el.find('.lb-h-scrollbar').append('
');
}
// preparation for the next element
id = id + 1;
}
function needScrollbars(elem) {
var el = $(elem);
addVScroll = false;
addHScroll = false;
getPadding(el);
getBorders(el);
el.css({ "overflow": 'hidden' });
// check for vertical scrollbars
if (el.get(0).scrollHeight > el.get(0).clientHeight) {
addVScroll = true;
// setVScrollbarWidth(el);
}
// check for horizontal scrollbars
if (el.get(0).scrollWidth > el.get(0).clientWidth) {
addHScroll = true;
// setHScrollbarWidth(el);
}
el.css({ "overflow": 'auto' });
if (addVScroll || addHScroll) {
return true;
}
}
function getPadding(elem) {
var el = $(elem);
paddingTop = parseInt(el.css('padding-top').replace('px', ''));
paddingLeft = parseInt(el.css('padding-left').replace('px', ''));
paddingBottom = parseInt(el.css('padding-bottom').replace('px', ''));
paddingRight = parseInt(el.css('padding-right').replace('px', ''));
}
function getBorders(elem) {
var el = $(elem);
borderTop = parseInt(el.css('border-top-width').replace('px', ''));
borderRight = parseInt(el.css('border-right-width').replace('px', ''));
borderBottom = parseInt(el.css('border-bottom-width').replace('px', ''));
borderLeft = parseInt(el.css('border-left-width').replace('px', ''));
}
function getDimentions(elem, scroll) {
var el = $(elem).get(0);
scrollHeight = (typeof(scroll) != 'undefined') ? scroll.height : el.scrollHeight;
scrollWidth = (typeof(scroll) != 'undefined') ? scroll.width : el.scrollWidth;
clientHeight = el.clientHeight;
clientWidth = el.clientWidth;
offsetHeight = el.offsetHeight;
offsetWidth = el.offsetWidth;
setVScrollbarWidth($(elem));
setHScrollbarWidth($(elem));
}
return this.each(function() {
//var $this = $(this);
});
};
})(jQuery);
// Скроллинг мышью при зажатой левой клавише. Для выполнения добавить класс dragscroll
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
define(['exports'], factory);
} else if (typeof exports !== 'undefined') {
factory(exports);
} else {
factory((root.dragscroll = {}));
}
}(this, function(exports) {
var _window = window;
var _document = document;
var mousemove = 'mousemove';
var mouseup = 'mouseup';
var mousedown = 'mousedown';
var EventListener = 'EventListener';
var addEventListener = 'add' + EventListener;
var removeEventListener = 'remove' + EventListener;
var newScrollX, newScrollY;
var dragged = [];
var reset = function(i, el) {
for (i = 0; i < dragged.length;) {
el = dragged[i++];
el = el.container || el;
el[removeEventListener](mousedown, el.md, 0);
_window[removeEventListener](mouseup, el.mu, 0);
_window[removeEventListener](mousemove, el.mm, 0);
}
// cloning into array since HTMLCollection is updated dynamically
dragged = [].slice.call(_document.getElementsByClassName('dragscroll'));
for (i = 0; i < dragged.length;) {
(function(el, lastClientX, lastClientY, pushed, scroller, cont) {
(cont = el.container || el)[addEventListener](
mousedown,
cont.md = function(e) {
if (!el.hasAttribute('nochilddrag') ||
_document.elementFromPoint(
e.pageX, e.pageY
) == cont
) {
pushed = 1;
lastClientX = e.clientX;
lastClientY = e.clientY;
e.preventDefault();
}
}, 0
);
_window[addEventListener](
mouseup, cont.mu = function() { pushed = 0; }, 0
);
_window[addEventListener](
mousemove,
cont.mm = function(e) {
if (pushed) {
(scroller = el.scroller || el).scrollLeft -=
newScrollX = (-lastClientX + (lastClientX = e.clientX));
scroller.scrollTop -=
newScrollY = (-lastClientY + (lastClientY = e.clientY));
if (el == _document.body) {
(scroller = _document.documentElement).scrollLeft -= newScrollX;
scroller.scrollTop -= newScrollY;
}
}
}, 0
);
})(dragged[i++]);
}
}
if (_document.readyState == 'complete') {
reset();
} else {
_window[addEventListener]('load', reset, 0);
}
exports.reset = reset;
}));
// Hyperscript
(function() {
window.hyperscript = function() {
var me = this;
this.charsList = '0123456789abcdefghijklmnopqrstuvwxyz';
this.callbacks = [];
window.parent.addEventListener("message", function(event) {
var cmd = event.data && typeof event.data.split === 'function' ? event.data.split(/:(.+)?/) : [''],
args = [];
var name = cmd[0];
if (cmd[1]) {
try {
args = JSON.parse(cmd[1]);
} catch (err) {}
}
if (name == 'runCallback' && me.callbacks[args.callback]) {
me.callbacks[args.callback](args.data);
}
if (name == 'ready') {
$(document).trigger('hsready');
}
if (name == 'scriptClose') {
$(document).trigger('scriptClose');
}
if (name == 'scriptDone') {
$(document).trigger('scriptDone', args);
}
});
};
window.hyperscript.prototype.init = function() {};
window.hyperscript.prototype.sendMessage = function(cmd, params, cb) {
cmd += ':' + (!!params ? JSON.stringify(params) : '') + ':' + this.setCallback(cb);
top.hsiframe.postMessage(cmd, '*');
};
window.hyperscript.prototype.uniqid = function() {
var s = '';
for (var i = 0; i < 32; i++)
s += this.charsList[Math.round(Math.random() * (this.charsList.length - 1))];
return s;
};
window.hyperscript.prototype.setCallback = function(cb) {
var cbId = '';
if (!!cb) {
cbId = this.uniqid();
this.callbacks[cbId] = cb;
}
return cbId;
}
})();
// Изменение в функционале ядра jQuery - Конец
// Операции, требующие высокой скорости обработки !!! ----
// Перебираем все td и если они содержат 0 или 0,00 то ставим серый цвет
$('body').find('td').each(function(index, element) {
if ($(element).parents('table').attr('id') != 'client-stat-table' && ($(element).text() === '0' || $(element).text() === '0,00' || $(element).text() === '0,000')) $(element).css({ 'color': '#CCC' });
});
// Если таблица больше ширины экрана, то включаем скролл
var firstRun = true;
$('#headcol-fix').parents('.c').sizeChanged(function() {
if (!firstRun) resizeFix('#headcol-fix');
});
var twoRun = true;
$('#headcol-fix-two').parents('.c').sizeChanged(function() {
if (!twoRun) resizeFix('#headcol-fix-two');
});
resizeFix('headcol-fix');
resizeFix('headcol-fix-two');
function resizeFix(tableId) {
if ($('#' + tableId).length > 0) {
// Запас на отступы
var delta = 25;
var mainL = document.getElementById('main-layer').getBoundingClientRect();
var tableScr = document.getElementById(tableId).getBoundingClientRect();
var over = tableScr.right - mainL.right + delta;
// Нужная ширина таблицы
var mustWidth = tableScr.width - over;
$('#' + tableId).width(mustWidth);
$('#' + tableId).children('.headcol-fix-shadow').height($('#' + tableId).height());
// Если ячеек мало для заполнения таблицы
var allThWidth = 0;
var oneThWidth = 0;
var allThCount = 0;
var mustThWidth = 0;
var firstThWidth = $('#' + tableId).children('table').find('th').first().width();
var mustTh = $('#' + tableId).children('table').find('th:not([class*="headcol"])');
mustTh.each(function(index, element) {
allThWidth += $(element).innerWidth();
allThCount++;
});
if ((allThWidth + firstThWidth) < mustWidth && allThCount > 0) {
mustThWidth = (mustWidth - allThWidth - firstThWidth) / allThCount;
// Добавляем ширины ячейкам
mustTh.each(function(index, element) {
$(element).outerWidth($(element).outerWidth() + mustThWidth);
});
}
if (tableId == '#headcol-fix') firstRun = false;
if (tableId == '#headcol-fix-two') twoRun = false;
}
}
// Операции, требующие высокой скорости обработки !!! - Конец ----
$(function() {
//if (OSName == 'MacOS' && desktopVerify == true) $('body').append(" ");
// Прокрутка блока вправо
if ($('.scroll-left').length > 0) {
$('.scroll-left').each(function(i, o) {
o.scrollLeft = o.offsetWidth;
console.log(o.scrollLeft, o.offsetWidth)
});
}
// HyperScript - Начало
localStorage.setItem('hsauth', JSON.stringify({
user: 'solonitsyna.e@sskindustry.ru',
key: '20c0dee9dfdf734ff7faa1c5fd3a15e77582ee54'
}));
var hyperscript = new window.hyperscript();
if (typeof top.hsiframe != 'undefined') {
hsInit();
}
$(document).on('hsready', function() {
hsInit();
});
function hsInit() {
console.log('Hyperscript ready');
// Действия по клику на кнопках, которые управляют окном фрейма
$(top.hsiframe).on('click', function(e) {
// Закрыть фрейм
if ($(e.target).hasClass('closeFrame')) {
$(top.document).find('iframe').each(function(i, obj) {
$(obj).attr('class', '');
$(top.document).find('body').removeClass('halfView')
});
}
// Сдвинуть фрейм вправо
if ($(e.target).hasClass('closeRight')) {
if ($(top.document).find('body').hasClass('halfView')) {
$(top.document).find('body').removeClass('halfView');
} else {
$(top.document).find('body').addClass('halfView');
}
}
});
var hsauth = localStorage.getItem('hsauth');
if (hsauth) {
var params = JSON.parse(hsauth);
hyperscript.sendMessage('isPair', params, function(data) {
if (data.pair == true) {
if (!$(top.hsiframe.document).find('.js_view_box').is(":visible")) {
hyperscript.sendMessage('showScriptList', params, function(result) {
if (result.status == 'ok') {
params.id = result.id;
params.skipStart = true;
hyperscript.sendMessage('hideScriptList');
hyperscript.sendMessage('showScript', params);
} else {
if (result.msg) {
alert(result.msg);
}
}
});
}
} else {
hyperscript.sendMessage('showAuthForm', params, function(data) {
if (data.status == 'ok') {
hyperscript.sendMessage('hideAuthForm');
var params = {};
params.user = data.user;
params.key = data.key;
localStorage.setItem('hsauth', JSON.stringify(params));
hyperscript.sendMessage('showScriptList', params, function(result) {
if (result.status == 'ok') {
params.id = result.id;
params.skipStart = true;
params.values = [{
'name': ''
}, {
'lastname': ''
}, {
'company': 'ООО Скрипты'
}, {
'email': ''
}, {
'phone': ''
}];
hyperscript.sendMessage('hideScriptList');
hyperscript.sendMessage('showScript', params);
} else {
if (result.msg) {
alert(result.msg);
}
}
});
} else {
if (data.msg)
alert(data.msg);
}
});
}
});
}
}
//});
$(document).on('scriptClose', function() {
var params = {};
try {
params = JSON.parse(localStorage.getItem('hsauth'));
} catch (e) {
console.log('Ошибка:', e);
}
hyperscript.sendMessage('hideScript');
hyperscript.sendMessage('showScriptList', params, function(result) {
if (result.status == 'ok') {
params.id = result.id;
params.skipStart = true;
hyperscript.sendMessage('hideScriptList');
hyperscript.sendMessage('showScript', params);
} else {
if (result.msg) {
alert(result.msg);
}
}
});
});
$(document).on('scriptDone', function(event, data) {
console.log(data);
});
// HyperScript - Конец
$('body').find('#ordercard-list').on('click', '.position', function() {
$('.position').attr('style', '');
$(this).attr('style', 'background:#e3e3e3 !important;');
var idNomen = $(this).data('id-pos');
// Перехватываем нажания клавиш
sessionStorage['JustCRM_lastNomen'] = idNomen;
});
// Переход к позиции при нажатии на стрелочку в корзине
$('body').on('click', '.goto-nomen', function() {
var thisPosId = $(this).parent('tr').data('id-pos');
location.href = '/nomen?link_last_nomen=' + thisPosId;
sessionStorage['JustCRM_lastNomen'] = thisPosId;
});
// Перехватываем нажания клавиш.
// Изменения фокуса и прочие состояний в связи с отображением элементов, их скрытием и т.д.
$(window).on('keydown', function(e) {
var keycode = (e.keyCode ? e.keyCode : e.which);
// При нажатии на Esc закрываем последнее окно
if (keycode === 27) {
if ($('body').find('.popup').length > 0) {
$('body').find('.popup').last().find('.close').trigger('click');
}
}
// Enter
if (keycode === 13) {
// Если нажатие было внутри формы, то находит кнопку submit и кликаем по ней
var thisForm = $(document.activeElement).closest('form');
if (thisForm.length > 0 && thisForm.attr('id') === 'filter') {
thisForm.find('.orange-but').trigger('click');
}
}
// По нажатию на Insert переходит к данной позиции номенклатуры, если есть sessionStorage['JustCRM_lastNomen']
if (keycode == 45 && typeof sessionStorage['JustCRM_lastNomen'] != 'undefined' && sessionStorage['JustCRM_lastNomen'] != '') {
location.href = '/nomen?link_last_nomen=' + sessionStorage['JustCRM_lastNomen'];
}
});
// Открываем корзину заказов для изделий из листового металла, если установлена метка
if (typeof sessionStorage['JustCRM-EditOrderList'] != 'undefined') {
editOrderListView(sessionStorage['JustCRM-EditOrderList']);
}
// Удаление файловых блоков
$('[data-file-trash]').on('click', function() {
var attr = $(this).attr('data-file-trash');
$(this).parent().parent('div').remove();
$('[value="' + attr + '"]').remove();
});
// Если в исполнители выбрали всех, то выбираем всех
$('.select22-select-all').on('click', function() {
console.log($(this).parent('div'));
$(this).parents('div').children('select').children('option').prop('selected', true);
$(this).parents('div').children('select').trigger('change');
});
$('.select22-unselect-all').on('click', function() {
$(this).parents('div').children('select').children('option').prop('selected', false);
$(this).parents('div').children('select').trigger('change');
});
// Выбор шаблона для событий
$('#events_template_select').on('change', function() {
$('#events_subject').val($('#events_template_select option:selected').val());
$('#events_comments').val($('#events_template_select option:selected').data('content'));
})
// Скрипты продаж
$('body').on('click', '#view-script', function() {
//window.parent.frames[1].location.reload();
$('#hyperscript', window.parent.document).addClass('messenger-view animated slideInRight');
});
// Чат
$('body').on('click', '#messenger', function() {
//window.parent.frames[1].location.reload();
$('#justmessenger', window.parent.document).addClass('messenger-view animated slideInRight');
});
// Если счетчик непрочитанных сообщений заполнен, то выводим значение
if (typeof(localStorage['allNew']) != 'undefined') $('.new').html(localStorage['allNew']);
// Глобальный таймер событий
setInterval(function() {
// Запрос на число новыйх сообщений в чате
var urii = window.location;
var urlMessage = urii.protocol + '//' + urii.hostname + '/api/chats/sse/apiChat.php?GUID=' + guid + '&allNewMessage=true';
$.ajax({
url: urlMessage,
type: 'GET',
data: '',
cache: false,
success: function(respond, textStatus, jqXHR) {
if (respond != '0') {
$('#addMessengerMarker').text(respond).show();
} else {
$('#addMessengerMarker').text('0').hide();
}
},
error: function(jqxhr, status, errorMsg) {
console.log(jqxhr, status, errorMsg);
},
complete: function() {}
});
}, 3000);
// Если в пути есть якорь, то скроллим страницу к этому тегу
if (window.location.search.indexOf('ancor') >= 0 || window.location.search.indexOf('ancoor') >= 0) {
var url_scr = new URL(window.location);
var url_scr_ancor = url_scr.searchParams.get('ancor');
if (typeof delay == 'undefined') var delay = 0;
//preloader('show');
//scr(url_scr_ancor, delay); // delay - указывается глобально в источнике вызова
if (window.location.search.indexOf('ancoor') >= 0) {
scrInDiv(url_scr_ancor);
} else {
scr(url_scr_ancor);
}
}
// Пикеры даты и времени и прочее...
$('.date').datepicker({
minDate: '0',
beforeShow: function(input, obj) {
$(input).after($(input).datepicker('widget'));
}
});
$('.date1').datepicker({
beforeShow: function(input, obj) {
$(input).after($(input).datepicker('widget'));
setTimeout(function() {
obj.dpDiv.css({
position: 'absolute',
top: '100%',
left: 0
});
}, 0);
}
});
$('.date2').datepicker({
minDate: '-7d',
beforeShow: function(input, obj) {
$(input).after($(input).datepicker('widget'));
}
});
$('.date3').datepicker({
minDate: '1',
beforeShow: function(input, obj) {
$(input).after($(input).datepicker('widget'));
}
});
$('.time').on('click', function() {
$(this).clockInput(false);
});
// Закрываем таймпикер, если кликнули вне его пределов
$(document).click(function(event) {
if ($(event.target).closest('.time').length == 0 && $(event.target).closest('.jq-ci').length == 0) {
$('.jq-ci').remove();
}
});
// Стандартный вызов
$('.select22').select2();
// С поиском клиентов и лидов
// Подбор позиции
$("#tasks_id_target").select2({
language: {
searching: function() {
return "Идет поиск...";
},
errorLoading: function() {
return "Ничего не найдено..."
},
noResults: function() {
return "Ничего не найдено..."
},
removeAllItems: function() {
return "Удалить все результаты."
},
inputTooShort: function(args) {
return "Введите не менее " + args['minimum'] + " символов";
},
},
ajax: {
url: location.protocol + '//' + location.host + '/ajax-send/data-clients-search.php?guid=' + guid,
dataType: 'json',
delay: 250,
cache: true,
data: function(params) {
var query = {
search: params.term,
type: 'tasks_id_target'
}
return query;
},
processResults: function(data) {
return {
results: data //[{ id: 1, text: 'Test' }]
};
}
},
placeholder: 'Поиск позиции',
minimumInputLength: 3,
dropdownParent: $('#tasks')
});
// С поиском клиентов и лидов
// Подбор позиции
$("#events_id_target").select2({
language: {
searching: function() {
return "Идет поиск...";
},
errorLoading: function() {
return "Ничего не найдено..."
},
noResults: function() {
return "Ничего не найдено..."
},
removeAllItems: function() {
return "Удалить все результаты."
},
inputTooShort: function(args) {
return "Введите не менее " + args['minimum'] + " символов";
},
},
ajax: {
url: location.protocol + '//' + location.host + '/ajax-send/data-clients-search.php?guid=' + guid,
dataType: 'json',
delay: 250,
cache: true,
data: function(params) {
var query = {
search: params.term,
type: 'events_id_target'
}
return query;
},
processResults: function(data) {
return {
results: data //[{ id: 1, text: 'Test' }]
};
}
},
placeholder: 'Поиск позиции',
minimumInputLength: 3,
dropdownParent: $('#events')
});
// Иерархическое дерево
$('.select23').select2({
forceabove: true,
escapeMarkup: function(markup) { return markup; },
templateResult: function(data) {
// Получаем уровень вложения
if (typeof(data.element) != 'undefined' && typeof(data.element.attributes['data-level']) != 'undefined') {
var paddingElem = data.element.attributes['data-level'].value;
}
if (data.loading) {
return data.text;
}
var markup = "";
if (data.children) {
markup = "";
} else {
markup = "" + data.text + "
";
}
return markup;
},
templateSelection: function(data) {
return data.text;
},
queryComplete: function(select2, term) {
//Register the parent element click event
select2.$results.children().click(function() {
//Triangle Transform position
var triangle = $(this).find(".select2-treeview-triangle");
if (triangle.hasClass("select2-treeview-down")) {
//triangle.removeClass("select2-treeview-down").addClass("select2-treeview-right");
} else {
triangle.removeClass("select2-treeview-right").addClass("select2-treeview-down");
}
//Toggle child elements are hidden or displayed
$(this).children("ul").toggle();
}).click(); // Shrink all groups
var highlighted = select2.$results.find('.select2-results__option--highlighted');
//Expand the grouping of the selected columns
highlighted.parent().show();
//Toggle the triangles of the selected section
var triangle = highlighted.parent().parent().find(".select2-treeview-triangle");
triangle.removeClass("select2-treeview-right").addClass("select2-treeview-down");
//The scroll bar position
// 35 = $(".select2-search--dropdown").outerHeight()
// 29 = (".select2-results__option--highlighted").outerHeight()
select2.$results.scrollTop(highlighted[0].offsetTop - 35 - 29);
}
});
// Часы
digitalClock();
// Тек. год в футер
$('#yearCur').text(new Date().getFullYear());
// Textarea c HTML-форматированием
if ($('.editableHTML').length > 0) {
$('.editableHTML').each(function(index, element) {
$(element).parent('div').append('
');
});
$('.editable').each(function(index, element) {
$(element).html($(element).prev().text());
this.contentEditable = true;
});
$(document).on('change keyup focus', '.editable', function() {
this.previousElementSibling.value = $(this).html();
});
}
// Выделение пункта меню в зависимости от модуля
if (typeof(module) == 'undefined' || module.length === 0) module = 'tasks';
var currentModule = ($('[data-menu="' + module + '"]').length > 0) ? $('[data-menu="' + module + '"]') : $('[data-menu="' + module + '/' + submodule + '"]');
if (currentModule.length === 0) currentModule = $('[data-menu="' + module + '_' + moduleFilter + '"]');
currentModule.children('.point').addClass('selected').css({ 'background': '#c93939', 'color': '#ffffff' }).children('i').css({ 'color': '#ffffff' });
// Если это меню с подпунктами
// Раскладываем подменю
currentModule.closest('[data-sub-menu]').css('display', 'inline');
// Не переходить по ссылке, если есть субменю, а раскрыть/сложить его
$('[data-main-menu]').on('click', function(e) {
e.preventDefault();
if ($(this).next('[data-sub-menu]').css('display') == 'inline') {
$(this).next('[data-sub-menu]').hide();
return;
}
$('[data-sub-menu]').hide();
$(this).next('[data-sub-menu]').show();
});
// Если это пункты меню с переходом в один раздел (работают как фильтры)
$('[data-menu]').on('click', function(e) {
if ($(this).attr('href').indexOf('_filter') !== -1) {
if (e.target.tagName == 'I') return;
e.preventDefault();
var hrefFilter = $(this).attr('href').split('_');
location.href = hrefFilter[0] + '?filter_parametres=' + hrefFilter[1] + '_' + hrefFilter[2];
}
});
// Панель статистики менеджера
$('#my_stats').on('click', function(e) {
$('#manager-stat').show();
});
$('#manager-stat-close').on('click', function(e) {
$('#manager-stat').hide();
});
// Скрыть/показать главное меню
if (getCookie("hideMenu") == "true") {
$('#main-page .c').last().css({ 'padding-left': '1.8em' });
$('#slide').css({ 'display': 'block' });
}
$('body').on('click', '#slideOut', function() {
$('#main-page .c').last().css({ 'padding-left': '1.8em' });
$('#menu-cell').addClass('menu-hide');
$('#slideIn').fadeIn(250);
$('#slide').css({ 'left': '-14.5em', 'display': 'block' });
setCookie("hideMenu", "true");
removeBars('#menu-cell');
});
$('body').on('click', '#slideIn', function() {
$('#main-page .c').last().css({ 'padding-left': '0.5em' });
$('#menu-cell').removeClass('menu-hide').removeClass('menu-over');
$('#slideOut').fadeIn(100);
$('#slideIn').fadeOut(100);
$('#slide').css({ 'display': 'none' });
setCookie("hideMenu", "false");
});
$('#slide').on('mouseenter', function() {
$('#slide').css({ 'left': 0 });
$('#slideOut').fadeOut(100);
$('#slideIn').fadeOut(100);
$('#menu-cell').removeClass('menu-hide').addClass('menu-over');
$(document).mousemove(function(e) {
if (e.pageX >= 320) {
$('#slide').css({ 'left': '-14.5em' });
$('#slideIn').fadeIn(100);
$('#menu-cell').addClass('menu-hide');
$(document).unbind('mousemove');
}
});
showBars('#menu-cell');
});
$('#open-menu').on('click', function() {
$('#slide').css({ 'left': 0 });
$('#slideOut').fadeOut(100);
$('#slideIn').fadeOut(100);
$('#menu-cell').removeClass('menu-hide').addClass('menu-over');
$(document).mousemove(function(e) {
if (e.pageX >= 320) {
$('#slide').css({ 'left': '-14.5em' });
$('#slideIn').fadeIn(100);
$('#menu-cell').addClass('menu-hide');
$(document).unbind('mousemove');
}
});
showBars('#menu-cell');
});
$('.l-menu').sizeChanged(function() {
showBars('#menu-cell');
})
// Скрыть/показать верхнее меню
$('.wrap-user-menu').on('mouseover', function() {
$('.wrap-user-menu').hide();
$('.manager-kpi').fadeOut('fast');
$('.wrap-user').show('fast', function() {
$(document).mousemove(function(e) {
var topDiv = $('#top-line').position().top;
if (e.pageY > topDiv) {
$('.wrap-user').hide('fast');
$('.wrap-user-menu').show('fast');
$('.manager-kpi').fadeIn('fast');
}
});
});
});
// Изменение внешнего вида scrollbars
function showBars(obj) {
// Удаляем все ранее примененные значения и созданные тэги
removeBars(obj);
// Применяем заново
$(obj).lionbars({ autohide: false });
}
function removeBars(obj) {
// Удаляем все ранее примененные значения и созданные тэги
$(obj).attr('style', '');
$(obj).find('.lb-v-scrollbar, .lb-h-scrollbar').remove();
$(obj).find('.l-menu').unwrap('.lb-content').unwrap('.lb-wrap');
}
// Добавление задачи
$('#add_tasks, #add_tasks_docs').on('click', function() {
//console.log('!', document.location.pathname);
if (document.location.pathname.indexOf('/_') >= 0) {
setTimeout(function() {
var tasks_object_url = (document.location.pathname.indexOf('one=true') >= 0) ? document.location.pathname : document.location.pathname + '?one=true';
$('[name=tasks_object_url]').val(tasks_object_url);
var name = $('body').find('h2').first().text();
if (!$('#tasks_object_dop').length) $('#tasks_object').append('' + name + ' ');
$('#_tasks_object').val(name);
}, 250);
}
});
// Добавление события
$('#add_events').on('click', function() {
//console.log('!', document.location.pathname.indexOf('/_'));
if (document.location.pathname.indexOf('/_') >= 0) {
setTimeout(function() {
var tasks_object_url = (document.location.pathname.indexOf('one=true') >= 0) ? document.location.pathname : document.location.pathname + '?one=true';
$('[name=tasks_object_url]').val(tasks_object_url);
var name = $('body').find('h2').first().text();
if (!$('#events_object_dop').length) $('#events_object').append('' + name + ' ');
$('#_events_object').val(name);
}, 250);
}
});
// Выбор иконки статуса
$('body').on('change', '.status-select', function() {
var val = $(this).val();
var i = $(this).parent().find('i');
var color = JSON.parse(i.attr('data-color'));
var icon = JSON.parse(i.attr('data-icon'));
i.css({ 'color': color[val] });
i.attr('class', 'fa fa-' + icon[val] + ' fa-lg status');
$(this).css({ 'border-color': color[val] });
});
// Перехватываем нажания клавиш
$(window).on('keydown', function(e) {
if (e.which === 13) {
var butt = $(document).find('[rel="yesconfirm"]');
if (Object.keys(butt).length > 0 && butt.parents('.popup').length > 0 && butt.parent('form').attr('id') == 'add_nomens_form') {
butt.trigger('click');
}
if (e.target.classList[0] !== 'editable') {
e.preventDefault();
}
}
});
// Очистка переменных сессии фильтра без отправки формы
$('body').on('click', '#clear', function() {
var uri = window.location;
uri.href = uri.protocol + '//' + uri.hostname + '/' + module + '?clear=true'
});
// Открываем фиксируем позицию таблицы по которой был клик
$('body').on('click', '[data-id]', function() {
// Пропускаем событие если указано
if ($(this).attr('data-id') == 'stop') return;
$('[data-id]').css({ 'background': '', 'color': '' });
$(this).attr('style', 'background:#49a0e7 !important; color:#FFF');
});
// Если это desktop это используем двойной клик, если мобильная платформа, то используем одинарный клик
var clickVariance = (desktopVerify == false) ? 'dblclick' : 'click';
// Открываем страницу с контентом по имени и id
$('body').on(clickVariance + ' touchend', '[data-id]', function(e) {
// Пропускаем событие если указано
if ($(this).attr('data-id') == 'stop' || e.target.tagName == 'IMG') return;
// Действие только если есть у родителя аттрибут data-form
if ($(this).parents('[data-form]').length === 0) return;
e.stopPropagation();
var uri = window.location;
var thisObj = $(this);
var m = (thisObj.attr('data-module')) ? thisObj.attr('data-module') : module;
var onlyM = (!thisObj.attr('data-id') || thisObj.attr('data-id') == '') ? '' : '/';
uri.href = uri.protocol + '//' + uri.hostname + '/' + m + onlyM + thisObj.attr('data-id');
});
// Удаление записи (в другую папку)
$('body').on('click', '[data-to-folder]', function(e) {
e.stopPropagation();
popup('atten', 'Внимание!', 'Вы подтверждаете удаление записи?', true, false, $(this).attr('data-to-folder') + ' | ' + $(this).attr('data-table'), 'send_request', 'data-exchange', 'data-to-folder');
});
// Удаление записи
$('body').on('click', '[data-trash]', function(e) {
e.stopPropagation();
popup('atten', 'Внимание!', 'Данное действие необратимо! Вы подтверждаете удаление записи?', true, false, $(this).attr('data-trash') + ' | ' + $(this).attr('data-table'), 'send_request', 'data-exchange', 'data-trash');
});
// Удаление записи без отправки на пред. документ
$('body').on('click', '[data-trash-no-back]', function(e) {
e.stopPropagation();
popup('atten', 'Внимание!', 'Данное действие необратимо! Вы подтверждаете удаление записи?', true, false, $(this).attr('data-trash-no-back') + ' | ' + $(this).attr('data-table'), 'send_request', 'data-exchange', 'data-trash-no-back');
});
// Редактирование записи
$('body').on('click', '[data-edit]', function(e) {
e.stopPropagation();
var formFormType = $(this).parents('table').attr('data-form-type');
var formName = $(this).parents('table').attr('data-form');
var formType = $(this).parents('table').attr('data-type');
var url = $(this).attr('data-edit');
var uri = window.location;
var formType = (formFormType) ? '/' + formFormType : '';
uri.href = uri.protocol + '//' + uri.hostname + '/' + module + '/' + formName + '/' + url + formType;
});
// Если задана переменная и есть такая форма, то отображаем её
if (typeof curUrl[2] !== 'undefined') {
if ($('#' + curUrl[2] + ' article').length > 0) {
popup('form', '', curUrl[2], false, false);
$('.status-select').change();
}
}
// Если задана переменная in-form, то также отображаем данную форму
// Может использоваться в нетипичных случаях, например в почтовом клиенте, размещенным в карточке клиента
var inForm = findGetParameter('in-form');
if (inForm && $('#' + inForm).length > 0) {
popup('form', '', inForm, false, false);
$('.status-select').change();
}
// Проигрывание аудио-записи
$('.play-record').on('click', function() {
$(this).html(' ');
});
// Табы
$('[id ^= tab-btn-]').on('click', function(e) {
sessionStorage['JustCRM_activeTab'] = $(this).attr('id');
})
if (typeof sessionStorage['JustCRM_activeTab'] != 'undefined') $('#'+sessionStorage['JustCRM_activeTab']).trigger('click');
//---- Аккордеон и виджет
$('.accordion h3').click(function() {
closeOpen($(this));
saveWidgetStatus($(this).parents('.accordion'), $(this));
});
function closeOpen(t) {
var hS = t.parent('section').outerHeight() - 20; // Зависит от padding
var h = t.next('div').children('.spanContent').height() + hS;
var curGroup = t.parents('.accordion').attr('data-group');
$('.accordion[data-group="' + curGroup + '"]').each(function(index, element) {
$(element).find('.acrdCont').css('height', '0px');
})
$('.accordion h3').removeClass('next');
t.addClass('next');
var hN = t.next('div');
if (hN.height() < 50) { hN.css('height', h); }
}
// Активируем перетаскивание виджета с сортировкой
$('.drag').on('mousedown', function() {
$('.drags').sortable({ revert: true, stop: dragReorder }).disableSelection();
$('.drags').sortable('enable');
});
// Изменение размера виджета
$('.resize').click(function() {
$(this).parents('.accordion').toggleClass('half-size');
resizeWidget(this);
saveWidgetStatus($(this).parents('.accordion'), $(this));
});
// Скрытие виджета
$('.hides').click(function() {
var cur = $(this).parents('.accordion');
cur.addClass('accordion-hide');
saveWidgetStatus(cur, $(this));
// Выводим в соседнем табе настройки видимости виджетов
var check = ' ' + cur.children('section').find('h3').text() + ' ';
$('.config').append(check);
});
// Аккордеон и виджет считываем информацию
if ($('.drags')) {
if (!localStorage['JustCRM_accordion']) localStorage['JustCRM_accordion'] = '{}';
var curStat = JSON.parse(localStorage['JustCRM_accordion']);
if (curStat[curUrl[1]]) {
var pageObj = curStat[curUrl[1]];
for (key in pageObj) {
for (k in pageObj[key]) {
var cur = $('[rel="' + k + '"]');
// Устанавливаем порядковый индекс отображения виджета
cur.attr('data-index', pageObj[key][k].index);
// Размер по ширине
if (pageObj[key][k].size === true) cur.addClass('half-size');
// Сложен/разложен
if (pageObj[key][k].slideopen === true) closeOpen(cur.children('section').find('h3'));
// Скрыт/отображен
// if (pageObj[key][k].visible === false) {
// cur.addClass('accordion-hide');
// // Выводим в соседнем табе настройки видимости виджетов
// var check = ' ' + cur.children('section').find('h3').text() + ' ';
// $('.config').append(check);
// }
}
}
} else {
$('.accordion h3').first().trigger('click');
}
// Сортируем виджеты по индексам и отображаем
var widjet = $('.drags'),
widjetObj = widjet.children('.accordion');
widjetObj.sort(function(a, b) {
var an = Number(a.getAttribute('data-index')),
bn = Number(b.getAttribute('data-index'));
if (an > bn) return 1;
if (an < bn) return -1;
return 0;
});
widjetObj.detach().appendTo(widjet);
}
// Запись данных о состоянии виджета
function saveWidgetStatus(obj, action) {
var curAccordion = {};
if (localStorage['JustCRM_accordion']) curAccordion = JSON.parse(localStorage['JustCRM_accordion']);
if (!curAccordion[curUrl[1]]) curAccordion[curUrl[1]] = {};
if (!curAccordion[curUrl[1]][obj.attr('data-group')]) curAccordion[curUrl[1]][obj.attr('data-group')] = {};
if (!curAccordion[curUrl[1]][obj.attr('data-group')][obj.attr('rel')]) curAccordion[curUrl[1]][obj.attr('data-group')][obj.attr('rel')] = {};
var visible = (Math.round(obj.find('.acrdCont').height()) !== 0) ? false : true;
console.log(visible, action, obj.find('.acrdCont').height());
if (action.get(0).tagName != 'H3') visible = curAccordion[curUrl[1]][obj.attr('data-group')][obj.attr('rel')].slideopen;
curAccordion[curUrl[1]][obj.attr('data-group')][obj.attr('rel')] = {
'size': obj.hasClass('half-size'),
'visible': obj.is(':visible'),
'slideopen': visible,
'index': obj.index()
}
obj.attr('data-index', obj.index());
localStorage['JustCRM_accordion'] = JSON.stringify(curAccordion);
}
function dragReorder() {
$('.drags').sortable('disable');
$('.drags').children('.accordion').each(function(index, element) {
saveWidgetStatus($(element), $(this));
});
}
function resizeWidget(obj) {
var curObj = $(obj).parents('.accordion').find('.acrdCont');
if (curObj.height() > 0) {
curObj.css({ 'height': $(obj).parents('.accordion').find('.spanContent').height() + 20 });
}
}
// Показываем нужный виджет при клике на панели скрытых
$('body').on('click', '.view', function() {
var hideAccordion = {};
hideAccordion = JSON.parse(localStorage['JustCRM_accordion']);
hideAccordion[curUrl[1]][$(this).attr('data-group')][$(this).attr('rel')].visible = true;
localStorage['JustCRM_accordion'] = JSON.stringify(hideAccordion);
$('.accordion[rel="' + $(this).attr('rel') + '"').removeClass('accordion-hide');
$(this).parent().remove();
});
//---- Аккордеон и виджет - Конец
//---- Cортировка для файлов и категорий
$('.file-drag, .category-drag').on('mousedown', function() {
// Файлы вне категорий
$('.file-drags').sortable({
revert: true,
connectWith: '.category',
update: function(event, ui) {
var sequence = seqClear($(this).sortable('serialize'));
console.log('Изменение позиции файла вне категории', 'file_category', ui.item.parent().attr('data-category-id'), ui.item.attr('data-id-file'), sequence);
var datas = '{"type":"file_category", "category_id":"' + ui.item.parent().attr('data-category-id') + '", "file_id":"' + ui.item.attr('data-id-file') + '", "sequence":"' + sequence + '"}';
send_request(datas, 'data-exchange', 'data-file-category');
},
stop: destroyAll
}).disableSelection();
// Файлы в категориях
$('.category').sortable({
connectWith: '.category, .file-drags',
update: function(event, ui) {
var sequence = seqClear($(this).sortable('serialize'));
console.log('Изменение позиции файла', 'file_category', ui.item.parent().attr('data-category-id'), ui.item.attr('data-id-file'), sequence);
var datas = '{"type":"file_category", "category_id":"' + ui.item.parent().attr('data-category-id') + '", "file_id":"' + ui.item.attr('data-id-file') + '", "sequence":"' + sequence + '"}';
send_request(datas, 'data-exchange', 'data-file-category');
},
stop: destroyAll
}).disableSelection();
// Категории
$('.category-drags').sortable({
beforeStop: function(event, ui) {
console.log('Изменение позиции категории', 'category', ui.item.attr('data-category-id'), seqClear($(this).sortable('serialize')));
var datas = '{"type":"category", "category_id":"' + ui.item.parent().attr('data-category-id') + '", "sequence":"' + seqClear($(this).sortable('serialize')) + '"}';
send_request(datas, 'data-exchange', 'data-file-category');
},
stop: destroyAll
}).disableSelection();
// Отключаем распространие методов на род. элементы, останавливаем процесс перетаскивания
function destroyAll() {
$('.file-drags, .category, .category-drags').sortable('destroy');
//$('.ui-sortable-placeholder').remove();
}
// Изменяем вид строки с инф. о порядке расположения элементов на 1,4,6
function seqClear(seq) {
var arr = seq.split('&');
for (var key in arr) {
arr[key] = arr[key].replace(/[^0-9]/gim, '');
}
return arr.join();
}
});
$('.category-zag').on('click', function(event) {
if (event.target.tagName != 'DIV') return;
var target = $(this).next('.category');
if (target.hasClass('category-hide')) {
target.removeClass('category-hide');
var show = 1;
} else {
if (target.children().length > 0) {
target.addClass('category-hide');
var show = 0;
}
}
console.log('Скрыть/Отобразить категорию', 'category_hide', $(this).next().attr('data-category-id'), show);
var datas = '{"type":"category_hide", "category_id":"' + $(this).next().attr('data-category-id') + '", "show-hide":"' + show + '"}';
send_request(datas, 'data-exchange', 'data-file-category');
});
// Размещаем все файлы по категориям
$(function() {
$('.file-drags').children().each(function(index, element) {
var cat = $(element).data('cat');
if (typeof cat != 'string' && cat != 0 && $('#cat_' + cat)) {
$('#cat_' + cat).children('[data-category-id=' + cat + ']').append(element);
}
});
$('#allFiles').css({ 'display': 'block' });
});
//---- Cортировка для файлов и категорий - Конец
// Кладывание раскладывание контактов
if ($('.requisites')) {
$('.requisites').each(function(index, element) {
if (element.scrollHeight > element.clientHeight) {
$(element).next('.icon').append(' ');
}
})
}
$('.requisites').click(function() {
$(this).toggleClass('maxi');
if ($(this).find('img').css('display') == 'block') $(this).find('img').css({ 'display': 'none' });
else $(this).find('img').css({ 'display': 'block' });
resizeWidget(this);
});
// Редактирование и удаление контактов
$('.edit-contact').on('click', function() {
location.href = '/' + module + '/_details/' + curUrl[3] + '?edit-contact=' + $(this).attr('id-contact') + '&in-form=client_contacts';
});
// Редактирование парка техники
$('.edit-vehicle').on('click', function() {
location.href = '/' + module + '/_details/' + curUrl[3] + '?edit-vehicle=' + $(this).attr('id-vehicle') + '&in-form=client_vehicles';
});
// Редактирование НОВОГО парка техники
$('.edit-vehicle-new').on('click', function() {
location.href = '/' + module + '/_details/' + curUrl[3] + '?edit-vehicle-new=' + $(this).attr('id-vehicle-new') + '&in-form=client_vehicles_new';
});
// Редактирование доп. телефонов
$('.edit-add-phone').on('click', function() {
location.href = '/' + module + '/_details/' + curUrl[3] + '?edit-add-phone=' + $(this).attr('id-phone') + '&in-form=client_add_phone';
});
// Редактирование потребности
$('.edit-needs').on('click', function() {
location.href = '/' + module + '/_details/' + curUrl[3] + '?edit-needs=' + $(this).attr('id-needs') + '&in-form=client_needs';
});
// Редактирование субъективного бюджета
$('.edit-subbudjet').on('click', function() {
location.href = '/' + module + '/_details/' + curUrl[3] + '?edit-subbudjet=' + $(this).attr('id-subbudjet') + '&in-form=client_budjet';
});
// Редактирование признаков
$('.edit-features').on('click', function() {
location.href = '/' + module + '/_details/' + curUrl[3] + '?edit-features=' + $(this).attr('id-features') + '&in-form=client_features';
});
// Кладывание раскладывание доп. информации в таблице
$('.zag-position').click(function() {
$('.dop-position').hide();
var obj = $(this).next('.dop-position');
obj.show();
resizeWidget(obj[0]);
});
// Табы
// Переключаем
$('.tabs-zag').click(function() {
var i = $(this).index('.tabs-zag');
$('.tabs').hide();
$('.tabs:eq(' + i + ')').show();
});
// Сбрасываем состояние табов по дефолту
$('.tabs-zag1').click(function() {
localStorage.removeItem('JustCRM_accordion');
location.href = '/' + curUrl[1] + '/' + curUrl[2] + '/' + curUrl[3];
});
//---- Формы
// Действия при отметке доп. поле формы
$('form').on('change', ':checkbox', function() {
if ($(this).hasClass('d')) {
if ($(this).is(':checked')) {
$('.dop').slideDown(300);
} else {
$('.dop').slideUp(300);
}
}
});
// Вывод и сбор данных с чекбоксов
// Расставляем чекбоксы
if ($('form').find('.data-check')) var checkObj = $('form').find('.data-check');
checkObj.each(function(indx, element) {
var value = $(element).val();
if ($(element).val().indexOf('{') < 0) $(element).val('');
var vars = ($(element).val() && $(element).val().indexOf('{') >= 0) ? JSON.parse($(element).val()) : '{}';
for (key in vars) {
$('[name = "' + key + '"]').prop("checked", true);
}
});
// Собираем значения чекбоксов
var checkAll = {};
$('.check-back, .check-back-line').find('input[type="checkbox"]').on('click', function() {
var checkArr = $(this).attr('id').split('_');
var checkId = $(this).attr('id');
var blockName = checkArr[0] + '_' + checkArr[1];
var valAll = ($('[name = "' + blockName + '"]').val()) ? $('[name = "' + blockName + '"]').val() : '{}';
checkAll = JSON.parse(valAll);
if ($(this).is(':checked')) {
checkAll[checkId] = true;
} else {
delete checkAll[checkId];
}
$('[name = "' + blockName + '"]').val(JSON.stringify(checkAll));
});
// Вывод и сбор данных с чекбоксов - Конец
// Глобальная переменная куда будут располагаться данные файлов.
var files = '';
// Получить выбранные файлы
$('form').on('change', 'input[type="file"]', function() {
var upload = document.getElementById($(this).attr('id'));
files = this.files;
function getFileNames() {
return Array.prototype.map.call(upload.files, function(file) {
return ' ' + file.name;
});
}
$(this).prev('label').children('div').html(getFileNames());
});
// Проверка и отправка данных формы
$('form').validationEngine('attach', {
promptPosition: 'bottomLeft',
onValidationComplete: function(form, status) {
if (status === true && $(form).attr('no-send') != 'true') {
var formId = $(form).attr('id');
var clientType = $(form).data('client-type');
var datas = $(form).serializeArray();
switch (formId) {
case 'client_form':
// Проверка на совпадение ИНН/КПП
var dataInnKpp = [];
dataResult = { wait: true };
for (key in datas) {
if (datas[key].name == 'INN' || datas[key].name == 'KPP' || datas[key].name == 'id') {
dataInnKpp.push(datas[key].value);
if (datas[key].name == 'id') {
if (clientType == 'client') {
send_request(dataInnKpp.join('|'), 'data-exchange', 'data-clients-search-inn-kpp');
} else {
send_request(dataInnKpp.join('|'), 'data-exchange', 'data-fiz-search-inn-kpp');
}
break;
}
}
}
var waitResult = setInterval(function() {
if ($.isEmptyObject(dataResult)) {
dataSend(formId, datas, files);
clearInterval(waitResult);
dataResult = {};
} else if (!dataResult.wait) {
var clientDublicateInnKpp = '';
for (var key in dataResult) {
var clientDublicateName = (dataResult[key].name == '') ? dataResult[key].fullName : dataResult[key].name;
clientDublicateInnKpp += 'Клиент: ' + clientDublicateName + ', Менеджер: ' + dataResult[key].managerName + ' ';
}
popup('bad', 'Ошибка!', 'Запись данных невозможна! Обнаружено совпадение ИНН/КПП по клиенту/ам: ' + clientDublicateInnKpp, true, false);
clearInterval(waitResult);
dataResult = {};
}
}, 1);
return;
break;
case 'send_request':
// Если отправка данных заявки
send_request(datas, formId);
return;
break;
case 'add_furniture':
// Если добавление фурнитуры
saveFurniture(datas);
return;
break;
case 'send_purchase_payment':
// Если запрос отчета по взаиморасчетам
send_request(datas, formId);
return;
break;
case 'tasks_form':
case 'events_form':
// Если форма добавления задач
send_request(datas, 'data-exchange', 'data-add-task', formId, files);
return;
break;
default:
dataSend(formId, datas, files);
}
} else {
preloader();
}
}
});
// Функция отправки данных и файлов
window.dataSend = function(url, datas, files) {
// Отображаем прелоадер
preloader();
preloader('show');
// Создадим данные формы и добавим в них данные файлов из files
var data = new FormData();
$.each(files, function(key, value) {
data.append(key, value);
});
// Создадим данные формы и добавим в них данные из других полей ввода
$.each(datas, function(key, value) {
data.append(value.name, value.value);
});
// Вывод отправляемых данных
//for (var pair of data.entries()) {
// console.log(pair[0]+ ', ' + pair[1]);
//}
// Правило для форм с файлами договоров
if (url.indexOf('file-vehicles') > -1) url = 'file-vehicles';
// Правило для формы авторизации
var uri = (url == 'login_form') ? '/' : '/' + module + '/' + url;
// Правило для форм с классическим типом отправки данных
if (url == 'filter' || url == 'search') {
$('#' + url).unbind('submit').submit();
return;
}
// Отправляем запрос
$.ajax({
url: uri + '?sharkey=' + sharkey,
type: 'POST',
data: data,
cache: false,
async: false,
processData: false,
contentType: false,
success: function(respond, textStatus, jqXHR) {
switch (url) {
case 'get_price':
var date = new Date();
var dd = date.getDate();
if (dd < 10) dd = '0' + dd;
var mm = date.getMonth() + 1;
if (mm < 10) mm = '0' + mm;
var yy = date.getFullYear();
if (yy < 10) yy = '0' + yy;
popup('good', 'Успешно!', 'Файл доступен для скачивания по этой ссылке. ', true, false);
break;
case 'login_form':
localStorage.removeItem('JustCRM_lastURL');
window.location.href = window.location.origin;
break;
case 'file_upload':
popup('good', 'Успешно!', 'Файл данных загружен и обработан.', true, false);
break;
case 'mail_new_form':
popup('good', 'Успешно!', 'Письмо отправлено.', true, false);
delayClosePopup(1000);
delayReload(1000, '/' + curUrl[1] + '/' + curUrl[2] + '/' + curUrl[3]);
break;
case 'client_contacts_form':
case 'client_comments_form':
case 'document_comment_form':
case 'files-order':
case 'client_file_cat_form':
case 'client_file_form':
case 'client_vehicles_form':
case 'client_vehicles_new_form':
case 'client_add_phone_form':
case 'client_needs_form':
case 'client_budjet_form':
case 'client_features_form':
case 'file-vehicles':
popup('good', 'Успешно!', 'Данные обработаны.', true, false);
delayClosePopup(1000);
delayReload(1000, '/' + curUrl[1] + '/' + curUrl[2] + '/' + curUrl[3]);
break;
case 'client_all_file_cat_form':
case 'client_all_file_form':
popup('good', 'Успешно!', 'Данные обработаны.', true, false);
delayClosePopup(1000);
// Добавляем строку параметров в конце (если они есть)
delayReload(1000, '/' + curUrl[1] + '?' + location.href.split('?')[1]);
break;
//case 'client_form':
//popup ('bad', 'Ошибка!', 'Добавление клиентов c одинаковыми ИНН/КПП запрещено! '+innKppDublicate, true, false);
//location.href = '/'+module+'/_details/'+curUrl[3];
//break;
case 'draw_form':
delayClosePopup(1000);
delayReload(1000, '/' + curUrl[1]);
break;
default:
// Если редактировали форму на странице полной информации, то возвращаемся обратно на эту страницу
if (document.referrer.indexOf('/_') >= 0 && data.get('GUID') != '') {
window.location.href = document.referrer;
} else {
delayClosePopup(100);
delayReload(100, uri);
}
}
return;
},
error: function(jqxhr) {
switch (url) {
case 'login_form':
switch (jqxhr.status) {
case 401:
popup('bad', 'Ошибка!', 'Неверное значение в поле логин/пароль.', true, false);
break;
case 501:
popup('bad', 'Ошибка!', 'Ваш аккаунт еще не активирован администрацией.', true, false);
break;
case 423:
popup('bad', 'Ошибка!', 'Аккаунт заблокирован! Свяжитесь с Вашим менеджером.', false, true);
break;
case 412:
popup('bad', 'Ошибка!', 'Неверное значение поля защиты от спама!', true, false);
break;
case 405:
popup('bad', 'Ошибка!', 'Вход в мобильный интерфейс возможен только для клиентов!', true, false);
break;
}
break;
case 'file_upload':
switch (jqxhr.status) {
case 409:
popup('bad', 'Ошибка!', 'Число файлов не может превышать 1-го.', true, false);
break;
case 500:
popup('bad', 'Отправка прервана!', 'Один, или несколько файлов невозможно обработать. Размер файлов не должен превышать 3Mb.', true, false);
break;
case 413:
popup('bad', 'Ошибка!', 'Размер файлов не должен превышать 3Mb!', true, false);
break;
case 406:
popup('bad', 'Ошибка!', 'Нет файла для обработки!', true, false);
break;
default:
popup('bad', '', 'Неизвестная ошибка!', true, false);
}
break;
case 'user_form':
switch (jqxhr.status) {
case 412:
popup('bad', 'Ошибка!', 'Данное Ф.И.О/E-mail уже зарегистрирован/ы.', true, false);
break;
default:
popup('bad', '', 'Неизвестная ошибка!', true, false);
}
break;
case 'client_lidas_form':
var responceLidas = JSON.parse(jqxhr.responseText);
if (Object.keys(responceLidas.error).length > 0) {
var errorLidasContent = '№ строки: Перечень ошибок: ';
for (key in responceLidas.error) {
//console.log(responceLidas.error[key].error, responceLidas.error[key].str_num);
errorLidasContent += '' + responceLidas.error[key].str_num + ' ';
if (Array.isArray(responceLidas.error[key].error)) {
for (keyArr in responceLidas.error[key].error) {
errorLidasContent += '' + responceLidas.error[key].error[keyArr] + '
';
}
}
errorLidasContent += ' ';
}
errorLidasContent += '
'
popup('bad', 'Ошибка при загрузке файла!', errorLidasContent, true, false);
}
break;
default:
popup('bad', '', 'Нет связи с сервером!', true, false);
}
return;
},
complete: function() {
preloader();
}
});
}
//---- Формы - Конец
});
// Часы
function digitalClock() {
var tag = 'div.time';
var dots = digits = '';
var digit = tag + ' span';
var span = digit + ':nth-child';
for (i = 1; i < 6; i++)
for (k = 1; k < 6; k++) dots += ' ';
for (i = 0; i < 8; i++) digits += ' ';
jQuery(tag).append(digits);
jQuery(digit).append(dots);
jQuery(span + '(3), ' + span + '(6)').removeAttr('class').addClass('colon');
function time() {
var date = new Date();
var hou = date.getHours().toString();
var min = date.getMinutes().toString();
var sec = date.getSeconds().toString();
hou = (hou < 10) ? 0 + hou : hou;
min = (min < 10) ? 0 + min : min;
sec = (sec < 10) ? 0 + sec : sec;
jQuery(digit + '.colon').css({ opacity: 1 }).each(function() {
jQuery(this).delay(400).animate({ opacity: 0 }, 250);
})
jQuery(digit).removeAttr('class');
jQuery(span + '(1)').addClass('d' + hou.slice(0, 1));
jQuery(span + '(2)').addClass('d' + hou.slice(1, 2));
jQuery(span + '(3)').addClass('colon');
jQuery(span + '(4)').addClass('d' + min.slice(0, 1));
jQuery(span + '(5)').addClass('d' + min.slice(1, 2));
jQuery(span + '(6)').addClass('colon');
jQuery(span + '(7)').addClass('d' + sec.slice(0, 1));
jQuery(span + '(8)').addClass('d' + sec.slice(1, 2));
setTimeout(time, 1000);
}
time();
}
// Действия при события загрузки, изменения размера и ориентации страницы
$(window).on('load resize orientationchange', function() {
resize();
});
function resize() {
var allW = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var allH = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
$('#main-content').height(allH - $('#main-footer').innerHeight());
// Показываем/скрываем левый блок меню и данных в зависимости от ширины экрана
if ($('.l-menu').is(':visible') && allW < 1450) {
$('#slideOut').trigger('click');
}
if (!$('.l-menu').is(':visible') && allW > 1450) {
$('#slideIn').trigger('click');
}
}
// Генерация GUID
function newGuid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
s4() + '-' + s4() + s4() + s4();
}
// Снимает все checkbox
function uncheckAll() {
var w = document.getElementsByTagName('input');
for (var i = 0; i < w.length; i++) {
if ($(w[i]).attr('data-command') == 'no-clear') continue;
if (w[i].type == 'checkbox') {
w[i].checked = false;
}
}
}
//---- Popup-окна
function popup(type, head, message, fix, background, obj, func, storage, command) {
$('html').css({ 'overflow-y': 'hidden' });
var backPop = (background) ? 'background: transparent' : '';
var backWind = (background) ? 'top: 20% !important; margin: auto; width: 40%;' : '';
var icon = (!background) ? ' ' : '';
var fixe = (fix) ? 'width: 40%;' : '';
$('body').append('');
var thisH = $('.popup .wind .head').last();
var thisC = $('.popup .wind .cont').last();
switch (type) {
case 'good':
thisH.addClass('good').append(head);
thisC.append(message);
break;
case 'bad':
thisH.addClass('bad').append(head);
thisC.append(message);
break;
case 'atten':
thisH.addClass('atten').append(head);
thisC.append(message);
thisC.append('Да
');
break;
case 'form':
if ($('#' + message + '_head')) {
head = $('#' + message + '_head').html();
}
thisH.addClass('form').append(head);
thisC.append($('#' + message));
break;
case 'small-image':
thisH.append(head);
thisH.parent('.wind').css({ 'width': '50%' });
thisC.append(message);
break;
case 'big-image':
thisH.append(head);
thisH.parent('.wind').css({ 'width': '80%' });
thisC.append(message);
break;
default:
thisH.append(head);
thisC.append(message);
}
// Проверяем наличие поля, и если оно есть, то даем ему фокус
//$('.popup').last().find('input').first().focus().select();
}
function delayClosePopup(time) {
setTimeout(function() { $('.popup').last().find('.close').trigger('click'); }, time);
}
function delayReload(time, url) {
setTimeout(function() {
if (url) {
window.location.href = url;
} else {
window.location.reload();
}
}, time);
}
// Закрываем окно
$(document).on('click', '.close-popup', function(e) {
$(this).closest('.wind').find('.close').trigger('click');
});
$(document).on('click', '.close', function(e) {
var formGuid = $('.popup').find('[name="GUID"]').val();
try {
var form = $(this).attr('style').indexOf('transparent');
} catch (e) {}
var obj = e.target.className;
if ((obj !== 'close' && obj !== 'popup' && obj !== 'close-but') || form > 0) return;
$('html').css({ 'overflow-y': 'unset' });
var t = $(this).closest('.popup').last();
t.children('.wind').removeClass('zoomIn').addClass('zoomOut');
t.fadeOut('slow', function() { t.remove(); });
var curClass = $('.popup .wind .head').last().attr('class');
if (typeof curClass != 'undefined' && curClass.indexOf('good') < 0 && curClass.indexOf('bad') < 0 && curClass.indexOf('atten') < 0) {
$('#_wrap').append(t.find('article'));
}
// Подменяем текущий URL на предыдущий (если это не справочник), чтобы при нажатии кнопки Back в браузере не открывалось окно
var uri = window.location;
if (uri.pathname.indexOf('/_') < 0) window.history.replaceState({}, window.location, uri.protocol + '//' + uri.hostname + '/' + module);
// Если был использован режим отображения одного документа без учета фильтров в справочнике,
// ограничивающий доступ к документам, то запоминаем ?one=true и добавляем у URL
var oneDoc = '';
if (document.referrer.indexOf('one=true') >= 0) oneDoc = '?one=true';
// Если форма открыта для создания документа, то остаемся на этой страницы
if (typeof formGuid == "undefined" || formGuid == '') return;
// Если вызвали документ на редактирование со страницы полной информациии и popup-окно было открыто одно
if (document.referrer.indexOf('/_') >= 0 && $('.popup').length < 2 && $('.popup').find('.form').length > 0) {
console.log(curUrl, document.referrer);
if (document.referrer.indexOf('/_details-templates') >= 0) {
// Если это раздел с несколькими тимплейтами/карточками документов нескольких типов, например рассылки
location.href = '/' + module + '/_details-templates/' + curUrl[3] + '/' + curUrl[4] + oneDoc;
} else {
// Для все остальных
location.href = '/' + module + '/_details/' + curUrl[3] + oneDoc;
}
//window.history.go(-1);
}
});
// Если изображение
$(document).on('click', '.img', function(e) {
e.stopImmediatePropagation();
e.stopPropagation();
if (!$('img').is('#popupImg')) {
var i = new Image();
i.src = $(this).attr('src');
var width = i.width;
var height = i.height;
popup('small-image', '', '');
}
});
$(document).on('click', '.img-big', function(e) {
e.stopImmediatePropagation();
e.stopPropagation();
if (!$('img').is('#popupImg')) {
var i = new Image();
i.src = $(this).attr('src');
var width = i.width;
var height = i.height;
popup('big-image', '', '');
}
});
// Подтверждение действия
function popupConfirmYes(fName, one, two, three, four, five) {
try {
eval(fName)(one, two, three, four, five);
} catch (e) {
console.log('Ошибка при вызове: ' + fName + ' | ' + e.name);
}
}
// Если в окне форма и она вызвана для добавления документа, то обнуляем её поля
$(document).on('click', '.clear', function(e) {
uncheckAll();
$('.editable').html('');
$('.popup').last().find('input, textarea, select').each(function(indx, element) {
// Удаляем аттрибут disabled
if (typeof($(this).attr('disabled')) != 'undefined' && $(this).attr('data-command-d') != 'no-clear-d') $(this).removeAttr('disabled');
// Если поле имеет аттрибут data-command="no-clear", то не удаляем из него значение
if ($(this).attr('data-command') == 'no-clear') return;
$(this).find('.input-imitation').html('');
if ($(this)[0].type != 'radio') $(this).val('');
if ($(this)[0].nodeName == 'TEXTAREA') {
$(this).html('');
$(this).text('');
}
if ($(this)[0].nodeName == 'SELECT') {
if ($(this).attr('data-new') == 'new') $(this).children('option').remove();
$(this)[0].selectedIndex = 0;
$(this).change();
// Условие при добавлении задач
if ($(this).attr('id') == 'tasks_object' && $(this)[0].length > 1) {
$(this).val(2).change();
} else if ($(this).attr('id') == 'tasks_object') {
$(this).val(1).change();
}
}
});
// Если есть список телефонов, то чистим специфические атрибуты
if ($('[data-call]')) $('[data-call]').attr('data-call', '');
});
//---- Popup-окна - Конец
// Пангинация
function page(direction) {
var url = Number($('#page_counter').val());
if (isNaN(Number($('#page_counter').val()))) return;
var uri = window.location;
if (direction == 'left') {
if ((url - 1) < 1) return;
uri.href = uri.protocol + '//' + uri.hostname + '/' + module + '/page/' + (url - 1);
} else {
if (url > (maxPage - 1)) return;
uri.href = uri.protocol + '//' + uri.hostname + '/' + module + '/page/' + (url + 1);
}
}
function page_arr(direction) {
var url = Number($('#page_counter').val());
if (isNaN(Number($('#page_counter').val()))) return;
var uri = window.location;
if (direction == 'left') {
if ((url - 1) < 1) return;
uri.href = uri.protocol + '//' + uri.hostname + uri.pathname + '?page=' + (url - 1);
} else {
if (url > (maxPage - 1)) return;
uri.href = uri.protocol + '//' + uri.hostname + uri.pathname + '?page=' + (url + 1);
}
}
// Сохранение списка
function save_select(obj, form) {
if ($('#' + form).validationEngine('validate')) {
var content = '';
var elements = $('#' + form).find('input, select');
var val = [];
for (i = 0; i < elements.length; i++) {
if ((i + 1) % 2 && elements[i].value != '') {
content += '' + elements[i].value + ' (' + elements[i + 1][elements[i + 1].value].innerText + ') ';
var temp = [elements[i].value, elements[i + 1].value];
val.push(temp);
} else {
continue;
}
}
$('#' + obj).html(content);
$('#' + obj).parents('form').find('#' + obj + 'JSON').val(JSON.stringify(val));
delayClosePopup(100);
}
}
// Preloader
function preloader(action, obj) {
if (action === 'show') {
var objToView = (obj) ? obj : 'body';
var objClass = (obj) ? 'preloader preloader-obj' : 'preloader';
$(objToView).append('Подождите...
');
} else {
var obj = $('.preloader');
obj.fadeOut('fast', function() { obj.remove(); });
}
}
// Preloader - Конец
// Функции для работы с куки
function setCookie(name, value, url) {
var path = (typeof(url) != 'undefined') ? url : '/';
document.cookie = name + '=' + value + '; path=' + path + ';';
}
function getCookie(name) {
var r = document.cookie.match("(^|;) ?" + name + "=([^;]*)(;|$)");
if (r) return r[2];
else return "";
}
function deleteCookie(name) {
var date = new Date(); // Берём текущую дату
date.setTime(date.getTime() - 100); // Возвращаемся в "прошлое"
document.cookie = name + "=; path=/; expires=" + date.toGMTString(); // Устанавливаем cookie пустое значение и срок действия до прошедшего уже времени
}
// Функции для работы с куки - Конец
// Иерархическое дерево с вложениями
var data = [];
$(document).on('click', '#tree li', function(e) {
if (this.className == 'plus') {
$(this).siblings().each(function(index, element) {
if (element.tagName == 'UL') {
$(element).show();
}
});
// Добавляем название объекта по которому был клик
data.push('' + $(this).text() + ' ');
// Рекурсивно перебираем все остальные объекты
eachObj($(this).siblings());
// Добавляем данные в таблицу
$('#tree-data').html(data);
data = [];
}
if (this.className == 'minus') {
$(this).siblings().each(function(index, element) {
$(element).hide();
});
}
$(this).toggleClass('plus').toggleClass('minus');
});
// Перебираем все вложенные объекты
function eachObj(obj) {
obj.each(function(index, element) {
if ($(element).find('*').length > 1) {
eachObj($(element).find('*'));
} else {
if (this.className != 'hold' && !$(element).prev().hasClass('hold')) {
var temp;
//var tempFlag = [];
var tempFlag;
if ($(element).attr('data-art')) {
var e = $(element);
//var pres = e.attr('data-pres').replace('[', '').replace(']', '').split(',');
//for (key in pres) {
// tempFlag[key] = (pres[key] == '1') ? ' ' : '';
//}
tempFlag = (e.attr('data-pres') == '1') ? 'Да' : 'Нет';
temp = '' +
'' + e.attr('data-art') + ' ' +
'' + e.text() + ' ' +
'' + e.attr('data-unit') + ' ' +
'' + tempFlag + ' ' +
' ';
} else {
temp = '' + $(element).text() + ' ';
}
data.push(temp);
}
}
});
}
// Иерархическое дерево с вложениями - Конец
// Корзина заказа
$(document).on('dblclick', '[data-form="new_request"] tr', function(e) {
if (!$(this).attr('data-ids')) return;
var guid = $(this).attr('data-ids');
// Показываем всплывающее сообщение для добавления кол-ва
popup('atten', 'Добавить в корзину?', $('li[data-ids="' + guid + '"]').text() + 'Введите кол-во для позиции: ', true, false, guid, 'add_position');
});
// Добавляем номенклатуру в корзину
function add_position(itemGuid) {
var quant = $('#cur_quant').val();
var items = {};
var crmCurCart = {};
// Если есть запись в хранилище, то извлекаем чтобы можно было туда добавить новую
if (localStorage.getItem('crmCartTemp')) {
var crmCurCart = JSON.parse(localStorage.getItem('crmCartTemp'));
}
// Формируем новую запись
var guid = itemGuid;
var nomen = $('li[data-ids="' + guid + '"]');
items['data-ids'] = guid;
items['data-art'] = nomen.attr('data-art');
items['data-unit'] = nomen.attr('data-unit');
items['data-cur'] = nomen.attr('data-cur');
items['data-price'] = nomen.attr('data-price');
items['data-pres'] = nomen.attr('data-pres');
items['data-quantity'] = (quant > 1) ? quant : 1;
items['data-name'] = nomen.text();
crmCurCart[guid] = items;
localStorage.setItem('crmCartTemp', JSON.stringify(crmCurCart));
viewCartTemp('tree-data-temp');
delayClosePopup(100);
}
// Если корзина не пуста, то выводим её
$(function() {
if (curUrl[1] == 'request') {
viewCartTemp('tree-data-cart');
viewCartTemp('tree-data-temp');
viewFurniture();
}
});
function viewCartTemp(table) {
// Если есть запись в хранилище, то извлекаем все для вывода
var storageObj = (table == 'tree-data-temp') ? 'crmCartTemp' : 'crmCart';
var crmCurCart = {};
if (localStorage.getItem(storageObj)) {
crmCurCart = JSON.parse(localStorage.getItem(storageObj));
} else {
if (storageObj == 'crmCartTemp') {
clearCartTemp();
} else {
clearCart();
}
return;
}
var temp = '';
for (key in crmCurCart) {
var price = (crmCurCart[key]['data-quantity'] > 1) ? crmCurCart[key]['data-price'] * crmCurCart[key]['data-quantity'] : crmCurCart[key]['data-price'];
var prices = (!isNaN(price)) ? Number(price).toFixed(2) : '-';
//var pres = crmCurCart[key]['data-pres'].replace('[', '').replace(']', '').split(',');
var tempFlag;
//for (k in pres) {
// tempFlag[k] = (pres[k] == '1') ? ' ' : '';
//}
tempFlag = (crmCurCart[key]['data-pres'] == '1') ? 'Да' : 'Нет';
temp += '' +
'' + crmCurCart[key]['data-art'] + ' ' +
'' + crmCurCart[key]['data-name'] + ' ' +
'' + crmCurCart[key]['data-unit'] + ' ' +
'' + tempFlag + ' ' +
'' +
' ' +
' ' +
' ' +
' ';
}
// Добавляем данные в таблицу
$('#' + table).html(temp);
}
// Очистка временной корзины
function clearCartTemp() {
localStorage.removeItem('crmCartTemp');
$('#tree-data-temp').html('Выберите позиции ');
$('.popup').last().trigger('click');
}
// Очистка корзины
function clearCart() {
localStorage.removeItem('crmCart');
$('#tree-data-cart').html('Выберите позиции ');
$('.popup').trigger('click');
}
// Добавляем список выбранной номенклатуры в корзину
function addCart() {
if (localStorage.getItem('crmCart') != null && localStorage.getItem('crmCartTemp') != null) {
var crmCurCart = JSON.parse(localStorage.getItem('crmCart'));
var crmCurCartTemp = JSON.parse(localStorage.getItem('crmCartTemp'));
for (key in crmCurCartTemp) {
crmCurCart[key] = crmCurCartTemp[key];
localStorage.setItem('crmCart', JSON.stringify(crmCurCart));
}
} else {
if (localStorage['crmCartTemp'] == null) {
$('.popup').last().trigger('click');
popup('bad', 'Ошибка!', 'Позиции не выбраны', true, false);
return;
}
localStorage.setItem('crmCart', localStorage['crmCartTemp']);
}
viewCartTemp('tree-data-cart');
clearCartTemp();
}
// Изменяем кол-во в номенклатурной позиции
$(document).on('change keyup', '.quant', function() {
var q = Number($(this).val());
var qn = typeof(q);
if (qn == 'number' && q > 0 && q < 10000) {
var storageObj = ($(this).parents('tbody').attr('id') == 'tree-data-temp') ? 'crmCartTemp' : 'crmCart';
var guid = $(this).parents('tr').attr('data-ids-temp-cart');
var crmCart = JSON.parse(localStorage.getItem(storageObj));
crmCart[guid]['data-quantity'] = q;
localStorage.setItem(storageObj, JSON.stringify(crmCart));
} else {
if ($('.popup').length == 0)
popup('bad', 'Ошибка!', 'Введите целое число в диапазоне от 1 до 9999', true, false);
}
});
// Удаление позиции
function deleteCartPos(obj, storage) {
$('.popup').last().trigger('click');
var posTable = (storage == 'crmCartTemp') ? 'tree-data-temp' : 'tree-data-cart';
switch (storage) {
case 'crmCartTemp':
posTable = 'tree-data-temp';
break;
case 'crmCart':
posTable = 'tree-data-cart';
break;
case 'crmCartFurniture':
posTable = 'data-furniture';
break;
}
$('#' + posTable).find('tr[data-ids-temp-cart="' + obj + '"]').remove();
var crmCart = JSON.parse(localStorage.getItem(storage));
delete crmCart[obj];
localStorage.setItem(storage, JSON.stringify(crmCart));
// Если карта пуста то возвращаем её к начальному состоянию
if (Object.keys(crmCart).length === 0) {
switch (storage) {
case 'crmCartTemp':
clearCartTemp();;
break;
case 'crmCart':
clearCart();
break;
case 'crmCartFurniture':
clearFurniture();
break;
}
}
}
// Поиск по Артикулу и Названию номенклатуры
var result = [];
var art = '';
var nom = '';
$(document).on('change keyup', '#art, #nom', function() {
switch ($(this).attr('id')) {
case 'art':
art = $(this).val().toLowerCase();
break;
case 'nom':
nom = $(this).val().toLowerCase();
}
if (art.length < 3 && nom.length < 3) return;
// Выбираем предварительно все элементы
var data = $('#tree').find('li').not('[class]');
// Фильтруем результаты по критериям поиска
result = data.filter(function() {
var article = $(this).attr('data-art').toLowerCase();
var name = $(this).text().toLowerCase();
return (article.indexOf(art) > -1 && name.indexOf(nom) > -1);
});
viewResult(result, 'tree-data');
});
function viewResult(result, table) {
// Выводим найденные результаты
var temp;
//var tempFlag = [];
var tempFlag;
$(result).each(function(index, element) {
var e = $(element);
//var pres = e.attr('data-pres').replace('[', '').replace(']', '').split(',');
//for (key in pres) {
//tempFlag[key] = (pres[key] == '1') ? ' ' : '';
tempFlag = (e.attr('data-pres') == '1') ? 'Да' : 'Нет';
//}
temp += '' +
'' + e.attr('data-art') + ' ' +
'' + e.text() + ' ' +
'' + e.attr('data-unit') + ' ' +
'' + tempFlag + ' ' +
' ';
});
$('#' + table).html(temp);
}
// Поиск по Артикулу и Названию номенклатуры - Конец
// Корзина заказа - Конец
// Выбор фурнитуры
$(document).on('change', '#select_complect', function() {
var val = $(this).val();
$('#name_complect').html(val);
$('[name="name_complect"]').val(val);
});
// Добавление строки
function saveFurniture(data) {
var furniture = {};
var guid = newGuid();
furniture[guid] = {};
for (key in data) {
furniture[guid][data[key].name] = data[key].value;
}
if (localStorage.getItem('crmCartFurniture') != null) {
var crmCartFurnitureTemp = JSON.parse(localStorage.getItem('crmCartFurniture'));
crmCartFurnitureTemp[guid] = furniture[guid];
localStorage.setItem('crmCartFurniture', JSON.stringify(crmCartFurnitureTemp));
} else {
localStorage.setItem('crmCartFurniture', JSON.stringify(furniture));
}
$('.popup').trigger('click');
uncheckAll();
viewFurniture();
}
function viewFurniture() {
if (localStorage.getItem('crmCartFurniture') != null) {
var crmCartFurnitureTemp = JSON.parse(localStorage.getItem('crmCartFurniture'));
var furniture = '';
for (key in crmCartFurnitureTemp) {
var cft = crmCartFurnitureTemp[key];
var check = ' ';
var bp = (cft.bp == 1) ? check : '';
var sp = (cft.sp == 1) ? check : '';
var schp = (cft.schp == 1) ? check : '';
var bz = (cft.bz == 1) ? check : '';
var uo = (cft.uo == 1) ? check : '';
furniture += '' +
'' + cft.complect + ' ' +
'' + cft.direction + ' ' +
'' + cft.systems + ' ' +
'' + cft.height + ' ' +
'' + cft.width + ' ' +
'' + bp + ' ' +
'' + sp + ' ' +
'' + schp + ' ' +
'' + bz + ' ' +
'' + uo + ' ' +
' ' +
' ';
}
$('#data-furniture').html(furniture);
} else {
$('#data-furniture').html('Выберите позиции ');
}
}
// Очистка корзины фурнитуры
function clearFurniture() {
localStorage.removeItem('crmCartFurniture');
$('#data-furniture').html('Выберите позиции ');
$('.popup').trigger('click');
}
// Выбор фурнитуры - Конец
// Отправка данных
// Глобальный объект для функции send_request - dataResult;
//var dataResult;
dataResult = {};
dataResultTwo = {};
function send_request(data, form, command, formId, files, customUrl) {
switch (form) {
// Отправка заявки
case 'send_request':
// Отображаем прелоадер
preloader('show');
var crmCart = null;
var crmFurniture = null;
if (localStorage.getItem('crmCart') != null) crmCart = JSON.parse(localStorage.getItem('crmCart'));
if (localStorage.getItem('crmCartFurniture') != null) crmFurniture = JSON.parse(localStorage.getItem('crmCartFurniture'));
if (crmCart === null && crmFurniture === null) {
popup('bad', 'Заявка пуста!', 'Необходимо выбрать позиции.', true, false);
preloader();
return;
}
var url = '/ajax-send/send_request.php?guid=' + guid;
var dates = data[3]['value'].split('.');
var times = data[4]['value'].split(':');
var sendData = {
data: {
payMethod: data[1]['value'],
shippingMethod: data[2]['value'],
//shippingDateTime : dates[2]+dates[1]+dates[0]+times[0]+times[1]+'00',
shippingDateTime: data[3]['value'] + ' ' + data[4]['value'],
clientGUID: data[0]['value'],
furniture: [],
table: []
}
}
for (val in crmCart) {
var temp = {
GUID: val,
quantity: crmCart[val]['data-quantity'],
price: crmCart[val]['data-price']
}
sendData.data.table.push(temp);
}
for (val in crmFurniture) {
var bp = (crmFurniture[val]['bp']) ? 1 : 0;
var sp = (crmFurniture[val]['sp']) ? 1 : 0;
var schp = (crmFurniture[val]['schp']) ? 1 : 0;
var bz = (crmFurniture[val]['bz']) ? 1 : 0;
var uo = (crmFurniture[val]['uo']) ? 1 : 0;
var temp = {
GUID: val,
complect: crmFurniture[val]['complect'],
direction: crmFurniture[val]['direction'],
systems: crmFurniture[val]['systems'],
height: crmFurniture[val]['height'],
width: crmFurniture[val]['width'],
bp: bp,
sp: sp,
schp: schp,
bz: bz,
uo: uo,
quant: crmFurniture[val]['quant']
}
sendData.data.furniture.push(temp);
}
// Отправляем данные
$.ajax({
url: url,
type: 'POST',
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify(sendData),
success: function(respond, textStatus, jqXHR) {
popup('good', 'Успешно!', 'Заявка успешно отправлена!', true, false);
setTimeout(function() {
clearCart();
clearCartTemp();
clearFurniture();
}, 2000);
},
error: function(jqxhr, status, errorMsg) {
popup('bad', 'Ошибка!', 'Сервер заявок недоступен, свяжитесь с Вашим менеджером, и/или повторите отправку позже.', true, false);
},
complete: function() {
preloader();
}
});
break;
// Запросы к внешним файлам
case 'data-exchange':
switch (command) {
case 'get_mail':
preloader('show');
break;
case 'data-trash':
case 'data-trash-no-back':
data = data.split(' | ');
preloader('show');
break;
case 'data-add-task':
case 'data-speedsend-sms':
preloader('show');
default:
// Проверяем, нет-ли значений передаваемых из формы массивом typeof data == 'object' && !
if (Array.isArray(data)) {
var i = 0;
for (key in data) {
if (data[key].name.indexOf('[]') >= 0) {
i++;
var temp = data[key].name.split('[');
data[key].name = temp[0] + '[' + i + temp[1];
}
}
}
// Если строка
if (typeof data == 'string') {
data = data.split();
}
}
// Если используется customUrl
var requestUrl = (typeof customUrl != 'undefined') ? customUrl : 'ajax-send';
$.ajax({
url: '/' + requestUrl + '/' + command + '.php?guid=' + guid,
type: 'POST',
dataType: 'json',
contentType: 'application/json',
async: (command == 'data-add-order' || command == 'data-add-order-list') ? false : true,
data: JSON.stringify(data),
success: function(respond, textStatus, jqXHR) {
switch (command) {
case 'data-get-json-temp':
case 'data-save-json-temp':
case 'data-get-bending':
dataResultTwo = respond;
return;
case 'send_request_remains':
dataResultOld = respond;
return;
break;
case 'data-add-order':
case 'data-add-order-list':
case 'data-edit-order':
case 'data-edit-order-list':
case 'data-make-invoice':
case 'data-make-sketch':
case 'data-get-pricelist':
dataResultThree = respond;
popup('good', 'Успешно!', 'Запрос выполнен!', true, false);
delayClosePopup(500);
return;
case 'data-clients-search-inn-kpp':
case 'data-client-widget':
dataResult = respond;
return;
break;
case 'data-trash':
case 'data-trash-no-back':
case 'data-trash-multiple':
case 'data-to-folder':
popup('good', 'Успешно!', 'Запрос выполнен!', true, false);
break;
case 'data-add-task':
popup('good', 'Успешно!', 'Запрос выполнен!', true, false);
var id_executors = {};
for (key in data) {
if (data[key].name.indexOf('id_executors') >= 0) {
id_executors[key] = data[key].value;
}
}
console.log(respond);
data.push({ "name": "task_id", "value": respond.responce[1] });
dataSend(formId, data, files);
sendSocket('{"command":"new_task", "task_url":"/tasks/_details/' + respond.id + '", "id":"' + id + '", "id_client":"' + guid + '", "id_executors":' + JSON.stringify(id_executors) + '}');
break;
case 'data-add-event':
popup('good', 'Успешно!', 'Запрос выполнен!', true, false);
var id_executors = {};
for (key in data) {
if (data[key].name.indexOf('id_executors') >= 0) {
id_executors[key] = data[key].value;
}
}
data.push({ "name": "task_id", "value": respond.responce[1] });
dataSend(formId, data, files);
sendSocket('{"command":"new_task", "task_url":"/events/_details/' + respond.id + '", "id":"' + id + '", "id_client":"' + guid + '", "id_executors":' + JSON.stringify(id_executors) + '}');
break;
case 'data-make-call':
popup('good', 'Успешно!', 'Выполняется вызов на номер: ' + data, true, false);
break;
case 'data-speedsend-sms':
popup('good', 'Успешно!', 'Сообщения отправлены!', true, false);
delayReload(500);
break;
case 'data-favorites':
delayClosePopup(500);
if (typeof respond.command != 'undefined' && respond.command == 'reload') {
delayReload(500);
} else if (typeof respond.error != 'undefined' && respond.error == 'max_fav') {
popup('bad', 'Внимание!', 'Создано максимальное кол-во закладок! Удалите старые записи из избранного!', true, false);
delayClosePopup(500);
} else {
popup('good', 'Успешно!', 'Добавлено в избранное!', true, false);
delayClosePopup(500);
}
break;
case 'data-send-setting-juststat':
delayClosePopup(250);
setTimeout(function() {
popup('good', 'Успешно!', 'Настройки JustStat обновлены.', true, false);
delayClosePopup(500);
}, 300);
break;
default:
delete dataResult;
dataResult = respond;
}
},
error: function(jqxhr, status, errorMsg) {
switch (command) {
case 'data-get-bending':
dataResultTwo = jqxhr;
console.log(errorMsg)
if (errorMsg === 'Goods not found') {
popup('bad', 'Ошибка!', 'Невозможен заказ изделия с указанными параметрами. Скорректируйте размеры A,B,C,D.', true, false);
} else if (errorMsg === 'Incorrect size') {
popup('bad', 'Ошибка!', 'Размер A,B,C,D не может быть меньше загиба. Скорректируйте размеры A,B,C,D.', true, false);
} else {
popup('bad', 'Ошибка!', 'Сервер недоступен! Возможно закончился сеанс авторизации.', true, false);
}
delayClosePopup(1000);
break;
case 'data-add-order':
case 'data-add-order-list':
dataResultThree = { error: 'error' };
popup('bad', 'Ошибка!', 'Сервер вернул ошибку!', true, false);
break;
case 'data-make-call':
switch (jqxhr.status) {
case 424:
popup('bad', 'Ошибка!', 'Не указан внутренний номер пользователя!', true, false);
break;
default:
popup('bad', 'Ошибка!', 'АТС не отвечает!', true, false);
}
break;
case 'data-client-widget':
case 'data-favorites':
return true;
break;
case 'data-get-pricelist':
popup('bad', 'Ожидайте!', 'Ваш запрос еще находится в обработке. Повторите операцию позже.', true, false);
break;
case 'data-make-pricelist':
popup('bad', 'Внимание!', 'Не удалось определить категорию цен! Временно используется категория цен - С3 СРЕДНИЙ ПРАЙС САМАРА.', true, false);
break;
default:
popup('bad', 'Ошибка!', 'Сервер недоступен! Возможно закончился сеанс авторизации.', true, false);
}
},
complete: function() {
switch (command) {
case 'data-trash':
case 'data-trash-no-back':
case 'data-to-folder':
case 'data-trash-multiple':
case 'data-add-task':
preloader();
delayClosePopup(500);
// Добавляем строку параметров в конце (если они есть)
if (typeof(location.href.split('?')[1]) != 'undefined') {
delayReload(500, '/' + curUrl[1] + '?' + location.href.split('?')[1]);
} else {
delayReload(500);
}
break;
case 'data-client-widget':
preloader();
break;
case 'get_mail':
preloader();
delayReload(500);
break;
}
}
});
break;
}
}
$(function() {
// При загрузке страницы если выбрана категория, то фильтруем сразу
if ($('#filter_branch_cat').length > 0 && $('#filter_branch_cat').val() != '') filterBranch($('#filter_branch_cat').val());
// При выборе категории отраслей, скрываем/показываем список отраслей
$('#filter_branch_cat').on('change', function() {
// Сбрасываем выбор фильтра отраслей
$('#filter_branch').prop('selectedIndex', 0);
$('#filter_branch_not').prop('checked', false);
var selectValue = $(this).val();
// Скрываем отрасли, которые находятся вне данной категории
$('#filter_branch').children('option').show();
filterBranch(selectValue);
});
function filterBranch(selectValue) {
if (selectValue != '') {
$('#filter_branch').children('option').each(function(index, element) {
if ($(element).data('parent') != selectValue && $(element).val() != '') $(element).hide();
});
}
}
});
// Фильтрация списка менеджеров по рег. управляющему
$(function() {
var listManager = [];
var listManagerGuid = [];
$('#filter_manager').children('option').each(function(index, element) {
listManager[index] = element;
listManagerGuid[index] = element.value;
});
$('#filter_reg_manager').on('change', function() {
if ($('option:selected', this).val() == '%') {
setListManager('all');
} else {
setListManager($('option:selected', this).data('user'));
}
});
function setListManager(thisListManager) {
var copyListManager = '';
var listManagerDefault = 'Все ';
if (typeof thisListManager == 'object' && thisListManager.length > 0 && listManager.length > 0) {
for (var key in thisListManager) {
var findUser = listManagerGuid.indexOf(thisListManager[key]);
if (findUser > -1) {
copyListManager += listManager[findUser].outerHTML;
}
}
} else if (thisListManager == 'all') {
for (var key in listManager) {
if (listManager[key].value == '%') continue;
copyListManager += listManager[key].outerHTML;
}
}
$('#filter_manager').html(listManagerDefault + copyListManager);
}
});
// Корзина заказа - НОВАЯ КОРЗИНА - Начало
var isOpenForm = true;
function openCart() {
$('#marker-cart').trigger('click');
}
$(function() {
// Копирование позиции
$('body').on('click', '.copy-nomen', function() {
var orderCart = JSON.parse(localStorage['JustCRM-OrderCart']);
var orderCartSort = JSON.parse(localStorage['JustCRM-OrderCart-Sort']);
var orderCartShipment = JSON.parse(localStorage['JustCRM-OrderCart-Shipment']);
var idPos = $(this).closest('tr').attr('data-id-pos-prefix');
var idPosArr = idPos.split('_');
var curIdPrefix = 1;
var nextIdPrefix = 2;
if (typeof idPosArr[1] != 'undefined') {
var maxVal = Number(idPosArr[1]);
for (key in orderCart) {
var keyArr = key.split('_');
if (typeof keyArr[1] != 'undefined') {
var curVal = Number(keyArr[1]);
if (curVal > maxVal) maxVal = curVal;
}
}
curIdPrefix = maxVal;
nextIdPrefix = maxVal + 1;
}
keyCurrent = idPosArr[0] + '_' + curIdPrefix;
keyNext = idPosArr[0] + '_' + nextIdPrefix;
orderCart[keyNext] = orderCart[idPos];
orderCartSort[keyNext] = orderCartSort[idPos];
orderCartShipment[keyNext] = orderCartShipment[idPos];
if (typeof idPosArr[1] == 'undefined') {
orderCart[keyCurrent] = orderCart[idPos];
orderCartSort[keyCurrent] = orderCartSort[idPos];
orderCartShipment[keyCurrent] = orderCartShipment[idPos];
delete orderCart[idPos];
delete orderCartSort[idPos];
delete orderCartShipment[idPos];
}
localStorage['JustCRM-OrderCart'] = JSON.stringify(orderCart);
localStorage['JustCRM-OrderCart-Sort'] = JSON.stringify(orderCartSort);
localStorage['JustCRM-OrderCart-Shipment'] = JSON.stringify(orderCartShipment);
isOpenForm = false;
openCart();
});
$('#clear-shop').on('click', function() {
deleteOrderAllPos();
window.location.reload();
});
// Включение/Отключения полей для производства
$('#order_prod').on('click', function() {
if ($(this).prop('checked')) {
$('.prod-field').show();
$('#order-colspan').attr('colspan', '9');
} else {
$('.prod-field').hide();
$('#order-colspan').attr('colspan', '6');
}
// У тех позиций, что могут быть для производства блокируем/разблокируем поле ввода кол-ва
$('#ordercard-list').find('.ordercard-quantity').each(function(index, element) {
if ($(element).parents('.position').find('.ordercard-prod').val() == '2') {
$(element).prop('readonly', true);
$(element).parents('.position').find('.ordercard-qty').show();
$(element).parents('.position').find('.ordercard-length').show();
$(element).parents('.position').find('.ordercard-num-order').show();
}
if ($(element).parents('.position').find('.ordercard-prod').val() == '1') {
$(element).prop('readonly', false);
$(element).parents('.position').find('.ordercard-qty').hide();
$(element).parents('.position').find('.ordercard-length').hide();
$(element).parents('.position').find('.ordercard-num-order').hide();
}
});
});
// Для корзины, загруженной из файла
if (typeof importOrders != 'undefined' && (getCookie('JustCRM_open_master_order') == '2' || getCookie('JustCRM_open_master_order_prod') == '2')) {
var dateDelete = new Date(); // Берём текущую дату
dateDelete.setTime(dateDelete.getTime() - 100); // Возвращаемся в "прошлое"
document.cookie = "JustCRM_open_master_order=; path=/nomen; expires=" + dateDelete.toGMTString();
document.cookie = "JustCRM_open_master_order_prod=; path=/nomen; expires=" + dateDelete.toGMTString();
var importOrdersTextPrint = (typeof importOrdersText != 'undefined') ? importOrdersText : '';
if (prodShop === 2 && $('#order_prod').prop('checked') === false) {
var prodShopSet = JSON.parse(localStorage['JustCRM-OrderCart-field']);
prodShopSet[13] = 1;
localStorage['JustCRM-OrderCart-field'] = JSON.stringify(prodShopSet);
$('#order_prod').trigger('click');
}
//popup('atten', 'Успешно!', 'Заказ импортирован в корзину! ' + importOrdersTextPrint + 'Продолжить? ', true, false, '', 'openCart');
popup('atten', 'Успешно!', 'Заказ импортирован в корзину! ' + importOrdersTextPrint + 'Продолжить? ', true, false, '', 'location.reload()');
setTimeout(function() {
//$('#marker-cart').trigger('click');
}, 1000);
}
// Если поле нового адреса не пустое и не выбран Самовывоз, то скрываем поля Дата доставки и Время доставки
if ($('#delivery_places').val() == '%' && $.trim($('body').find('#order-delivery-address').val()) == '') {
$('#order-delivery-date, #order-delivery-time').parent('div').hide();
} else {
$('#order-delivery-date, #order-delivery-time').parent('div').show();
}
// Если выбран новый адрес, то делаем его поле обязательным, иначе необязательным
if ($('#delivery_places').val() == '%%') {
$('#order-delivery-address').attr('class', 'validate[required,minSize[10],maxSize[500]] text-input');
} else {
$('#order-delivery-address').attr('class', 'validate[optional,minSize[3],maxSize[500]] text-input');
}
if (typeof localStorage['JustCRM-OrderCart'] == 'undefined') localStorage['JustCRM-OrderCart'] = '{}';
if (typeof localStorage['JustCRM-OrderCart-Sort'] == 'undefined') localStorage['JustCRM-OrderCart-Sort'] = '{}';
if (typeof localStorage['JustCRM-OrderCart-Shipment'] == 'undefined') localStorage['JustCRM-OrderCart-Shipment'] = '{}';
orderStat();
orderMarkerView();
// Показываем корзину только в разделе изделий из листовых металлов
if (typeof curUrl[1] != 'undefined' && curUrl[1] == 'nomendraw') orderListMarkerView();
$('.date-order').datepicker({
minDate: '0',
beforeShow: function(input, obj) {
$(input).after($(input).datepicker('widget'));
},
onSelect: function(dateText) {
$('#order-delivery-date').trigger('input');
}
});
if (typeof localStorage['JustCRM-OrderCart'] != 'undefined') {
// Выделяем позиции, которые уже в корзине
var orderCartAll = JSON.parse(localStorage['JustCRM-OrderCart']);
if (Object.keys(orderCartAll).length > 0) {
for (key in orderCartAll) {
// Отмечаем в справочнике
$('#toBackAncor_' + orderCartAll[key][1].value).children('[data-add-cart]').find('input').addClass('select-cart-pos');
$('#toBackAncor_' + orderCartAll[key][1].value).find('input').val(orderCartAll[key][0].value);
// Отмечаем на странице номенклатуре
if (orderCartAll[key][1].value != '')
$('[data-add-cart=' + orderCartAll[key][1].value + ']').find('input').addClass('select-cart-pos');
}
}
$('#marker-cart').on('click', function() {
$('#ordercard_form').find('#ordercard-list').children().remove();
var orderCartAll = JSON.parse(localStorage['JustCRM-OrderCart']);
var orderCartSort = JSON.parse(localStorage['JustCRM-OrderCart-Sort']);
var orderCartShipment = JSON.parse(localStorage['JustCRM-OrderCart-Shipment']);
orderCartSort = Object.keys(orderCartSort).sort(
function(a, b) {
return orderCartSort[a] - orderCartSort[b];
}
)
if (Object.keys(orderCartAll).length > 0) {
// Заполняем корзину при открытии
var template = $('#ordercard-template').find('.position');
for (key in orderCartSort) {
if (typeof orderCartAll[orderCartSort[key]] == 'undefined') continue;
var clone = template.clone();
clone.attr('data-id-pos', orderCartAll[orderCartSort[key]][1].value);
clone.attr('data-id-pos-prefix', orderCartSort[key]);
clone.children('.ordercard-cat-price').val(orderCartAll[orderCartSort[key]][9].value);
clone.children('.ordercard-id-nomen').val(orderCartSort[key]);
clone.children('.quantity').children('input').val(orderCartAll[orderCartSort[key]][0].value);
clone.children('.name').html(orderCartAll[orderCartSort[key]][2].value);
clone.children('.code').html(orderCartAll[orderCartSort[key]][3].value);
clone.children('.articul').html(orderCartAll[orderCartSort[key]][4].value);
clone.children('.item').html(orderCartAll[orderCartSort[key]][5].value);
clone.children('.remains').html(orderCartAll[orderCartSort[key]][6].value);
clone.children('.country').html(orderCartAll[orderCartSort[key]][7].value);
var posSumm = Number(orderCartAll[orderCartSort[key]][10].value.replace(',', '.').replace(' ', '')) * Number(orderCartAll[orderCartSort[key]][0].value);
clone.children('.price').children('input').val(posSumm.toFixed(2).replace('.', ',').replace(' ', ''));
clone.children('.price').attr('data-price', orderCartAll[orderCartSort[key]][10].value);
clone.children('.base-price').html(orderCartAll[orderCartSort[key]][10].value.replace('.', ',').replace(' ', ''));
clone.children('.ordercard-base-price').val(orderCartAll[orderCartSort[key]][10].value.replace(',', '.').replace(' ', ''));
clone.children('.ordercard-min-shipment').val(orderCartShipment[orderCartSort[key]]);
clone.children('.quantity').children('input').attr('min', orderCartShipment[orderCartSort[key]]);
clone.children('.quantity').children('input').attr('step', orderCartShipment[orderCartSort[key]]);
clone.children('.delete').children('i').attr('onclick', "popup('atten', 'Внимание!', 'Вы подтверждаете удаление?', true, false, '" + orderCartSort[key] + "', 'deleteOrderPos', 'JustCRM-OrderCart', '#ordercard-list');");
if (typeof orderCartAll[orderCartSort[key]][11] != 'undefined') {
clone.find('.ordercard-prod').val(orderCartAll[orderCartSort[key]][11].value);
}
if (typeof orderCartAll[orderCartSort[key]][12] != 'undefined') {
if (orderCartAll[orderCartSort[key]][12].value == '' || orderCartAll[orderCartSort[key]][12].value == '0') orderCartAll[orderCartSort[key]][12].value = '1';
clone.find('.ordercard-qty').val(orderCartAll[orderCartSort[key]][12].value.replace(' ', ''));
}
if (typeof orderCartAll[orderCartSort[key]][13] != 'undefined') {
if (orderCartAll[orderCartSort[key]][13].value == '' || orderCartAll[orderCartSort[key]][13].value == '0') orderCartAll[orderCartSort[key]][13].value = '1';
clone.find('.ordercard-length').val(orderCartAll[orderCartSort[key]][13].value.replace(' ', ''));
}
if (typeof orderCartAll[orderCartSort[key]][14] != 'undefined') {
clone.find('.ordercard-num-order').val(orderCartAll[orderCartSort[key]][14].value);
}
/*
// Если включена галочка производства, то у позиций которые не могут быть заказаны на производство - скрываем поля производства
console.log('Мы тут', $('#order_prod').prop('checked'), orderCartAll[orderCartSort[key]][11].value);
if ($('#order_prod').prop('checked') && orderCartAll[orderCartSort[key]][11].value == '1') {
console.log('Мы здесь скрываем поля производства');
clone.find('.ordercard-qty').hide();
clone.find('.ordercard-length').hide();
}
// У тех позиций, что могут быть для производства блокируем поле ввода кол-ва
if ($('#order_prod').prop('checked') && orderCartAll[orderCartSort[key]][11].value == '2') {
console.log('Мы здесь блокируем кол-во если есть производство');
clone.find('.ordercard-quantity').prop('readonly', true);
}
*/
$('#ordercard_form').find('#ordercard-list').append(clone);
}
orderStat();
if (isOpenForm === true) {
popup('form', '', 'ordercard', false, false);
}
isOpenForm = true;
}
});
}
$('.clear-nomens-to-cart').on('click', function() {
popup('atten', 'Внимание!', 'Вы подтверждаете действие?', true, false, '', 'deleteOrderAllPos');
});
$('.clear-nomens-to-cart-list').on('click', function() {
popup('atten', 'Внимание!', 'Вы подтверждаете действие?', true, false, '', 'deleteOrderAllPosList');
});
$('.add-order').on('click', function() {
$(this).parents('form').validationEngine('detach');
$(this).parents('form').validationEngine('attach', {
promptPosition: 'bottomLeft',
onValidationComplete: function(form, status) {
if (status === true) {
preloader('show');
setTimeout(function() {
send_request($('#ordercard_form').serialize(), 'data-exchange', 'data-add-order');
}, 500);
var waitOrderSend = setInterval(function() {
if (typeof dataResultThree != 'undefined' && !$.isEmptyObject(dataResultThree)) {
clearInterval(waitOrderSend);
dataResultThree = {};
setTimeout(function() { delayClosePopup(500); }, 1000);
// Закомментировать след. 2 строки, если нужно чтобы после отправки корзина не очищалась
localStorage['JustCRM-OrderCart-field'] = '[]';
deleteOrderAllPos();
setTimeout(function() { window.location.reload(); }, 500);
}
}, 500);
}
}
});
});
$('body').on('input', '.ordercard-quantity, .ordercard-qty, .ordercard-length, .ordercard-num-order', function() {
$this = $(this);
//setTimeout(function() {
orderStat($this);
//}, 500);
});
$('body').on('focusout', '.ordercard-quantity', function() {
$this = $(this);
orderStat($this, 'minShipment');
});
$('body').on('click', '.order_prod', function() {
orderStat($(this));
});
$('body').on('input', '.ordercard-price', function() {
orderStat($(this));
});
// Если выбран склад, то запрашиваем остатки именно по нему
$('#order-warehouse').on('change', function() {
if ($(this).val() != '') {
var requestData = { 'warehouse': $(this).val(), 'nomen': [] };
$('#ordercard-list').children('.position').each(function(index, element) {
requestData['nomen'].push($(element).data('id-pos'));
});
preloader('show');
// Запрашиваем остатки по складу из 1С
dataResult = {};
dataResultOld = {};
send_request(JSON.stringify(requestData), 'data-exchange', 'send_request_remains_1C');
var waiting = setInterval(function() {
if (!$.isEmptyObject(dataResult)) {
setTimeout(function() {
if (dataResult.success == 'false') {
send_request_remains(requestData, dataResult, false);
} else {
send_request_remains(requestData, dataResult, true);
}
preloader();
}, 500);
clearTimeout(waiting);
}
}, 100);
// Запрашиваем остатки по складу из СРМ
function send_request_remains(requestData, dataResult, dataFlag) {
if (dataFlag === false) {
//console.log('Не удалось данные из 1С получить, запрашиваем старые остатки по складу', requestData);
dataResult = {};
send_request(JSON.stringify(requestData), 'data-exchange', 'send_request_remains');
}
var waiting = setInterval(function() {
// Ожидание данных от 1С
if (!$.isEmptyObject(dataResult)) {
if (typeof(dataResult.error) != 'undefined') {
//console.log('Ошибка ответа по остаткам 1C', requestData, dataResult);
clearTimeout(waiting);
dataResult = {};
preloader();
} else {
//console.log('Ответ по остаткам из 1С получен', requestData, dataResult);
for (key in dataResult) {
$('#ordercard-list').find('[data-id-pos=' + key + ']').children('.remains').html(dataResult[key].quantity);
}
popup('good', 'Успешно!', 'Остатки по складу обновлены!', true, false);
setTimeout(function() {
orderStat();
}, 500);
clearTimeout(waiting);
dataResult = {};
preloader();
}
}
// Ожидание данных от базы CRM
if (!$.isEmptyObject(dataResultOld)) {
if (typeof(dataResultOld.error) != 'undefined') {
//console.log('Ошибка по остаткам CRM', requestData, dataResultOld);
clearTimeout(waiting);
dataResultOld = {};
preloader();
} else {
//console.log('Ответ по остаткам из CRM получен', requestData, dataResultOld);
for (key in dataResultOld) {
$('#ordercard-list').find('[data-id-pos=' + key + ']').children('.remains').html(dataResultOld[key].quantity);
}
popup('good', 'Успешно!', 'Остатки по складу обновлены по последним данным!', true, false);
setTimeout(function() {
orderStat();
}, 500);
clearTimeout(waiting);
dataResultOld = {};
preloader();
}
}
}, 100);
}
}
})
// Распознавание адреса
$('.search-map').on('click', function() {
send_request($(this).parent().prev('input').val(), 'data-exchange', 'send_request_dadata');
var waiting = setInterval(function() {
if (typeof(dataResult) != 'undefined' && typeof(dataResult.suggestions) != 'undefined' && typeof(dataResult.suggestions[0]) != 'undefined') {
if (typeof(dataResult.error) != 'undefined') {
clearTimeout(waiting);
dataResult = {};
}
popup('good', 'Успешно!', 'Адрес распознан и обработан!', true, false);
$('#order-delivery-address').val(dataResult.suggestions[0].unrestricted_value);
$('#order-delivery-coords').val(dataResult.suggestions[0].data.geo_lat + ',' + dataResult.suggestions[0].data.geo_lon);
$('#order-delivery-address-list').val(dataResult.suggestions[0].unrestricted_value);
$('#order-delivery-coords-list').val(dataResult.suggestions[0].data.geo_lat + ',' + dataResult.suggestions[0].data.geo_lon);
clearTimeout(waiting);
dataResult = {};
$('#order-delivery-address').trigger('input');
$('#order-delivery-address-list').trigger('input');
}
}, 100);
});
// Поиск клиента для заказа
var targetInputClient = '#order-client, #order-client-list';
// Объект для адресов доставки клиента
var delAddrObj = {};
$('body').on('input', targetInputClient, function() {
//delAddrObj = {};
$(this).nextAll('input').val('');
if ($(this).val().length >= 3) {
send_request($(this).val(), 'data-exchange', 'data-clients-search');
// dataResult - глобальная переменная
if (!$.isEmptyObject(dataResult)) {
var result = '';
for (var key in dataResult) {
result += '' + dataResult[key].fullName + ' ИНН:' + dataResult[key].INN + ' | КПП:' + dataResult[key].KPP + '
';
// Если есть адреса доставки, то заполняем сооответствующее поле
if (typeof dataResult[key].delivery_addresses != 'undefined' && Object.keys(dataResult[key].delivery_addresses).length > 0) {
var delAddrStr = '';
for (var k in dataResult[key].delivery_addresses) {
delAddrStr += '' + dataResult[key].delivery_addresses[k].name + ' ';
}
delAddrObj[dataResult[key].UID] = delAddrStr;
}
}
$(this).next('.search-result').fadeIn();
if (!$(this).next('.search-result').hasClass('who')) $(this).next('.search-result').addClass('who');
$(this).next('.search-result').html(result);
console.log(delAddrObj)
}
} else {
$('.search-result').fadeOut();
}
});
$('#ordercard_form').find('.search-result').on('click', function() {
$('#order_client_comments').trigger('input');
});
$('.search-result').on('click', 'span', function() {
if ($(this).hasClass('blocked')) return;
$(this).parent().prev('input').val($(this).text());
$(this).parent().next().val($(this).attr('data-clients'));
$(this).parent().next().next().val($(this).attr('data-cat-price'));
$(this).parent().prev('input').css({ 'background': 'lightgreen' });
// Обычный заказ, или листовые изделия
var orderFormId = $(this).parent().prev('input').attr('id')
// Устанавливаем куки клиента
if (orderFormId == 'order-client') {
setCookie('cat_search_price_client_uid', decodeURIComponent($(this).attr('data-clients')));
} else {
setCookie('cat_search_price_client_uid_list', decodeURIComponent($(this).attr('data-clients')));
}
// Добавляем адреса доставки
if (typeof delAddrObj[$(this).attr('data-clients')] != 'undefined') {
if (orderFormId == 'order-client') {
$('#delivery_places').html('Самовывоз Новый адрес доставки ' + delAddrObj[$(this).attr('data-clients')]);
} else {
//console.log(delAddrObj);
$('#delivery_places_list').html('Самовывоз Новый адрес доставки ' + delAddrObj[$(this).attr('data-clients')]);
}
}
if ($('.search-result').hasClass('who')) $('.search-result').removeClass('who');
});
$('body').on('focusout', targetInputClient, function(e) {
if ($(this).nextAll('input').val() == '') {
$(this).val('').css({ 'background': '#F8F9FB' });
}
$('.search-result').fadeOut();
if ($('.search-result').hasClass('who')) dataResult = {};
});
$('body').on('keydown', targetInputClient, function(e) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode === 13) $(this).nextAll('input').trigger('focusout');
});
// Если выбрали не поле Новый адрес доставки, то очищаем введенное ранее в поле Новый адрес доставки
$(document).on('change', '#delivery_places, #delivery_places_list', function() {
if ($('#delivery_places').val() != '%%') {
$('#order-delivery-address').val('');
$('#order-delivery-coords').val('');
}
if ($('#delivery_places_list').val() != '%%') {
$('#order-delivery-address').val('');
$('#order-delivery-coords').val('');
}
// Если поле нового адреса не пустое и не выбран Самовывоз, то скрываем поля Дата доставки и Время доставки
if ($(this).val() == '%' && $.trim($('body').find('#order-delivery-address').val()) == '') {
$('#order-delivery-date, #order-delivery-time').parent('div').hide();
} else {
$('#order-delivery-date, #order-delivery-time').parent('div').show();
}
// Если выбран новый адрес, то делаем его поле обязательным, иначе необязательным
if ($(this).val() == '%%') {
$('#order-delivery-address').attr('class', 'validate[required,minSize[10],maxSize[500]] text-input');
} else {
$('#order-delivery-address').attr('class', 'validate[optional,minSize[3],maxSize[500]] text-input');
}
});
// Если производится ввод в поле Новый адрес доставки, то выбираем в списке Новый адрес доставки
$('#order-delivery-address').on('input', function() {
$('#delivery_places option[value="%%"]').prop('selected', true);
if ($(this).val() == '') $('#delivery_places option[value="%"]').prop('selected', true);
$('#delivery_places_list option[value="%%"]').prop('selected', true);
if ($(this).val() == '') $('#delivery_places_list option[value="%"]').prop('selected', true);
});
$('#order-client, #id_client, #delivery_places, #order_client_comments, #order-delivery-address, #order-delivery-coords, #order_status, #order-delivery-date, #order-delivery-time, #order-pay, #order_prod').on('change, input, click', function() {
var thisForm = $(this).closest('form');
// Заполняем данные
var orderF1 = thisForm.find('#order-client').val();
var orderF2 = thisForm.find('#id_client').val();
var orderF3 = thisForm.find('#client_cat_price').val();
var orderF4 = [thisForm.find('#delivery_places').val(), thisForm.find('#delivery_places option:selected').text()];
var orderF5 = thisForm.find('#order_client_comments').val();
if (thisForm.find('#delivery_places').val() != '%%') {
thisForm.find('#order-delivery-address').val('');
thisForm.find('#order-delivery-coords').val('');
}
var orderF6 = thisForm.find('#order-delivery-address').val();
var orderF7 = thisForm.find('#order-delivery-coords').val();
var orderF8 = thisForm.find('#order_status').val();
var orderF9 = thisForm.find('#order-warehouse').val();
var orderF10 = thisForm.find('#order-delivery-date').val();
var orderF11 = thisForm.find('#order-delivery-time').val();
var orderF12 = thisForm.find('#order-pay').val();
var orderF13 = thisForm.find('#ordercard-edit-flag').val();
var orderF14 = (thisForm.find('#order_prod').prop('checked')) ? 1 : 0;
var orderFAll = [orderF1, orderF2, orderF3, orderF4, orderF5, orderF6, orderF7, orderF8, orderF9, orderF10, orderF11, orderF12, orderF13, orderF14];
localStorage['JustCRM-OrderCart-field'] = JSON.stringify(orderFAll);
});
});
function editOrder(orderId) {
send_request(orderId, 'data-exchange', 'data-edit-order');
var waitOrder = setInterval(function() {
if (typeof dataResultThree != 'undefined' && !$.isEmptyObject(dataResultThree)) {
clearInterval(waitOrder);
// Записываем все данные по основным полям
localStorage['JustCRM-OrderCart-field'] = JSON.stringify(dataResultThree.data);
localStorage['JustCRM-OrderCart'] = JSON.stringify(dataResultThree.table);
localStorage['JustCRM-OrderCart-Sort'] = JSON.stringify(dataResultThree.sort);
localStorage['JustCRM-OrderCart-Shipment'] = JSON.stringify(dataResultThree.shipment);
// Устанавливаем куки клиента
setCookie('cat_search_price_client_uid', decodeURIComponent(dataResultThree.data[1]));
setCookie('cat_search_price_uid', decodeURIComponent(dataResultThree.data[2]));
// Вы водим полный список адресов доставки по клиенту
var deliveryAddressStr = 'Самовывоз Новый адрес доставки ';
if (Object.keys(dataResultThree.delivery_address).length > 0) {
for (key in dataResultThree.delivery_address) {
var selectedAddr = '';
if (dataResultThree.data[3][0] == dataResultThree.delivery_address[key]['UID']) selectedAddr = 'selected="selected"';
deliveryAddressStr += '' + dataResultThree.delivery_address[key]['name'] + ' '
}
}
$('#delivery_places').html(deliveryAddressStr);
// Выбираем склад
$('#order-warehouse option[value="' + dataResultThree.data[8] + '"]').prop('selected', true);
// Выбираем время доставки
$('#order-delivery-time option[value="' + dataResultThree.data[12] + '"]').prop('selected', true);
// Выбираем тип оплаты
$('#order-pay option[value="' + dataResultThree.data[13] + '"]').prop('selected', true);
dataResultThree = '{}';
//orderStat(); // Последние изменения
orderMarkerView();
setTimeout(function() {
$('#marker-cart').trigger('click');
}, 1000);
}
}, 500);
}
// function editOrderList(orderId) {
// sessionStorage['JustCRM-EditOrderList'] = orderId;
// location.href = '/nomendraw';
// }
// function editOrderListView(orderId) {
// sessionStorage.removeItem('JustCRM-EditOrderList');
// send_request(orderId, 'data-exchange', 'data-edit-order-list');
// var waitOrder = setInterval(function() {
// if (typeof dataResultThree != 'undefined' && !$.isEmptyObject(dataResultThree)) {
// clearInterval(waitOrder);
// // Записываем все данные по основным полям
// localStorage['JustCRM-OrderCartList-field'] = JSON.stringify(dataResultThree.data);
// localStorage['JustCRM-OrderCartList'] = JSON.stringify(dataResultThree.table);
// // Устанавливаем куки клиента
// setCookie('cat_search_price_client_uid_list', decodeURIComponent(dataResultThree.data[1]));
// // Вы водим полный список адресов доставки по клиенту
// var deliveryAddressStr = 'Самовывоз Новый адрес доставки ';
// if (Object.keys(dataResultThree.delivery_address).length > 0) {
// for (key in dataResultThree.delivery_address) {
// var selectedAddr = '';
// if (dataResultThree.data[3][0] == dataResultThree.delivery_address[key]['UID']) selectedAddr = 'selected="selected"';
// deliveryAddressStr += '' + dataResultThree.delivery_address[key]['name'] + ' '
// }
// }
// $('#delivery_places_list').html(deliveryAddressStr);
// // Выбираем время доставки
// $('#order-delivery-time-list option[value="' + dataResultThree.data[12] + '"]').prop('selected', true);
// // Выбираем тип оплаты
// $('#order-pay-list option[value="' + dataResultThree.data[13] + '"]').prop('selected', true);
// dataResultThree = '{}';
// orderStatList(); // Последние изменения
// orderMarkerView();
// setTimeout(function() {
// $('#marker-cart-list').trigger('click');
// }, 1000);
// }
// }, 500);
// }
function editOrderList(orderId) {
sessionStorage['JustCRM-EditOrderList'] = orderId;
send_request(orderId, 'data-exchange', 'data-edit-order-list');
var waitOrder = setInterval(function() {
if (typeof dataResultThree != 'undefined' && !$.isEmptyObject(dataResultThree)) {
clearInterval(waitOrder);
// Записываем все данные по основным полям
localStorage['JustCRM-OrderCartList-field'] = JSON.stringify(dataResultThree.data);
localStorage['JustCRM-OrderCartList'] = JSON.stringify(dataResultThree.table);
// Устанавливаем куки клиента
setCookie('cat_search_price_client_uid_list', decodeURIComponent(dataResultThree.data[1]));
setCookie('cat_search_price_uid_list', decodeURIComponent(dataResultThree.data[2]));
dataResultThree = '{}';
setTimeout(function() {
location.href = '/nomendraw';
}, 1000);
}
}, 500);
}
function editOrderListView(orderId) {
sessionStorage.removeItem('JustCRM-EditOrderList');
orderStatList(); // Последние изменения
orderMarkerView();
setTimeout(function() {
$('#marker-cart-list').trigger('click');
}, 1000);
}
function orderStat(quantityField, flag) {
// Все позиции корзины
if (typeof localStorage['JustCRM-OrderCart'] == 'undefined') localStorage['JustCRM-OrderCart'] = '{}';
if (typeof localStorage['JustCRM-OrderCart-field'] == 'undefined') localStorage['JustCRM-OrderCart-field'] = '[]';
var orderCartAll = JSON.parse(localStorage['JustCRM-OrderCart']);
var orderCartAllField = JSON.parse(localStorage['JustCRM-OrderCart-field']);
var orderCartAllShipment = JSON.parse(localStorage['JustCRM-OrderCart-Shipment']);
if (typeof quantityField != 'undefined') {
// Изменение кол-ва товара c пересчетом
if (quantityField.hasClass('ordercard-quantity')) {
// Проверки только если установлен нужый флаг
if (typeof flag != 'undefined' && flag == 'minShipment') {
// Проверяем мин. отгрузочную норму
var minShipment = quantityField.parents('tr').find('.ordercard-min-shipment').val();
if (Number(quantityField.val()) < Number(minShipment)) {
popup('bad', 'Ошибка!', 'Кол-во не может быть менее отгрузочной нормы! Минимум: ' + minShipment + ' ед.', true, false);
quantityField.attr('value', minShipment);
quantityField.val(minShipment);
}
// Округляем к большему исходя из кратности
quantityField.val(roundMultiple(Number(quantityField.val()), Number(minShipment)));
orderCartAll[quantityField.parents('.position').data('id-pos-prefix')][0].value = quantityField.val();
}
// Пересчитываем цену в связи с изменениями кол-ва
var summPos = Number(quantityField.parent().next('[data-price]').attr('data-price').replace(',', '.').replace(' ', '')) * Number(quantityField.val());
quantityField.parent().next('.price').children('input').val(summPos.toFixed(2).replace('.', ',').replace(' ', ''));
}
// Изменение кол-ва и длины для нарезки в производство
if (quantityField.hasClass('ordercard-qty')) {
orderCartAll[quantityField.parents('.position').data('id-pos-prefix')][12].value = quantityField.val().replace(',', '.').replace(' ', '');
}
if (quantityField.hasClass('ordercard-length')) {
orderCartAll[quantityField.parents('.position').data('id-pos-prefix')][13].value = Number(quantityField.val().replace(',', '.').replace(' ', '')).toFixed(2);
}
if (quantityField.hasClass('ordercard-qty') || quantityField.hasClass('ordercard-length')) {
var curPosLine = quantityField.parents('.position');
var prodQty = Number(curPosLine.find('.ordercard-qty').val().replace(',', '.').replace(' ', ''));
var prodLength = Number(curPosLine.find('.ordercard-length').val().replace(',', '.').replace(' ', '')).toFixed(2);
var fullQty = prodQty * prodLength;
var fullSumm = fullQty * Number(curPosLine.find('[data-price]').attr('data-price').replace(',', '.').replace(' ', ''));
if (!isNaN(fullQty) && fullQty !== 0) curPosLine.find('.ordercard-quantity').val(String(fullQty.toFixed(2)).replace(',', '.'));
if (!isNaN(fullSumm)) curPosLine.find('.ordercard-price').val(String(fullSumm.toFixed(2)).replace(',', '.'));
// Пересчитываем цену в связи с изменениями кол-ва
orderCartAll[quantityField.parents('.position').data('id-pos-prefix')][0].value = curPosLine.find('.ordercard-quantity').val();
}
// Включение/Отключение режима заказов для производства
if (quantityField.hasClass('order_prod')) {
var orderProd = 0;
if (quantityField.prop('checked')) {
orderProd = 1;
}
orderCartAllField[13] = orderProd;
}
// Комментарий - номер заказа (в строке товара)
if (quantityField.hasClass('ordercard-num-order')) {
orderCartAll[quantityField.parents('.position').data('id-pos-prefix')][14].value = quantityField.val();
}
}
// Если включена галочка производства, то увеличиваем сумму на 10%
// По всем позициям, где указано, что они для производства
var curPriceProd = 0;
var newPriceProd = 0;
function calcPrice(el) {
var curPosLine = el.parents('.position');
var prodQty = Number(curPosLine.find('.ordercard-qty').val().replace(',', '.').replace(' ', ''));
var prodLength = Number(curPosLine.find('.ordercard-length').val().replace(',', '.').replace(' ', '')).toFixed(2);
var fullQty = prodQty * prodLength;
var fullSumm = fullQty * Number(curPosLine.find('[data-price]').attr('data-price').replace(',', '.').replace(' ', ''));
// Добавляем наценку в 10%
if (orderCartAllField[13] == '1') fullSumm = fullSumm * 1.1;
if (!isNaN(fullQty) && fullQty !== 0) curPosLine.find('.ordercard-quantity').val(String(fullQty.toFixed(2)).replace(',', '.'));
return (!isNaN(fullSumm)) ? String(fullSumm.toFixed(2)).replace(',', '.') : 0;
}
// Блокируем/разблокируем поле ввода кол-во позиций, которые заказываются на производство
// если стоит галочка для производства
// Пересчитываем цену
$('#ordercard-list').find('.ordercard-prod[value="2"]').each(function(i, el) {
if (orderCartAllField[13] == '1' || (typeof quantityField != 'undefined' && !quantityField.hasClass('ordercard-quantity'))) {
if (typeof quantityField == 'undefined' || (typeof quantityField != 'undefined' && !quantityField.hasClass('ordercard-price'))) {
$(el).parents('.position').find('.ordercard-price').val(calcPrice($(el)));
}
}
if (orderCartAllField[13] == '1') {
$(el).parents('.position').find('.ordercard-quantity').prop('readonly', true);
} else {
$(el).parents('.position').find('.ordercard-quantity').prop('readonly', false);
}
});
// Скрываем поля ввода позиций, которые заказываются на производство
$('#ordercard-list').find('.ordercard-prod[value="1"]').each(function(index, element) {
$(element).parents('.position').find('.ordercard-qty').hide();
$(element).parents('.position').find('.ordercard-length').hide();
$(element).parents('.position').find('.ordercard-num-order').hide();
});
// Сохранение остатков
$('body').find('#ordercard-list').find('.remains').each(function(index, element) {
var searchKey = searchKeyInOrder($(element).parents('.position').data('id-pos'), orderCartAll);
orderCartAll[searchKey][6].value = Number($(element).text());
// Если нет доступного остатка, то подсвечиваем строку
if (Number($(element).text()) === 0) {
$(element).parent('tr').css({ 'background-color': 'tomato' });
} else {
$(element).parent('tr').css({ 'background-color': 'unset' });
}
});
// Записываем изменения
localStorage['JustCRM-OrderCart-field'] = JSON.stringify(orderCartAllField);
localStorage['JustCRM-OrderCart'] = JSON.stringify(orderCartAll);
// Пересчет сумм
var allQuant = 0;
var allSumm = 0;
$('body').find('#ordercard-list').find('.ordercard-quantity').each(function(index, element) {
allQuant += Number($(element)[0].value);
allSumm += Number($(element).parent().next().children('input').val().replace(',', '.'));
});
$('.all-quant').children('strong').html(allQuant.toFixed(2));
$('.all-summ').children('strong').html(allSumm.toFixed(2).replace('.', ','));
// Изменение полей кроме списка товаров
if (typeof localStorage['JustCRM-OrderCart-field'] != 'undefined' && localStorage['JustCRM-OrderCart-field'] != '[]') {
var orderFAll = JSON.parse(localStorage['JustCRM-OrderCart-field']);
if (orderFAll[0] != '') $('#order-client').val(orderFAll[0]);
if (orderFAll[1] != '') $('#id_client').val(orderFAll[1]);
if (orderFAll[2] != '') $('#client_cat_price').val(orderFAll[2]);
// Удаляем старое значение и добавляем новое
//console.log(orderFAll, orderFAll[3][0]);
if (typeof orderFAll[3] != 'undefined' && orderFAll[3] !== null && typeof orderFAll[3][0] != 'undefined' && orderFAll[3][0] != '') {
$('#delivery_places').children('[value="' + orderFAll[3][0] + '"]').remove();
$('#delivery_places').append('' + orderFAll[3][1] + ' ');
}
$('#order_client_comments').val(orderFAll[4]);
$('#order-delivery-address').val(orderFAll[5]);
$('#order-delivery-coords').val(orderFAll[6]);
if (typeof orderFAll[7] == 'undefined' && orderFAll[7] == '') {
$('#order_status option[value="1"]').prop('selected', true);
} else {
$('#order_status option[value="' + orderFAll[7] + '"]').prop('selected', true);
}
$('#order_status').trigger('change');
/*
if (typeof orderFAll[8] == 'undefined' && orderFAll[8] == '') {
$('#order-warehouse option[value="1"]').prop('selected', true);
} else {
$('#order-warehouse option[value="'+orderFAll[8]+'"]').prop('selected', true);
console.log('adasdasd');
}
*/
//$('#order-warehouse').trigger('change');
/*
if (typeof orderFAll[3][0] == 'undefined' || orderFAll[3][0] == '') {
$('#delivery_places[value=""]').prop('selected', true);
} else {
$('#delivery_places[value="'+orderFAll[3][0]+'"]').prop('selected', true);
}
$('#delivery_places').trigger('change');
*/
$('#order-delivery-date').val(orderFAll[9]);
if (typeof orderFAll[10] == 'undefined' && orderFAll[10] == '') {
$('#order-delivery-time option[value=""]').prop('selected', true);
} else {
$('#order-delivery-time option[value="' + orderFAll[10] + '"]').prop('selected', true);
}
$('#order-delivery-time').trigger('change');
if (typeof orderFAll[11] == 'undefined' && orderFAll[11] == '') {
$('#order-pay option[value=""]').prop('selected', true);
} else {
$('#order-pay option[value="' + orderFAll[11] + '"]').prop('selected', true);
}
$('#order-pay').trigger('change');
$('#ordercard-edit-flag').val(orderFAll[12]);
// Если поле нового адреса заполнено, то выбираем Новый адрес доставки из списка
if ($.trim($('#order-delivery-address').val()) != '') {
$('#delivery_places option[value="%%"]').prop('selected', true);
}
/*else {
$('#delivery_places option[value="%"]').prop('selected', true);
}*/
// Заполняем значение производства
if (orderFAll[13] == '1') {
$('#order_prod').prop('checked', true);
$('.prod-field').show();
$('#order-colspan').attr('colspan', '9');
} else {
$('#order_prod').prop('checked', false);
$('.prod-field').hide();
$('#order-colspan').attr('colspan', '6');
}
// Ставим массив для сортировки позиций в поле
$('#ordercard-sort').val(localStorage['JustCRM-OrderCart-Sort']);
$('#ordercard-shipment').val(localStorage['JustCRM-OrderCart-Shipment']);
}
}
function searchKeyInOrder(searchKey, orderObj) {
for (key in orderObj) {
if (searchKey == key) {
return key;
}
if (key.indexOf(searchKey + '_') > -1) {
return key;
}
}
}
function addOrder(orderClient, idClient, clientCatPrice, first) {
if (!first) {
var orderF4 = ["%", "Самовывоз"],
orderF5 = '',
orderF6 = '',
orderF7 = '',
orderF8 = '',
orderF9 = '',
orderF10 = '',
orderF11 = '',
orderF12 = '',
orderF13 = '',
orderF14 = '';
var orderFAll = [decodeURIComponent(orderClient), decodeURIComponent(idClient), decodeURIComponent(clientCatPrice), orderF4, orderF5, orderF6, orderF7, orderF8, orderF9, orderF10, orderF11, orderF12, orderF13, orderF14];
localStorage['JustCRM-OrderCart-field'] = JSON.stringify(orderFAll);
console.log('Вызов на добавление данных.', orderClient, idClient, clientCatPrice, first)
location.href = '/nomen?cat_price=' + encodeURI(clientCatPrice) + '&cat_price_client_uid=' + encodeURI(idClient);
} else {
console.log('Обновление данных для заказа:', orderClient, idClient, clientCatPrice, first);
if (typeof localStorage['JustCRM-OrderCart-field'] == 'undefined') localStorage['JustCRM-OrderCart-field'] = '[]';
try {
var orderFAll = JSON.parse(localStorage['JustCRM-OrderCart-field']);
} catch (e) {
var orderFAll = [];
}
orderFAll[0] = decodeURIComponent(orderClient);
orderFAll[1] = decodeURIComponent(idClient);
orderFAll[2] = decodeURIComponent(clientCatPrice);
orderFAll[3] = ["%", "Самовывоз"];
orderFAll[4] = '';
orderFAll[5] = '';
orderFAll[6] = '';
orderFAll[7] = '1';
orderFAll[8] = '';
orderFAll[9] = '';
orderFAll[10] = '';
orderFAll[11] = '';
orderFAll[12] = '';
orderFAll[13] = 0;
localStorage['JustCRM-OrderCart-field'] = JSON.stringify(orderFAll);
}
}
function addOrderList(orderClient, idClient, clientCatPrice, first) {
if (!first) {
var orderF4 = ["%", "Самовывоз"],
orderF5 = '',
orderF6 = '',
orderF7 = '',
orderF8 = '',
orderF9 = '',
orderF10 = '',
orderF11 = '',
orderF12 = '',
orderF13 = '',
orderF14 = '';
var orderFAll = [decodeURIComponent(orderClient), decodeURIComponent(idClient), decodeURIComponent(clientCatPrice), orderF4, orderF5, orderF6, orderF7, orderF8, orderF9, orderF10, orderF11, orderF12, orderF13, orderF14];
localStorage['JustCRM-OrderCartList-field'] = JSON.stringify(orderFAll);
console.log('Вызов на добавление данных.', orderClient, idClient, clientCatPrice, first)
location.href = '/nomendraw?cat_price=' + encodeURI(clientCatPrice) + '&cat_price_client_uid=' + encodeURI(idClient);
} else {
console.log('Обновление данных для заказа:', orderClient, idClient, clientCatPrice, first);
if (typeof localStorage['JustCRM-OrderCartList-field'] == 'undefined') localStorage['JustCRM-OrderCartList-field'] = '[]';
try {
var orderFAll = JSON.parse(localStorage['JustCRM-OrderCartList-field']);
} catch (e) {
var orderFAll = [];
}
orderFAll[0] = decodeURIComponent(orderClient);
orderFAll[1] = decodeURIComponent(idClient);
orderFAll[2] = decodeURIComponent(clientCatPrice);
orderFAll[3] = ["%", "Самовывоз"];
orderFAll[4] = '';
orderFAll[5] = '';
orderFAll[6] = '';
orderFAll[7] = '1';
orderFAll[8] = '';
orderFAll[9] = '';
orderFAll[10] = '';
orderFAll[11] = '';
orderFAll[12] = '';
orderFAll[13] = 0;
localStorage['JustCRM-OrderCartList-field'] = JSON.stringify(orderFAll);
}
}
function deleteOrderAllPos() {
// Удаляем выбранного клиента и сведения о нём
$('.client_warning').hide();
deleteCookie('cat_search_price_client_uid');
deleteCookie('JustCRM_open_master_order');
// Очищаем корзину заказа
$('#ordercard_form').find('#ordercard-list').children().remove();
localStorage['JustCRM-OrderCart'] = '{}';
localStorage['JustCRM-OrderCart-Sort'] = '{}';
localStorage['JustCRM-OrderCart-Shipment'] = '{}';
localStorage['JustCRM-OrderCart-field'] = '[]';
$('body').find('.select-cart-pos').removeClass('select-cart-pos');
orderMarkerView();
delayClosePopup(0);
setTimeout(function() {
delayClosePopup(500);
setTimeout(function() {
location.reload();
}, 500);
}, 500);
}
function deleteOrderAllPosList() {
$('.client_warning').hide();
deleteCookie('cat_search_price_client_uid_list');
deleteCookie('JustCRM_open_master_order_list');
// Очищаем корзину заказа
$('#ordercardlist_form').find('#ordercardlist-list').children().remove();
localStorage['JustCRM-OrderCartList'] = '{}';
localStorage['JustCRM-OrderCartList-field'] = '{}';
$('body').find('.select-cart-pos').removeClass('select-cart-pos');
delayClosePopup(0);
setTimeout(function() {
delayClosePopup(500);
setTimeout(function() {
location.reload();
}, 500);
}, 500);
}
function deleteOrderPos(storeVarId, storeVar, templateId) {
var orderCartAll = JSON.parse(localStorage['JustCRM-OrderCart']);
var orderCartAllSort = JSON.parse(localStorage['JustCRM-OrderCart-Sort']);
var orderCartAllShipment = JSON.parse(localStorage['JustCRM-OrderCart-Shipment']);
delete orderCartAll[storeVarId];
delete orderCartAllSort[storeVarId];
delete orderCartAllShipment[storeVarId];
localStorage['JustCRM-OrderCart'] = JSON.stringify(orderCartAll);
localStorage['JustCRM-OrderCart-Sort'] = JSON.stringify(orderCartAllSort);
localStorage['JustCRM-OrderCart-Shipment'] = JSON.stringify(orderCartAllShipment);
//$(templateId).children('[data-id-pos="' + storeVarId + '"]').remove();
$(templateId).children('[data-id-pos-prefix="' + storeVarId + '"]').remove();
$(this).parents('td').first().find('input').removeClass('select-cart-pos');
$('#toBackAncor_' + storeVarId).children('[data-add-cart]').find('input').removeClass('select-cart-pos');
orderMarkerView();
delayClosePopup(0);
setTimeout(function() {
if ($(templateId).children('tr').length === 0) {
delayClosePopup(500);
}
}, 500);
orderStat();
}
function orderMarkerView() {
if (typeof localStorage['JustCRM-OrderCart'] != 'undefined') {
var orderCartAll = JSON.parse(localStorage['JustCRM-OrderCart']);
if (Object.keys(orderCartAll).length > 0) {
$('#marker-cart').show();
$('#marker-cart').find('.marker').html(Object.keys(orderCartAll).length);
} else {
$('#marker-cart').hide();
}
}
}
// Корзина заказа - НОВАЯ КОРЗИНА - Конец
// Корзина изделий из листового металла
function orderListMarkerView() {
if (typeof localStorage['JustCRM-OrderCartList'] != 'undefined') {
var orderCartAllList = JSON.parse(localStorage['JustCRM-OrderCartList']);
if (Object.keys(orderCartAllList).length > 0) {
$('#marker-cart-list').show();
$('#marker-cart-list').find('.marker').html(Object.keys(orderCartAllList).length);
} else {
$('#marker-cart-list').hide();
}
}
}
// Телефон - вызов номера
function makeCall(phone) {
var phoneNumber = (typeof(phone) == 'object') ? $(phone).parent('div').children('input').val() : phone;
if (/^\+?\d{10,18}$/.test(phoneNumber)) {
send_request(phoneNumber, 'data-exchange', 'data-make-call');
delayClosePopup(1000);
delayClosePopup(2000);
} else {
popup('bad', 'Ошибка!', 'Номер некорректен! Исправьте для успешного набора.', true, false);
}
}
// Уведомления
// Проверка и запрос разрешений на уведомления
function notifyMe(subj, mess, tag) {
// Теперь давайте проверим есть ли у нас разрешение для отображения уведомления
if (Notification.permission === "granted") {
// Если все в порядке, то создадим уведомление
notify(subj, mess, tag);
}
// В противном случае, мы должны спросить у пользователя разрешение
else if (Notification.permission === 'default') {
Notification.requestPermission(function(permission) {
// Не зависимо от ответа, сохраняем его в настройках
if (!('permission' in Notification)) {
Notification.permission = permission;
}
// Если разрешение получено, то создадим уведомление
if (permission === "granted") {
notify(subj, mess, tag);
}
});
}
}
// Вывод уведомления
function notify(subj, mess, tag) {
var notification = new Notification(subj, {
lang: 'ru-RU',
body: mess,
icon: '/img-vendor/logo_note.png',
tag: tag,
requireInteraction: true
});
// Действие по клику
notification.onclick = function() {
var info = JSON.parse(notification.tag);
// Формируем ссылку на Юр.лиц, Физ. лиц, либо Лидов в зависимости от clientType и lidasType
var linkType = (info.clientType != '2') ? 'clients' : 'fiz';
if (info.lidasType == '1') linkType = 'lidas';
// Если клиент идентифицирован, то открываен форму редактирования
if (info.clientId && info.clientId != 'new') {
window.location.href = '/' + linkType + '/_details/' + info.clientId;
} else if (info.clientId == 'new') {
// Иначе пустая форма клиента c входящим номером
setCookie('call_client', info.clientNumber);
location.href = '/lidas/client';
}
// Если иные события
if (info.command) {
switch (info.command) {
case 'new_task':
window.location.href = info.task_url;
break;
case 'dropped_call':
window.location.href = '/tasks';
break;
case 'new_letter':
window.location.href = '/mailbox?filter_parametres=filter_all';
break;
}
}
}
}
// Уведомления - Конец
// Вывод на печать
function toPrint(obj, zag, nologo) {
var objPrint = $(obj).clone();
if (!nologo) {
var newWin = window.open('/components/inc/print.html', 'Печать и сохранение', 'width=1200,height=600,resizable=yes,scrollbars=yes,status=no,toolbar=no,location=no,menubar=no');
} else {
var newWin = window.open('/components/inc/print.html', 'Печать и сохранение', 'width=1200,height=600,resizable=yes,scrollbars=yes,status=no,toolbar=no,location=no,menubar=yes');
}
newWin.onload = function() {
var div = newWin.document.createElement('div');
body = newWin.document.body;
div.innerHTML = objPrint[0].innerHTML;
body.insertBefore(div, body.firstChild);
$(body).find('.print').remove();
$(body).find('.delete-print').remove();
$(body).find('.clear-print').attr('class', '').attr('id', '').attr('style', '');
$(body).children('div').css({ 'margin': '5em' });
$(body).children('div').prepend('' + zag + ' ');
if (!nologo) {
$(body).children('div').prepend(' ');
setTimeout(function() {
newWin.print();
}, 500);
}
}
}
// Скролл до объекта
function scr(obj, delay) {
try {
if (!delay) var delay = 0;
setTimeout(function() {
$('html, body').animate({ scrollTop: $('#' + obj).offset().top }, 250, 'swing');
preloader();
}, delay);
} catch (e) {
console.log('Нет объекта для возврата.');
}
}
function scrInDiv(obj, delay) {
try {
if (!delay) var delay = 0;
var container = $('#' + obj).parents('.scroll');
$('html, body').animate({ scrollTop: container.offset().top }, 250, 'swing'); //jqBar.position().top
setTimeout(function() {
container.animate({ scrollTop: document.getElementById(obj).offsetTop }, 250, 'swing');
}, delay);
} catch (e) {
console.log('Нет объекта для возврата.');
}
}
/*
setTimeout(function() {
sendSocket('{"command":"new_task", "id_client":"'+guid+'"}');
}, 2000);
*/
// Отправка сообщения в сокет
function sendSocket(command) {
if (window.parent.socket) window.parent.socket.send(command);
}
// Декодирование HTML-сущностей
function htmlDecode(input) {
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
// Парсинг параметров GET
function findGetParameter(findGet) {
var result = {},
temp = null,
findGetValue = false;
location.search.substr(1).split('&').forEach(function(item) {
item.split('=').forEach(function(item, i) {
if (i === 0) {
temp = decodeURIComponent(item);
if (temp != '') result[temp] = 0;
};
if (i === 1) result[temp] = decodeURIComponent(item);
// Если задан параметр поиска значения GET по ключу
if (typeof(findGet) != 'undefined' && findGet == temp && result[temp] != '') {
findGetValue = true;
return false;
}
});
});
if (findGet && findGetValue) {
return result[temp];
} else {
if (Object.keys(result).length !== 0 && !findGet) return result;
else return false;
}
}
// Переход по указанному URL
function proceedURL(url) {
location.href = url;
}
// Округление в большую сторону к требуемому числу
function roundMultiple(num, multiple) {
return (Math.ceil(num / multiple) * multiple);
}