classify admin
This commit is contained in:
443
public/assets/js/custom/function.js
Normal file
443
public/assets/js/custom/function.js
Normal file
@@ -0,0 +1,443 @@
|
||||
"use strict";
|
||||
|
||||
function trans(label) {
|
||||
// return window.languageLabels.hasOwnProperty(label) ? window.languageLabels[label] : label;
|
||||
return window?.languageLabels[label] || label;
|
||||
}
|
||||
|
||||
function showErrorToast(message) {
|
||||
Toastify({
|
||||
text: trans(message),
|
||||
duration: 6000,
|
||||
close: !0,
|
||||
style: {
|
||||
background: '#dc3545'
|
||||
}
|
||||
}).showToast();
|
||||
}
|
||||
|
||||
function showSuccessToast(message) {
|
||||
Toastify({
|
||||
text: message,
|
||||
duration: 6000,
|
||||
close: !0,
|
||||
style: {
|
||||
background: "linear-gradient(to right, #00b09b, #96c93d)"
|
||||
}
|
||||
}).showToast();
|
||||
}
|
||||
|
||||
function showWarningToast(message) {
|
||||
Toastify({
|
||||
text: message,
|
||||
duration: 6000,
|
||||
close: !0,
|
||||
style: {
|
||||
background: "linear-gradient(to right, #a7b000, #b08d00)"
|
||||
}
|
||||
}).showToast();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param type
|
||||
* @param url
|
||||
* @param data
|
||||
* @param {function} beforeSendCallback
|
||||
* @param {function} successCallback - This function will be executed if no Error will occur
|
||||
* @param {function} errorCallback - This function will be executed if some error will occur
|
||||
* @param {function} finalCallback - This function will be executed after all the functions are executed
|
||||
* @param processData
|
||||
*/
|
||||
function ajaxRequest(type, url, data, beforeSendCallback = null, successCallback = null, errorCallback = null, finalCallback = null, processData = false) {
|
||||
// Modifying the data attribute here according to the type method
|
||||
if (!["get", "post"].includes(type.toLowerCase())) {
|
||||
if (data instanceof FormData) {
|
||||
data.append("_method", type);
|
||||
} else {
|
||||
data = {...data, "_method": type};
|
||||
data = JSON.stringify(data);
|
||||
}
|
||||
type = "POST";
|
||||
}
|
||||
$.ajax({
|
||||
type: type,
|
||||
url: url,
|
||||
data: data,
|
||||
cache: false,
|
||||
processData: processData,
|
||||
contentType: data instanceof FormData ? false : "application/json",
|
||||
dataType: 'json',
|
||||
beforeSend: function () {
|
||||
if (beforeSendCallback != null) {
|
||||
beforeSendCallback();
|
||||
}
|
||||
},
|
||||
success: function (data) {
|
||||
try {
|
||||
if (!data.error) {
|
||||
if (successCallback != null) {
|
||||
successCallback(data);
|
||||
}
|
||||
} else {
|
||||
if (errorCallback != null) {
|
||||
errorCallback(data);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
if (finalCallback != null) {
|
||||
finalCallback(data);
|
||||
}
|
||||
}
|
||||
}, error: function (jqXHR) {
|
||||
if (jqXHR.responseJSON) {
|
||||
showErrorToast(jqXHR.responseJSON.message);
|
||||
}
|
||||
if (finalCallback != null) {
|
||||
finalCallback();
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function formAjaxRequest(type, url, data, formElement, submitButtonElement, successCallback = null, errorCallback = null) {
|
||||
// To Remove Red Border from the Validation tag.
|
||||
// formElement.find('.has-danger').removeClass("has-danger");
|
||||
// formElement.validate();
|
||||
|
||||
let parsley = formElement.parsley({
|
||||
excluded: 'input[type=button], input[type=submit], input[type=reset], :hidden'
|
||||
});
|
||||
parsley.validate();
|
||||
if (parsley.isValid()) {
|
||||
let submitButtonText = submitButtonElement.val();
|
||||
|
||||
function beforeSendCallback() {
|
||||
submitButtonElement.val('Please Wait...').attr('disabled', true);
|
||||
}
|
||||
|
||||
function mainSuccessCallback(response) {
|
||||
if (response.warning) {
|
||||
showWarningToast(response.message);
|
||||
} else {
|
||||
showSuccessToast(response.message);
|
||||
}
|
||||
|
||||
if (successCallback != null) {
|
||||
successCallback(response);
|
||||
}
|
||||
}
|
||||
|
||||
function mainErrorCallback(response) {
|
||||
showErrorToast(response.message);
|
||||
if (errorCallback != null) {
|
||||
errorCallback(response);
|
||||
}
|
||||
}
|
||||
|
||||
function finalCallback() {
|
||||
submitButtonElement.val(submitButtonText).attr('disabled', false);
|
||||
}
|
||||
|
||||
|
||||
ajaxRequest(type, url, data, beforeSendCallback, mainSuccessCallback, mainErrorCallback, finalCallback)
|
||||
}
|
||||
}
|
||||
|
||||
function Select2SearchDesignTemplate(repo) {
|
||||
/**
|
||||
* This function is used in Select2 Searching Functionality
|
||||
*/
|
||||
if (repo.loading) {
|
||||
return repo.text;
|
||||
}
|
||||
let $container;
|
||||
if (repo.id && repo.text) {
|
||||
$container = $(
|
||||
"<div class='select2-result-repository clearfix'>" +
|
||||
"<div class='select2-result-repository__title'></div>" +
|
||||
"</div>"
|
||||
);
|
||||
$container.find(".select2-result-repository__title").text(repo.text);
|
||||
} else {
|
||||
$container = $(
|
||||
"<div class='select2-result-repository clearfix'>" +
|
||||
"<div class='row'>" +
|
||||
"<div class='col-1 select2-result-repository__avatar' style='width:20px'>" +
|
||||
"<img src='" + repo.image + "' class='w-100' alt=''/>" +
|
||||
"</div>" +
|
||||
"<div class='col-10'>" +
|
||||
"<div class='select2-result-repository__title'></div>" +
|
||||
"<div class='select2-result-repository__description'></div>" +
|
||||
"</div>" +
|
||||
"</div>"
|
||||
);
|
||||
|
||||
$container.find(".select2-result-repository__title").text(repo.first_name + " " + repo.last_name);
|
||||
$container.find(".select2-result-repository__description").text(repo.email);
|
||||
}
|
||||
|
||||
return $container;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param searchElement
|
||||
* @param searchUrl
|
||||
* @param {Object|null} data
|
||||
* @param {number} data.total_count
|
||||
* @param {string} data.email
|
||||
* @param {number} data.page
|
||||
* @param placeHolder
|
||||
* @param templateDesignEvent
|
||||
* @param onTemplateSelectEvent
|
||||
*/
|
||||
function select2Search(searchElement, searchUrl, data, placeHolder, templateDesignEvent, onTemplateSelectEvent) {
|
||||
//Select2 Ajax Searching Functionality function
|
||||
if (!data) {
|
||||
data = {};
|
||||
}
|
||||
$(searchElement).select2({
|
||||
tags: true,
|
||||
ajax: {
|
||||
url: searchUrl,
|
||||
dataType: 'json',
|
||||
delay: 250,
|
||||
cache: true,
|
||||
data: function (params) {
|
||||
data.email = params.term;
|
||||
data.page = params.page;
|
||||
return data;
|
||||
},
|
||||
processResults: function (data, params) {
|
||||
params.page = params.page || 1;
|
||||
return {
|
||||
results: data.data,
|
||||
pagination: {
|
||||
more: (params.page * 30) < data.total_count
|
||||
}
|
||||
};
|
||||
}
|
||||
},
|
||||
placeholder: placeHolder,
|
||||
minimumInputLength: 1,
|
||||
templateResult: templateDesignEvent,
|
||||
templateSelection: onTemplateSelectEvent,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} [url] - Ajax URL that will be called when the Confirm button will be clicked
|
||||
* @param {string} [method] - GET / POST / PUT / PATCH / DELETE
|
||||
* @param {Object} [options] - Options to Configure SweetAlert
|
||||
* @param {string} [options.title] - Are you sure
|
||||
* @param {string} [options.text] - You won't be able to revert this
|
||||
* @param {string} [options.icon] - 'warning'
|
||||
* @param {boolean} [options.showCancelButton] - true
|
||||
* @param {string} [options.confirmButtonColor] - '#3085d6'
|
||||
* @param {string} [options.cancelButtonColor] - '#d33'
|
||||
* @param {string} [options.confirmButtonText] - Confirm
|
||||
* @param {string} [options.cancelButtonText] - Cancel
|
||||
* @param {function} [options.successCallBack] - function()
|
||||
* @param {function} [options.errorCallBack] - function()
|
||||
* @param {function} [options.data] - FormData Object / Object
|
||||
*/
|
||||
function showSweetAlertConfirmPopup(url, method, options = {}) {
|
||||
let opt = {
|
||||
title: trans("Are you sure"),
|
||||
text: trans("You wont be able to revert this"),
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: trans("Confirm"),
|
||||
cancelButtonText: trans("Cancel"),
|
||||
successCallBack: function () {
|
||||
},
|
||||
errorCallBack: function (response) {
|
||||
},
|
||||
...options,
|
||||
}
|
||||
|
||||
Swal.fire({
|
||||
title: opt.title,
|
||||
text: opt.text,
|
||||
icon: opt.icon,
|
||||
showCancelButton: opt.showCancelButton,
|
||||
confirmButtonColor: opt.showCancelButton,
|
||||
cancelButtonColor: opt.cancelButtonColor,
|
||||
confirmButtonText: opt.confirmButtonText,
|
||||
cancelButtonText: opt.cancelButtonText
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
function successCallback(response) {
|
||||
showSuccessToast(response.message);
|
||||
opt.successCallBack(response);
|
||||
}
|
||||
|
||||
function errorCallback(response) {
|
||||
showErrorToast(response.message);
|
||||
opt.errorCallBack(response);
|
||||
}
|
||||
|
||||
ajaxRequest(method, url, options.data || null, null, successCallback, errorCallback);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} [url] - Ajax URL that will be called when the Delete will be successfully
|
||||
* @param {Object} [options] - Options to Configure SweetAlert
|
||||
* @param {string} [options.text] - "Are you sure?"
|
||||
* @param {string} [options.title] - "You won't be able to revert this!"
|
||||
* @param {string} [options.icon] - "warning"
|
||||
* @param {boolean} [options.showCancelButton] - true
|
||||
* @param {string} [options.confirmButtonColor] - "#3085d6"
|
||||
* @param {string} [options.cancelButtonColor] - "#d33"
|
||||
* @param {string} [options.confirmButtonText] - "Yes, delete it!"
|
||||
* @param {string} [options.cancelButtonText] - "Cancel"
|
||||
* @param {function} [options.successCallBack] - function()
|
||||
* @param {function} [options.errorCallBack] - function()
|
||||
* @param {function} [options.data] - FormData Object / Object
|
||||
*/
|
||||
function showDeletePopupModal(url, options = {}) {
|
||||
// console.log(windows.trans("Are you sure"));
|
||||
// To Preserve OLD
|
||||
let opt = {
|
||||
title: window?.languageLabels["Are you sure"] || "Are you sure",
|
||||
text: window?.languageLabels["You wont be able to revert this"] || "You wont be able to revert this",
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: window?.languageLabels["Yes Delete"] || "Yes Delete",
|
||||
cancelButtonText: window?.languageLabels["Cancel"] || "Cancel",
|
||||
successCallBack: function () {
|
||||
},
|
||||
errorCallBack: function (response) {
|
||||
},
|
||||
...options,
|
||||
}
|
||||
showSweetAlertConfirmPopup(url, 'DELETE', opt);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} [url] - Ajax URL that will be called when the Delete will be successfully
|
||||
* @param {Object} [options] - Options to Configure SweetAlert
|
||||
* @param {string} [options.text] - "Are you sure?"
|
||||
* @param {string} [options.title] - "You won't be able to revert this!"
|
||||
* @param {string} [options.icon] - "warning"
|
||||
* @param {boolean} [options.showCancelButton] - true
|
||||
* @param {string} [options.confirmButtonColor] - "#3085d6"
|
||||
* @param {string} [options.cancelButtonColor] - "#d33"
|
||||
* @param {string} [options.confirmButtonText] - "Yes, delete it!"
|
||||
* @param {string} [options.cancelButtonText] - "Cancel"
|
||||
* @param {function} [options.successCallBack]
|
||||
* @param {function} [options.errorCallBack]
|
||||
*/
|
||||
function showRestorePopupModal(url, options = {}) {
|
||||
// To Preserve OLD
|
||||
let opt = {
|
||||
title: trans("Are you sure"),
|
||||
text: trans("You wont be able to revert this"),
|
||||
icon: 'success',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: trans('Yes Restore it'),
|
||||
cancelButtonText: trans('Cancel'),
|
||||
successCallBack: function () {
|
||||
},
|
||||
errorCallBack: function (response) {
|
||||
},
|
||||
...options,
|
||||
}
|
||||
showSweetAlertConfirmPopup(url, 'PUT', opt);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {string} [url] - Ajax URL that will be called when the Delete will be successfully
|
||||
* @param {Object} [options] - Options to Configure SweetAlert
|
||||
* @param {string} [options.text] - "Are you sure?"
|
||||
* @param {string} [options.title] - "You won't be able to revert this!"
|
||||
* @param {string} [options.icon] - "warning"
|
||||
* @param {boolean} [options.showCancelButton] - true
|
||||
* @param {string} [options.confirmButtonColor] - "#3085d6"
|
||||
* @param {string} [options.cancelButtonColor] - "#d33"
|
||||
* @param {string} [options.confirmButtonText] - "Yes, delete it!"
|
||||
* @param {string} [options.cancelButtonText] - "Cancel"
|
||||
* @param {function} [options.successCallBack]
|
||||
* @param {function} [options.errorCallBack]
|
||||
*/
|
||||
function showPermanentlyDeletePopupModal(url, options = {}) {
|
||||
// To Preserve OLD
|
||||
let opt = {
|
||||
title: trans("Are you sure"),
|
||||
text: trans("You are about to Delete this data"),
|
||||
icon: 'error',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: trans("Yes Delete Permanently"),
|
||||
cancelButtonText: trans('Cancel'),
|
||||
successCallBack: function () {
|
||||
},
|
||||
errorCallBack: function (response) {
|
||||
},
|
||||
...options,
|
||||
}
|
||||
showSweetAlertConfirmPopup(url, 'DELETE', opt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate Discounted price based on the Price and Discount(%)
|
||||
* @param price
|
||||
* @param discount
|
||||
* @returns {string}
|
||||
*/
|
||||
function calculateDiscountedAmount(price, discount) {
|
||||
let finalPrice = price - (price * discount / 100);
|
||||
return finalPrice.toFixed(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate Discount(%)
|
||||
* @param price
|
||||
* @param discountedPrice
|
||||
* @returns {string}
|
||||
*/
|
||||
function calculateDiscount(price, discountedPrice) {
|
||||
let finalDiscount = 100 - discountedPrice * 100 / price;
|
||||
return finalDiscount.toFixed(2);
|
||||
}
|
||||
|
||||
function generateSlug(text){
|
||||
// Remove non-English and non-number/dash/underscore characters, replace spaces with dash, to lower case
|
||||
return text
|
||||
.toLowerCase()
|
||||
.replace(/[^a-z0-9 -_]/g, '') // Remove non-English chars except dash/underscore
|
||||
.replace(/\s+/g, '-') // Replace spaces with dash
|
||||
.replace(/[-_]+/g, '-') // Collapse multiple - or _
|
||||
.replace(/^-+|-+$/g, ''); // Remove leading/trailing dash
|
||||
}
|
||||
|
||||
function showDeleteLanguagePopupModal(url, options = {}) {
|
||||
let opt = {
|
||||
title: trans("Are you sure?"),
|
||||
text: trans("Deleting this language will delete all the language files and translations associated with it."),
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: trans("Yes Delete"),
|
||||
cancelButtonText: trans('Cancel'),
|
||||
successCallBack: function () {},
|
||||
errorCallBack: function (response) {},
|
||||
...options,
|
||||
};
|
||||
showSweetAlertConfirmPopup(url, 'DELETE', opt);
|
||||
}
|
||||
Reference in New Issue
Block a user