Joywork/js/charts.js
2026-05-22 21:21:54 +03:00

5293 lines
189 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var data_stat_arr = null;
var type_calendar = null;
var switchToDayInTasks = true;
var needCalendarView = null;
$(document).ready(function() {
$('#ms-crm-charts-period').fastselect({
placeholder: 'Период'
});
$('#filter-clientreq').fastselect({
placeholder: '',
onItemSelect: function(item, val) {
if (parseInt(val.value) == 1) {
setSelectsFastselect('filter_charts_funnel', null, 'select_form_funnel.php', 'Воронка', 'req');
} else {
setSelectsFastselect('filter_charts_funnel', null, 'select_form_funnel.php', 'Воронка', 'client');
}
show_options_search_charts();
},
onItemDelete: function() {
setSelectsFastselect('filter_charts_funnel', null, 'select_form_funnel.php', 'Воронка', 'client');
show_options_search_charts();
}
});
$('#ms-crm-charts-work').fastselect({
placeholder: 'Ответственный',
onItemCreate: function(item, model) {
if ($('#ms-crm-charts-work').find('option[value=' + model.value + ']').hasClass('bolt')) {
$(item).addClass('bolt');
}
},
onItemSelect: function() {
//var user_id = $('#ms-crm-charts-work').val();
// $('.search-query-item:eq(1) span').text($('#ms-crm-charts-work [value='+user_id+']').text());
// $('.dashboard-work a').attr('href', '/clients.php?id_manager='+user_id);
show_options_search_charts();
},
onItemDelete: function() {
// var user_id = $('#ms-crm-charts-work').val();
// $('.search-query-item:eq(1) span').text($('#ms-crm-charts-work [value='+user_id+']').text());
// $('.dashboard-work a').attr('href', '/clients.php?id_manager='+user_id);
show_options_search_charts();
}
});
$('#filter-charts-type').fastselect({
placeholder: 'Тип',
onItemSelect: function() {
show_options_search_charts();
},
onItemDelete: function() {
show_options_search_charts();
}
});
$('#filter_charts_activities').fastselect({
placeholder: 'Теги',
onItemSelect: function() {
show_options_search_charts();
},
onItemDelete: function() {
show_options_search_charts();
}
});
$('#filter-charts-objects-type').fastselect({
placeholder: 'Тип недвижимости',
onItemSelect: function() {
show_options_search_charts();
},
onItemDelete: function() {
show_options_search_charts();
}
});
$('#filter_charts_rol').fastselect({
placeholder: 'Роль клиента',
onItemSelect: function() {
show_options_search_charts();
},
onItemDelete: function() {
show_options_search_charts();
}
});
$('#filter_charts_source').fastselect({
placeholder: 'Источник',
onItemSelect: function() {
show_options_search_charts();
},
onItemDelete: function() {
show_options_search_charts();
}
});
$('#filter_charts_partner').fastselect({
placeholder: 'Партнёры',
onItemSelect: function() {
this.$controls.find('.fstChoiceItem').each(function() {
let value = $(this).data('value');
let label = $('#filter_charts_partner option[value="' + value + '"]').data("label");
if (label) {
this.childNodes[0].nodeValue = label;
}
});
show_options_search_charts();
},
onItemDelete: function() {
show_options_search_charts();
}
});
setSelectsFastselect('filter_charts_funnel', null, 'select_form_funnel.php', 'Воронка', 'client');
var queryParams = parseQueryString(window.location.search);
// var type_calendar=null;
if (queryParams) {
if (queryParams.tasks !== undefined) {
type_calendar = queryParams.type_calendar;
}
if (queryParams.tasks !== undefined) {
showCalendar(queryParams.tasks, type_calendar);
}
} else {
if (localStorage['chartspage'] && localStorage['chartspage'] !== undefined) {
var chartspage = localStorage['chartspage'];
/* if(localStorage['chartspage']=='table'){
}*/
$('.crm__tasks').addClass('hidden');
//$('.crm__tasks_objects').addClass('hidden');
$('.crm__dashboard').addClass('hidden');
$('.crm__stats').addClass('hidden');
$('.crm__stats_objects').addClass('hidden');
$('.crm__table').addClass('hidden');
$('.crm__' + chartspage).removeClass('hidden');
$('.tab').removeClass('selected');
$('.charts-type-input').removeClass('hidden');
$('.charts-objects-type-input').removeClass('hidden');
$('.charts-role-input').removeClass('hidden');
$('.charts-source-input').removeClass('hidden');
$('.charts-funnel-input').removeClass('hidden');
switch (localStorage['chartspage']) {
case 'tasks':
{
$('#filter_time .filter-popup-type').removeClass('active');
$('#filter_time #today').addClass('active');
getCalendar();
$('#filter_task').removeClass('hidden');
// $('#filter_time').addClass('hidden');
$('.crm__new-task').removeClass('hidden');
$('.crm__new-event').removeClass('hidden');
$('.tab:eq(1)').addClass('selected');
$('.__stat_table').hide();
break;
}
/* case 'tasks_objects': {
getCalendarObject();
$('#filter_task').removeClass('hidden');
// $('#filter_time').addClass('hidden');
//$('.crm__new-task').removeClass('hidden');
//$('.crm__new-event').removeClass('hidden');
$('.crm__new-task').addClass('hidden');
$('.crm__new-event').addClass('hidden');
$('.charts-type-input').addClass('hidden');
$('.charts-objects-type-input').addClass('hidden');
$('.charts-role-input').addClass('hidden');
$('.charts-source-input').addClass('hidden');
$('.charts-funnel-input').addClass('hidden');
$('.tab:eq(3)').addClass('selected');
$('.__stat_table').hide();
break;
}*/
case 'stats':
{
// $('#filter_time').removeClass('hidden');
$('#filter_task').addClass('hidden');
$('.crm__new-task').addClass('hidden');
$('.crm__new-event').addClass('hidden');
$('.tab:eq(2)').addClass('selected');
$('.view-charts').addClass('active');
$('.view-table').removeClass('active');
$('.__stat_table').hide();
$('#export_stat_client').hide();
getStats();
break;
}
case 'objectsStat':
{
$('#filter_task').addClass('hidden');
$('.view-charts').hide();
$('.view-table').hide();
$('.tab:eq(3)').addClass('selected');
$('.charts-type-input').addClass('hidden');
$('.charts-objects-type-input').addClass('hidden');
$('.charts-role-input').addClass('hidden');
$('.charts-source-input').addClass('hidden');
$('.charts-funnel-input').addClass('hidden');
$('#export_stat_client').hide();
getStatsObjects();
break;
}
case 'table':
{
//$('#filter_time').removeClass('hidden');
$('#filter_task').addClass('hidden');
$('.crm__new-task').addClass('hidden');
$('.crm__new-event').addClass('hidden');
$('.tab:eq(2)').addClass('selected');
$('.view-charts').removeClass('active');
$('.view-table').addClass('active');
$('#export_stat_client').show();
getStats();
break;
}
case 'telephony':
{
$('.view-charts').removeClass('active');
//$('#filter_time').addClass('hidden');
$('#filter_task').addClass('hidden');
$('.crm__new-task').addClass('hidden');
$('.crm__new-event').addClass('hidden');
$('.tab:eq(4)').addClass('selected');
$('.view-table').removeClass('active');
$('.__stat_table').hide();
$('#export_stat_client').hide();
getTelephony();
break;
}
default:
{
getDashboard();
//$('#filter_time').removeClass('hidden');
$('#filter_task').addClass('hidden');
$('.crm__new-task').addClass('hidden');
$('.crm__new-event').addClass('hidden');
$('.tab:eq(0)').addClass('selected');
$('#export_stat_client').hide();
$('.__stat_table').hide();
}
}
// $('.jw__page__tabs a:eq(1)').click();
} else {
$('.crm__dashboard').removeClass('hidden');
getDashboard();
}
}
show_options_search_charts();
$('body').on('click', '.tab', function() {
$('.tab').removeClass('selected');
$(this).addClass('selected');
$('.crm__tasks').addClass('hidden');
//$('.crm__tasks_objects').addClass('hidden');
$('.crm__dashboard').addClass('hidden');
$('.crm__stats').addClass('hidden');
$('.crm__stats_objects').addClass('hidden');
$('.crm__table').addClass('hidden');
$('.crm__telephony').addClass('hidden');
$('.charts-type-input').removeClass('hidden');
$('.charts-objects-type-input').removeClass('hidden');
$('.charts-role-input').removeClass('hidden');
$('.charts-source-input').removeClass('hidden');
$('.charts-funnel-input').removeClass('hidden');
var classTab = $(this).data("tab");
$('.crm__' + classTab).removeClass('hidden');
show_options_search_charts();
if (classTab == 'stats') {
$('#filter_time .filter-popup-type').removeClass('active');
$('#filter_time #30days').addClass('active');
getStats();
//$('#filter_time').removeClass('hidden');
$('#filter_task').addClass('hidden');
$('.crm__new-task').addClass('hidden');
$('.crm__new-event').addClass('hidden');
$('.__stat_table').hide();
// $('.search-query-item:eq(0) span').text($('#filter_time .active').find('span').text());
}
if (classTab == 'stats_objects') {
$('#filter_time .filter-popup-type').removeClass('active');
$('#filter_time #30days').addClass('active');
getStatsObjects();
$('#filter_task').addClass('hidden');
$('.crm__new-task').addClass('hidden');
$('.crm__new-event').addClass('hidden');
$('.__stat_table').hide();
$('.charts-type-input').addClass('hidden');
$('.charts-objects-type-input').addClass('hidden');
$('.charts-role-input').addClass('hidden');
$('.charts-source-input').addClass('hidden');
$('.charts-funnel-input').addClass('hidden');
$('#export_stat_client').show();
show_options_search_charts();
}
if (classTab == 'dashboard') {
$('#filter_time .filter-popup-type').removeClass('active');
$('#filter_time #30days').addClass('active');
getDashboard();
//$('#filter_time').removeClass('hidden');
$('#filter_task').addClass('hidden');
$('.crm__new-task').addClass('hidden');
$('.crm__new-event').addClass('hidden');
$('.__stat_table').hide();
// $('.search-query-item:eq(0) span').text($('#filter_time .active').find('span').text());
}
if (classTab == 'tasks') {
if (switchToDayInTasks) {
$('#filter_time .filter-popup-type').removeClass('active');
$('#filter_time #today').addClass('active');
} else {
switchToDayInTasks = true;
}
getCalendar();
$('#filter_task').removeClass('hidden');
//$('#filter_time').addClass('hidden');
$('.crm__new-task').removeClass('hidden');
$('.crm__new-event').removeClass('hidden');
$('.__stat_table').hide();
// $('.search-query-item:eq(0) span').text($('#filter_task .active').find('span').text());
}
/*if (classTab == 'tasks_objects') {
getCalendarObject();
$('#filter_task').removeClass('hidden');
//$('#filter_time').addClass('hidden');
//$('.crm__new-task').removeClass('hidden');
//$('.crm__new-event').removeClass('hidden');
$('.crm__new-task').addClass('hidden');
$('.crm__new-event').addClass('hidden');
$('.charts-type-input').addClass('hidden');
$('.charts-objects-type-input').addClass('hidden');
$('.charts-role-input').addClass('hidden');
$('.charts-source-input').addClass('hidden');
$('.charts-funnel-input').addClass('hidden');
$('.__stat_table').hide();
// $('.search-query-item:eq(0) span').text($('#filter_task .active').find('span').text());
}*/
if (classTab == 'telephony') {
$('#filter_time .filter-popup-type').removeClass('active');
$('#filter_time #30days').addClass('active');
getTelephony();
$('#filter_task').removeClass('hidden');
//$('#filter_time').addClass('hidden');
$('.crm__new-task').removeClass('hidden');
$('.crm__new-event').removeClass('hidden');
$('.__stat_table').hide();
// $('.search-query-item:eq(0) span').text($('#filter_task .active').find('span').text());
}
});
$('.datepicker-filter').datepicker({
autoClose: 'true',
onSelect: function() {}
});
$("body").on("click", ".view-charts", function() {
$(this).addClass('active');
$('.view-table').removeClass('active');
$('#export_stat_client').hide();
getStats();
});
$("body").on("click", ".view-table", function() {
$(this).addClass('active');
$('.view-charts').removeClass('active');
$('#export_stat_client').show();
getStats();
});
/*$("body").on("change", "input[name=role]:checked", function(){
$("#grid-keep-selection").bootgrid("reload");
});*/
$("body").on("click", ".objects-table", function() {
var page = $(this).data("page");
showObjectsTableWindow(null, null, page, false);
});
//Выгрузка excel статистики клиентов
$("body").on("click", "#export_stat_client", function() {
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = $('#ms-crm-charts-work').val();
var charts_type = $('#filter-charts-type').val();
var charts_activities = $('#filter_chatrts_activities').val();
var charts_objects_type = $('#filter-charts-objects-type').val();
var priority1, priority2, priority3, priority4;
if ($('.filter-priority1').hasClass('active')) {
priority1 = 1;
}
if ($('.filter-priority2').hasClass('active')) {
priority2 = 1;
}
if ($('.filter-priority3').hasClass('active')) {
priority3 = 1;
}
if ($('.filter-priority4').hasClass('active')) {
priority4 = 1;
}
var charts_rol = $('#filter_charts_rol').val();
var source = $('#filter_charts_source').val();
var partner = $('#filter_charts_partner').val();
var funnel = $('#filter_charts_funnel').val();
var params = {
period: period,
responsible: JSON.stringify(responsible),
user_id: $('#session_user_id').val(),
users_admin: $('#session_user_admin').val(),
charts_type: JSON.stringify(charts_type),
charts_objects_type: JSON.stringify(charts_objects_type),
priority1: JSON.stringify(priority1),
priority2: JSON.stringify(priority2),
priority3: JSON.stringify(priority3),
priority4: JSON.stringify(priority4),
charts_rol: JSON.stringify(charts_rol),
source: JSON.stringify(source),
partner: JSON.stringify(partner),
funnel: JSON.stringify(funnel),
charts_activities: JSON.stringify(charts_activities)
}
if (period == 'dates') {
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
params.onDate = onDate;
params.offDate = offDate;
}
var clients = true;
var object = true;
var data_stat = false;
if ($('.crm__table.hidden').length > 0) {
clients = false;
}
if ($('.crm__stats_objects.hidden').length > 0) {
object = false;
}
if ($('.__stat_table').css('display') != 'none') {
data_stat = true;
}
if (clients) {
var clientreq = $('#filter-clientreq').val();
/*var rows = JSON.stringify($("#grid-keep-selection").bootgrid("getCurrentRows"));
var columns = JSON.stringify($("#grid-keep-selection").bootgrid("getColumnSettings"));
// console.log(params);
params.rows = rows;
params.columns = columns;
params.type = 'clients';
$.post("/ajax/export_excel_stat_client.php", params, function (data) {
//console.log(data);
var res = JSON.parse(data);
if (res.result == 'ok') {
var $a = $("<a>");
$a.attr("href", res.file);
$("body").append($a);
$a.attr("download", res.name);
$a[0].click();
$a.remove();
}
});*/
if(clientreq == 1){
$('#grid-keep-selection-req').tableExport({
fileName: "Заявки статистика",
type: 'excel',
date: { html: 'dd/mm/yyyy' },
htmlContent: false,
mso: {
fileFormat: 'xlsx',
styles: ['border-bottom', 'border-top', 'border-left', 'border-right'],
xlsx: {
formatId: {numbers: 1},
onHyperlink: function($cell, row, col, href, content, hyperlink){
var v = hyperlink;
if($($cell.html()).is('a')){
v = $($cell.html()).text();
}
return v;
}
},
},
});
} else {
$('#grid-keep-selection-new').tableExport({
fileName: "Клиент статистика",
type: 'excel',
date: { html: 'dd/mm/yyyy' },
htmlContent: false,
mso: {
fileFormat: 'xlsx',
styles: ['border-bottom', 'border-top', 'border-left', 'border-right'],
xlsx: {
formatId: {numbers: 1},
onHyperlink: function($cell, row, col, href, content, hyperlink){
var v = hyperlink;
if($($cell.html()).is('a')){
v = $($cell.html()).text();
}
return v;
}
},
},
});
}
}
if (object) {
// var rows = JSON.stringify($("#obj-stat-grid-full").bootgrid("getCurrentRows"));
// var columns = JSON.stringify($("#obj-stat-grid-full").bootgrid("getColumnSettings"));
// params.rows = rows;
// params.columns = columns;
// params.type = 'object';
// $.post("/ajax/export_excel_stat_client.php", params, function(data) {
// var res = JSON.parse(data);
// if (res.result == 'ok') {
// var $a = $("<a>");
// $a.attr("href", res.file);
// $("body").append($a);
// $a.attr("download", res.name);
// $a[0].click();
// $a.remove();
// }
// });
//console.log($("#obj-stat-grid-full").bootgrid("getCurrentRows"));
//console.log($("#obj-stat-grid-full").bootgrid("getColumnSettings"));
$("#obj-stat-grid-full").tableExport({
fileName: "Статистика объекты",
type: 'excel',
date: { html: 'dd/mm/yyyy' },
htmlContent: false,
mso: {
fileFormat: 'xlsx',
styles: ['border-bottom', 'border-top', 'border-left', 'border-right'],
xlsx: {
// formatId: {numbers: 1},
onHyperlink: function($cell, row, col, href, content, hyperlink){
var v = hyperlink;
if($($cell.html()).is('a')){
v = $($cell.html()).text().replace(/\s+/g, '');
}
return v;
}
},
},
});
}
if (data_stat) {
params.columns = JSON.stringify(data_stat_arr.table);
$.post("/ajax/export_excel_data_client.php", params, function(data) {
var res = JSON.parse(data);
if (res.result == 'ok') {
var $a = $("<a>");
$a.attr("href", res.file);
$("body").append($a);
$a.attr("download", res.name);
$a[0].click();
$a.remove();
}
});
}
});
$("body").on("click", "#export_stat_obj", function() {
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = $('#ms-crm-charts-work').val();
var charts_type = $('#filter-charts-type').val();
var charts_objects_type = $('#filter-charts-objects-type').val();
var charts_activities = $('#filter_chatrts_activities').val();
var charts_rol = $('#filter_charts_rol').val();
var source = $('#filter_charts_source').val();
var partner = $('#filter_charts_partner').val();
var funnel = $('#filter_charts_funnel').val();
var columns = JSON.stringify($("#object_list_table").bootgrid("getColumnSettings"));
var priority1, priority2, priority3, priority4;
if ($('.filter-priority1').hasClass('active')) {
priority1 = 1;
}
if ($('.filter-priority2').hasClass('active')) {
priority2 = 1;
}
if ($('.filter-priority3').hasClass('active')) {
priority3 = 1;
}
if ($('.filter-priority4').hasClass('active')) {
priority4 = 1;
}
var params = {
period: period,
responsible: JSON.stringify(responsible),
user_id: $('#session_user_id').val(),
users_admin: $('#session_user_admin').val(),
charts_type: JSON.stringify(charts_type),
charts_objects_type: JSON.stringify(charts_objects_type),
priority1: JSON.stringify(priority1),
priority2: JSON.stringify(priority2),
priority3: JSON.stringify(priority3),
priority4: JSON.stringify(priority4),
charts_rol: JSON.stringify(charts_rol),
source: JSON.stringify(source),
partner: JSON.stringify(partner),
funnel: JSON.stringify(funnel),
charts_activities: JSON.stringify(charts_activities)
}
if (period == 'dates') {
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
params.onDate = onDate;
params.offDate = offDate;
}
params.type = $(this).data("type");
params.userId = $(this).data("userid");
params.columns = columns;
$('#export_stat_obj_show').show();
$.post("/ajax/export_excel_stat_obj.php", params, function(data) {
$('#export_stat_obj_show').hide();
var res = JSON.parse(data);
if (res.result == 'ok') {
var $a = $("<a>");
$a.attr("href", res.file);
$("body").append($a);
$a.attr("download", res.name);
$a[0].click();
$a.remove();
}
});
});
$('body').on('click', '.funnel_widget .view-table-funnel', function() {
showFunnelStat();
});
$('body').on('click', '#stats_funnel_list__bg .closer', function() {
hideFunnelStat();
});
$('body').on('click', '.sources_widget .view-table-funnel', function() {
showSourcesStat();
});
$('body').on('click', '#stats_sources_list__bg .closer', function() {
hideSourcesStat();
});
$('body').on('click', '.view-table-sales_plan', function() {
showSalesPlanStat();
});
$('body').on('click', '#sales_plan_list__bg .closer', function() {
hideSalesPlanStat();
});
$('body').on('click', '#export_stat_funnel', function() {
$('#table-funnel-keep-selection').tableExport({
fileName: "Статистика по воронке",
type: 'excel',
date: { html: 'dd/mm/yyyy' },
htmlContent: false,
mso: {
fileFormat: 'xlsx',
styles: ['border-bottom', 'border-top', 'border-left', 'border-right'],
xlsx: {
formatId: {numbers: 1},
onHyperlink: function($cell, row, col, href, content, hyperlink){
var v = hyperlink;
if($($cell.html()).is('a')){
v = $($cell.html()).text();
}
return v;
}
},
},
});
});
$('body').on('click', '#export_stat_sources', function() {
$('#table-sources-keep-selection').tableExport({
fileName: "Рекламные иточники статистика",
type: 'excel',
date: { html: 'dd/mm/yyyy' },
htmlContent: false,
mso: {
fileFormat: 'xlsx',
styles: ['border-bottom', 'border-top', 'border-left', 'border-right'],
xlsx: {
formatId: {numbers: 1},
onHyperlink: function($cell, row, col, href, content, hyperlink){
var v = hyperlink;
if($($cell.html()).is('a')){
v = $($cell.html()).text();
}
return v;
}
},
},
});
});
$('body').on('click', '#export_sales_plan', function() {
var $table_sales = $('#table-sales_plan_list-selection');
var columns = [];
var col = $table_sales.bootstrapTable('getVisibleColumns');
for (var i = 0; i < 15; i++) {
columns.push(col[i]);
}
var params = getParamsFilter();
params['columns'] = columns;
$.post("/ajax/export_excel_sales_plan.php", params, function(data) {
var res = JSON.parse(data);
if (res.result == 'ok') {
var $a = $("<a>");
$a.attr("href", res.file);
$("body").append($a);
$a.attr("download", res.name);
$a[0].click();
$a.remove();
}
});
/* var columns = $table_sales.bootstrapTable('getOptions').columns;
console.log(columns);
$('#table-sales_plan_list-selection').tableExport({
fileName: "План продаж",
type: 'excel',
date: { html: 'dd/mm/yyyy' },
htmlContent: false,
mso: {
fileFormat: 'xlsx',
xlsx: {formatId: {date: 14,
numbers: 1}},
styles: ['border-bottom', 'border-top', 'border-left', 'border-right']
},
xslx: {formatId: {date: 14, numbers: 10}},
numbers: {html: {decimalMark: '.', thousandsSeparator: ' '},
output: {decimalMark: '.', thousandsSeparator: ''}
}
});*/
});
$('body').on('click', '#get_expired_stages_clients', function() {
$('#expired_stages_clients .widget-number').html('<img src="../images/rocket-spinner.svg" width="50px">');
getExpiredStages('clients');
});
$('body').on('click', '#get_expired_stages_req', function() {
$('#expired_stages_requisitions .widget-number').html('<img src="../images/rocket-spinner.svg" width="50px">');
getExpiredStages('req');
});
});
function get_sourse_filter() {
if ($('.tab.selected').data("tab") == 'stats') {
getStats();
} else if ($('.tab.selected').data("tab") == 'dashboard') {
getDashboard(1);
} else if ($('.tab.selected').data("tab") == 'tasks') {
getCalendar();
} else if ($('.tab.selected').data("tab") == 'stats_objects') {
getStatsObjects();
}
/*else if ($('.tab.selected').data("tab") == 'tasks_objects') {
getCalendarObject();
}*/
else {
getDashboard(1);
}
}
function show_options_search_charts() {
var val = 0;
if ($('.filter-priority1').hasClass('active')) {
val++;
}
if ($('.filter-priority2').hasClass('active')) {
val++;
}
if ($('.filter-priority3').hasClass('active')) {
val++;
}
if ($('.filter-priority4').hasClass('active')) {
val++;
}
if ($('.tab.selected').data("tab") == 'tasks') {
$('#filter_task .filter-popup-type').each(function() {
if ($(this).hasClass('active')) val++;
});
} else {
$('#filter_time .filter-popup-type').each(function() {
if ($(this).hasClass('active')) val++;
});
}
if ($('#ms-crm-charts-work').val() && $('#ms-crm-charts-work').val() != '') val++;
if (!$('.charts-type-input').hasClass('hidden') && $('#filter-charts-type').val() && $('#filter-charts-type').val() != '') val++;
if (!$('.charts-activities-input').hasClass('hidden') && $('#filter_charts_activities').val() && $('#filter_charts_activities').val() != '') val++;
if (!$('.charts-objects-type-input').hasClass('hidden') && $('#filter-charts-objects-type').val() && $('#filter-charts-objects-type').val() != '') val++;
if (!$('.charts-role-input').hasClass('hidden') && $('#filter_charts_rol').val() && $('#filter_charts_rol').val() != '') val++;
if (!$('.charts-source-input').hasClass('hidden') && $('#filter_charts_source').val() && $('#filter_charts_source').val() != '') val++;
if (!$('.charts-partner-input').hasClass('hidden') && $('#filter_charts_partner').val() && $('#filter_charts_partner').val() != '') val++;
if (!$('.charts-funnel-input').hasClass('hidden') && $('#filter_charts_funnel').val() && $('#filter_charts_funnel').val() != '') val++;
if (val > 0) {
$(".search-query-item").show();
var text = val + " опции";
if (val == 1) text = val + " опция";
if (val > 4) text = val + " опций";
$(".search-query-item span").text(text);
} else {
$(".search-query-item").hide();
}
}
//Получение телефонии
function getTelephony() {
$('#date_tasks').hide();
localStorage['chartspage'] = 'telephony';
$('.view-charts').hide();
$('#export_stat_client').hide();
$('.view-table').hide();
/* $(document).ready(function() {
//t.start();
el.start();
});*/
}
//Запуск календаря
function showCalendar(filter, type) {
$('#date_tasks').hide();
//отключаем переключение на день
switchToDayInTasks = false;
if (filter) {
$('#filter_task .filter-popup-type').removeClass('active');
$('#' + filter).addClass('active');
}
if (type) {
type_calendar = type;
}
setTimeout(function() { $('.jw__page__tabs a:eq(1)').click() }, 500);
}
//Запуск календаря объекта
/*function showCalendarObject(filter) {
if (filter) {
$('#filter_task .filter-popup-type').removeClass('active');
$('#' + filter).addClass('active');
}
setTimeout(function () { $('.tab:eq(3)').click() }, 500);
}*/
//Получение фильтров
function getParamsFilter() {
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = $('#ms-crm-charts-work').val();
var charts_type = $('#filter-charts-type').val();
var charts_activities = $('#filter_charts_activities').val();
var charts_objects_type = $('#filter-charts-objects-type').val();
var priority1, priority2, priority3, priority4;
if ($('.filter-priority1').hasClass('active')) {
priority1 = 1;
}
if ($('.filter-priority2').hasClass('active')) {
priority2 = 1;
}
if ($('.filter-priority3').hasClass('active')) {
priority3 = 1;
}
if ($('.filter-priority4').hasClass('active')) {
priority4 = 1;
}
var charts_rol = $('#filter_charts_rol').val();
var source = $('#filter_charts_source').val();
var partner = $('#filter_charts_partner').val();
var funnel = $('#filter_charts_funnel').val();
var params = {
dashboard: 'dashboard',
period: period,
responsible: JSON.stringify(responsible),
user_id: $('#session_user_id').val(),
users_admin: $('#session_user_admin').val(),
charts_type: JSON.stringify(charts_type),
charts_objects_type: JSON.stringify(charts_objects_type),
priority1: JSON.stringify(priority1),
priority2: JSON.stringify(priority2),
priority3: JSON.stringify(priority3),
priority4: JSON.stringify(priority4),
charts_rol: JSON.stringify(charts_rol),
source: JSON.stringify(source),
partner: JSON.stringify(partner),
funnel: JSON.stringify(funnel),
charts_activities: JSON.stringify(charts_activities)
}
if (period == 'dates') {
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
params.onDate = onDate;
params.offDate = offDate;
}
return params;
}
function getHrefFiltr(partHref, params, onliReq) {
var href = partHref;
if (params.funnel && params.funnel != 'null' && params.funnel.length > 0) {
href += "&funnelId=" + JSON.parse(params.funnel).join(',');
} else {
href += "&funnelId=all";
}
if (params.responsible && params.responsible != '' && params.responsible != 'null') {
href += '&responsible=' + JSON.parse(params.responsible).join(',');
}
if (onliReq) {
if (params.source && params.source != '' && params.source != 'null') {
href += '&source=' + JSON.parse(params.source).join(',');
}
if (params.charts_activities && params.charts_activities != '' && params.charts_activities != 'null') {
href += '&activities=' + JSON.parse(params.charts_activities).join(',');
}
}
if (params.partner && params.partner != '' && params.partner != 'null') {
href += '&filter_partner=' + JSON.parse(params.partner).join(',');
}
return href;
}
//Для получение количества клиентов и задач
function getDashboard(open) {
$('#date_tasks').hide();
$('.clientreq').hide();
setSelectsFastselect('filter_charts_funnel', $('#filter_charts_funnel').val(), 'select_form_funnel.php', 'Воронка', 'client');
localStorage['chartspage'] = 'dashboard';
$('.view-charts').hide();
$('.view-table').hide();
$('#export_stat_client').hide();
var params = getParamsFilter();
// if(open != 1){
params.clients = 1;
/*var html = '<div style="text-align:center; margin-top: 25px;" class="object-content__preloader">'+
'<img src="../images/rocket-spinner.svg" width="94px">'+
'</div>';
$('#widget_sales_plan').html(html);*/
$.post('/ajax/getCharts.php', params,
function(data) {
var res = JSON.parse(data);
var href = getHrefFiltr("/clients.php?period=all", params, false);
$(".dashboard-work a").attr("href", href);
$('.dashboard-work .widget-number').text(res.count);
});
// }
params.clients = 0;
params.events = 1;
$.post('/ajax/getCharts.php', params,
function(data) {
var res = JSON.parse(data);
$('.dashboard-tasks .widget-number').text(res.events);
});
params.events = 0;
params.events_old = 1;
$.post('/ajax/getCharts.php', params,
function(data) {
var res = JSON.parse(data);
$('#dashboard_overdue_tasks .widget-number').text(res.events_old);
var html = '<div class="widget-inner">' +
'<div class="widget-head">' +
'<div class="widget-title">Задач просрочено по клиентам</div>' +
'</div>' +
'<div class="widget-number">' + res.events_old + '</div>' +
'</div>';
if (res.events_old > 0) {
$('#dashboard_overdue_tasks').addClass('widget-colored').addClass('dashboard-overdue-tasks');
$('#dashboard_overdue_tasks').html(
'<a href="javascript:{}" onclick="showCalendar(\'overdue_tasks\', \'client\')">' + html + '</a>'
);
} else {
$('#dashboard_overdue_tasks').removeClass('widget-colored').removeClass('dashboard-overdue-tasks');
$('#dashboard_overdue_tasks').html(
html
);
}
});
params.events_old = 0;
$.post('/ajax/getCharts.php', params,
function(data) {
var res = JSON.parse(data);
var href_req = getHrefFiltr("/requisitions.php?period=all", params, true);
var href_client_hit = getHrefFiltr("/clients.php?filter_stage=filter_stage_hit&period=" + params.period, params, false);
var href_client_close = getHrefFiltr("/clients.php?filter_stage=filter_stage_close&period=" + params.period, params, false);
var href_req_hit = getHrefFiltr("/requisitions.php?filter_stage=filter_stage_hit&period=" + params.period, params, true);
var href_req_close = getHrefFiltr("/requisitions.php?filter_stage=filter_stage_close&period=" + params.period, params, true);
$(".crm__widget.requisitions a").attr("href", href_req);
$(".successful-clients a").attr("href", href_client_hit);
$(".closed-clients a").attr("href", href_client_close);
$(".successful-requisitions a").attr("href", href_req_hit);
$(".closed-requisitions a").attr("href", href_req_close);
$('.successful-clients .widget-number').text(res.successful_clients);
$('.closed-clients .widget-number').text(res.closed_clients);
$('.successful-requisitions .widget-number').text(res.successful_requisitions);
$('.closed-requisitions .widget-number').text(res.closed_requisitions);
$('.requisitions .widget-number').text(res.requisitions);
$('.open-tasks-requisitions .widget-number').text(res.open_tasks_requisitions);
$('#expired-tasks-requisitions .widget-number').text(res.expired_tasks_requisitions);
$('.objects .widget-number').text(res.objects);
$('.open-tasks-objects .widget-number').text(res.open_tasks_objects);
$('#expired_tasks_objects .widget-number').text(res.expired_tasks_objects);
$('.objects-advert .widget-number').text(res.objects_advert);
$('#widget_sales_plan').html(res.html);
if (res.expired_tasks_requisitions > 0) {
$('#expired-tasks-requisitions').addClass('widget-colored').addClass('expired-tasks-requisitions');
$('#expired-tasks-requisitions').css('cursor', 'pointer');
$('#expired-tasks-requisitions').unbind('click');
$('#expired-tasks-requisitions').click(function() {
showCalendar('overdue_tasks', 'req');
});
} else {
$('#expired-tasks-requisitions').removeClass('widget-colored').removeClass('expired-tasks-requisitions');
$('#expired-tasks-requisitions').css('cursor', 'default');
$('#expired-tasks-requisitions').unbind('click');
}
if (res.expired_tasks_objects > 0) {
$('#expired_tasks_objects').addClass('widget-colored').addClass('expired-tasks-objects');
$('#expired_tasks_objects').css('cursor', 'pointer');
$('#expired_tasks_objects').unbind('click');
$('#expired_tasks_objects').click(function() {
showCalendar('overdue_tasks', 'object');
});
} else {
$('#expired_tasks_objects').removeClass('widget-colored').removeClass('expired-tasks-objects');
$('#expired_tasks_objects').css('cursor', 'default');
$('#expired_tasks_objects').unbind('click');
}
});
var agency_id = $('#session_agency_id').val();
/* if(agency_id == 8867){
$('#expired_stages_clients .widget-number').html('<a href="javascript:{}" id="get_expired_stages_clients">Получить...</a>');
$('#expired_stages_requisitions .widget-number').html('<a href="javascript:{}" id="get_expired_stages_req">Получить...</a>');
}
else { */
// if(open != 1){
params.expired_stages_clients = 1;
params.agency_id = $('#session_agency_id').val();
$.post('/ajax/getCharts.php', params,
function(data) {
var res = JSON.parse(data);
$('#expired_stages_clients .widget-number').text(res.expired_stages_clients);
if (res.expired_stages_clients > 0) {
$('#expired_stages_clients').addClass('widget-colored').addClass('expired-stages-clients');
$('#expired_stages_clients').css('cursor', 'pointer');
$('#expired_stages_clients').unbind('click');
$('#expired_stages_clients').click(function() {
var href_stage_client = getHrefFiltr("/clients.php?expired_stages=1", params, false);
document.location.href = href_stage_client;
});
} else {
$('#expired_stages_clients').removeClass('widget-colored').removeClass('expired-stages-clients');
$('#expired_stages_clients').css('cursor', 'default');
$('#expired_stages_clients').unbind('click');
}
});
// }
params.expired_stages_clients = 0;
// if(open != 1){
params.expired_stages_requisitions = 1;
params.agency_id = $('#session_agency_id').val();
$.post('/ajax/getCharts.php', params,
function(data) {
var res = JSON.parse(data);
$('#expired_stages_requisitions .widget-number').text(res.expired_stages_requisitions);
if (res.expired_stages_requisitions > 0) {
$('#expired_stages_requisitions').addClass('widget-colored').addClass('expired-stages-requisitions');
$('#expired_stages_requisitions').css('cursor', 'pointer');
$('#expired_stages_requisitions').unbind('click');
$('#expired_stages_requisitions').click(function() {
var href_stage_req = getHrefFiltr("/requisitions.php?expired_stages=1", params, true);
document.location.href = href_stage_req;
});
} else {
$('#expired_stages_requisitions').removeClass('widget-colored').removeClass('expired-stages-requisitions');
$('#expired_stages_requisitions').css('cursor', 'default');
$('#expired_stages_requisitions').unbind('click');
}
});
// }
// }
//params.expired_stages_requisition = 0;
}
//Получение клиентов/заявок с просроченными этапами
function getExpiredStages(type) {
var params = getParamsFilter();
params.agency_id = $('#session_agency_id').val();
if (type == 'clients') {
params.expired_stages_clients = 1;
$.post('/ajax/getCharts.php', params,
function(data) {
var res = JSON.parse(data);
$('#expired_stages_clients .widget-number').text(res.expired_stages_clients);
if (res.expired_stages_clients > 0) {
$('#expired_stages_clients').addClass('widget-colored').addClass('expired-stages-clients');
$('#expired_stages_clients').css('cursor', 'pointer');
$('#expired_stages_clients').unbind('click');
$('#expired_stages_clients').click(function() {
var href_stage_client = getHrefFiltr("/clients.php?expired_stages=1", params, false);
document.location.href = href_stage_client;
});
} else {
$('#expired_stages_clients').removeClass('widget-colored').removeClass('expired-stages-clients');
$('#expired_stages_clients').css('cursor', 'default');
$('#expired_stages_clients').unbind('click');
}
});
}
if (type == 'req') {
params.expired_stages_clients = 0;
params.expired_stages_requisitions = 1;
$.ajax({
url: "/ajax/getCharts.php",
method: "post",
data: params,
success: function(data) {
var res = JSON.parse(data);
$('#expired_stages_requisitions .widget-number').text(res.expired_stages_requisitions);
if (res.expired_stages_requisitions > 0) {
$('#expired_stages_requisitions').addClass('widget-colored').addClass('expired-stages-requisitions');
$('#expired_stages_requisitions').css('cursor', 'pointer');
$('#expired_stages_requisitions').unbind('click');
$('#expired_stages_requisitions').click(function() {
var href_stage_req = getHrefFiltr("/requisitions.php?expired_stages=1", params, true);
document.location.href = href_stage_req;
});
} else {
$('#expired_stages_requisitions').removeClass('widget-colored').removeClass('expired-stages-requisitions');
$('#expired_stages_requisitions').css('cursor', 'default');
$('#expired_stages_requisitions').unbind('click');
}
},
error: function(jqXHR, textStatus, errorThrown) {
var i = errorThrown;
}
});
}
}
function getCalendar(getCalendarParams = {}) {
// needCalendarView = getCalendarParams._needCalendarView || null;
$('#date_tasks').hide();
$('.clientreq').hide();
setSelectsFastselect('filter_charts_funnel', $('#filter_charts_funnel').val(), 'select_form_funnel.php', 'Воронка', 'client');
localStorage['chartspage'] = 'tasks';
var responsible = $('#ms-crm-charts-work').val();
var tasks = $('#filter_task .active').attr("id");
var charts_type = $('#filter-charts-type').val();
var charts_activities = $('#filter_charts_activities').val();
var charts_objects_type = $('#filter-charts-objects-type').val();
var priority1, priority2, priority3, priority4;
if ($('.filter-priority1').hasClass('active')) {
priority1 = 1;
}
if ($('.filter-priority2').hasClass('active')) {
priority2 = 1;
}
if ($('.filter-priority3').hasClass('active')) {
priority3 = 1;
}
if ($('.filter-priority4').hasClass('active')) {
priority4 = 1;
}
var charts_rol = $('#filter_charts_rol').val();
var source = $('#filter_charts_source').val();
var partner = $('#filter_charts_partner').val();
var funnel = $('#filter_charts_funnel').val();
var period = $('#filter_time .active').attr("id");
$('.view-charts').hide();
$('.view-table').hide();
$('#export_stat_client').hide();
var params = {
responsible: JSON.stringify(responsible),
tasks: tasks,
period: period,
funnel: JSON.stringify(funnel),
user_id: $('#session_user_id').val(),
users_admin: $('#session_user_admin').val(),
agency_id: $('#session_agency_id').val(),
charts_type: JSON.stringify(charts_type),
charts_objects_type: JSON.stringify(charts_objects_type),
priority1: JSON.stringify(priority1),
priority2: JSON.stringify(priority2),
priority3: JSON.stringify(priority3),
priority4: JSON.stringify(priority4),
charts_rol: JSON.stringify(charts_rol),
source: JSON.stringify(source),
partner: JSON.stringify(partner),
charts_activities: JSON.stringify(charts_activities)
}
var queryParams = parseQueryString(window.location.search);
if (queryParams) {
if (queryParams.emp !== undefined) {
params.emp = queryParams.emp;
}
}
if (queryParams.type_calendar !== undefined) {
params.type_calendar = queryParams.type_calendar;
} else if (type_calendar) {
params.type_calendar = type_calendar;
type_calendar = null;
}
if (queryParams.step !== undefined) {
params.step = queryParams.step;
}
if (queryParams.event !== undefined) {
params.event = queryParams.event;
}
if (queryParams.funnelId !== undefined) {
params.funnel = queryParams.funnelId;
}
var events = {
url: '/ajax/calendarCharts.php',
type: 'POST',
data: params,
error: function(dat) {
console.log(dat.responseText);
alert('there was an error while fetching events!');
},
success: function(dat) {}
}
var paramsCalendar = {
locale: 'ru',
editable: false,
eventLimit: true,
timeFormat: 'H:mm',
titleFormat: 'D MMMM YYYY',
defaultTimedEventDuration: '01:00:00',
height: 'parent',
events: events,
eventClick: function(event) {
if (event.object_id) {
/*if (event.table_id) {
updateEventState(event.table_id);
}*/
openEventsWindow(event.object_id);
}
if (event.client_id) {
if (event.table_id) {
updateClientEventState(event.table_id);
}
if (event.client_id != 0) {
openClientEventsWindowNew(event.client_id, $('#session_to_send').val());
} else if (event.req_id != 0) {
openClientEventsWindowNew(0, $('#session_to_send').val(), 0, event.req_id);
} else {
openMes(event.table_id);
}
}
if (event.employee_id) {
openEmployeeInfoWindow(event.employee_id);
}
if (event.user_id) {
openUserInfoWindow(event.user_id);
}
},
loading: (isLoading) => {
if (isLoading) {
$('.crm').append(`<div class="object-content__preloader"><img src="../images/rocket-spinner.svg" width="96px"></div>`)
} else {
$('.crm .object-content__preloader').remove()
}
}
};
var days = 30;
var today = new Date();
var nowDate = deltaDate(today, -days, 0, 0);
var oneDate = nowDate.getFullYear() + '-' + (nowDate.getMonth() + 1) + '-' + nowDate.getDate();
var todayMonth = '' + (today.getMonth() + 1);
if (todayMonth.length == 1) {
todayMonth = '0' + todayMonth;
}
days = diff_dates(nowDate.getDate() + '.' + (nowDate.getMonth() + 1) + '.' + nowDate.getFullYear(), today.getDate() + '.' + todayMonth + '.' + today.getFullYear());
switch (period) {
case 'dates':
{
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
if (onDate != '') {
var arrOneDate = onDate.split(".");
oneDate = arrOneDate[2] + '-' + arrOneDate[1] + '-' + arrOneDate[0] + ' 00:00:00';
days = diff_dates(onDate, offDate);
}
break;
}
case 'week':
{
oneDate = getWeekDates(today);
days = 7;
break;
}
case 'today':
{
var d = today.getDate();
if (d <= 9) {
d = '0' + d;
}
oneDate = today.getFullYear() + '-' + todayMonth + '-' + d;
days = 1;
break;
}
case 'month':
{
oneDate = today.getFullYear() + '-' + todayMonth + '-01';
days = daysInMonth((today.getMonth() + 1), today.getDate());
break;
}
case '30days':
{
oneDate = new Date(new Date().setDate(new Date().getDate() - 30));
days = 31;
break;
}
case 'quarter':
{
days = 90;
var tempMonth = '01';
var nowMonth = today.getMonth() + 1;
if (nowMonth > 3 && nowMonth <= 6) {
tempMonth = '04';
days = 91;
} else if (nowMonth > 6 && nowMonth <= 9) {
tempMonth = '07';
days = 92;
} else if (nowMonth > 9 && nowMonth <= 12) {
tempMonth = '10';
days = 92;
}
oneDate = nowDate.getFullYear() + '-' + tempMonth + '-01';
break;
}
case '90days':
{
var tempDate = new Date(new Date().setDate(new Date().getDate() - 90));
var tempMonth = '' + (tempDate.getMonth() + 1);
if (tempMonth.length == 1) {
tempMonth = '0' + tempMonth;
}
var tempDay = '' + tempDate.getDate();
if (tempDay.length == 1) {
tempDay = '0' + tempDay;
}
oneDate = tempDate.getFullYear() + '-' + tempMonth + '-' + tempDay + ' 00:00:00';
days = 91;
break;
}
case 'year':
{
//nowDate = deltaDate(today, -365, 0, 0);
oneDate = today.getFullYear() + '-01-01';
days = diff_dates('01.01.' + today.getFullYear(), '31.12.' + today.getFullYear());
break;
}
case 'all':
{
//nowDate = deltaDate(today, -365, 0, 0);
//nowDate = today.getFullYear()+'-'+todayMonth+'-'+(today.getDate()+1);
/*oneDate = '01.01.2000';
days = diff_dates('01.01.2000', (today.getDate()+1)+'.'+todayMonth+'.'+today.getFullYear());
break;*/
oneDate = (today.getFullYear()-1) + '-01-01';
days = diff_dates('01.01.' + (today.getFullYear()-1), (today.getDate()+1)+'.'+todayMonth+'.'+today.getFullYear());
break;
}
default:
{
oneDate = today.getFullYear() + '-' + todayMonth + '-01';
days = diff_dates('01.01.' + today.getFullYear(), '31.12.' + today.getFullYear());
break;
}
}
paramsCalendar.now = oneDate;
if (needCalendarView === null) {
paramsCalendar.defaultView = 'listFourDay';
needCalendarView = null;
} else {
paramsCalendar.defaultView = needCalendarView;
}
paramsCalendar.header = {
left: 'prev,next today',
center: 'title',
right: 'listFourDay,month,agendaWeek,agendaDay'
}
paramsCalendar.views = {
listFourDay: {
type: 'list',
duration: { days: days }
}
}
if ($('#calendar ').hasClass('fc')) {
$('#calendar').fullCalendar('destroy');
$('#calendar').fullCalendar('addEventSource', events)
.off('click', '.fc-agendaWeek-button')
.off('click', '.fc-agendaDay-button')
.off('click', '.fc-month-button')
.off('click', '.fc-listFourDay-button');
}
$('#calendar').fullCalendar(paramsCalendar)
.on('click', '.fc-agendaWeek-button', function() {
needCalendarView = 'agendaWeek';
$('#filter_time .filter-popup-type').removeClass('active');
$('#filter_time #week').addClass('active');
getCalendar();
})
.on('click', '.fc-agendaDay-button', function() {
needCalendarView = 'agendaDay';
$('#filter_time .filter-popup-type').removeClass('active');
$('#filter_time #today').addClass('active');
getCalendar();
})
.on('click', '.fc-month-button', function() {
needCalendarView = 'month';
$('#filter_time .filter-popup-type').removeClass('active');
$('#filter_time #month').addClass('active');
getCalendar();
})
.on('click', '.fc-listFourDay-button', function() {
needCalendarView = 'listFourDay';
$('#filter_time .filter-popup-type').removeClass('active');
$('#filter_time #today').addClass('active');
getCalendar();
})
}
function deltaDate(input, days, months, years) {
var date = new Date(input);
date.setDate(date.getDate() + days);
date.setMonth(date.getMonth() + months);
date.setFullYear(date.getFullYear() + years);
return date;
}
function daysInMonth(month, year) {
return new Date(year, month, 0).getDate();
}
function diff_dates(onDate, offDate) {
var a = new Date();
var b = new Date();
if (onDate != '') {
var arrOneDate = onDate.split(".");
b = new Date(arrOneDate[2], parseInt(arrOneDate[1]) - 1, arrOneDate[0]);
}
if (offDate != '') {
var arrOfDate = offDate.split(".");
a = new Date(arrOfDate[2], parseInt(arrOfDate[1]) - 1, arrOfDate[0]);
}
//var b = new Date(2010, 9, 1);
var days = (a - b) / (60 * 60 * 24 * 1000);
if (days < 0) days = 0;
days = parseInt(days) + 1;
return days;
}
function number_format(number, decimals, dec_point, thousands_sep) {
number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
var n = !isFinite(+number) ? 0 : +number,
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
s = '',
toFixedFix = function(n, prec) {
var k = Math.pow(10, prec);
return '' + (Math.round(n * k) / k)
.toFixed(prec);
};
// Fix for IE parseFloat(0.55).toFixed(0) = 0;
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n))
.split('.');
if (s[0].length > 3) {
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
}
if ((s[1] || '')
.length < prec) {
s[1] = s[1] || '';
s[1] += new Array(prec - s[1].length + 1)
.join('0');
}
return s.join(dec);
}
function getStatsObjects() {
$('#date_tasks').hide();
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = $('#ms-crm-charts-work').val();
$('.view-charts').hide();
$('.view-table').hide();
$('#export_stat_client').show();
var params = {
stats: 'stats',
period: period,
responsible: JSON.stringify(responsible),
user_id: $('#session_user_id').val(),
users_admin: $('#session_user_admin').val()
};
if (period === 'dates') {
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
params.onDate = onDate;
params.offDate = offDate;
}
/*$.post("/ajax/getObjectsStatistic.php", params, function(res){
console.log(res);
});*/
localStorage['chartspage'] = 'objectsStat';
// if ($('#obj-stat-grid-full-header').length > 0) {
// $("#obj-stat-grid-full").bootgrid("reload");
// } else {
// $("#obj-stat-grid-full").bootgrid({
// rowCount: [-1],
// sorting: false,
// ajax: true,
// selection: true,
// rowSelect: true,
// keepSelection: true,
// grouping: true,
// templates: {
// search: "",
// rawHeaderCell: "<th class=\"{{ctx.css}}\" rowspan='2' colspan=\"{{ctx.colspan}}\">{{ctx.content}}</th>"
// },
// css: {
// selected: 'row-selected'
// },
// post: function() {
// $('.object-content__preloader').show();
// $('.crm__stats_objects .grid_table').hide();
// $('.crm__stats_objects .first_column').hide();
// /* To accumulate custom parameter with the request object */
// return {
// period: $('.filter-popup-type.period.active').attr('id'),
// responsible: JSON.stringify($('#ms-crm-charts-work').val()),
// user_id: $('#session_user_id').val(),
// users_admin: $('#session_user_admin').val(),
// onDate: $('#onDate').val(),
// offDate: $('#offDate').val()
// };
// },
// url: "/ajax/getObjectsStatistic.php",
// /*responseHandler(res) {
// console.log(res);
// },*/
// formatters: {
// toggleFormatter: function(column, row) {
// return `<button class="toggle-group" data-group="${row.group}">Toggle</button>`;
// },
// "addedObj": function(column, row) {
// if (row.added && row.added > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsAddedObjectsLink">' + row.added + '</a>';
// } else {
// return '<span>' + row.added + '</span>';
// }
// },
// "advInPeriodObj": function(column, row) {
// if (row.adv_in_period && row.adv_in_period > 0) {
// if (row.adv_in_period_and_sended && row.adv_in_period_and_sended > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsAdvInPeriodObjectsLink">' + row.adv_in_period + '&nbsp;(' + row.adv_in_period_and_sended + ')' + '</a>';
// } else {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsAdvInPeriodObjectsLink">' + row.adv_in_period + '</a>';
// }
// } else {
// if (row.adv_in_period_and_sended && row.adv_in_period_and_sended > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsAdvInPeriodObjectsLink">' + row.adv_in_period + '&nbsp;(' + row.adv_in_period_and_sended + ')' + '</a>';
// }
// return '<span>' + row.adv_in_period + '</span>';
// }
// },
// "advBeforePeriodObj": function(column, row) {
// if (row.adv_before_period && row.adv_before_period > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsAdvBeforePeriodObjectsLink">' + row.adv_before_period + '</a>';
// } else {
// return '<span>' + row.adv_before_period + '</span>';
// }
// },
// "notAdvInPeriodObj": function(column, row) {
// if (row.not_adv_in_period && row.not_adv_in_period > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsNotAdvInPeriodObjectsLink">' + row.not_adv_in_period + '</a>';
// } else {
// return '<span>' + row.not_adv_in_period + '</span>';
// }
// },
// "advCostObj": function(column, row) {
// if (row.adv_costs_period && row.adv_costs_period.split(" ").join("") > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsAdvCostObjectsLink">' + row.adv_costs_period + '</a>';
// } else {
// return '<span>' + row.adv_costs_period + '</span>';
// }
// },
// "advCostPromo": function(column, row) {
// return '<span>' + row.adv_costs_promo + '</span>';
// },
// "advCostAvito": function(column, row) {
// return '<span>' + row.adv_costs_avito + '</span>';
// },
// "advCostCian": function(column, row) {
// return '<span>' + row.adv_costs_cian + '</span>';
// },
// "advCostDomclick": function(column, row) {
// return '<span>' + row.adv_costs_domclick + '</span>';
// },
// "advCostJcat": function(column, row) {
// return '<span>' + row.adv_costs_jcat + '</span>';
// },
// "advCostYandex": function(column, row) {
// return '<span>' + row.adv_costs_yandex + '</span>';
// },
// "advCostZipal": function(column, row) {
// return '<span>' + row.adv_costs_zipal + '</span>';
// },
// "requestsObj": function(column, row) {
// if (row.requests && row.requests > 0 && row.requests_all && row.requests_all > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsRequestsObjectsLink">' + row.requests_all + '</a>/<a href="javascript:{}" data-user-id="' + row.id + '" class="statsRequestsUserObjectsLink">' + row.requests + '</a>';
// } else {
// if (row.requests_all && row.requests_all > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsRequestsObjectsLink">' + row.requests_all + '</a>/<span>' + row.requests + '</span>';
// } else {
// if (row.requests && row.requests > 0) {
// return '<span>' + row.requests_all + '</span>/<a href="javascript:{}" data-user-id="' + row.id + '" class="statsRequestsUserObjectsLink">' + row.requests + '</a>';
// } else {
// return '<span>' + row.requests_all + '</span>/<span>' + row.requests + '</span>';
// }
// }
// }
// },
// "presentationsObj": function(column, row) {
// if (row.presentation && row.presentation > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsPresentationsObjectsLink">' + row.presentation + '</a>';
// } else {
// return '<span>' + row.presentation + '</span>';
// }
// },
// "meetsObj": function(column, row) {
// if (row.meet && row.meet > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsMeetsObjectsLink">' + row.meet + '</a>';
// } else {
// return '<span>' + row.meet + '</span>';
// }
// },
// "taskNewObj": function(column, row) {
// if (row.task_new && row.task_new > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsTaskNewObjectsLink">' + row.task_new + '</a>';
// } else {
// return '<span>' + row.task_new + '</span>';
// }
// },
// "taskOldObj": function(column, row) {
// if (row.task_old && row.task_old > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsTaskOldObjectsLink">' + row.task_old + '</a>';
// } else {
// return '<span>' + row.task_old + '</span>';
// }
// },
// "taskSlungObj": function(column, row) {
// if (row.task_slung && row.task_slung > 0) {
// return '<a href="javascript:{}" data-user-id="' + row.id + '" class="statsTaskSlungObjectsLink">' + row.task_slung + '</a>';
// } else {
// return '<span>' + row.task_slung + '</span>';
// }
// },
// "task": function(column, row) {
// var tasks = (parseInt(row.task_new) + parseInt(row.task_old) + parseInt(row.task_slung));
// if (tasks && tasks > 0) {
// return '<a href="/charts.php?tasks=all_tasks&type_calendar=object&emp=' + row.id + '" target="_blank">' + tasks + '</a>';
// } else {
// return '<span>' + tasks + '</span>';
// }
// //return '<span>'+(parseInt(row.task_new) + parseInt(row.task_old) + parseInt(row.task_slung)) +'</span>';
// }
// }
// }).on("loaded.rs.jquery.bootgrid", function(e) {
// $('.object-content__preloader').hide();
// $('.crm__stats_objects .grid_table').show();
// $('.crm__stats_objects .first_column').show();
// var html = '<thead><th data-column-id="fio" class="text-left" colspan="" ';
// var heigth = 0;
// var width = 0;
// $('#obj-stat-grid-full thead > tr:first-child th').each(function(index) {
// if ($(this).data("columnId") == "fio") {
// heigth = $(this).height() + 12;
// width = $(this).width();
// html += 'style="width:' + width + 'px; height: ' + heigth + 'px;">';
// html += $(this).html();
// }
// });
// html += '</th></thead>';
// html += '<tbody>';
// $('#obj-stat-grid-full tbody > tr').each(function(index) {
// //console.log($(this));
// html += '<tr data-row-id="' + $(this).attr('data-row-id') + '"><td class="text-left" style="width:' + width + 'px;">' + $(this).find('td.text-left').first().html() + '</td></tr>';
// });
// html += '</tbody>';
// // console.log(html);
// $("#obj-stat-grid").html(html);
// $('#obj-stat-grid th').css("heigth", heigth + "px");
// $('#obj-stat-grid tr').on('click', function() {
// var dataRowId = $(this).attr('data-row-id');
// $('#obj-stat-grid-full tbody > tr').each(function(index) {
// if ($(this).attr('data-row-id') === dataRowId) {
// $(this).trigger("click");
// }
// });
// });
// $('#obj-stat-grid-full tbody > tr.row-selected').each(function(index) {
// var dataRowId = $(this).attr('data-row-id');
// $('#obj-stat-grid tbody > tr').each(function(index) {
// if ($(this).attr('data-row-id') === dataRowId) {
// $(this).addClass('row-selected');
// }
// });
// });
// $(".statsAddedObjectsLink").click(function(e) {
// e.preventDefault();
// e.stopPropagation();
// var userId = $(this).attr('data-user-id');
// showObjectsTableWindow(userId, 'added', 1, true);
// return false;
// });
// $(".statsAdvInPeriodObjectsLink").click(function(e) {
// e.preventDefault();
// e.stopPropagation();
// var userId = $(this).attr('data-user-id');
// showObjectsTableWindow(userId, 'advInPeriod', 1, true);
// return false;
// });
// $(".statsAdvBeforePeriodObjectsLink").click(function(e) {
// e.preventDefault();
// e.stopPropagation();
// var userId = $(this).attr('data-user-id');
// showObjectsTableWindow(userId, 'advBeforePeriod', 1, true);
// return false;
// });
// $(".statsNotAdvInPeriodObjectsLink").click(function(e) {
// e.preventDefault();
// e.stopPropagation();
// var userId = $(this).attr('data-user-id');
// showObjectsTableWindow(userId, 'statsNotAdvInPeriod', 1, true);
// return false;
// });
// $(".statsAdvCostObjectsLink").click(function(e) {
// e.preventDefault();
// e.stopPropagation();
// var userId = $(this).attr('data-user-id');
// showObjectsTableWindow(userId, 'statsAdvCost', 1, true);
// return false;
// });
// $(".statsRequestsObjectsLink").click(function(e) {
// e.preventDefault();
// e.stopPropagation();
// var userId = $(this).attr('data-user-id');
// showObjectsTableWindow(userId, 'statsRequests', 1, true);
// return false;
// });
// $(".statsRequestsUserObjectsLink").click(function(e) {
// e.preventDefault();
// e.stopPropagation();
// var userId = $(this).attr('data-user-id');
// showObjectsTableWindow(userId, 'statsRequests', 1, true, userId);
// return false;
// });
// $(".statsPresentationsObjectsLink").click(function(e) {
// e.preventDefault();
// e.stopPropagation();
// var userId = $(this).attr('data-user-id');
// showObjectsTableWindow(userId, 'statsPresentations', 1, true);
// return false;
// });
// $(".statsMeetsObjectsLink").click(function(e) {
// e.preventDefault();
// e.stopPropagation();
// var userId = $(this).attr('data-user-id');
// showObjectsTableWindow(userId, 'statsMeets', 1, true);
// return false;
// });
// $(".statsTaskNewObjectsLink").click(function(e) {
// e.preventDefault();
// e.stopPropagation();
// var userId = $(this).attr('data-user-id');
// showObjectsTableWindow(userId, 'statsTaskNew', 1, true);
// return false;
// });
// $(".statsTaskOldObjectsLink").click(function(e) {
// e.preventDefault();
// e.stopPropagation();
// var userId = $(this).attr('data-user-id');
// showObjectsTableWindow(userId, 'statsTaskOld', 1, true);
// return false;
// });
// $(".statsTaskSlungObjectsLink").click(function(e) {
// e.preventDefault();
// e.stopPropagation();
// var userId = $(this).attr('data-user-id');
// showObjectsTableWindow(userId, 'statsTaskSlung', 1, true);
// return false;
// });
// }).on("selected.rs.jquery.bootgrid", function(e) {
// $('#obj-stat-grid tbody > tr').each(function(index) {
// $(this).removeClass('row-selected');
// });
// $('#obj-stat-grid-full tbody > tr.row-selected').each(function(index) {
// var dataRowId = $(this).attr('data-row-id');
// $('#obj-stat-grid tbody > tr').each(function(index) {
// if ($(this).attr('data-row-id') === dataRowId) {
// $(this).addClass('row-selected');
// }
// });
// });
// }).on("deselected.rs.jquery.bootgrid", function(e) {
// $('#obj-stat-grid tbody > tr').each(function(index) {
// $(this).removeClass('row-selected');
// });
// });
var $table_obj = $('#obj-stat-grid-full');
$table_obj.bootstrapTable('destroy');
$table_obj.bootstrapTable({
formatColumnsToggleAll: function () {
return 'Выбрать все'
},
// treeShowField: 'fio',
// parentIdField: 'pid',
treeEnable: true,
onPostBody: function() {
$table_obj.closest(".fixed-table-container.fixed-height.has-footer").css("overflow", "hidden")
var columns = $table_obj.bootstrapTable('getOptions').columns
if (columns && columns[0][0].visible) {
$table_obj.treegrid({
initialState: 'expanded',
onChange: function() {
$table_obj.bootstrapTable('resetView')
}
})
}
},
onLoadSuccess: function() {
$("#table-sources-keep-selection-fixed").hide();
$('#obj-stat-grid-full').closest(".fixed-table-body").unbind("mouseup");
$('#obj-stat-grid-full').closest(".fixed-table-body").unbind("mousedown");
setTimeout(function() {
var th = $('#obj-stat-grid-full thead th');
for (var i = 0; i < th.length; i++) {
var width = $(th[i]).find('.fht-cell').width();
$('#stats_sources_list .fixed-table-header th').eq(i).find('.fht-cell').width(width);
$('#obj-stat-grid-full thead th').eq(i).find('.fht-cell').width(width);
}
}, 500);
const withoutFields = ['fio', 'adv_costs', 'tasks'];
// Split the string into an array of columns to show
const columnsToShow = columnsShow.split(',').map(column => column.trim());
// Get all columns currently in the table
const allColumns = $table_obj.bootstrapTable('getOptions').columns;
// Flatten the column array to extract field names
const allFieldNames = allColumns.flat().filter(col => !withoutFields.includes(col.field)).map(col => col.field);
// Determine which columns need to be hidden
const columnsToHide = allFieldNames.filter(field => !columnsToShow.includes(field));
$('#stats_sources_list-obj-stat-grid').find('.toggle-all')
.prop('checked', true);
// Hide the other columns
if (columnsToHide.length && columnsToShow.length) {
$('#stats_sources_list-obj-stat-grid').find('.toggle-all')
.prop('checked', false);
columnsToHide.forEach(column => {
if (allFieldNames.includes(column)) {
$('#stats_sources_list-obj-stat-grid').find(`[data-field="${column}"]`)
.prop('checked', false);
$table_obj.bootstrapTable('hideColumn', column);
} else {
console.warn(`Column ${column} does not exist in table`); // Warning
}
});
}
// Show the other columns
if (columnsToShow.length) {
columnsToShow.forEach(column => {
if (allFieldNames.includes(column)) {
$('#stats_sources_list-obj-stat-grid').find(`[data-field="${column}"]`)
.prop('checked', true);
$table_obj.bootstrapTable('showColumn', column);
} else {
console.warn(`Column ${column} does not exist in table`); // Warning
}
});
}
$('#obj-stat-grid-full').closest(".fixed-table-body").css("cursor", "grab");
$('#obj-stat-grid-full').closest(".fixed-table-body").mousedown(function() {
$(this).css("cursor", "grabbing");
});
$('#obj-stat-grid-full').closest(".fixed-table-body").mouseup(function() {
$(this).css("cursor", "grab");
});
$('#obj-stat-grid-full').closest(".fixed-table-body").addClass("dragscroll");
dragscroll.reset();
$('#stats_sources_list-obj-stat-grid .dropdown-item input').change(function() {
$("#table-sources-keep-selection-fixed").hide();
setTimeout(function() {
var th = $('#obj-stat-grid-full thead th');
for (var i = 0; i < th.length; i++) {
var width = $(th[i]).find('.fht-cell').width();
$('#stats_sources_list-obj-stat-grid .fixed-table-header th').eq(i).find('.fht-cell').width(width);
$('#obj-stat-grid-full thead th').eq(i).find('.fht-cell').width(width);
}
}, 500);
});
$("body").on("click", ".statsObjectsFooter", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
var field = $(this).attr('data-fields');
var type_field = null;
console.log(field);
switch (field){
case 'added' : {
type_field = 'added';
break;
}
case 'adv_in_period' : {
type_field = 'advInPeriod';
break;
}
case 'adv_before_period' : {
type_field = 'advBeforePeriod';
break;
}
case 'not_adv_in_period' : {
type_field = 'statsNotAdvInPeriod';
break;
}
case 'adv_costs_period' : {
type_field = 'statsAdvCost';
break;
}
case 'presentation' : {
type_field = 'statsPresentations';
break;
}
}
if(type_field !== null)
return showObjectsTableWindow(userId, type_field, 1, true);
return false;
});
$("body").on("click", ".statsAddedObjectsLink", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
return showObjectsTableWindow(userId, 'added', 1, true);
});
$("body").on("click", ".statsAdvInPeriodObjectsLink", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
return showObjectsTableWindow(userId, 'advInPeriod', 1, true);
});
$("body").on("click", ".statsAdvBeforePeriodObjectsLink", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
return showObjectsTableWindow(userId, 'advBeforePeriod', 1, true);
});
$("body").on("click", ".statsNotAdvInPeriodObjectsLink", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
return showObjectsTableWindow(userId, 'statsNotAdvInPeriod', 1, true);
});
$("body").on("click", ".statsAdvCostObjectsLink", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
return showObjectsTableWindow(userId, 'statsAdvCost', 1, true);
});
$("body").on("click", ".statsRequestsObjectsLink", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
return showObjectsTableWindow(userId, 'statsRequests', 1, true);
});
$("body").on("click", ".statsRequestsUserObjectsLink", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
return showObjectsTableWindow(userId, 'statsRequests', 1, true, userId);
});
$("body").on("click", ".statsPresentationsObjectsLink", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
return showObjectsTableWindow(userId, 'statsPresentations', 1, true);
});
$("body").on("click", ".statsMeetsObjectsLink", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
return showObjectsTableWindow(userId, 'statsMeets', 1, true);
});
$("body").on("click", ".statsTaskNewObjectsLink", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
return showObjectsTableWindow(userId, 'statsTaskNew', 1, true);
});
$("body").on("click", ".statsTaskOldObjectsLink", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
return showObjectsTableWindow(userId, 'statsTaskOld', 1, true);
});
$("body").on("click", ".statsTaskSlungObjectsLink", function(e) {
e.preventDefault();
e.stopPropagation();
var userId = $(this).attr('data-user-id');
return showObjectsTableWindow(userId, 'statsTaskSlung', 1, true);
});
},
onLoadError: function(status, res) {
console.error('Error loading table data:', status, res);
},
onColumnSwitch: function (index, row) {
setTimeout(() => {
if ($('.dragscroll') && $('.dragscroll')[0] && $('.dragscroll')[0].scrollLeft)
{
$('.dragscroll').scrollTop($('.dragscroll')[0].scrollLeft);
}
}, 500)
},
onSort: function() {
if ($('.dragscroll') && $('.dragscroll')[0] && $('.dragscroll')[0].scrollLeft)
{
$('.dragscroll').scrollTop($('.dragscroll')[0].scrollLeft);
}
}
});
// }
$('.crm__stats_objects').removeClass('hidden');
}
function showObjectsTableWindow(userId, type, page, showWindow, respUserId = null) {
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = $('#ms-crm-charts-work').val();
if (!responsible) {
responsible = respUserId;
}
if (!userId || userId === null) {
userId = $('#obj_table_stat_user_id').val();
}
if (!type || type === null) {
type = $('#obj_table_stat_type').val();
}
var params = {
stats: 'stats',
period: period,
responsible: JSON.stringify(responsible),
userId: userId,
page: page,
type: type,
user_id: $('#session_user_id').val(),
users_admin: $('#session_user_admin').val()
};
if (period === 'dates') {
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
params.onDate = onDate;
params.offDate = offDate;
}
if (showWindow) {
$("#stats_objects_list__bg").fadeIn(500);
$("#stats_objects_list").fadeIn(500);
$("body").addClass("lock");
}
$("#stats_objects_list").html('<div class="object-content__preloader"><img src="../images/rocket-spinner.svg" width="96px"></div>');
fetchObjectsTableStats(params, userId, type)
}
let currentAjaxRequest = null; // Variable to store the current AJAX request
function fetchObjectsTableStats(params, userId, type) {
console.log(params);
// Abort the previous request if it exists
if (currentAjaxRequest) {
currentAjaxRequest.abort();
}
// Start a new AJAX request and store it in `currentAjaxRequest`
currentAjaxRequest = $.ajax({
url: '/ajax/getObjectsTableStats.php',
method: "post",
data: params,
success: function(data) {
// console.log(data);
// Clear the jqXHR reference after request is done
currentAjaxRequest = null;
// Update DOM elements with the data
$('#obj_table_stat_user_id').val(userId);
$('#obj_table_stat_type').val(type);
$("#stats_objects_list").html(data);
// Reinitialize dropdown if necessary
$('.dropdown-toggle').dropdown();
},
error: function(jqXHR, textStatus) {
if (textStatus === 'abort') {
console.log('Previous request was aborted');
} else {
console.error('AJAX request failed:', textStatus);
}
currentAjaxRequest = null; // Clear jqXHR reference on error as well
}
});
}
function ajaxRequest(params) {
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = $('#ms-crm-charts-work').val();
var charts_type = $('#filter-charts-type').val();
var charts_objects_type = $('#filter-charts-objects-type').val();
var priority1, priority2, priority3, priority4;
if ($('.filter-priority1').hasClass('active')) {
priority1 = 1;
}
if ($('.filter-priority2').hasClass('active')) {
priority2 = 1;
}
if ($('.filter-priority3').hasClass('active')) {
priority3 = 1;
}
if ($('.filter-priority4').hasClass('active')) {
priority4 = 1;
}
var charts_rol = $('#filter_charts_rol').val();
var source = $('#filter_charts_source').val();
var partner = $('#filter_charts_partner').val();
var funnel = $('#filter_charts_funnel').val();
var charts_activities = $('#filter_charts_activities').val();
var client_req = $('#filter-clientreq').val();
var pr = {
//stats: 'stats',
period: period,
responsible: JSON.stringify(responsible),
user_id: $('#session_user_id').val(),
charts_type: JSON.stringify(charts_type),
charts_objects_type: JSON.stringify(charts_objects_type),
priority1: JSON.stringify(priority1),
priority2: JSON.stringify(priority2),
priority3: JSON.stringify(priority3),
priority4: JSON.stringify(priority4),
charts_rol: JSON.stringify(charts_rol),
users_admin: $('#session_user_admin').val(),
source: JSON.stringify(source),
partner: JSON.stringify(partner),
funnel: JSON.stringify(funnel),
charts_activities: JSON.stringify(charts_activities),
client_req: client_req,
}
if (period == 'dates') {
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
pr.onDate = onDate;
pr.offDate = offDate;
}
var url = "/ajax/stat_funnel.php"
$.post(url, pr, function(res) {
//console.log(res);
params.success(JSON.parse(res))
})
}
function ajaxRequestSource(params) {
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = $('#ms-crm-charts-work').val();
var charts_type = $('#filter-charts-type').val();
var charts_objects_type = $('#filter-charts-objects-type').val();
var priority1, priority2, priority3, priority4;
if ($('.filter-priority1').hasClass('active')) {
priority1 = 1;
}
if ($('.filter-priority2').hasClass('active')) {
priority2 = 1;
}
if ($('.filter-priority3').hasClass('active')) {
priority3 = 1;
}
if ($('.filter-priority4').hasClass('active')) {
priority4 = 1;
}
var charts_rol = $('#filter_charts_rol').val();
var source = $('#filter_charts_source').val();
var partner = $('#filter_charts_partner').val();
var funnel = $('#filter_charts_funnel').val();
var charts_activities = $('#filter_charts_activities').val();
var client_req = $('#filter-clientreq').val();
var pr = {
//stats: 'stats',
period: period,
responsible: JSON.stringify(responsible),
user_id: $('#session_user_id').val(),
charts_type: JSON.stringify(charts_type),
charts_objects_type: JSON.stringify(charts_objects_type),
priority1: JSON.stringify(priority1),
priority2: JSON.stringify(priority2),
priority3: JSON.stringify(priority3),
priority4: JSON.stringify(priority4),
charts_rol: JSON.stringify(charts_rol),
users_admin: $('#session_user_admin').val(),
source: JSON.stringify(source),
partner: JSON.stringify(partner),
funnel: JSON.stringify(funnel),
charts_activities: JSON.stringify(charts_activities),
client_req: client_req,
}
if (period == 'dates') {
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
pr.onDate = onDate;
pr.offDate = offDate;
}
var url = "/ajax/stat_sources.php"
$.post(url, pr, function(res) {
params.success(JSON.parse(res))
})
}
function ajaxRequestSalesPlan(params) {
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = $('#ms-crm-charts-work').val();
var charts_type = $('#filter-charts-type').val();
var charts_objects_type = $('#filter-charts-objects-type').val();
var priority1, priority2, priority3, priority4;
if ($('.filter-priority1').hasClass('active')) {
priority1 = 1;
}
if ($('.filter-priority2').hasClass('active')) {
priority2 = 1;
}
if ($('.filter-priority3').hasClass('active')) {
priority3 = 1;
}
if ($('.filter-priority4').hasClass('active')) {
priority4 = 1;
}
var charts_rol = $('#filter_charts_rol').val();
var source = $('#filter_charts_source').val();
var partner = $('#filter_charts_partner').val();
var funnel = $('#filter_charts_funnel').val();
var charts_activities = $('#filter_charts_activities').val();
var client_req = $('#filter-clientreq').val();
var pr = {
//stats: 'stats',
period: period,
responsible: JSON.stringify(responsible),
user_id: $('#session_user_id').val(),
charts_type: JSON.stringify(charts_type),
charts_objects_type: JSON.stringify(charts_objects_type),
priority1: JSON.stringify(priority1),
priority2: JSON.stringify(priority2),
priority3: JSON.stringify(priority3),
priority4: JSON.stringify(priority4),
charts_rol: JSON.stringify(charts_rol),
users_admin: $('#session_user_admin').val(),
source: JSON.stringify(source),
partner: JSON.stringify(partner),
funnel: JSON.stringify(funnel),
charts_activities: JSON.stringify(charts_activities),
client_req: client_req,
}
if (period == 'dates') {
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
pr.onDate = onDate;
pr.offDate = offDate;
}
var url = "/ajax/stat_sales_plan.php"
$.post(url, pr, function(res) {
params.success(JSON.parse(res))
})
}
function ajaxRequestStatisticsObjects(params) {
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = $('#ms-crm-charts-work').val();
var charts_type = $('#filter-charts-type').val();
var charts_objects_type = $('#filter-charts-objects-type').val();
var priority1, priority2, priority3, priority4;
if ($('.filter-priority1').hasClass('active')) {
priority1 = 1;
}
if ($('.filter-priority2').hasClass('active')) {
priority2 = 1;
}
if ($('.filter-priority3').hasClass('active')) {
priority3 = 1;
}
if ($('.filter-priority4').hasClass('active')) {
priority4 = 1;
}
var charts_rol = $('#filter_charts_rol').val();
var source = $('#filter_charts_source').val();
var partner = $('#filter_charts_partner').val();
var funnel = $('#filter_charts_funnel').val();
var charts_activities = $('#filter_charts_activities').val();
var client_req = $('#filter-clientreq').val();
var pr = {
//stats: 'stats',
period: period,
responsible: JSON.stringify(responsible),
user_id: $('#session_user_id').val(),
charts_type: JSON.stringify(charts_type),
charts_objects_type: JSON.stringify(charts_objects_type),
priority1: JSON.stringify(priority1),
priority2: JSON.stringify(priority2),
priority3: JSON.stringify(priority3),
priority4: JSON.stringify(priority4),
charts_rol: JSON.stringify(charts_rol),
users_admin: $('#session_user_admin').val(),
source: JSON.stringify(source),
partner: JSON.stringify(partner),
funnel: JSON.stringify(funnel),
charts_activities: JSON.stringify(charts_activities),
client_req: client_req,
}
if (period == 'dates') {
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
pr.onDate = onDate;
pr.offDate = offDate;
}
var url = "/ajax/stat_objects.php"
$.post(url, pr, function(res) {
console.log(res);
params.success(JSON.parse(res))
})
.fail(function(jqXHR, textStatus, errorThrown) {
console.log('AJAX error:', textStatus, errorThrown);
});
}
function cellStyle(value, row, index) {
return {
css: {
color: '#000',
}
}
}
function cellStyleForObject() {
return {
css: {
color: '#000',
}
}
}
function workdoDetailFormatter(value, row) {
//return value + '. Item ID: ' + row.id
var funnel = false;
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = '';
if ($('#ms-crm-charts-work').val()) {
responsible = $('#ms-crm-charts-work').val();
}
if ($('#filter_charts_funnel').val() && $('#filter_charts_funnel').val().length == 1) {
funnel = $('#filter_charts_funnel').val()[0];
}
var tr = '0';
if (value !== undefined) {
tr = `<a data-val="${value.total}" href="/clients.php?filter_stage=filter_work_all_do&emp=${row.id}`;
if (funnel) {
tr += '&funnelId=' + funnel;
}
if (responsible != '') {
tr += '&responsible=' + responsible;
}
tr += '&period=' + period + '&step=' + value.step + '" target="_blank">' + value.total + '</a>';
}
return tr;
}
function workaddDetailFormatter(value, row) {
var funnel = false;
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = '';
if ($('#ms-crm-charts-work').val()) {
responsible = $('#ms-crm-charts-work').val();
}
if ($('#filter_charts_funnel').val() && $('#filter_charts_funnel').val().length == 1) {
funnel = $('#filter_charts_funnel').val()[0];
}
var tr = '0';
if (value !== undefined) {
var tr = '<a href="/clients.php?filter_stage=filter_stage_work&emp=' + row.id;
if (funnel) {
tr += '&funnelId=' + funnel;
}
if (responsible != '') {
tr += '&responsible=' + responsible;
}
tr += '&period=' + period + '" target="_blank">' + value + '</a>';
}
return tr;
}
function workleftDetailFormatter(value, row) {
var funnel = false;
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = '';
if ($('#ms-crm-charts-work').val()) {
responsible = $('#ms-crm-charts-work').val();
}
if ($('#filter_charts_funnel').val() && $('#filter_charts_funnel').val().length == 1) {
funnel = $('#filter_charts_funnel').val()[0];
}
var tr = '0';
if (value !== undefined) {
var tr = '<a href="/clients.php?filter_stage=filter_stage_work&emp=' + row.id;
if (funnel) {
tr += '&funnelId=' + funnel;
}
if (responsible != '') {
tr += '&responsible=' + responsible;
}
tr += '&period=' + period + '&step=' + value.step + '" target="_blank">' + value.total + '</a>';
}
return tr;
}
function allDetailFormatter(value, row) {
var arrColumn = this.field.split("_");
var step = arrColumn[2];
var funnel = false;
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = '';
if ($('#ms-crm-charts-work').val()) {
responsible = $('#ms-crm-charts-work').val();
}
if ($('#filter_charts_funnel').val() && $('#filter_charts_funnel').val().length == 1) {
funnel = $('#filter_charts_funnel').val()[0];
}
var tr = '0';
if (value !== undefined) {
var tr = `<a data-val="${value.total}" href="/clients.php?filter_stage=filter_work_all&emp=${row.id}`;
if (funnel) {
tr += '&funnelId=' + funnel;
}
if (responsible != '') {
tr += '&responsible=' + responsible;
}
tr += '&period=' + period + '" target="_blank">' + value.total + '</a>';
}
return tr;
}
function transmittedftDetailFormatter(value, row) {
var arrColumn = this.field.split("_");
var step = arrColumn[1];
var funnel = false;
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = '';
if ($('#ms-crm-charts-work').val()) {
responsible = $('#ms-crm-charts-work').val();
}
if ($('#filter_charts_funnel').val() && $('#filter_charts_funnel').val().length == 1) {
funnel = $('#filter_charts_funnel').val()[0];
}
var tr = '0';
if (value !== undefined) {
var tr = '<a href="/clients.php?filter_stage=filter_stage_work&emp=' + row.id;
if (funnel) {
tr += '&funnelId=' + funnel;
}
if (responsible != '') {
tr += '&responsible=' + responsible;
}
tr += '&period=' + period + '&step=' + step + '&transmitted=1" target="_blank">' + value.total + '</a>';
}
return tr;
}
function acceptedDetailFormatter(value, row) {
var arrColumn = this.field.split("_");
var step = arrColumn[1];
var funnel = false;
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = '';
if ($('#ms-crm-charts-work').val()) {
responsible = $('#ms-crm-charts-work').val();
}
if ($('#filter_charts_funnel').val() && $('#filter_charts_funnel').val().length == 1) {
funnel = $('#filter_charts_funnel').val()[0];
}
var tr = '0';
if (value !== undefined) {
var tr = '<a href="/clients.php?filter_stage=filter_stage_work&emp=' + row.id;
if (funnel) {
tr += '&funnelId=' + funnel;
}
if (responsible != '') {
tr += '&responsible=' + responsible;
}
tr += '&period=' + period + '&step=' + step + '&accepted=1" target="_blank">' + value.total + '</a>';
}
return tr;
}
function taskDetailFormatter(value, row) {
var arrColumn = this.field.split("_");
var taskOld = 0;
var taskNew = 0;
var taskSlung = 0;
var taskCancel = 0;
var step = arrColumn[1];
//console.log(row);
if (row[arrColumn[0]]) {
if (row[arrColumn[0]][arrColumn[1]].task_old)
taskOld = row[arrColumn[0]][arrColumn[1]].task_old;
if (row[arrColumn[0]][arrColumn[1]].task_new)
taskNew = row[arrColumn[0]][arrColumn[1]].task_new;
if (row[arrColumn[0]][arrColumn[1]].task_slung)
taskSlung = row[arrColumn[0]][arrColumn[1]].task_slung;
if (row[arrColumn[0]][arrColumn[1]].task_cancel)
taskCancel = row[arrColumn[0]][arrColumn[1]].task_cancel;
}
var funnel = false;
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = '';
if ($('#ms-crm-charts-work').val()) {
responsible = $('#ms-crm-charts-work').val();
}
if ($('#filter_charts_funnel').val() && $('#filter_charts_funnel').val().length == 1) {
funnel = $('#filter_charts_funnel').val()[0];
}
var tr_old = '<a href="/charts.php?tasks=overdue_tasks&type_calendar=client&event=' + arrColumn[0] + '&emp=' + row.id;
var tr_new = '<a href="/charts.php?tasks=open_tasks&type_calendar=client&event=' + arrColumn[0] + '&emp=' + row.id;
var tr_slung = '<a href="/charts.php?tasks=completed_tasks&type_calendar=client&event=' + arrColumn[0] + '&emp=' + row.id;
if (funnel) {
tr_old += '&funnelId=' + funnel;
tr_new += '&funnelId=' + funnel;
tr_slung += '&funnelId=' + funnel;
}
if (responsible != '') {
tr_old += '&responsible=' + responsible;
tr_new += '&responsible=' + responsible;
tr_slung += '&responsible=' + responsible;
}
tr_old += '&period=' + period + '&step=' + step + '" target="_blank">' + taskOld + '</a>';
tr_new += '&period=' + period + '&step=' + step + '" target="_blank">' + taskNew + '</a>';
tr_slung += '&period=' + period + '&step=' + step + '" target="_blank">' + taskSlung + '</a>';
var tr = tr_new + '/' + tr_slung + '/' + tr_old + '/' + taskCancel;
return tr;
}
function footerTaskDetailFormatter(value, row)
{
var arrColumn = this.field.split("_");
var taskOld = 0;
var taskNew = 0;
var taskSlung = 0;
var taskCancel = 0;
var step = arrColumn[1];
if (row[arrColumn[0]]) {
if (row[arrColumn[0]][arrColumn[1]].task_old)
taskOld = row[arrColumn[0]][arrColumn[1]].task_old;
if (row[arrColumn[0]][arrColumn[1]].task_new)
taskNew = row[arrColumn[0]][arrColumn[1]].task_new;
if (row[arrColumn[0]][arrColumn[1]].task_slung)
taskSlung = row[arrColumn[0]][arrColumn[1]].task_slung;
if (row[arrColumn[0]][arrColumn[1]].task_cancel)
taskCancel = row[arrColumn[0]][arrColumn[1]].task_cancel;
}
var funnel = false;
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = '';
if ($('#ms-crm-charts-work').val()) {
responsible = $('#ms-crm-charts-work').val();
}
if ($('#filter_charts_funnel').val() && $('#filter_charts_funnel').val().length == 1) {
funnel = $('#filter_charts_funnel').val()[0];
}
var tr_old = '<a style="color: #fff" href="/charts.php?tasks=overdue_tasks&type_calendar=client&event=' + arrColumn[0] + '&emp=' + row.id;
var tr_new = '<a style="color: #fff" href="/charts.php?tasks=open_tasks&type_calendar=client&event=' + arrColumn[0] + '&emp=' + row.id;
var tr_slung = '<a style="color: #fff" href="/charts.php?tasks=completed_tasks&type_calendar=client&event=' + arrColumn[0] + '&emp=' + row.id;
if (funnel) {
tr_old += '&funnelId=' + funnel;
tr_new += '&funnelId=' + funnel;
tr_slung += '&funnelId=' + funnel;
}
if (responsible != '') {
tr_old += '&responsible=' + responsible;
tr_new += '&responsible=' + responsible;
tr_slung += '&responsible=' + responsible;
}
tr_old += '&period=' + period + '&step=' + step + '" target="_blank">' + taskOld + '</a>';
tr_new += '&period=' + period + '&step=' + step + '" target="_blank">' + taskNew + '</a>';
tr_slung += '&period=' + period + '&step=' + step + '" target="_blank">' + taskSlung + '</a>';
var tr = tr_new + '/' + tr_slung + '/' + tr_old + '/' + taskCancel;
return tr;
}
function linkSorter(a, b) {
const num_A = parseFloat(a);
const num_B = parseFloat(b);
if (!isNaN(num_A) && !isNaN(num_B))
{
return num_A - num_B;
}
else
{
// Extract the text content from <a> tags for comparison
const textA = $("<div>").html(a).find("a").text().toUpperCase();
const textB = $("<div>").html(b).find("a").text().toUpperCase();
// Check if values are numeric
const numA = parseFloat(textA);
const numB = parseFloat(textB);
// Compare as numbers if both are valid numbers
if (!isNaN(numA) && !isNaN(numB)) {
return numA - numB;
}
// Otherwise, compare as strings
if (textA < textB) return -1;
if (textA > textB) return 1;
}
return 0;
}
function salesPlanSorter(a, b)
{
let num_A = parseFloat(a);
let num_B = parseFloat(b);
if (!isNaN(num_A) && !isNaN(num_B))
{
num_A = parseFloat(a.toString().replace(/\s+/g, ''));
num_B = parseFloat(b.toString().replace(/\s+/g, ''));
return num_A - num_B;
}
return 0;
}
function ObjectSorter(a, b)
{
const num_A = parseFloat(a);
const num_B = parseFloat(b);
if (!isNaN(num_A) && !isNaN(num_B))
{
return num_A - num_B;
}
else
{
// Extract the text content from <a> tags for comparison
const textA = a.match(/data-val="([^"]*)"/);
const textB = b.match(/data-val="([^"]*)"/);
// Check if values are numeric
const numA = parseFloat(textA[1]);
const numB = parseFloat(textB[1]);
// Compare as numbers if both are valid numbers
if (!isNaN(numA) && !isNaN(numB)) {
return numA - numB;
}
// Otherwise, compare as strings
if (textA < textB) return -1;
if (textA > textB) return 1;
}
return 0;
}
function callsSourcesFormatter(value, row) {
var funnel = 'all';
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = '';
if ($('#ms-crm-charts-work').val()) {
responsible = $('#ms-crm-charts-work').val();
}
if ($('#filter_charts_funnel').val() && $('#filter_charts_funnel').val().length == 1) {
funnel = $('#filter_charts_funnel').val()[0];
}
var tr = `<a href="/clients.php?filter_stage=filter_work_all`;
if (row.pid === 0)
{
tr = `<a data-val="${value}" href="/clients.php?filter_stage=filter_work_all`;
}
if (funnel) {
tr += '&funnelId=' + funnel;
}
if (responsible != '') {
tr += '&responsible=' + responsible;
}
tr += '&period=' + period + '&source=' + row.sources + '" target="_blank">' + value + '</a>';
return tr;
}
function workSourcesFormatter(value, row) {
var funnel = 'all';
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = '';
if ($('#ms-crm-charts-work').val()) {
responsible = $('#ms-crm-charts-work').val();
}
if ($('#filter_charts_funnel').val() && $('#filter_charts_funnel').val().length == 1) {
funnel = $('#filter_charts_funnel').val()[0];
}
var tr = `<a data-val="${value}" href="/clients.php?filter_stage=filter_stage_work`;
if (funnel) {
tr += '&funnelId=' + funnel;
}
if (responsible != '') {
tr += '&responsible=' + responsible;
}
tr += '&period=' + period + '&source=' + row.sources + '" target="_blank">' + value + '</a>';
return tr;
}
function getStatFunnelFixet() {
var table = $('#table-funnel-keep-selection');
var thead = '<tr>';
//$("#table-funnel-keep-selection").closest(".fixed-table-body").unbind('scroll');
var th = $(table).find('thead th').eq(0).html();
var height = $(table).find('thead').height() - 1;
thead += th;
thead += '</tr>';
var body = '';
$("#table-funnel-keep-selection-fixed thead").html('<tr><th style="height:' + (height) + 'px; border-bottom: 0px; border-top: 1px solid #ddd;" class="table_white" rowspan="3">' + th + '</th></tr>');
// var top = $("#stats_funnel_list .fixed-table-container").eq(1).position().top;
// $("#table-funnel-keep-selection-fixed").css("top", top + "px");
var tbody = $("#table-funnel-keep-selection tbody tr");
for (var i = 0; i < tbody.length; i++) {
body += '<tr>';
body += '<td class="table_white" style="color: #000; background: #fff;">';
body += $(tbody[i]).find('td').eq(0).html();
body += '</td></tr>';
}
$("#table-funnel-keep-selection-fixed tbody").html(body);
var iht = 17;
/*if(!isNaN(parseInt($(".fixed-table-header").css("marginRight")))){
int = parseInt($(".fixed-table-header").css("marginRight"));
}*/
var ht = $("#table-funnel-keep-selection").closest(".fixed-table-body").height();
ht = ht - iht;
$("#table-funnel-keep-selection-fixed .fixed-table-body").height(ht).css("overflow", "hidden");
$("#table-funnel-keep-selection").closest(".fixed-table-body").scroll(function() {
var scrolltop = $(this).scrollTop();
$("#table-funnel-keep-selection-fixed .fixed-table-body").scrollTop(scrolltop);
});
$("#table-funnel-keep-selection-fixed").show();
}
function loadingTemplate() {
return '<span style="font-size: 24px;">Пожалуйста подождите, мы готовим для вас отчет. <img src="../images/rocket-spinner.svg" width="96px"></span>';
}
var scroll_timer = null;
function showFunnelStat() {
$("#stats_funnel_list__bg").fadeIn(500);
$("#stats_funnel_list").fadeIn(10);
$("body").addClass("lock");
var funnel = $('#filter_charts_funnel').val();
var pr = {
funnel: JSON.stringify(funnel),
agency_id: $('#session_agency_id').val()
}
let rowCount = 0;
$.post('/ajax/getGridTableFunnel.php', pr, function(data) {
$("#stats_funnel_list").html(data);
var $table = $('#table-funnel-keep-selection');
// Only initialize if not already initialized
if (!$table.data('initialized')) {
$table.bootstrapTable({
formatColumnsToggleAll: function() {
return 'Выбрать все';
},
/*fixedColumns: true,
fixedNumber: 1,*/
onLoadSuccess: function(data) {
rowCount = data.rows.length;
updateContainerHeight();
// Apply custom drag functionality
setupDragScrolling();
// Fix column widths
setTimeout(updateColumnWidths, 500);
},
onColumnSwitch: function() {
fixed();
},
onSort: function() {
fixed();
},
onPageChange: function() {
fixed();
},
onRefresh: function() {
// Apply custom drag functionality
setupDragScrolling();
setTimeout(updateContainerHeight, 0);
// Fix column widths
setTimeout(updateColumnWidths, 500);
setTimeout(function() {
const tableBodyDragscroll = $('.table-funnel-keep-selection-dragscroll');
let maxScrollLeft = tableBodyDragscroll[0].scrollWidth - tableBodyDragscroll[0].clientWidth;
if (maxScrollLeft != tableBodyDragscroll.scrollLeft()) {
tableBodyDragscroll.scrollLeft(tableBodyDragscroll.scrollLeft() + 1);
}
else {
tableBodyDragscroll.scrollLeft(tableBodyDragscroll.scrollLeft() - 1);
}
tableBodyDragscroll.scrollTop(tableBodyDragscroll.scrollTop() + 1);
}, 1000); // Adjust the timeout duration as needed
},
onScrollBody: function() {
clearTimeout(scroll_timer);
scroll_timer = setTimeout(() => updateColumnWidths(), 2000);
}
});
// Mark as initialized
$table.data('initialized', true);
}
});
$(document).on('change', '.toggle-all', function() {
fixed();
})
function escapeSelector(selector) {
// Escape special characters for jQuery selectors
return selector
.replace(/\//g, '_') // Replace '/' with '_'
.replace(/([#.:,+~>\*\[\]()"'\\])/g, '\\$1') // Escape characters like #, ., :, (, ), etc.
.replace(/\s+/g, '.') // Replace spaces with dots
.replace(/\\/g, '\\\\');
}
function setupDragScrolling() {
var $dragArea = $("#table-funnel-keep-selection").closest(".fixed-table-body");
$dragArea.unbind("mouseup mousedown").css("cursor", "grab")
.mousedown(function() {
$(this).css("cursor", "grabbing");
})
.mouseup(function() {
$(this).css("cursor", "grab");
})
.addClass("dragscroll table-funnel-keep-selection-dragscroll");
if (typeof dragscroll !== 'undefined') {
dragscroll.reset();
}
}
function updateContainerHeight() {
$('.fixed-table-container.fixed-height.has-footer').css({
height: (rowCount >= 8 ? '490px' : 'auto'),
paddingBottom: (rowCount >= 8 ? '180px' : 0)
});
$('.fixed-table-border').css('height', 0)
$('.fixed-table-loading').css('height', 'unset')
}
function updateColumnWidths() {
var th = $('#table-funnel-keep-selection thead th');
//console.log(th);
th.each(function(i) {
var element = $(this).find('.fht-cell')[0];
var width = parseFloat(window.getComputedStyle(element).width);
const classes = `.${escapeSelector($(th[i]).attr('class'))}`;
//var class = $(th[i]).attr('class');
//console.log(classes);
$('#stats_funnel_list .fixed-table-header th').eq(i).find('.fht-cell').css('width', width + 'px');
$('#stats_funnel_list .fixed-table-footer '+classes+' .fht-cell').css('width', width + 'px');
});
// getStatFunnelFixet();
}
function fixed() {
// Apply custom drag functionality
setupDragScrolling();
setTimeout(updateContainerHeight, 0);
// Fix column widths
setTimeout(updateColumnWidths, 500);
// Delay scroll to ensure table updates first
setTimeout(function() {
const tableBodyDragscroll = $('.table-funnel-keep-selection-dragscroll');
let maxScrollLeft = tableBodyDragscroll[0].scrollWidth - tableBodyDragscroll[0].clientWidth;
if (maxScrollLeft != tableBodyDragscroll.scrollLeft()) {
tableBodyDragscroll.scrollLeft(tableBodyDragscroll.scrollLeft() + 1);
}
else {
tableBodyDragscroll.scrollLeft(tableBodyDragscroll.scrollLeft() - 1);
}
tableBodyDragscroll.scrollTop(tableBodyDragscroll.scrollTop() + 1);
}, 100); // Adjust the timeout duration as needed
}
}
function hideFunnelStat() {
$("#stats_funnel_list__bg").fadeOut(500);
$("#stats_funnel_list").toggle(10);
$("body").removeClass("lock");
}
//Статистика по рекламным источникам
function showSourcesStat() {
$("#stats_sources_list__bg").fadeIn(500);
$("#stats_sources_list").fadeIn(10);
$("body").addClass("lock");
var sources = $('#filter_charts_source').val();
var pr = {
sources: JSON.stringify(sources),
agency_id: $('#session_agency_id').val()
}
let rowCount = 0;
$.post('/ajax/getGridTableSources.php', pr, function(data) {
$("#stats_sources_list").html(data);
var $table_sources = $('#table-sources-keep-selection');
// Only initialize if not already initialized
if (!$table_sources.data('initialized')) {
$table_sources.bootstrapTable({
formatColumnsToggleAll: function () {
return 'Выбрать все'
},
treeShowField: 'source',
parentIdField: 'pid',
onPostBody: function() {
var columns = $table_sources.bootstrapTable('getOptions').columns
if (columns && columns[0][0].visible) {
$table_sources.treegrid({
initialState: 'expanded',
onChange: function() {
$table_sources.bootstrapTable('resetView')
}
})
}
},
onLoadSuccess: function(data) {
rowCount = data.length;
updateContainerHeight();
// Set cursor styles and drag scrolling
setupDragScrolling();
// Update column widths
setTimeout(updateColumnWidths, 500);
},
onColumnSwitch: function(index, row) {
fixed();
},
onScrollBody: function(el) {
var scrollTop = $(el).scrollTop();
$("#table-sources-keep-selection-fixed .fixed-table-body").scrollTop(scrollTop);
},
onSort: function() {
fixed();
},
onRefresh: function() {
// Apply custom drag functionality
setupDragScrolling();
setTimeout(updateContainerHeight, 0);
// Fix column widths
setTimeout(updateColumnWidths, 500);
setTimeout(function() {
const tableBodyDragscroll = $('.table-sources-keep-selection-dragscroll');
let maxScrollLeft = tableBodyDragscroll[0].scrollWidth - tableBodyDragscroll[0].clientWidth;
if (maxScrollLeft != tableBodyDragscroll.scrollLeft()) {
tableBodyDragscroll.scrollLeft(tableBodyDragscroll.scrollLeft() + 1);
}
else {
tableBodyDragscroll.scrollLeft(tableBodyDragscroll.scrollLeft() - 1);
}
tableBodyDragscroll.scrollTop(tableBodyDragscroll.scrollTop() + 1);
}, 200); // Adjust the timeout duration as needed
}
});
// Mark as initialized
$table_sources.data('initialized', true);
}
});
$(document).on('change', '.toggle-all', function() {
fixed();
})
function escapeSelector(selector) {
// Escape special characters for jQuery selectors
return selector
.replace(/\//g, '_') // Replace '/' with '_'
.replace(/([#.:,+~>\*\[\]()"'\\])/g, '\\$1') // Escape characters like #, ., :, (, ), etc.
.replace(/\s+/g, '.') // Replace spaces with dots
.replace(/\\/g, '\\\\');
}
function setupDragScrolling() {
var $dragArea = $("#table-sources-keep-selection").closest(".fixed-table-body");
$dragArea.unbind("mouseup mousedown").css("cursor", "grab")
.mousedown(function() {
$(this).css("cursor", "grabbing");
})
.mouseup(function() {
$(this).css("cursor", "grab");
})
.addClass("dragscroll table-sources-keep-selection-dragscroll");
if (typeof dragscroll !== 'undefined') {
dragscroll.reset();
}
}
function updateContainerHeight() {
$('.fixed-table-container.fixed-height.has-footer').css({
height: (rowCount >= 8 ? '490px' : 'auto'),
paddingBottom: (rowCount >= 8 ? '180px' : 0)
});
$('.fixed-table-border').css('height', 0)
$('.fixed-table-loading').css('height', 'unset')
}
function updateColumnWidths() {
var th = $('#table-sources-keep-selection thead th');
th.each(function(i) {
var element = $(this).find('.fht-cell')[0];
var width = parseFloat(window.getComputedStyle(element).width);
const classes = `.${escapeSelector($(th[i]).attr('class'))}`;
$('#stats_sources_list .fixed-table-header th').eq(i).find('.fht-cell').css('width', width + 'px');
$(`#stats_sources_list .fixed-table-footer th${classes}`).eq(i).find('.fht-cell').css('width', width + 'px');
});
getStatFunnelFixet();
}
function fixed() {
// Apply custom drag functionality
setupDragScrolling();
setTimeout(updateContainerHeight, 0);
// Fix column widths
setTimeout(updateColumnWidths, 500);
// Delay scroll to ensure table updates first
setTimeout(function() {
const tableBodyDragscroll = $('.table-sources-keep-selection-dragscroll');
let maxScrollLeft = tableBodyDragscroll[0].scrollWidth - tableBodyDragscroll[0].clientWidth;
if (maxScrollLeft != tableBodyDragscroll.scrollLeft()) {
tableBodyDragscroll.scrollLeft(tableBodyDragscroll.scrollLeft() + 1);
}
else {
tableBodyDragscroll.scrollLeft(tableBodyDragscroll.scrollLeft() - 1);
}
tableBodyDragscroll.scrollTop(tableBodyDragscroll.scrollTop() + 1);
}, 100); // Adjust the timeout duration as needed
}
}
function hideSourcesStat() {
$("#stats_sources_list__bg").fadeOut(500);
$("#stats_sources_list").toggle(10);
$("body").removeClass("lock");
}
function sourceFormatter(val) {
return '<div class="itemSource" title="' + val + '"><span>' + val + '</span></div>';
}
function getStatSourcesFixet() {
$("#table-sources-keep-selection-fixed .treegrid-expander").unbind("click");
var table = $('#table-sources-keep-selection');
var thead = '<tr>';
//$("#table-funnel-keep-selection").closest(".fixed-table-body").unbind('scroll');
var th = $(table).find('thead th').eq(0).html();
var height = $(table).find('thead').height();
thead += th;
thead += '</tr>';
var body = '';
$("#table-sources-keep-selection-fixed thead").html('<tr><th style="height:' + (height) + 'px; border-bottom: 1px solid #ddd; border-top: 0px solid #ddd;" class="table_white" rowspan="3">' + th + '</th></tr>');
// var top = $("#stats_sources_list .fixed-table-container").eq(1).position().top;
// $("#table-sources-keep-selection-fixed").css("top", top + "px");
var tbody = $("#table-sources-keep-selection tbody tr");
for (var i = 0; i < tbody.length; i++) {
var classtr = $(tbody[i]).attr("class");
var data_index = $(tbody[i]).attr("data-index");
var styletr = '';
if ($(tbody[i]).attr("style")) {
styletr = $(tbody[i]).attr("style");
}
body += '<tr class="' + classtr + '" data-index="' + data_index + '"';
if (styletr != '') {
body += ' style="' + styletr + '"';
}
body += '><td class="table_white" style="color: #000; background: #fff;">';
body += $(tbody[i]).find('td').eq(0).html();
body += '</td></tr>';
}
$("#table-sources-keep-selection-fixed tbody").html(body);
var iht = 17;
/*if(!isNaN(parseInt($(".fixed-table-header").css("marginRight")))){
int = parseInt($(".fixed-table-header").css("marginRight"));
}*/
var ht = $("#table-sources-keep-selection").closest(".fixed-table-body").height();
ht = ht - iht;
$("#table-sources-keep-selection-fixed .fixed-table-body").height(ht).css("overflow", "hidden");
$("#table-sources-keep-selection-fixed").show();
$("#table-sources-keep-selection-fixed .treegrid-expander").click(function() {
var cell = $(this).closest('tr').prop("classList");
$("#table-sources-keep-selection ." + cell[0] + " .treegrid-expander").click();
var index = parseInt(cell[0].replace("treegrid-", ""));
if (cell[1] == 'treegrid-collapsed') {
$(this).closest('tr').removeClass('treegrid-collapsed').addClass('treegrid-expanded');
$(this).closest('tr').find(".treegrid-expander").addClass('treegrid-expander-expanded').removeClass('treegrid-expander-collapsed');
$("#table-sources-keep-selection-fixed .treegrid-parent-" + index).css("display", "table-row");
} else {
$(this).closest('tr').addClass('treegrid-collapsed').removeClass('treegrid-expanded');
$("#table-sources-keep-selection-fixed .treegrid-parent-" + index).css("display", "none");
$(this).closest('tr').find(".treegrid-expander").removeClass('treegrid-expander-expanded').addClass('treegrid-expander-collapsed');
}
});
}
function ajaxRequestMain(param) {
var client_req = $('#filter-clientreq').val();
var period = $('.filter-popup-type.period.active').attr('id');
var responsible = $('#ms-crm-charts-work').val();
var charts_type = $('#filter-charts-type').val();
var charts_objects_type = $('#filter-charts-objects-type').val();
var priority1, priority2, priority3, priority4;
if ($('.filter-priority1').hasClass('active')) {
priority1 = 1;
}
if ($('.filter-priority2').hasClass('active')) {
priority2 = 1;
}
if ($('.filter-priority3').hasClass('active')) {
priority3 = 1;
}
if ($('.filter-priority4').hasClass('active')) {
priority4 = 1;
}
var charts_rol = $('#filter_charts_rol').val();
var source = $('#filter_charts_source').val();
var partner = $('#filter_charts_partner').val();
var funnel = $('#filter_charts_funnel').val();
var charts_activities = $('#filter_charts_activities').val();
var params = {
stats: 'stats',
period: period,
responsible: JSON.stringify(responsible),
user_id: $('#session_user_id').val(),
charts_type: JSON.stringify(charts_type),
charts_objects_type: JSON.stringify(charts_objects_type),
priority1: JSON.stringify(priority1),
priority2: JSON.stringify(priority2),
priority3: JSON.stringify(priority3),
priority4: JSON.stringify(priority4),
charts_rol: JSON.stringify(charts_rol),
users_admin: $('#session_user_admin').val(),
source: JSON.stringify(source),
partner: JSON.stringify(partner),
funnel: JSON.stringify(funnel),
charts_activities: JSON.stringify(charts_activities),
client_req: client_req
}
if (period == 'dates') {
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
params.onDate = onDate;
params.offDate = offDate;
}
var url = "/ajax/statistics.php"
$.post(url, params, function(res) {
//console.log(res);
param.success(JSON.parse(res))
})
}
//футер для плана продаж
function itogFormatter(data) {
return "Итого";
}
function priceFormatter(data) {
var summa = 0;
var field = this.field
for (var i = 0; i < data.length; i++) {
var row = data[i][field].toString().replace('<a style="cursor: grab; color: #000; border-bottom: none;">', '').replace('</a>', '').replace(/ /g, '');
if (!isNaN(parseInt(row))) {
summa += parseInt(row);
}
}
return summa.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1 ');
}
function footerPriceFormatter(data) {
let summa = 0;
let field = this.field
for (let i = 0; i < data.length; i++) {
let val = data[i][field];
if (!isNaN(parseInt(val)))
{
summa += parseInt(val);
}
else
{
val = val.match(/data-val="([^"]*)"/);
if (val && val[1] && !isNaN(parseInt(val[1])))
{
summa += parseInt(val[1])
}
}
}
return summa;
}
function footerPriceFormatterForObject(data) {
let summa = 0;
let field = this.field
for (let i = 0; i < data.length; i++) {
let val = data[i][field];
if (val && !isNaN(parseInt(val)))
{
summa += parseInt(val);
}
else if (val)
{
val = val.match(/data-val="([^"]*)"/);
if (val && val[1] && !isNaN(parseInt(val[1])))
{
summa += parseInt(val[1])
}
}
}
var a = '<a data-val="summa" href="javascript:{}" data-user-id="all" data-fields="'+field+'" class="statsObjectsFooter">'+summa+'</a>';
return a;
}
function footerPriceBySlashFormatterForObject(data)
{
let summa = 0;
let existSlash = false;
let totalNumerator = 0;
let totalDenominator = 0;
let field = this.field
for (let i = 0; i < data.length; i++) {
let val = data[i][field];
val = val.match(/data-val="([^"]*)"/)
if (val && val[1] && val[1].includes('/'))
{
existSlash = true;
const [numerator, denominator] = val[1].split('/').map(part => part.replace(/\s+/g, ''));
if (numerator || denominator)
{
// Convert to numbers and add to totals
totalNumerator += Number(numerator);
totalDenominator += Number(denominator);
}
}
else if (val && !isNaN(parseFloat(val)))
{
summa += parseFloat(val);
}
}
if (existSlash)
{
return `${totalNumerator}/${totalDenominator}`;
}
return summa;
}
function priceFormaterrForSources(data)
{
let summa = 0;
let field = this.field
for (let i = 0; i < data.length; i++) {
let val = data[i][field];
val = $("<div>").html(val).find("a").attr("data-val")
if (val)
{
summa += parseFloat(val);
}
}
return summa;
}
function priceBySlashFormaterrForSources(data)
{
let summa = 0;
let existSlash = false;
let totalNumerator = 0;
let totalDenominator = 0;
let field = this.field
for (let i = 0; i < data.length; i++) {
let val = data[i][field];
val = $("<div>").html(val).find("a").attr("data-val")
if (val && val.includes('/'))
{
existSlash = true;
const [numerator, denominator] = val.split('/').map(part => part.replace(/\s+/g, '').trim());
// Convert to numbers and add to totals
totalNumerator += Number(numerator);
totalDenominator += Number(denominator);
}
else if (val && !isNaN(parseFloat(val)))
{
summa += parseFloat(val);
}
}
if (existSlash)
{
return `${totalNumerator}/${totalDenominator}`;
}
return summa;
}
function procentFormated(data) {
var summa = 0;
var summa2 = 0;
var field = this.field;
var f1 = '';
var f2 = '';
if (field == "real_pr") {
f1 = 'summa_commission';
f2 = 'real_summa_commission';
} else {
var index = field.replace("real_pr_", "");
f1 = 'summa_commission_' + index;
f2 = 'real_summa_commission_' + index;
}
if (f1 != '') {
for (var i = 0; i < data.length; i++) {
var row = data[i][f1].toString().replace('<a style="cursor: grab; color: #000; border-bottom: none;">', '').replace('</a>', '').replace(/ /g, '');
if (!isNaN(parseInt(row))) {
summa += parseInt(row);
}
var row = data[i][f2].toString().replace('<a style="cursor: grab; color: #000; border-bottom: none;">', '').replace('</a>', '').replace(/ /g, '');
if (!isNaN(parseInt(row))) {
summa2 += parseInt(row);
}
}
}
var procent = 0;
if (summa > 0 && summa2 > 0) {
procent = Math.ceil(summa2 / summa * 100);
} else if (summa == 0 && summa2 > 0) {
procent = 100;
}
return procent + "%";
}
function procentFormaterrForFunnel(data) {
let summa = 0;
let field = this.field
for (let i = 0; i < data.length; i++) {
let val = data[i][field];
if (!isNaN(parseFloat(val)))
{
summa += parseFloat(val);
}
else
{
val = val.match(/data-val="([^"]*)"/);
if (val && val[1] && !isNaN(parseFloat(val[1])))
{
summa += parseFloat(val[1])
}
}
}
return summa.toFixed(2) + "%";
}
function procentFormaterrForFunnelConv(data) {
let work_next_step = 0;
let work_add = 0;
let field = this.field;
var summa = 0;
var step = field.replace('conversion_', '').replace('conversionclosest_', '');
var arrField = field.split('_');
var name_field = '';
if(arrField[0] && arrField[1]){
name_field = arrField[0];
step = arrField[1];
}
for (let i = 0; i < data.length; i++) {
let val = data[i]['work_next_step_'+step];
if(name_field == 'conversionclosest'){
val = data[i]['closest_' + step + '_all'];
}
let val2 = data[i]['work'];
if (!isNaN(parseFloat(val)))
{
work_next_step += parseFloat(val);
}
else
{
val = val.match(/data-val="([^"]*)"/);
if (val && val[1] && !isNaN(parseFloat(val[1])))
{
work_next_step += parseFloat(val[1])
}
}
if (!isNaN(parseFloat(val2)))
{
work_add += parseFloat(val2);
}
else
{
val2 = val2.match(/data-val="([^"]*)"/);
if (val2 && val2[1] && !isNaN(parseFloat(val2[1])))
{
work_add += parseFloat(val2[1])
}
}
}
if(work_add > 0){
summa = (work_next_step/work_add) * 100;
}
//return work_add;
return summa.toFixed(2) + "%";
}
function procentFormaterrForFunnelConvPole(data){
let work_next_step = 0;
let work_add = 0;
let field = this.field;
var summa = 0;
var step = field.replace('conversion_', '').replace('conversionclosest_', '');
var arrField = field.split('_');
var name_field = '';
if(arrField[0] && arrField[1]){
name_field = arrField[0];
step = arrField[1];
}
for (let i = 0; i < data.length; i++) {
let val = data[i]['work_next_step_'+step];
if(name_field == 'conversionclosest'){
val = data[i]['closest_' + step + '_all'];
}
let val2 = data[i]['work_prev_step_'+step];
if (!isNaN(parseFloat(val)))
{
work_next_step += parseFloat(val);
}
else
{
val = val.match(/data-val="([^"]*)"/);
if (val && val[1] && !isNaN(parseFloat(val[1])))
{
work_next_step += parseFloat(val[1])
}
}
if (!isNaN(parseFloat(val2)))
{
work_add += parseFloat(val2);
}
else
{
val2 = val2.match(/data-val="([^"]*)"/);
if (val2 && val2[1] && !isNaN(parseFloat(val2[1])))
{
work_add += parseFloat(val2[1])
}
}
}
if(work_add > 0){
summa = (work_next_step/work_add) * 100;
}
//return work_add;
return summa.toFixed(2) + "%";
}
function conversionFormaterrForFunnel(data){
let value1 = 0;
let value2 = 0;
let field = this.field;
let name1 = 'work_del_all';
let name2 = 'work';
if(field == 'conversion'){
name1 = 'sdelka';
name2 = 'work';
}
var summa = 0;
for (let i = 0; i < data.length; i++) {
let val = data[i][name1];
let val2 = data[i][name2];
if (!isNaN(parseFloat(val)))
{
value1 += parseFloat(val);
}
else
{
val = val.match(/data-val="([^"]*)"/);
if (val && val[1] && !isNaN(parseFloat(val[1])))
{
value1 += parseFloat(val[1])
}
}
if (!isNaN(parseFloat(val2)))
{
value2 += parseFloat(val2);
}
else
{
val2 = val2.match(/data-val="([^"]*)"/);
if (val2 && val2[1] && !isNaN(parseFloat(val2[1])))
{
value2 += parseFloat(val2[1])
}
}
}
if(value2 > 0){
summa = (value1/value2) * 100;
}
//return work_add;
return summa.toFixed(2) + "%";
}
function footerSdelkaPriceFormatter(data){
let summa = 0;
let sdelka = 0;
for (let i = 0; i < data.length; i++) {
let val = data[i]['summa'];
let val2 = data[i]['sdelka'];
if (!isNaN(parseFloat(val)))
{
summa += parseFloat(val);
}
else
{
val = val.match(/data-val="([^"]*)"/);
if (val && val[1] && !isNaN(parseFloat(val[1])))
{
summa += parseFloat(val[1])
}
}
if (!isNaN(parseFloat(val2)))
{
sdelka += parseFloat(val2);
}
else
{
val2 = val2.match(/data-val="([^"]*)"/);
if (val2 && val2[1] && !isNaN(parseFloat(val2[1])))
{
sdelka += parseFloat(val2[1])
}
}
}
return sdelka+'/'+summa;
}
function procentFormaterrForSources(data) {
let summa = 0;
let field = this.field
for (let i = 0; i < data.length; i++) {
let val = data[i][field];
if (!isNaN(parseFloat(val)))
{
summa += parseFloat(val);
}
else
{
val = val.match(/data-val="([^"]*)"/);
if (val && val[1] && !isNaN(parseFloat(val[1])))
{
summa += parseFloat(val[1])
}
}
}
return summa.toFixed(2) + "%";
}
//Статистика по рекламным источникам
function showSalesPlanStat() {
$("#sales_plan_list__bg").fadeIn(500);
$("#sales_plan_list").fadeIn(10);
$("body").addClass("lock");
var user_id = $('#session_user_id').val();
var agency_id = $('#session_agency_id').val();
var pr = {
agency_id: agency_id,
user_id: user_id,
}
main_selector = '#table-sales_plan_list-selection';
main_selector_fixet = '#table-sales_plan_list-selection-fixed';
main_class_selector = "#sales_plan_list";
var period = $('.filter-popup-type.period.active').attr('id');
pr.period = period;
if (period == 'dates') {
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
pr.onDate = onDate;
pr.offDate = offDate;
}
$.post('/ajax/getGridTableSalesPlan.php', pr, function(data) {
$("#sales_plan_list").html(data);
var $table_sales = $('#table-sales_plan_list-selection');
$table_sales.bootstrapTable('destroy');
$table_sales.bootstrapTable({
exportFooter: true,
// treeShowField: 'fio',
// parentIdField: 'pid',
locale: 'ru',
formatColumnsToggleAll: function () {
return 'Выбрать все'
},
onPostBody: function() {
var columns = $table_sales.bootstrapTable('getOptions').columns
if (columns && columns[0][0].visible) {
$table_sales.treegrid({
initialState: 'expanded',
onChange: function() {
$table_sales.bootstrapTable('resetView')
}
})
}
},
onLoadSuccess: function() {
$('#sales_plan_list .fixed-table-border').css('height', '0px');
$(main_selector_fixet).hide();
$(main_selector).closest(".fixed-table-body").unbind("mouseup");
$(main_selector).closest(".fixed-table-body").unbind("mousedown");
setTimeout(function() {
var th = $(main_selector + ' thead th');
for (var i = 0; i < th.length; i++) {
var width = $(th[i]).find('.fht-cell').width();
$(main_class_selector + ' .fixed-table-header th').eq(i).find('.fht-cell').width(width);
$(main_selector + ' thead th').eq(i).find('.fht-cell').width(width);
}
// getStatFixet(main_selector, main_selector_fixet, main_class_selector);
}, 500);
$(main_selector).closest(".fixed-table-body").css("cursor", "grab");
$(main_selector).closest(".fixed-table-body").mousedown(function() {
$(this).css("cursor", "grabbing");
});
$(main_selector).closest(".fixed-table-body").mouseup(function() {
$(this).css("cursor", "grab");
});
$(main_selector).closest(".fixed-table-body").addClass("dragscroll").addClass("table-sales_plan_list-selection-dragscroll");
dragscroll.reset();
$(main_class_selector + ' .dropdown-item input').change(function() {
$(main_selector_fixet).hide();
setTimeout(function() {
var th = $(main_selector + ' thead th');
for (var i = 0; i < th.length; i++) {
var width = $(th[i]).find('.fht-cell').width();
$(main_class_selector + ' .fixed-table-header th').eq(i).find('.fht-cell').width(width);
$(main_selector + ' thead th').eq(i).find('.fht-cell').width(width);
}
// getStatFixet(main_selector, main_selector_fixet, main_class_selector);
}, 500);
});
},
onScrollBody: function(el) {
var scrolltop = $(el).scrollTop();
// $(main_selector_fixet + " .fixed-table-body").scrollTop(scrolltop);
},
onColumnSwitch: function (index, row) {
// $table_sales.bootstrapTable('refresh')
if ($('.table-sales_plan_list-selection-dragscroll') && $('.table-sales_plan_list-selection-dragscroll')[0] && $('.table-sales_plan_list-selection-dragscroll')[0].scrollLeft)
{
$('.table-sales_plan_list-selection-dragscroll').scrollTop($('.table-sales_plan_list-selection-dragscroll')[0].scrollLeft);
}
},
onSort: function() {
// getStatFixet(main_selector, main_selector_fixet, main_class_selector);
if ($('.table-sales_plan_list-selection-dragscroll') && $('.table-sales_plan_list-selection-dragscroll')[0] && $('.table-sales_plan_list-selection-dragscroll')[0].scrollLeft)
{
$('.table-sales_plan_list-selection-dragscroll').scrollTop($('.table-sales_plan_list-selection-dragscroll')[0].scrollLeft);
}
},
onRefresh: function() {
$('.fixed-table-body .fixed-table-loading').css({
height: '100%'
});
}
});
});
}
function hideSalesPlanStat() {
$("#sales_plan_list__bg").fadeOut(500);
$("#sales_plan_list").toggle(10);
$("body").removeClass("lock");
}
function getStatFixet(id, idFixed, mainSelector) {
$(idFixed + " .treegrid-expander").unbind("click");
var table = $(id);
var thead = '<tr>';
//$("#table-funnel-keep-selection").closest(".fixed-table-body").unbind('scroll');
var th = $(table).find('thead th').eq(0).html();
var height = $(table).find('thead').height();
thead += th;
thead += '</tr>';
var body = '';
$(idFixed + " thead").html('<tr><th style="height:' + (height) + 'px; border-bottom: 1px solid #ddd; border-top: 0px solid #ddd;" class="table_white" rowspan="3">' + th + '</th></tr>');
var top = $(mainSelector + " .fixed-table-container").eq(1).position().top;
$(idFixed).css("top", top + "px");
var tbody = $(id + " tbody tr");
for (var i = 0; i < tbody.length; i++) {
var classtr = $(tbody[i]).attr("class");
var data_index = $(tbody[i]).attr("data-index");
var styletr = '';
if ($(tbody[i]).attr("style")) {
styletr = $(tbody[i]).attr("style");
}
body += '<tr class="' + classtr + '" data-index="' + data_index + '"';
if (styletr != '') {
body += ' style="' + styletr + '"';
}
body += '><td class="table_white" style="color: #000; background: #fff;">';
body += $(tbody[i]).find('td').eq(0).html();
body += '</td></tr>';
}
$(idFixed + " tbody").html(body);
var iht = 17;
/*if(!isNaN(parseInt($(".fixed-table-header").css("marginRight")))){
int = parseInt($(".fixed-table-header").css("marginRight"));
}*/
var ht = $(id).closest(".fixed-table-body").height();
ht = ht - iht;
$(idFixed + " .fixed-table-body").height(ht).css("overflow", "hidden");
$(idFixed).show();
$(idFixed + " .treegrid-expander").click(function() {
var cell = $(this).closest('tr').prop("classList");
$(id + " ." + cell[0] + " .treegrid-expander").click();
var index = parseInt(cell[0].replace("treegrid-", ""));
var cell_ollapsed = false;
for (var i = 0; i < cell.length; i++) {
if (cell[i] == 'treegrid-collapsed') {
cell_ollapsed = true;
}
}
if (cell_ollapsed) {
$(this).closest('tr').removeClass('treegrid-collapsed').addClass('treegrid-expanded');
$(this).closest('tr').find(".treegrid-expander").addClass('treegrid-expander-expanded').removeClass('treegrid-expander-collapsed');
$(idFixed + " .treegrid-parent-" + index).css("display", "table-row");
} else {
$(this).closest('tr').addClass('treegrid-collapsed').removeClass('treegrid-expanded');
$(idFixed + " .treegrid-parent-" + index).css("display", "none");
$(this).closest('tr').find(".treegrid-expander").removeClass('treegrid-expander-expanded').addClass('treegrid-expander-collapsed');
$(idFixed + " .treegrid-parent-" + index).each(function(indexTr) {
cell2 = $(this).prop("classList");
$(this).addClass('treegrid-collapsed').removeClass('treegrid-expanded');
$(id + " ." + cell2[0] + " .treegrid-expander.treegrid-expander-expanded").click();
var index2 = parseInt(cell2[0].replace("treegrid-", ""));
$(idFixed + " .treegrid-parent-" + index2).css("display", "none");
$(this).find(".treegrid-expander.treegrid-expander-expanded").removeClass('treegrid-expander-expanded').addClass('treegrid-expander-collapsed');
})
}
$('#sales_plan_list .fixed-table-border').css('height', '0px');
var left = $(mainSelector + ' .fixed-table-body.dragscroll').scrollLeft();
$(mainSelector + " .fixed-table-footer").scrollLeft(left);
});
}
function getStats() {
$('#date_tasks').hide();
$('.clientreq').show();
var client_req = $('#filter-clientreq').val();
if (client_req == 1) {
$('.crm__stats .widget-title').each(function() {
var text = $(this).text().replace("Клиентов", "Заявок").replace("клиентов", "заявок").replace("клиенты", "заявки").replace("Клиенты", "Заявки");
$(this).text(text);
});
} else {
$('.crm__stats .widget-title').each(function() {
var text = $(this).text().replace("Заявок", "Клиентов").replace("заявок", "клиентов").replace("заявки", "клиенты").replace("Заявки", "Клиенты");
$(this).text(text);
});
}
var period = '30days';
if ($('.filter-popup-type.period.active').attr('id')) {
period = $('.filter-popup-type.period.active').attr('id');
}
var responsible = $('#ms-crm-charts-work').val();
var charts_type = $('#filter-charts-type').val();
var charts_objects_type = $('#filter-charts-objects-type').val();
var priority1, priority2, priority3, priority4;
if ($('.filter-priority1').hasClass('active')) {
priority1 = 1;
}
if ($('.filter-priority2').hasClass('active')) {
priority2 = 1;
}
if ($('.filter-priority3').hasClass('active')) {
priority3 = 1;
}
if ($('.filter-priority4').hasClass('active')) {
priority4 = 1;
}
var charts_rol = $('#filter_charts_rol').val();
var source = $('#filter_charts_source').val();
var partner = $('#filter_charts_partner').val();
var funnel = $('#filter_charts_funnel').val();
var charts_activities = $('#filter_charts_activities').val();
$('.view-charts').show();
$('.view-table').show();
var params = {
stats: 'stats',
period: period,
responsible: JSON.stringify(responsible),
user_id: $('#session_user_id').val(),
agency_id: $('#session_agency_id').val(),
charts_type: JSON.stringify(charts_type),
charts_objects_type: JSON.stringify(charts_objects_type),
priority1: JSON.stringify(priority1),
priority2: JSON.stringify(priority2),
priority3: JSON.stringify(priority3),
priority4: JSON.stringify(priority4),
charts_rol: JSON.stringify(charts_rol),
users_admin: $('#session_user_admin').val(),
source: JSON.stringify(source),
partner: JSON.stringify(partner),
funnel: JSON.stringify(funnel),
charts_activities: JSON.stringify(charts_activities),
client_req: client_req
}
if (period == 'dates') {
var onDate = $('#onDate').val();
var offDate = $('#offDate').val();
params.onDate = onDate;
params.offDate = offDate;
}
if ($('.view-table.active').length > 0) {
$('#date_tasks').hide();
localStorage['chartspage'] = 'table';
$('#export_stat_client').show();
var objects_column = true;
var roles = $('#filter_charts_rol').val();
if (roles !== null) {
objects_column = false;
for (var i = 0; i < roles.length; i++) {
if (roles[i] == "Арендодатель" || roles[i] == "Продавец") {
objects_column = true;
}
}
}
if (objects_column) {
//$("#grid-keep-selection th[data-column-id=objects]").data("visible", true);
if (!$('#grid-keep-selection-header [name=objects]').prop('checked')) {
$('#grid-keep-selection-header [name=objects]').click();
}
} else {
if ($('#grid-keep-selection-header [name=objects]').prop('checked')) {
$('#grid-keep-selection-header [name=objects]').click();
}
}
$('.crm__stats').addClass('hidden');
$('.crm__table').removeClass('hidden');
/*console.log('Начало');
$.post('/ajax/statistics.php', params, function(data){
console.log(data);
})*/
$('#grid-keep-selection-new').bootstrapTable('destroy');
$('#grid-keep-selection-req').bootstrapTable('destroy');
var main_selector = '#grid-keep-selection-new';
var main_selector_fixet = '#grid-keep-selection-new-fixed';
var main_class_selector = ".clients_table";
if (client_req == 1) {
$('.clients_table').addClass('hidden');
$('.requisitions_table').removeClass('hidden');
main_selector = '#grid-keep-selection-req';
main_selector_fixet = '#grid-keep-selection-req-fixed';
main_class_selector = ".requisitions_table";
} else {
$('.clients_table').removeClass('hidden');
$('.requisitions_table').addClass('hidden');
main_selector = '#grid-keep-selection-new';
main_selector_fixet = '#grid-keep-selection-new-fixed';
main_class_selector = ".clients_table";
}
var $table_main = $(main_selector);
$('.object-content__preloader').hide();
let rowCount = 0;
$table_main.bootstrapTable('destroy')
$table_main.bootstrapTable({
formatColumnsToggleAll: function () {
return 'Выбрать все'
},
onLoadSuccess: function(data) {
rowCount = data.rows.length
updateContainerHeight();
// Apply custom drag functionality
setupDragScrolling();
// Fix column widths
setTimeout(updateColumnWidths, 500);
},
onColumnSwitch: function (index, row) {
fixed();
},
onScrollBody: function(el) {
var scrolltop = $(el).scrollTop();
$(`${main_selector_fixet} .fixed-table-body`).scrollTop(scrolltop);
},
onSort: function() {
fixed();
},
onRefresh: function() {
// Apply custom drag functionality
setupDragScrolling();
setTimeout(updateContainerHeight, 0);
// Fix column widths
setTimeout(updateColumnWidths, 500);
setTimeout(function() {
const tableBodyDragscroll = $('.grid-keep-selection-new-dragscroll');
let maxScrollLeft = tableBodyDragscroll[0].scrollWidth - tableBodyDragscroll[0].clientWidth;
if (maxScrollLeft != tableBodyDragscroll.scrollLeft()) {
tableBodyDragscroll.scrollLeft(tableBodyDragscroll.scrollLeft() + 1);
}
else {
tableBodyDragscroll.scrollLeft(tableBodyDragscroll.scrollLeft() - 1);
}
tableBodyDragscroll.scrollTop(tableBodyDragscroll.scrollTop() + 1);
}, 200); // Adjust the timeout duration as needed
}
});
function escapeSelector(selector) {
// Escape special characters for jQuery selectors
return selector
.replace(/\//g, '_') // Replace '/' with '_'
.replace(/([#.:,+~>\*\[\]()"'\\])/g, '\\$1') // Escape characters like #, ., :, (, ), etc.
.replace(/\s+/g, '.') // Replace spaces with dots
.replace(/\\/g, '\\\\');
}
function setupDragScrolling() {
var $dragArea = $(main_selector).closest(".fixed-table-body");
$dragArea.unbind("mouseup mousedown").css("cursor", "grab")
.mousedown(function() {
$(this).css("cursor", "grabbing");
})
.mouseup(function() {
$(this).css("cursor", "grab");
})
.addClass("dragscroll grid-keep-selection-new-dragscroll");
if (typeof dragscroll !== 'undefined') {
dragscroll.reset();
}
}
function updateContainerHeight() {
$('.fixed-table-container.fixed-height.has-footer').css({
height: (rowCount >= 8 ? '490px' : 'auto'),
paddingBottom: (rowCount >= 8 ? '180px' : 0)
});
$('.fixed-table-border').css('height', 0)
$('.fixed-table-loading').css('height', 'unset')
}
function updateColumnWidths() {
var th = $(`${main_selector} thead th`);
th.each(function(i) {
var element = $(this).find('.fht-cell')[0];
var width = parseFloat(window.getComputedStyle(element).width);
const classes = `.${escapeSelector($(th[i]).attr('class'))}`;
$(`${main_class_selector} .fixed-table-header th`).eq(i).find('.fht-cell').css('width', width + 'px');
$(`${main_class_selector} .fixed-table-footer ${classes} .fht-cell`).css('width', width + 'px');
$(`${main_selector} thead th`).eq(i).find('.fht-cell').css('width', width + 'px');
});
getStatFixet(main_selector, main_selector_fixet, main_class_selector);
}
function fixed() {
// Apply custom drag functionality
setupDragScrolling();
setTimeout(updateContainerHeight, 0);
// Fix column widths
setTimeout(updateColumnWidths, 500);
// Delay scroll to ensure table updates first
setTimeout(function() {
dragscroll.reset();
const tableBodyDragscroll = $('.grid-keep-selection-new-dragscroll');
let maxScrollLeft = tableBodyDragscroll[0].scrollWidth - tableBodyDragscroll[0].clientWidth;
if (maxScrollLeft != tableBodyDragscroll.scrollLeft()) {
tableBodyDragscroll.scrollLeft(tableBodyDragscroll.scrollLeft() + 1);
}
else {
tableBodyDragscroll.scrollLeft(tableBodyDragscroll.scrollLeft() - 1);
}
tableBodyDragscroll.scrollTop(tableBodyDragscroll.scrollTop() + 1);
}, 100); // Adjust the timeout duration as needed
}
} else {
$('#date_tasks').show();
localStorage['chartspage'] = 'stats';
$('#export_stat_client').hide();
$('.crm__table').addClass('hidden');
$('.crm__stats').removeClass('hidden');
var date_close = 0;
if($('#date_closer').prop('checked')){
date_close = 1;
}
params.date_close = date_close;
$.post('/ajax/getCharts.php', params, function(data) {
var res = JSON.parse(data);
$('.stats-conversion .widget-number').text(res.conversion + "%");
$('#summas_sdelok').text(number_format(res.summa_sdelok, 0, ',', ' '));
var salesSources = [];
var totalSources = 0;
var totalFunnel = 0;
// if (res.Sources.length > 0) {
for (var vor in res.Sources) {
var val = {};
val.title = vor;
val.value = res.Sources[vor];
if (!isNaN(parseInt(val.value))) {
salesSources.push(val);
totalSources += parseInt(res.Sources[vor]);
}
}
for (var vor in res.Partners) {
var val = {};
val.title = vor;
val.value = res.Partners[vor];
if (!isNaN(parseInt(val.value))) {
salesSources.push(val);
totalSources += parseInt(res.Partners[vor]);
}
}
//}
$('#widgetSalesSourcesTotal').text('Всего: ' + totalSources);
var titles = {};
if (res.funnel_step) {
$('#widgetSalesFunnel').closest('.widget-inner').css('background', '#fff');
// $('.view-table-funnel').show();
titles = res.funnel_step.titles;
var salesFunnel = [];
for (var vor in res.Funnel) {
var val = {};
val.title = titles[vor];
val.value = res.Funnel[vor];
if (vor.indexOf("step_") != -1) {
$('.funnel_widget .view-table-funnel').show();
}
if (!isNaN(parseInt(val.value))) {
salesFunnel.push(val);
totalFunnel += parseInt(res.Funnel[vor]);
}
}
$('#widgetSalesFunnelTotal').text('Всего: ' + totalFunnel);
var chart = AmCharts.makeChart("widgetSalesFunnel", {
"type": "funnel",
"theme": "none",
"color": "#757575",
"baseColor": "#1B5E20",
"brightnessStep": 30,
"dataProvider": salesFunnel,
"valueRepresents": "area",
"balloon": {
"fixedPosition": true
},
/*"colors": [
"#1B5E20",
"#388E3C",
"#4CAF50",
"#81C784",
"#C8E6C9",
"#E8F5E9",
"#00C853",
"#DDDDDD",
"#999999",
"#333333"
],*/
"valueField": "value",
"titleField": "title",
"fontFamily": "Lato",
"fontSize": 15,
"marginRight": 240,
"marginLeft": 50,
"startX": -500,
"depth3D": 100,
"angle": 40,
"outlineAlpha": 1,
"pullOutEffect": "easeInSine",
"outlineColor": "#FFFFFF",
"outlineThickness": 2,
"labelPosition": "right",
"balloonText": "[[title]]<br><span><b>[[value]]</b> ([[percents]]%)</span>"
});
} else {
$('#widgetSalesFunnel').html('<div>Показ этого графика возможен только при одной выбранной воронке в фильтре</div>');
$('#widgetSalesFunnel').closest('.widget-inner').css('background', '#F5F5F5');
$('#widgetSalesFunnelTotal').text('');
$('.funnel_widget .view-table-funnel').hide();
}
AmCharts.addInitHandler(function(chart) {
var maxValue = 0;
for (var x in chart.dataProvider) {
var value = chart.dataProvider[x][chart.valueField];
if (value > maxValue)
maxValue = value;
}
if (1000000000 <= maxValue)
chart.legend.valueWidth = 100;
else if (1000000 <= maxValue)
chart.legend.valueWidth = 70;
else if (1000 <= maxValue)
chart.legend.valueWidth = 40;
}, ['pie']);
var chart = AmCharts.makeChart("widgetClientsSources", {
"type": "pie",
"theme": "none",
"color": "#757575",
"dataProvider": salesSources,
"legend": {
"markerType": "circle",
"position": "right",
"marginRight": 75,
"autoMargins": false,
"labelWidth": 190
},
"autoDisplay": true,
"autoTransform": true,
"labelText": "",
"valueField": "value",
"titleField": "title",
"fontFamily": "Lato",
"fontSize": 15,
"outlineAlpha": 0.4,
"colors": [
"#1B5E20",
"#388E3C",
"#4CAF50",
"#81C784",
"#C8E6C9",
"#E8F5E9",
"#00C853",
"#DDDDDD",
"#999999",
"#333333"
],
"pullOutEffect": "easeInSine",
"balloonText": "[[title]]<br><span><b>[[value]]</b> ([[percents]]%)</span>"
});
var chart = AmCharts.makeChart("widgetConversion", {
"type": "serial",
"categoryField": "date",
"dataDateFormat": "YYYY-MM",
"theme": "default",
"autoMargin": false,
"marginLeft": 40,
"marginBottom": 40,
"language": "ru",
"fontFamily": "Lato",
"fontSize": 15,
"color": "#757575",
"categoryAxis": {
"minPeriod": "MM",
"parseDates": true
},
"chartCursor": {
"enabled": true,
"categoryBalloonDateFormat": "MMM YYYY",
"cursorColor": "#ef6c00"
},
"chartScrollbar": {
"enabled": true
},
"colors": [
"#1B5E20",
"#388E3C",
"#4CAF50",
"#81C784",
"#C8E6C9",
"#E8F5E9",
"#00C853",
"#DDDDDD",
"#999999",
"#333333"
],
"trendLines": [],
"graphs": [{
"bullet": "round",
"balloonText": "[[title]]:&nbsp;[[value]]%",
"id": "conversion",
"title": "Конверсия",
"valueField": "conversion"
}],
"guides": [],
"allLabels": [],
"balloon": {},
"legend": {
"enabled": false
},
"dataProvider": res.conversions
});
var grafTitle = [{
"bullet": "round",
"balloonText": "[[title]]:[[value]]",
"id": "clientsQuantity",
"title": "Все",
"valueField": "quantity"
},
{
"bullet": "round",
"balloonText": "[[title]]:[[value]]",
"id": "clientsRentQuantity",
"title": "Аренда",
"valueField": "rentQuantity"
},
{
"bullet": "round",
"balloonText": "[[title]]:[[value]]",
"id": "clientsBuyQuantity",
"title": "Вторичка",
"valueField": "buyQuantity"
},
{
"bullet": "round",
"balloonText": "[[title]]:[[value]]",
"id": "clientsNBQuantity",
"title": "Новостройки",
"valueField": "NBQuantity"
}
];
var grafTitle2 = [{
"bullet": "round",
"balloonText": "[[title]]:[[value]]",
"id": "clientsQuantity2",
"title": "Все",
"valueField": "quantity"
},
{
"bullet": "round",
"balloonText": "[[title]]:[[value]]",
"id": "clientsRentQuantity2",
"title": "Аренда",
"valueField": "rentQuantity"
},
{
"bullet": "round",
"balloonText": "[[title]]:[[value]]",
"id": "clientsBuyQuantity2",
"title": "Вторичка",
"valueField": "buyQuantity"
},
{
"bullet": "round",
"balloonText": "[[title]]:[[value]]",
"id": "clientsNBQuantity2",
"title": "Новостройки",
"valueField": "NBQuantity"
}
];
var grafManadger = [{
"balloonText": "[[title]] у [[category]]:[[value]]",
"fillAlphas": 1,
"id": "AmGraph-1",
"title": "Аренда",
"type": "column",
"valueField": "rent"
},
{
"balloonText": "[[title]] у [[category]]:[[value]]",
"fillAlphas": 1,
"id": "AmGraph-2",
"title": "Покупка",
"type": "column",
"valueField": "buy"
},
{
"balloonText": "[[title]] у [[category]]:[[value]]",
"fillAlphas": 1,
"id": "AmGraph-3",
"title": "Продажа",
"type": "column",
"valueField": "sale"
}
];
var grafManadger2 = [{
"balloonText": "[[title]] у [[category]]:[[value]]",
"fillAlphas": 1,
"id": "AmGraph-12",
"title": "Аренда",
"type": "column",
"valueField": "rent"
},
{
"balloonText": "[[title]] у [[category]]:[[value]]",
"fillAlphas": 1,
"id": "AmGraph-22",
"title": "Покупка",
"type": "column",
"valueField": "buy"
},
{
"balloonText": "[[title]] у [[category]]:[[value]]",
"fillAlphas": 1,
"id": "AmGraph-32",
"title": "Продажа",
"type": "column",
"valueField": "sale"
}
];
if ($('#filter-clientreq').val() == 1) {
grafTitle = res.req_type;
grafTitle2 = res.req_type2;
grafManadger = res.req_type_menedger;
grafManadger2 = res.req_type_menedger_sdelka;
}
var chart = AmCharts.makeChart("widgetClientsQuantity", {
"type": "serial",
"categoryField": "date",
"dataDateFormat": "YYYY-MM",
"theme": "default",
"autoMargin": false,
"marginLeft": 40,
"marginBottom": 40,
"language": "ru",
"fontFamily": "Lato",
"fontSize": 15,
"color": "#757575",
"categoryAxis": {
"minPeriod": "MM",
"parseDates": true
},
"chartCursor": {
"enabled": true,
"categoryBalloonDateFormat": "MMM YYYY",
"cursorColor": "#ef6c00"
},
"chartScrollbar": {
"enabled": true
},
"colors": [
"#1B5E20",
"#388E3C",
"#4CAF50",
"#81C784",
"#C8E6C9",
"#E8F5E9",
"#00C853",
"#DDDDDD",
"#999999",
"#333333"
],
"trendLines": [],
"graphs": grafTitle,
"guides": [],
"allLabels": [],
"balloon": {},
"legend": {
"enabled": true,
"equalWidths": false,
"marginRight": 25,
"marginTop": 4,
"spacing": 15,
"useGraphSettings": true,
"valueAlign": "left",
"valueWidth": 0,
"color": "#757575"
},
"dataProvider": res.clients
});
var chart = AmCharts.makeChart("widgetClientsQuantityAdd", {
"type": "serial",
"categoryField": "date",
"dataDateFormat": "YYYY-MM",
"theme": "default",
"autoMargin": false,
"marginLeft": 40,
"marginBottom": 40,
"language": "ru",
"fontFamily": "Lato",
"fontSize": 15,
"color": "#757575",
"categoryAxis": {
"minPeriod": "MM",
"parseDates": true
},
"chartCursor": {
"enabled": true,
"categoryBalloonDateFormat": "MMM YYYY",
"cursorColor": "#ef6c00"
},
"chartScrollbar": {
"enabled": true
},
"colors": [
"#1B5E20",
"#388E3C",
"#4CAF50",
"#81C784",
"#C8E6C9",
"#E8F5E9",
"#00C853",
"#DDDDDD",
"#999999",
"#333333"
],
"trendLines": [],
"graphs": grafTitle2,
"guides": [],
"allLabels": [],
"balloon": {},
"legend": {
"enabled": true,
"equalWidths": false,
"marginRight": 25,
"marginTop": 4,
"spacing": 15,
"useGraphSettings": true,
"valueAlign": "left",
"valueWidth": 0,
"color": "#757575"
},
"dataProvider": res.clientsAdd
});
var chart = AmCharts.makeChart("widgetClientsQuantityByManagers", {
"type": "serial",
"categoryField": "category",
"autoMargins": true,
"marginLeft": 40,
"color": "#757575",
"fontFamily": "Lato",
"fontSize": 15,
"categoryAxis": {
"gridPosition": "start",
"labelRotation": 50
},
"colors": [
"#1B5E20",
"#388E3C",
"#4CAF50",
"#81C784",
"#C8E6C9",
"#E8F5E9",
"#00C853",
"#DDDDDD",
"#999999",
"#333333"
],
"graphs": grafManadger,
"guides": [],
"valueAxes": [{
"id": "ValueAxis-1",
"gridColor": "#dedede"
}],
"allLabels": [],
"balloon": {},
"legend": {
"enabled": true,
"equalWidths": false,
"marginRight": 25,
"marginTop": 4,
"spacing": 15,
"useGraphSettings": true,
"valueAlign": "left",
"valueWidth": 0,
"color": "#757575"
},
"titles": [],
"dataProvider": res.managersClients,
});
var chart = AmCharts.makeChart("widgetDealsQuantityByManagers", {
"type": "serial",
"categoryField": "category",
"autoMargins": true,
"marginLeft": 40,
"color": "#757575",
"fontFamily": "Lato",
"fontSize": 15,
"categoryAxis": {
"gridPosition": "start",
"labelRotation": 50
},
"colors": [
"#1B5E20",
"#388E3C",
"#4CAF50",
"#81C784",
"#C8E6C9",
"#E8F5E9",
"#00C853",
"#DDDDDD",
"#999999",
"#333333"
],
"graphs": grafManadger2,
"guides": [],
"valueAxes": [{
"id": "ValueAxis-1",
"gridColor": "#dedede"
}],
"allLabels": [],
"balloon": {},
"legend": {
"enabled": true,
"equalWidths": false,
"marginRight": 25,
"marginTop": 4,
"spacing": 15,
"useGraphSettings": true,
"valueAlign": "left",
"valueWidth": 0,
"color": "#757575"
},
"titles": [],
"dataProvider": res.managersClientsSdelka
});
var graphs = [{
"balloonText": "[[title]] у [[category]]:[[value]]",
"fillAlphas": 1,
"id": "calls",
"title": "Звонки",
"type": "column",
"valueField": "calls"
},
{
"balloonText": "[[title]] у [[category]]:[[value]]",
"fillAlphas": 1,
"id": "showings",
"title": "Показы",
"type": "column",
"valueField": "showings"
},
{
"balloonText": "[[title]] у [[category]]:[[value]]",
"fillAlphas": 1,
"id": "meetings",
"title": "Встречи",
"type": "column",
"valueField": "meetings"
},
{
"balloonText": "[[title]] у [[category]]:[[value]]",
"fillAlphas": 1,
"id": "deals",
"title": "Сделки",
"type": "column",
"valueField": "deals"
},
];
/*if($('#session_agency_id').val() != 9588){
graphs.push({
"balloonText": "[[title]] у [[category]]:[[value]]",
"fillAlphas": 1,
"id": "reservations",
"title": "Брони",
"type": "column",
"valueField": "reservations"
});
}*/
var chart = AmCharts.makeChart("widgetActivity", {
"type": "serial",
"categoryField": "category",
"autoMargins": true,
"marginBottom": 40,
"marginLeft": 40,
"color": "#757575",
"fontFamily": "Lato",
"fontSize": 15,
"categoryAxis": {
"gridPosition": "start",
"labelRotation": 50
},
"colors": [
"#1B5E20",
"#388E3C",
"#4CAF50",
"#81C784",
"#C8E6C9",
"#E8F5E9",
"#00C853",
"#DDDDDD",
"#999999",
"#333333"
],
"graphs": graphs,
"guides": [],
"valueAxes": [{
"id": "ValueAxis-1",
"gridColor": "#dedede"
}],
"allLabels": [],
"balloon": {},
"legend": {
"enabled": true,
"equalWidths": false,
"marginRight": 25,
"marginTop": 4,
"spacing": 15,
"useGraphSettings": true,
"valueAlign": "left",
"valueWidth": 0,
"color": "#757575"
},
"titles": [],
"dataProvider": res.managersEvents
});
});
}
}
function getWeekDates(fromDate) {
var dayLength = 24 * 60 * 60 * 1000;
var currentDate = new Date(fromDate.getFullYear(), fromDate.getMonth(), fromDate.getDate());
var currentWeekDayMillisecond = ((currentDate.getDay()) * dayLength);
var monday = new Date(currentDate.getTime() - currentWeekDayMillisecond + dayLength);
if (monday > currentDate) {
monday = new Date(monday.getTime() - (dayLength * 7));
}
return monday;
}