Files
taome/admin016avdzbx/themes/new-theme/js/notifications.js
2020-10-07 10:37:15 +02:00

101 lines
4.0 KiB
JavaScript

/**
* 2007-2019 PrestaShop and Contributors
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/OSL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2019 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
const refreshNotifications = function () {
let timer = null;
$.ajax({
type: 'POST',
headers: {"cache-control": "no-cache"},
url: `${admin_notification_get_link}&rand=${new Date().getTime()}`,
async: true,
cache: false,
dataType: 'json',
success: function (json) {
if (json) {
let nbOrders = parseInt(json.order.total);
let nbCustomers = parseInt(json.customer.total);
let nbCustomerMessages = parseInt(json.customer_message.total);
let notifications_total = nbOrders + nbCustomers + nbCustomerMessages;
fillTpl(json.order.results, $("#orders-notifications"), $("#order-notification-template").html());
fillTpl(json.customer.results, $("#customers-notifications"), $("#customer-notification-template").html());
fillTpl(json.customer_message.results, $("#messages-notifications"), $("#message-notification-template").html());
setNotificationsNumber("_nb_new_orders_", nbOrders);
setNotificationsNumber("_nb_new_customers_", nbCustomers);
setNotificationsNumber("_nb_new_messages_", nbCustomerMessages);
if(notifications_total) {
$('#notifications-total').removeClass('hide').html(notifications_total);
}
else {
$('#notifications-total').remove();
}
}
timer = setTimeout(refreshNotifications, 120000);
}
});
clearTimeout(timer);
}
let fillTpl = function (results, eltAppendTo, tpl) {
eltAppendTo.children('.notification-elements').empty();
if (results.length > 0) {
eltAppendTo.removeClass('empty');
$.each(results, function (property, value) {
if (undefined === tpl) {
return;
}
eltAppendTo.children('.notification-elements').append(
tpl.replace(/_id_order_/g, parseInt(value.id_order))
.replace(/_customer_name_/g, value.customer_name)
.replace(/_iso_code_/g, value.iso_code)
.replace(/_carrier_/g, (value.carrier !== "" ? ` - ${value.carrier}` : ""))
.replace(/_total_paid_/g, value.total_paid)
.replace(/_id_customer_/g, parseInt(value.id_customer))
.replace(/_company_/g, (value.company !== "" ? ` (${value.company}) ` : ""))
.replace(/_date_add_/g, value.date_add)
.replace(/_status_/g, value.status)
.replace(/order_url/g, `${baseAdminDir}index.php?tab=AdminOrders&token=${token_admin_orders}&vieworder&id_order=${value.id_order}`)
.replace(/customer_url/g, `${baseAdminDir}index.php?tab=AdminCustomers&token=${token_admin_customers}&viewcustomer&id_customer=${value.id_customer}`)
.replace(/message_url/g, `${baseAdminDir}index.php?tab=AdminCustomerThreads&token=${token_admin_customer_threads}&viewcustomer_thread&id_customer_thread=${value.id_customer_thread}`)
);
});
} else {
eltAppendTo.addClass('empty');
}
}
let setNotificationsNumber = function (id, number) {
if (number > 0) {
$(`#${id}`).text(` (${number})`);
} else {
$(`#${id}`).text("");
}
}
export default refreshNotifications