oont-contents/plugins/woo-discount-rules/v2/Assets/Js/admin-statistics.js
2025-02-08 15:10:23 +01:00

205 lines
No EOL
6.5 KiB
JavaScript

var isjQueryReady = false;
var isGoogleChartsReady = false;
var isInitialized = false;
var response_content;
google.charts.load('current', {'packages': ['line']});
google.charts.setOnLoadCallback(googleChartsLoadCallback);
function googleChartsLoadCallback() {
isGoogleChartsReady = true;
init();
}
jQuery(document).ready(function () {
isjQueryReady = true;
jQuery('.chart-type').select2({width: "260px"});
init();
});
function init() {
if (!isjQueryReady || !isGoogleChartsReady || isInitialized) {
return;
}
isInitialized = true;
jQuery('.chart-period').change(function () {
var val = jQuery(this).val();
var start_date = jQuery(this).closest('form').find('.chart-period-start');
var end_date = jQuery(this).closest('form').find('.chart-period-end');
var now = new Date();
if (val === 'this_week') {
now.setDate(now.getDate() - now.getDay() + 1);
start_date.val(format_date(now));
now.setDate(now.getDate() + 6);
end_date.val(format_date(now));
} else if (val === 'this_month') {
var start_month = new Date(now.getFullYear(), now.getMonth(), 1);
start_date.val(format_date(start_month));
var end_month = new Date(now.getFullYear(), now.getMonth() + 1, 0);
end_date.val(format_date(end_month));
}
});
jQuery('.chart-period-start, .chart-period-end').change(function () {
jQuery(this).closest('form').find('.chart-period').val('custom');
});
jQuery('.chart-options').submit(function (e) {
e.preventDefault();
var params = jQuery(this).serialize();
showChart(params);
return false;
});
jQuery('.coupon-options').submit(function (e) {
e.preventDefault();
var params = jQuery(this).serialize();
loadCouponDetails(params);
return false;
});
jQuery('#wdr-statistics-tabs li a').click(function() {
if (!jQuery(this).hasClass('active')){
jQuery('#wdr-statistics-tabs li a').removeClass('active');
jQuery(this).addClass('active');
jQuery('.wdr-statistics-container').hide();
jQuery(jQuery(this).data('target')).fadeIn('slow');
}
});
jQuery(window).resize(function () {
if (response_content && response_content.data.chart.columns.length > 1) {
renderChart(response_content.data.chart);
}
});
jQuery('.chart-period').change();
jQuery('.chart-options').submit();
jQuery('.coupon-options').submit();
}
function renderChart(data) {
var datatable = new google.visualization.DataTable();
if (data.columns) {
data.columns.forEach(function (item, i) {
datatable.addColumn(0 === i ? 'string' : 'number', item);
});
}
if (data.rows) {
datatable.addRows(Object.values(data.rows));
var formatter = new google.visualization.NumberFormat({
fractionDigits: 2
});
formatter.format(datatable, 1);
}
var chart_width = jQuery("#chart-container").width();
var chart_height = jQuery(window).height() - jQuery("#chart-container").offset().top;
if (200 > chart_height) {
chart_height = 200;
}
var options = {
chart: {
title: data.title ? data.title : '',
subtitle: data.subtitle ? data.subtitle : '',
},
width: chart_width,
height: chart_height,
};
var chart = new google.charts.Line(document.getElementById('chart-container'));
chart.draw(datatable, options);
}
function showChart(params) {
/*jQuery('.update-chart').prop('disabled', true);*/
/*jQuery('.chart-placeholder').addClass('loading');*/
let loader = jQuery('.woo_discount_loader');
loader.show();
jQuery("#info-container").find("#total-orders, #total-revenue, #discounted-amount, #total-free-shipping").html("-");
jQuery.post(
ajaxurl,
{
action: 'wdr_admin_statistics',
method: 'get_chart_data',
params: params,
},
function (response) {
loader.hide();
/*jQuery('.update-chart').prop('disabled', false);*/
/*jQuery('.chart-placeholder').removeClass('loading');*/
if (response.success && response.data.chart.columns && response.data.chart.columns.length > 1) {
response_content = response;
renderChart(response.data.chart);
jQuery("#info-container").show();
if (response.data.other) {
jQuery("#info-container #total-orders").html(response.data.other.total_orders);
jQuery("#info-container #total-revenue").html(response.data.other.revenue);
jQuery("#info-container #discounted-amount").html(response.data.other.discounted_amount);
jQuery("#info-container #total-free-shipping").html(response.data.other.total_free_shipping);
}
} else {
jQuery("#chart-container").html(wdr_data.localization_data.chart_data);
jQuery("#info-container").hide();
}
},
'json'
);
}
function loadCouponDetails(params) {
let loader = jQuery('.woo_discount_loader');
loader.show();
jQuery.post(
ajaxurl,
{
action: 'wdr_admin_statistics',
method: 'get_coupon_data',
params: params,
},
function (response) {
loader.hide();
if (response.success && response.data && response.data.length) {
jQuery("#coupon-container .no-data").hide();
jQuery("#coupon-container .list-coupons").show();
jQuery("#coupon-container table tbody").html('');
response.data.forEach(function(row) {
jQuery("#coupon-container table tbody").append('<tr><td>' + row.name + '</td><td>' + row.orders + '</td><td>' + row.amount + '</td></tr>')
});
}else {
jQuery('#coupon-container .list-coupons').hide();
jQuery('#coupon-container .no-data').html(wdr_data.localization_data.chart_data).show();
}
},
'json'
);
}
function to2Digits(num) {
return num < 10 ? ('0' + num) : num;
}
function format_date(date) {
return [
to2Digits(date.getFullYear()),
to2Digits(date.getMonth() + 1),
to2Digits(date.getDate())
].join('-');
}