secure_js_template.js 0000644 00000000236 15024732062 0010761 0 ustar 00 /*
* Author: Clarence A Andaya
* Date: 24 Mar 2022
*/
//Only const Variable Here
(function () {
"use strict";
//Logic,Variables, Functions Here
})();
dealer/add_dealer.js 0000644 00000004761 15024732062 0010413 0 ustar 00 var dealer_status = 1;
$(function(){
$('#elid_dealer_status').prop('checked', true);
});
function back(){
window.history.back();
}
$.validator.setDefaults({
submitHandler: function(){
var json_data = formJson('data-json', $("[data-json]"));
$.ajax({
url: "/admin/dealers/dealer_add",
data: {
json_data: json_data,
csrf_token: $('#csrf_token').val(),
dealer_status: dealer_status
},
type: "POST",
dataType: 'json',
beforeSend: function() {
toastr.remove();
toastr.info("Adding dealer");
$('#elid_submit_dealer').prop('disabled', true);
},
success: function(result) {
if(parseInt(result.status) === 0) {
toastr.remove();
toastr.success(result.message);
setTimeout(function() {
window.location.href = "/admin/dealers";
}, 2000);
}
else {
toastr.remove();
toastr.error(result.message);
}
$('#elid_submit_dealer').prop('disabled', false);
},
error: function() {
toastr.remove();
toastr.error("Error has occurred. Try again.");
$('#elid_submit_dealer').prop('disabled', false);
}
});
},
ignore: []
});
$('#form-dealer').validate({ // elid -> means 'element id'
rules: {
elid_dealer_code: {
required: true
},
elid_dealer_name: {
required: true
}
},
messages: {
elid_dealer_code: {
required: "Dealer code is required"
},
elid_dealer_name: {
required: "Dealer name is required"
}
},
errorElement: 'span',
errorPlacement: function(error, element) {
error.addClass('invalid-feedback');
element.closest('.form-group').append(error);
},
highlight: function(element, errorClass, validClass) {
$(element).addClass('is-invalid');
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass('is-invalid');
}
});
$('#elid_dealer_status').on('change.bootstrapSwitch', function(e){
if($(this).is(':checked')){
dealer_status = 1;
}
else {
dealer_status = 0;
}
}); dealer/edit_dealer.js 0000644 00000007340 15024732062 0010604 0 ustar 00 var dealer_status = 0;
$(function(){
loadDealerDetails();
});
function loadDealerDetails(){
var status = false;
$.ajax({
url: "/admin/dealers/dealer_load",
data: {
dealer_id: dealer_id,
csrf_token: $('#csrf_token').val()
},
type: "POST",
dataType: 'json',
beforeSend: function() {
},
success: function(result) {
$('#elid_dealer_code').val(result[0].code);
$('#elid_dealer_name').val(result[0].name);
parseInt(result[0].status) == 0 ? status = false : status = true;
$('#elid_dealer_status').prop('checked', status);
dealer_status = result[0].status;
$('#span-created-at').text(result[0].created_at);
$('#span-uploaded-by').text(result[0].updated_at);
}
})
}
function back(){
window.history.back();
}
$.validator.setDefaults({
submitHandler: function(){
var json_data = formJson('data-json', $("[data-json]"));
$.ajax({
url: "/admin/dealers/dealer_edit",
data: {
json_data: json_data,
csrf_token: $('#csrf_token').val(),
dealer_id: dealer_id,
dealer_status: dealer_status
},
type: "POST",
dataType: 'json',
beforeSend: function() {
toastr.remove();
toastr.info("Updating..");
$('#elid_save_dealer').prop('disabled', true);
},
success: function(result) {
if(parseInt(result.status) === 0) { // success
toastr.remove();
toastr.success(result.message);
setTimeout(function() {
window.location.href = "/admin/dealers";
}, 2000);
}
else if(parseInt(result.status) === 1){ // duplicate code
toastr.remove();
toastr.error(result.message);
}
else if(parseInt(result.status) === 2){ // duplicate name
toastr.remove();
toastr.error(result.message);
}
else if(parseInt(result.status) === 3){ // something wrong
toastr.remove();
toastr.error(result.message);
}
else if(parseInt(result.status) === 10){ // nothing changes
toastr.remove();
toastr.info(result.message);
}
$('#elid_save_dealer').prop('disabled', false);
},
error: function() {
toastr.remove();
toastr.error("Error has occurred. Try again.");
$('#elid_save_dealer').prop('disabled', false);
}
});
},
ignore: []
});
$('#form-dealer').validate({ // elid -> means 'element id'
rules: {
elid_dealer_code: {
required: true
},
elid_dealer_name: {
required: true
}
},
messages: {
},
errorElement: 'span',
errorPlacement: function(error, element) {
error.addClass('invalid-feedback');
element.closest('.form-group').append(error);
},
highlight: function(element, errorClass, validClass) {
$(element).addClass('is-invalid');
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass('is-invalid');
}
});
$('#elid_dealer_status').on('change.bootstrapSwitch', function(e){
if($(this).is(':checked')){
dealer_status = 1;
}
else {
dealer_status = 0;
}
}); dealer/dealer.js 0000644 00000003072 15024732062 0007575 0 ustar 00 $(function(){
initTableDealerList(); // initialize table
refreshDealerListTable();
});
function initTableDealerList() {
var $table = $('#table-dealer-list');
$table.bootstrapTable('destroy').bootstrapTable({
})
}
function refreshDealerListTable() {
var $table = $('#table-dealer-list')
$(function() {
$table.bootstrapTable('refresh', {
url: '/admin/dealers/table_list'
});
});
}
function queryParamsDealerTable(params) {
return {
search: $('#br-search-dealer').val(),
offset: params.offset,
limit: params.limit,
type: 1 // dealer_list
};
}
function delay(callback, ms) {
var timer = 0;
return function() {
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function() {
callback.apply(context, args);
}, ms || 0);
};
}
$('#br-add-dealer').on('click', function(){
window.location.href = "/admin/dealers/add_page";
});
$('#table-dealer-list').on('click-cell.bs.table', function(field, value, row, $el) {
var dealer_id = $el.id;
window.location.href = "/admin/dealers/edit_page/" + dealer_id;
});
$('#br-add-brand').on('click', function(){
window.location.href = "/admin/brands/add_page";
});
$('#table-brand-list').on('click-cell.bs.table', function(field, value, row, $el) {
var brand_id = $el.id;
window.location.href = "/admin/brands/edit_page/" + brand_id;
});
$('#br-search-dealer').on('keyup', delay(function(e) {
refreshDealerListTable();
}, 500)); attribute/attribute.js 0000644 00000013733 15024732062 0011120 0 ustar 00 var Toast;
var attr_id = 0;
var attr_status = 0;
$(function(){
refreshAttributeList();
Toast = Swal.mixin({
toast: true,
position: 'top-end',
showConfirmButton: false,
timer: 3000
});
$('.el-items').prop('disabled', true);
});
function refreshAttributeList(){
$.ajax({
url: "/admin/attributes/attribute_list",
data: {
csrf_token: $('#csrf_token').val()
},
type: "POST",
dataType: 'json',
success: function(result) {
$('#attribute-list').html('');
$('#attribute-list').append("\"" + result + "\"");
},
error: function() {
Toast.fire({
icon: 'error',
title: "There's something wrong fetching attribute list"
});
}
});
}
function delay(callback, ms) {
var timer = 0;
return function() {
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function() {
callback.apply(context, args);
}, ms || 0);
};
}
$.validator.setDefaults({
submitHandler: function(){
var json_data = new Object();
json_data.attribute_name = $('#new_attribute_name').val();
var jason = JSON.stringify(json_data);
$.ajax({
url: "/admin/attributes/attribute_add",
data: {
json_data: jason,
csrf_token: $('#csrf_token').val()
},
type: "POST",
dataType: 'json',
success: function(result) { // console.log(result);
if(parseInt(result.status) === 0) { // success
Toast.fire({
icon: 'success',
title: result.message
});
$('#new_attribute_name').val("");
$('#modal-add-attribute').modal('hide');
refreshAttributeList();
}
else if(result.status == 1){ // duplicate
Toast.fire({
icon: 'warning',
title: result.message
});
}
},
error: function() {
Toast.fire({
icon: 'error',
title: "Error has occurred, try again"
});
}
});
}
});
$('#form-add-attribute').validate({
rules: {
new_attribute_name: {
required: true
}
},
messages: {
new_attribute_name: {
required: "Please provide attribute name"
}
},
errorElement: 'span',
errorPlacement: function(error, element) {
error.addClass('invalid-feedback');
element.closest('.form-group').append(error);
},
highlight: function(element, errorClass, validClass) {
$(element).addClass('is-invalid');
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass('is-invalid');
}
});
$('#attribute-list').on('change', function(){
attr_id = $('#attribute-list').val();
$.ajax({
url: "/admin/attributes/attribute_fetch",
data: {
csrf_token: $('#csrf_token').val(),
attr_id: attr_id
},
type: "POST",
dataType: 'json',
success: function(result) {
$('#attr-name').val(result[0].title);
$('#attr-added-by').text(result[0].createdAt);
$('#attr-modify-by').text(result[0].updatedAt);
$('.el-items').prop('disabled', false);
$('#attr-status').prop('checked', parseInt(result[0].status));
},
error: function() {
Toast.fire({
icon: 'error',
title: "Error fetching data, try again"
});
}
});
});
$('#attr-status').on('change', function(){
if($(this).is(':checked')){
attr_status = 1;
}
else {
attr_status = 0;
}
});
$('#attr-update').on('click', function(){
var attr_name = $('#attr-name').val();
$.ajax({
url: "/admin/attributes/attribute_update",
data: {
csrf_token: $('#csrf_token').val(),
attr_id: attr_id,
attr_name: attr_name,
attr_status: attr_status
},
type: "POST",
dataType: 'json',
success: function(result) {
if(result.status == 0){ // success
Toast.fire({
icon: 'success',
title: "Update success"
});
refreshAttributeList();
// attr_id = 0;
}
else if(result.status == 1){
Toast.fire({
icon: 'warning',
title: "Tax name you've provided is already in list"
});
}
else if(result.status == 10){
Toast.fire({
icon: 'info',
title: "Nothing changed"
});
}
},
error: function() {
Toast.fire({
icon: 'error',
title: "Error updating data, try again"
});
}
});
});
$('#search-attribute').on('keyup', delay(function(e) {
var search_attribute = $(this).val();
$.ajax({
url: "/admin/attributes/attribute_search",
data: {
csrf_token: $('#csrf_token').val(),
search_item: search_attribute
},
type: "POST",
dataType: 'json',
success: function(result) {
$('#attribute-list').html('');
$('#attribute-list').append("\"" + result + "\"");
},
error: function() {
Toast.fire({
icon: 'error',
title: "There's something wrong searching attribute"
});
}
});
}, 1000)); crud/crud_attributes.js 0000644 00000012211 15024732062 0011240 0 ustar 00 var Toast;
var attr_id = 0;
var attr_status = 0;
$(function(){
navigateTabs(1);
refreshAttributeList();
Toast = Swal.mixin({
toast: true,
position: 'top-end',
showConfirmButton: false,
timer: 3000
});
$('.el-items').prop('disabled', true);
});
function navigateTabs(tab) {
$('#tab-attributes').addClass('active');
$('#tabpage-attributes').addClass('active');
$('#tabpage-attributes').addClass('show');
}
function refreshAttributeList(){
$.ajax({
url: "/admin/attribute_list",
data: {
csrf_token: $('#csrf_token').val()
},
type: "POST",
dataType: 'json',
success: function(result) {
$('#attribute-list').html('');
$('#attribute-list').append("\"" + result + "\"");
},
error: function() {
Toast.fire({
icon: 'error',
title: "There's something wrong fetching attribute list"
});
}
});
}
$.validator.setDefaults({
submitHandler: function(){
var json_data = new Object();
json_data.attribute_name = $('#new_attribute_name').val();
var jason = JSON.stringify(json_data);
$.ajax({
url: "/admin/attribute_add",
data: {
json_data: jason,
csrf_token: $('#csrf_token').val()
},
type: "POST",
dataType: 'json',
success: function(result) { // console.log(result);
if(parseInt(result.status) === 0) { // success
Toast.fire({
icon: 'success',
title: result.message
});
$('#new_attribute_name').val("");
$('#modal-add-attribute').modal('hide');
refreshAttributeList();
}
else if(result.status == 1){ // duplicate
Toast.fire({
icon: 'warning',
title: result.message
});
}
},
error: function() {
Toast.fire({
icon: 'error',
title: "Error has occurred, try again"
});
}
});
}
});
$('#form-add-attribute').validate({
rules: {
new_attribute_name: {
required: true
}
},
messages: {
new_attribute_name: {
required: "Please provide attribute name"
}
},
errorElement: 'span',
errorPlacement: function(error, element) {
error.addClass('invalid-feedback');
element.closest('.form-group').append(error);
},
highlight: function(element, errorClass, validClass) {
$(element).addClass('is-invalid');
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass('is-invalid');
}
});
$('#attribute-list').on('change', function(){
attr_id = $('#attribute-list').val();
$.ajax({
url: "/admin/attribute_fetch",
data: {
csrf_token: $('#csrf_token').val(),
attr_id: attr_id
},
type: "POST",
dataType: 'json',
success: function(result) {
$('#attr-name').val(result[0].title);
$('#attr-added-by').text(result[0].createdAt);
$('#attr-modify-by').text(result[0].updatedAt);
$('.el-items').prop('disabled', false);
$('#attr-status').prop('checked', parseInt(result[0].status));
},
error: function() {
Toast.fire({
icon: 'error',
title: "Error fetching data, try again"
});
}
});
});
$('#attr-status').on('change', function(){
if($(this).is(':checked')){
attr_status = 1;
}
else {
attr_status = 0;
}
});
$('#attr-update').on('click', function(){
var attr_name = $('#attr-name').val();
$.ajax({
url: "/admin/attribute_update",
data: {
csrf_token: $('#csrf_token').val(),
attr_id: attr_id,
attr_name: attr_name,
attr_status: attr_status
},
type: "POST",
dataType: 'json',
success: function(result) {
if(result.status == 0){ // success
Toast.fire({
icon: 'success',
title: "Update success"
});
refreshAttributeList();
// attr_id = 0;
}
else if(result.status == 1){
Toast.fire({
icon: 'warning',
title: "Duplicate entry"
});
}
else if(result.status == 10){
Toast.fire({
icon: 'info',
title: "Nothing changed"
});
}
},
error: function() {
Toast.fire({
icon: 'error',
title: "Error fetching data, try again"
});
}
});
}); user/edit_user.js 0000644 00000016736 15024732062 0010061 0 ustar 00 var user_status = 0;
var user_status = 0;
var form_data;
var image_extension = "";
var is_changed = 0;
// initializations
$('#user_ext_name').select2({
placeholder: "Ext name",
allowClear: false
});
$(function(){
var promises = fillExtNameDropdown();
$.when.apply($, promises).then(function(){
loadUserDetails();
})
});
function loadUserDetails(){
var status = false;
$.ajax({
url: "/admin/users/user_load",
data: {
user_id: user_id
},
type: "GET",
dataType: 'json',
beforeSend: function() {
},
success: function(result) { // alert(result[0].extName);
$('#user_first_name').val(result[0].firstName);
$('#user_middle_name').val(result[0].middleName);
$('#user_last_name').val(result[0].lastName);
$('#user_ext_name').val(result[0].extName).trigger('change');
$('#user_mobile_number').val(result[0].mobile);
$('#user_email').val(result[0].email);
$('#user_logo').attr('src', '/storage/users/' + result[0].profile);
$('#user_role').val(result[0].roleId);
$('#user_status').prop('checked', result[0].status);
user_status = result[0].status;
}
});
}
function fillExtNameDropdown(){
$.ajax({
url:"/admin/users/user_ext_dropdown",
type:"GET",
data: {
// type: 1 // fill ext_name dropdown
},
beforeSend: function(){
},
success: function(result){
$('#user_ext_name').html('');
$.each(result, function(index, value){
$('#user_ext_name').append('"');
});
}
});
}
function gotoTab($el_nav, $el_content) {
$(".tab-wrapper li > a.active").removeClass("active");
$(".tab-pane").removeClass("show").removeClass("active");
$el_nav.addClass("active");
$el_content.addClass("active").addClass("show");
}
$.validator.addMethod(
"first_tab",
function (value, element, param) {
if(isEmpty(value)) {
gotoTab($("#tab-user-profile"), $("#tabpage-user-profile"));
return false;
}
return true;
},
"This field is required."
);
function triggerClick(e) {
document.querySelector('#file').click();
}
function displayImage(e) {
is_changed = 1;
if (e.files[0]) {
var reader = new FileReader();
reader.onload = function(e) {
document.querySelector('#user_logo').setAttribute('src', e.target.result);
}
reader.readAsDataURL(e.files[0]);
}
var property = document.getElementById("file").files[0];
var image_name = property.name;
image_extension = image_name.split('.').pop().toLowerCase();
form_data = new FormData();
form_data.append('file', property);
}
function generateId() {
var d = new Date().getTime();//Timestamp
var d2 = (performance && performance.now && (performance.now()*1000)) || 0;//Time in microseconds since page-load or 0 if unsupported
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16;//random number between 0 and 16
if(d > 0){//Use timestamp until depleted
r = (d + r)%16 | 0;
d = Math.floor(d/16);
}
else {//Use microseconds since page-load if supported
r = (d2 + r)%16 | 0;
d2 = Math.floor(d2/16);
}
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
}
function alphaNumeric(data){
return data.replace(/\W/g, '');
}
function uploadImage(id){
if(is_changed == 1){
form_data.append('csrf_token', $('#csrf_token').val());
form_data.append('img_id', id);
}
else {
form_data = new FormData();
form_data.append('csrf_token', $('#csrf_token').val());
form_data.append('img_id', id);
}
var photo_status = 0;
$.ajax({
url: '/admin/users/user_edit_image',
type: "POST",
data: form_data,
async:false,
cache: false,
contentType: false,
processData: false,
beforeSend: function(){
},
success: function(result){ // alert("Result " + result);
photo_status = result;
},
error: function(xhr, status, error){
// alert("Error: " + xhr.responseText);
}
});
return photo_status;
}
function back(){
window.history.back();
}
$.validator.setDefaults({
submitHandler: function(){
var uniqId = alphaNumeric(generateId());
var stat = uploadImage(uniqId); // alert("stat: " + stat); return;
var filename = "";
if(stat == 0){
filename = uniqId + "." + image_extension;
}
else {
filename = "Same";
}
var json_data = formJson('data-json', $("[data-json]")); // alert(filename); return;
// alert(filename); return;
$.ajax({
url: "/admin/users/user_edit",
data: {
json_data: json_data,
csrf_token: $('#csrf_token').val(),
user_id: user_id,
user_status: user_status,
image_filename: filename
},
type: "POST",
dataType: "json",
beforeSend: function(){
},
success: function(result){
if(result.status == 0){ // success
toastr.remove();
toastr.success(result.message);
}
else if(result.status == 1){ // duplicate mobile
toastr.remove();
toastr.error(result.message);
}
else if(result.status == 2){ // duplicate email
toastr.remove();
toastr.error(result.message);
}
else if(result.status == 3){ // update error
toastr.remove();
toastr.error(result.message);
}
else if(result.status == 10){
toastr.remove();
toastr.info("Nothing changes");
}
}
});
},
ignore: []
});
$('#form-user-update').validate({
rules: {
user_first_name: {
first_tab: true,
},
user_last_name: {
first_tab: true
},
user_mobile_number: {
},
user_email: {
email: true
}
},
messages: {
user_first_name: {
required: "First name is required"
},
user_last_name: {
required: "Last name is required"
},
user_email: {
email: "Please enter a valid email address"
}
},
errorElement: 'span',
errorPlacement: function(error, element) {
error.addClass('invalid-feedback');
element.closest('.form-group').append(error);
},
highlight: function(element, errorClass, validClass) {
$(element).addClass('is-invalid');
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass('is-invalid');
}
});
$('#user_status').on('change.bootstrapSwitch', function(e){
if($(this).is(':checked')){
user_status = 1;
}
else {
user_status = 0;
}
}); user/user.js 0000644 00000002662 15024732062 0007045 0 ustar 00 $(function(){
initTableUserList(); // initialize table
refreshUserListTable();
});
function initTableUserList() {
var $table = $('#table-user-list');
$table.bootstrapTable('destroy').bootstrapTable({
})
}
function refreshUserListTable() {
var $table = $('#table-user-list')
$(function() {
$table.bootstrapTable('refresh', {
url: '/admin/users/table_list'
});
});
}
function queryParamsUserTable(params) {
return {
search: $('#search-user').val(),
offset: params.offset,
limit: params.limit,
type: 1 // user_list
};
}
function imageFormatter(value, row, index) {
return '
';
}
function delay(callback, ms) {
var timer = 0;
return function() {
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function() {
callback.apply(context, args);
}, ms || 0);
};
}
// $('#br-add-brand').on('click', function(){
// window.location.href = "/admin/brand/add_page";
// });
$('#table-user-list').on('click-cell.bs.table', function(field, value, row, $el) {
var user_id = $el.user_id;
window.location.href = "/admin/users/edit_page/" + user_id;
});
$('#search-user').on('keyup', delay(function(e) {
refreshUserListTable();
}, 500)); category/category.js 0000644 00000025553 15024732062 0010547 0 ustar 00 /*
* Author: Clarence A Andaya
* Date: 24 Mar 2022
*/
(function () {
"use strict";
var category_id = null;
var add_sub_cat = false;
function gotoTab($el_nav, $el_content) {
$(".tab-wrapper li > a.active").removeClass("active");
$(".tab-pane").removeClass("show").removeClass("active");
$el_nav.addClass("active");
$el_content.addClass("active").addClass("show");
}
function readCategoryData() {
$.ajax({
url: "/admin/categories/data",
data: {
id: category_id,
},
type: "GET",
dataType: "json",
beforeSend: function () {},
success: function (result) {
$("#category_name").val(result.title);
$("#category_status").val(result.active);
$("#category_status").prop("checked", parseInt(result.active)),
$("#btn-add-sub").prop("disabled", false);
},
error: function () {
toastr("error", "Error has occurred. Try again.");
},
});
}
function formatCategory(state) {
if (!state.id) {
return state.text;
}
var baseUrl = "/assets/img/logo/AGC_TRANSPARENT.png";
var $state = $('
');
// Use .text() instead of HTML string concatenation to avoid script injection issues
$state.find("span").text(state.text.replaceAll("¦––", ""));
// $state.find("img").attr("src", baseUrl + "/" + state.element.value.toLowerCase() + ".png");
return $state;
}
function updateCategoryTree(data) {
var v = $("#categories_tree")
.jstree(true)
.get_json("#", {
flat: true,
})
.reduce(function (e, t) {
return e.concat({
id: t.id,
parent_id: "#" === t.parent ? null : t.parent,
position: t.data.position,
});
}, []);
// console.log(v)
$.ajax({
url: "/admin/categories/tree",
data: {
data: v,
csrf_token: $("#csrf_token").val(),
},
type: "POST",
dataType: "json",
beforeSend: function () {},
success: function (result) {
// $("#category_name").val(result.title);
// $("#category_status").val(result.active);
// $("#category_status").prop("checked", parseInt(result.active)),
// $('#btn-add-sub').prop('disabled',false);
},
error: function () {
toast("error", "Error has occurred. Try again.");
},
});
}
$(function () {
"use strict";
$(".expand-all").on("click", function (t) {
$("#categories_tree").jstree("open_all");
});
$(".collapse-all").on("click", function (t) {
$("#categories_tree").jstree("close_all");
});
$("#btn-add-root").on("click", function (evt) {
category_id = null;
resetForm("categoryForm");
add_sub_cat = false;
$("#btn_remove").prop("hidden", true);
$("#btn-add-sub").prop("disabled", true);
$("#categories_tree").jstree().deselect_all(true);
});
$("#btn-add-sub").on("click", function (evt) {
if (isEmpty(category_id)) {
return false;
}
$("#btn_remove").prop("hidden", true);
resetForm("categoryForm");
add_sub_cat = true;
});
$("#btn_remove").on("click", function (evt) {
if (isEmpty(category_id)) {
return false;
}
Swal.fire({
title: "Are you sure?",
text: "You won't be able to revert this!",
icon: "warning",
showCancelButton: true,
confirmButtonColor: "#3085d6",
cancelButtonColor: "#d33",
confirmButtonText: "Yes, remove it!",
showClass: {
backdrop: "swal2-noanimation", // disable backdrop animation
popup: "", // disable popup animation
icon: "", // disable icon animation
},
hideClass: {
popup: "", // disable popup fade-out animation
},
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
url: "/admin/categories/remove",
data: {
id: category_id,
csrf_token: $("#csrf_token").val(),
},
type: "POST",
dataType: "json",
beforeSend: function () {
toast("info", "Removing data.");
$("#btn_remove").prop("disabled", true);
},
success: function (result) {
if (parseInt(result.status) === 1) {
$("#btn-add-root").trigger("click");
$("#categories_tree").jstree("refresh");
$("#btn_remove").prop("disabled", false);
Swal.fire({
icon: "success",
title: "Deleted",
text: "Your file has been deleted.",
showClass: {
backdrop: "swal2-noanimation", // disable backdrop animation
popup: "", // disable popup animation
icon: "", // disable icon animation
},
hideClass: {
popup: "", // disable popup fade-out animation
},
});
} else {
toast("error", "Error has occurred. Try again.");
}
},
error: function () {
toast("error", "Error has occurred. Try again.");
$("#btn_remove").prop("disabled", false);
},
});
}
});
});
$("#category_status").change(function () {
if ($(this).is(":checked")) {
$(this).val("1");
} else {
$(this).val("0");
}
});
$.validator.addMethod(
"first_tab",
function (value, element, param) {
if (isEmpty(value)) {
gotoTab($("#tab-general"), $("#tab-general-content"));
return false;
}
return true;
},
"This field is required."
);
$.validator.addMethod(
"second_tab",
function (value, element, param) {
if (isEmpty(value)) {
gotoTab($("#tab-image"), $("#tab-image-content"));
return false;
}
return true;
},
"This field is required."
);
$.validator.setDefaults({
submitHandler: function () {
// form.submit();
var json_data = formJson("data-json", $("[data-json]"));
// alert(category_id);
// clearInputFields('categoryForm');
// return;
if (add_sub_cat || isEmpty(category_id)) {
$.ajax({
url: "/admin/categories/add",
data: {
id: category_id,
json_data: json_data,
csrf_token: $("#csrf_token").val(),
},
type: "POST",
dataType: "json",
beforeSend: function () {
toast("info", "Saving data.");
$("#btn_submit").prop("disabled", true);
},
success: function (result) {
if (parseInt(result.status) === 1) {
toast("success", result.message);
resetForm("categoryForm");
// readCategories
$("#categories_tree").jstree("refresh");
removeCloseAlert();
} else {
toast("error", result.message);
}
$("#btn_submit").prop("disabled", false);
},
error: function () {
toast("error", "Error has occurred. Try again.");
$("#btn_submit").prop("disabled", false);
},
});
} else {
$.ajax({
url: "/admin/categories/update",
data: {
id: category_id,
json_data: json_data,
csrf_token: $("#csrf_token").val(),
},
type: "POST",
dataType: "json",
beforeSend: function () {
toast("info", "Saving data.");
$("#btn_submit").prop("disabled", true);
},
success: function (result) {
if (parseInt(result.status) === 1) {
toast("success", result.message);
// resetForm('categoryForm');
// readCategories
$("#categories_tree").jstree("refresh");
removeCloseAlert();
} else {
toast("error", result.message);
}
$("#btn_submit").prop("disabled", false);
},
error: function () {
toast("error", "Error has occurred. Try again.");
$("#btn_submit").prop("disabled", false);
},
});
}
},
ignore: [],
});
$("#categoryForm").validate({
rules: {
category_name: {
first_tab: true,
},
},
messages: {
// email: {
// required: "Please enter a email address",
// email: "Please enter a valid email address"
// },
// password: {
// required: "Please provide a password",
// minlength: "Your password must be at least 5 characters long"
// },
// category_name: "Category name is required.",
},
errorElement: "span",
errorPlacement: function (error, element) {
error.addClass("invalid-feedback");
element.closest(".form-group").append(error);
},
highlight: function (element, errorClass, validClass) {
$(element).addClass("is-invalid");
},
unhighlight: function (element, errorClass, validClass) {
$(element).removeClass("is-invalid");
},
});
$("#categories_tree")
.jstree({
core: {
data: {
url: "/admin/categories/list",
dataType: "json",
},
check_callback: !0,
},
plugins: ["dnd"],
})
.on("move_node.jstree", function (e, data) {
// this is where you connect to the server!
updateCategoryTree(data);
// console.log(data);
// console.log('Pos: '+data.position);
});
$("#categories_tree").on("click", ".jstree-anchor", function (e) {
category_id = $("#categories_tree").jstree(true).get_node($(this)).id;
// console.log(category_id)
add_sub_cat = false;
$("#btn_remove").prop("hidden", false);
readCategoryData();
});
// //Initialize Select2 Elements
// $(".select2").select2();
// $(".select2bs4").select2({
// theme: "bootstrap4",
// templateSelection: formatCategory,
// });
// $("#catalog_description").summernote({
// tabsize: 2,
// height: 250,
// });
// $("#catalog_name").on("click", function () {
// if ($("#catalog_description").summernote("isEmpty")) {
// // alert('editor content is empty');
// } else {
// //summernote codes
// var html = $("#catalog_description").summernote("code");
// // alert(html);
// }
// });
closeAlert("categoryForm");
});
})();
prod_location/prod_location.js 0000644 00000046762 15024732062 0012612 0 ustar 00 //Only const Variable Here
(function () {
"use strict";
var selected_prod_loc_id = null;
var shown = true;
var container = $("#btn-add");
var js_tree_disabled = 0;
var btn_submit_state = "";
var btn_add_state = "level one";
var type = "wh";
$(document).mouseup(function(e) {
if(!container.is(e.target) && container.has(e.target).length === 0) {
container.hideBalloon();
shown = !shown;
}
});
function readProdLocData() {
$.ajax({
url: "/admin/prod_location/data",
data: {
id: selected_prod_loc_id,
},
type: "GET",
dataType: "json",
beforeSend: function() {
$('#btn_add').attr('disabled', true);
},
success: function (result) {
if(result.type == "wh" || result.type == "WH"){
btn_add_state = "level one";
}
else if(result.type == "floor" || result.type == "FLOOR"){
btn_add_state = "level two";
}
else if(result.type == "rack" || result.type == "RACK"){
btn_add_state = "level three";
}
else if(result.type == "bin" || result.type == "BIN"){
btn_add_state = "level four";
}
type = result.type;
$('#btn_add').attr('disabled', false);
$('#title_name').val(result.title);
$('#location_active').val(result.status);
$('#location_active').prop('checked', parseInt(result.active));
},
error: function () {
toast('error', "Error has occurred. Try again");
},
});
}
function updateProdLocTree(data) {
var v = $('#prod_loc_tree').jstree(true).get_json('#', {
flat: true,
}).reduce(function (e, t) {
return e.concat({
id: t.id,
parent_id: '#' === t.parent ? null : t.parent,
position: t.data.position,
});
},
[]);
}
function backToView(){
$('.add-operation').attr('disabled', false);
$('#container-field').removeClass('card-success');
$('#tab-general').text("General");
$('#btn_submit').removeClass('btn-success').val("Update");
$('#btn_cancel').attr('hidden', true);
$('#btn_submit').attr('disabled', false);
// animation only
$('#container-field').hide(); $('#container-field').fadeIn(); $('#container-field').show();
}
function delay(callback, ms) {
var timer = 0;
return function() {
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function() {
callback.apply(context, args);
}, ms || 0);
};
}
$(function() {
$('#prod_loc_tree').bind('select_node.jstree', function (evt, data) {
// console.log('select!');
});
$('#btn-add').on("click", function() {
shown ? $(this).hideBalloon() : $(this).showBalloon();
shown = !shown;
if(selected_prod_loc_id == null){
container.showBalloon({
position: 'bottom',
html: true,
css: {
color: 'black'
},
contents:
`
`,
showAnimation: function(d, c) {
this.slideDown(d, c);
},
hideAnimation: function(d, c) {
this.slideUp(d, c);
}
});
}
else {
if(btn_add_state == "level one"){
container.showBalloon({
position: 'bottom',
html: true,
css: {
color: 'black'
},
contents:
`
`,
showAnimation: function(d, c) {
this.slideDown(d, c);
},
hideAnimation: function(d, c) {
this.slideUp(d, c);
}
});
}
else if(btn_add_state == "level two"){
container.showBalloon({
position: 'bottom',
html: true,
css: {
color: 'black'
},
contents:
`
`,
showAnimation: function(d, c) {
this.slideDown(d, c);
},
hideAnimation: function(d, c) {
this.slideUp(d, c);
}
});
}
else if(btn_add_state == "level three"){
container.showBalloon({
position: 'bottom',
html: true,
css: {
color: 'black'
},
contents:
`
`,
showAnimation: function(d, c) {
this.slideDown(d, c);
},
hideAnimation: function(d, c) {
this.slideUp(d, c);
}
});
}
else if(btn_add_state == "level four"){
container.showBalloon({
position: 'bottom',
html: true,
css: {
color: 'black'
},
contents:
`
`,
showAnimation: function(d, c) {
this.slideDown(d, c);
},
hideAnimation: function(d, c) {
this.slideUp(d, c);
}
});
}
}
// these scripts are enabled only after button click
$('#add-warehouse').on('click', function() {
$('#prod_loc_tree > ul > li').each(function() {
disable(this.id);
});
js_tree_disabled = 1;
btn_submit_state = "add";
type = "wh";
$('#title_name').val("");
$('.add-operation').attr('disabled', true);
$('#container-field').toggleClass('card-success');
$('#tab-general').text("Add warehouse");
$('#btn_submit').toggleClass('btn-success').val("Add").attr('hidden', false);
$('#btn_cancel').attr('hidden', false);
// animation only
$('#container-field').hide(); $('#container-field').fadeIn(); $('#container-field').show();
});
$('#add-floor').on('click', function() {
$('#prod_loc_tree > ul > li').each(function() {
disable(this.id);
});
js_tree_disabled = 1;
btn_submit_state = "add";
type = "floor";
$('#title_name').val("");
$('.add-operation').attr('disabled', true);
$('#container-field').toggleClass('card-success');
$('#tab-general').text("Add floor");
$('#btn_submit').toggleClass('btn-success').val("Add").attr('hidden', false);
$('#btn_cancel').attr('hidden', false);
// animation only
$('#container-field').hide(); $('#container-field').fadeIn(); $('#container-field').show();
});
$('#add-rack').on('click', function() {
$('#prod_loc_tree > ul > li').each( function() {
disable(this.id);
});
js_tree_disabled = 1;
btn_submit_state = "add";
type = "rack";
$('#title_name').val("");
$('.add-operation').attr('disabled', true);
$('#container-field').toggleClass('card-success');
$('#tab-general').text("Add rack");
$('#btn_submit').toggleClass('btn-success').val("Add").attr('hidden', false);
$('#btn_cancel').attr('hidden', false);
// animation only
$('#container-field').hide(); $('#container-field').fadeIn(); $('#container-field').show();
});
$('#add-bin').on('click', function() {
$('#prod_loc_tree > ul > li').each(function() {
disable(this.id);
});
js_tree_disabled = 1;
btn_submit_state = "add";
type = "bin";
$('#title_name').val("");
$('.add-operation').attr('disabled', true);
$('#container-field').toggleClass('card-success');
$('#tab-general').text("Add bin");
$('#btn_submit').toggleClass('btn-success').val("Add").attr('hidden', false);
$('#btn_cancel').attr('hidden', false);
// animation only
$('#container-field').hide(); $('#container-field').fadeIn(); $('#container-field').show();
});
// these functions are enabled only after button is clicked
function disable(node_id) {
var node = $('#prod_loc_tree').jstree().get_node( node_id );
$('#prod_loc_tree').jstree().disable_node(node);
node.children.forEach(function(child_id) {
disable(child_id);
});
}
function enable(node_id) {
var node = $('#prod_loc_tree').jstree().get_node( node_id );
$('#prod_loc_tree').jstree().enable_node(node);
node.children.forEach( function(child_id) {
enable(child_id);
});
}
$('#btn_cancel').on('click', function() {
$('#prod_loc_tree > ul > li').each(function() {
enable(this.id);
});
js_tree_disabled = 0;
btn_submit_state = "";
$('.add-operation').attr('disabled', false);
$('#container-field').removeClass('card-success');
$('#tab-general').text("General");
$('#btn_submit').removeClass('btn-success').val("").attr('hidden', true);
$('#btn_cancel').attr('hidden', true);
if(selected_prod_loc_id != null){
// alert(selected_prod_loc_id);
readProdLocData();
}
// animation purpose only
$('#container-field').hide(); $('#container-field').fadeIn(); $('#container-field').show();
});
});
container.hideBalloon();
shown = !shown;
});
$('#prod_loc_tree').jstree({
core: {
data: {
url: "/admin/prod_location/list",
dataType: "json",
},
check_callback: !0,
},
plugins: ['dnd'],
}).on('move_node.jstree', function (e, data) {
updateProdLocTree(data);
console.log(data);
});
$('#collapse-all').on('click',function() {
alert("On going function");
});
$('#expand-all').on('click',function() {
alert("On going function");
});
$('#location_active').on('change', function() {
if ($(this).is(":checked")) {
$(this).val("1");
}
else {
$(this).val("0");
}
// alert($('#location_active').val());
});
$("#prod_loc_tree").on("click", ".jstree-anchor", function(e) {
if(js_tree_disabled == 0){
selected_prod_loc_id = $("#prod_loc_tree").jstree(true).get_node($(this)).id;
$('#btn_submit').removeClass('btn-success').val('Update').attr('hidden', false);
btn_submit_state = "update";
readProdLocData();
}
});
$('#prodLocForm').validate({
rules: {
title_name: {
required: true
},
},
messages: {
title_name: "This field is required"
},
errorElement: "span",
errorPlacement: function (error, element) {
error.addClass("invalid-feedback");
element.closest(".form-group").append(error);
},
highlight: function (element, errorClass, validClass) {
$(element).addClass("is-invalid");
},
unhighlight: function (element, errorClass, validClass) {
$(element).removeClass("is-invalid");
},
submitHandler: function() {
var json_data = formJson('data-json', $('[data-json]')); // alert($('#location_active').val());
if(btn_submit_state == "add") {
var is_success = 0;
var added = "";
var parent_id = null;
if(type != "wh" || type != "WH"){
parent_id = selected_prod_loc_id
}
$.ajax({
url: "/admin/prod_location/add",
data:{
json_data: json_data,
type: type,
parent_id: parent_id,
active: $('#location_active').val(),
csrf_token: csrf_token
},
type: 'POST',
dataType: 'json',
beforeSend: function() {
$('#btn_submit').attr('disabled', true);
},
success: function(result) {
if(result > 0){
toast('success', "Added successfully");
$('#prod_loc_tree').jstree('refresh');
added = result;
is_success = 1;
js_tree_disabled = 0;
btn_submit_state = "update";
backToView();
}
else if(result == 1){
toast('warning', "Title name is already in use in this level");
}
else {
toast('error', "There's something wrong in adding " + type);
}
}
});
setTimeout(function() {
if(is_success == 1){
$('#prod_loc_tree').jstree('deselect_node', '#' + selected_prod_loc_id);
selected_prod_loc_id = added;
$('#prod_loc_tree').jstree('select_node', '#' + selected_prod_loc_id);
}
}, 1000);
}
else if(btn_submit_state == "update") {
$.ajax({
url: "/admin/prod_location/update",
data: {
id: selected_prod_loc_id,
type: type,
json_data: json_data,
active: $('#location_active').val(),
csrf_token: csrf_token
},
type: 'POST',
dataType: 'json',
beforeSend: function() {
$('#btn_submit').attr('disabled', true);
},
success: function(result) { // alert(result.status); return;
if(result.status == 0) {
toast('success', "Updated successfully");
$('#prod_loc_tree').jstree('refresh');
}
else if(result.status == 1){
toast('warning', "Title name is already in use in this level");
}
else if(result.status == 2){
toast('error', "There's something wrong in updating");
}
else if(result.status == 10){
toast('info', "Nothing changes");
}
$('#btn_submit').attr('disabled', false);
},
error: function() {
$('#btn_submit').attr('disabled', false);
},
});
}
},
ignore: [],
});
// $('#prod_loc_tree').bind(
// 'select_node.jstree', function (evt, data) {
// // console.log('select!');
// });
})();
catalog/form.js 0000644 00000206707 15024732062 0007474 0 ustar 00 /*
* Author: Clarence A Andaya
* Date: 31 Mar 2022
*/
//Only const Variable Here
(function () {
"use strict";
//Logic,Variables, Functions Here
var variation_list = [];
var variation_images = [];
var product_images = [];
var variation_attributes = [];
var selected_variation_key = null;
var myDzProductPhotos = null;
var myDzProductMainPhotos = null;
var myVariationList = null;
// Global default options
Dropzone.autoDiscover = false;
var selected_attributes = [];
function dzProductPhotos() {
myDzProductPhotos = new Dropzone("#dz_product_photo", {
url: "/admin/storage/upload", // If not using a form element
acceptedFiles: ".png,.jpg,.jpeg,.gif", //allowed filetypes
maxFilesize: 8,
maxFiles: 20,
clickable: true,
addRemoveLinks: true,
dictCancelUpload: "",
removedfile: function (file) {
// console.log(file);
if (selected_variation_key != null) {
// load images
//remove in varialist image array
$.each(
variation_list[selected_variation_key].images,
function (i, v) {
if (v.id == file.id) {
delete variation_list[selected_variation_key].images[i];
// clean and refresh variations attributes
variation_list[selected_variation_key].images = filterArray(
variation_list[selected_variation_key].images
);
}
}
);
//remove in current variation_images array only for already uploaded image (mock image)
$.each(variation_images, function (k, j) {
if (j.id == file.id) {
delete variation_images[k];
variation_images = filterArray(variation_images);
}
});
}
if (typeof file.upload != "undefined") {
$.each(variation_images, function (k, j) {
// console.log(j.uuid + ' ' + file.upload.uuid);
if (j.uuid == file.upload.uuid) {
delete variation_images[k];
variation_images = filterArray(variation_images);
}
});
}
//remove in variation_images array only for newly upload
// $.ajax({
// type: 'POST',
// url: '/admin/storage/remove',
// dataType: 'json',
// data: {
// id_or_name: file.upload.filename,
// dir: "products",
// csrf_token: $('#csrf_token').val()
// },
// sucess: function(data) {
// console.log('success: ' + data);
// }
// });
var _ref;
return (_ref = file.previewElement) != null
? _ref.parentNode.removeChild(file.previewElement)
: void 0;
},
init: function () {
this.on("maxfilesexceeded", function (file) {
// $("#proceed-button-vehicle").attr("disabled", false);
toast("error", "Only 20 images.");
$("#btn_save_variation").prop("disabled", false);
return 0;
});
this.on("error", function (file) {
toast("error", "Error has occured.");
$("#btn_save_variation").prop("disabled", false);
return;
});
this.on("success", function (file, response) {
if (response.status == 0) {
toast("error", response.message);
return false;
}
variation_images.push({
uuid: file.upload.uuid,
id: response.id,
path: response.path,
size: response.size,
name: response.name,
});
$("#btn_save_variation").prop("disabled", false);
// console.log(variation_images);
});
this.on("sending", function (file, xhr, formData) {
formData.append("dir", "products");
formData.append("csrf_token", $("#csrf_token").val());
});
this.on("addedfiles", function (files) {
$("#btn_save_variation").prop("disabled", true);
});
},
});
}
function dzProductPhotosMain() {
myDzProductMainPhotos = new Dropzone("#catalog_dz_product_photo", {
url: "/admin/storage/upload", // If not using a form element
acceptedFiles: ".png,.jpg,.jpeg,.gif", //allowed filetypes
maxFilesize: 8,
maxFiles: 3,
clickable: true,
addRemoveLinks: true,
dictCancelUpload: "",
removedfile: function (file) {
// console.log(file);
if (typeof file.upload != "undefined") {
$.each(product_images, function (k, j) {
if (j.uuid == file.upload.uuid) {
delete product_images[k];
product_images = filterArray(product_images);
}
});
} else {
//remove in current product_images array only for already uploaded image (mock image)
$.each(product_images, function (k, j) {
if (j.id == file.id) {
delete product_images[k];
product_images = filterArray(product_images);
}
});
}
var _ref;
return (_ref = file.previewElement) != null
? _ref.parentNode.removeChild(file.previewElement)
: void 0;
},
init: function () {
this.on("maxfilesexceeded", function (file) {
// $("#proceed-button-vehicle").attr("disabled", false);
toast("error", "Only 20 images.");
$("#btn_save_product").prop("disabled", false);
return 0;
});
this.on("error", function (file) {
toast("error", "Error has occured.");
$("#btn_save_product").prop("disabled", false);
return;
});
this.on("success", function (file, response) {
if (response.status == 0) {
toast("error", response.message);
return false;
}
product_images.push({
uuid: file.upload.uuid,
id: response.id,
path: response.path,
size: response.size,
name: response.name,
});
$("#btn_save_product").prop("disabled", false);
});
this.on("sending", function (file, xhr, formData) {
formData.append("dir", "products");
formData.append("csrf_token", $("#csrf_token").val());
});
this.on("addedfiles", function (files) {
$("#btn_save_product").prop("disabled", true);
});
},
});
}
function isDuplicateObject(object1, object2, key) {
var uniqueResultOne = object1.filter(function (obj) {
return !object2.some(function (obj2) {
return obj[key] == obj2[key];
});
});
//Find values that are in obj2 but not in obj1
var uniqueResultTwo = object2.filter(function (obj) {
return !object1.some(function (obj2) {
return obj[key] == obj2[key];
});
});
//Combine the two arrays of unique entries
var result = uniqueResultOne.concat(uniqueResultTwo);
if (result.length) {
return false;
} else {
return true;
}
}
function isBelowZero($el, msg, focus = true) {
if ($el.val() != "") {
if (parseInt($el.val()) < 0) {
toast("error", msg);
if (focus) {
$el.trigger("focus");
}
return true;
}
}
return false;
}
function isBelowN($el, msg, num, focus = true) {
if ($el.val() != "") {
if (parseInt($el.val()) < num) {
toast("error", msg);
if (focus) {
$el.trigger("focus");
}
return true;
}
}
return false;
}
function checkDuplicateVariation() {
var isDuplicateVariation = false;
$.each(variation_list, function (i, v) {
var result1 = JSON.parse(JSON.stringify(v.attributes));
$.each(variation_list, function (j, k) {
if (i == j) {
return;
}
var result2 = JSON.parse(JSON.stringify(k.attributes));
if (isDuplicateObject(result1, result2, "child_id")) {
isDuplicateVariation = true;
}
});
});
return isDuplicateVariation;
}
function checkDuplicateAddVariation() {
var isDuplicateVariation = false;
var result1 = JSON.parse(JSON.stringify(variation_attributes));
$.each(variation_list, function (i, v) {
if (selected_variation_key != null) {
if (i == selected_variation_key) {
return;
}
}
var result2 = JSON.parse(JSON.stringify(v.attributes));
if (isDuplicateObject(result1, result2, "child_id")) {
isDuplicateVariation = true;
}
});
return isDuplicateVariation;
}
function variationForm() {
//clean attributes array (remove empty elements)
var filtered = filterArray(selected_attributes);
if (!filtered.length) {
toast("error", "No attributes selected.");
return false;
}
//ajax calling the variation form
$.ajax({
url: "/admin/products/variation",
data: {
attributes: filtered,
csrf_token: $("#csrf_token").val(),
},
type: "GET",
dataType: "json",
beforeSend: function () {
variation_images = [];
variation_attributes = [];
$(".modal_container").empty();
$("#btn_add_variation").prop("disabled", true);
},
success: function (result) {
$(".modal_container").html(result.data);
//show variant form
$("#modal_variation").modal("show");
//fill data to form if is update
if (selected_variation_key != null) {
// console.log(variation_list[selected_variation_key]);
//load fields
$.each(variation_list[selected_variation_key], function (i, v) {
if (!Array.isArray(v)) {
// alert('input[name="' + i + '"]');
$('input[name="' + i + '"]').val(v);
}
});
//load locations
var prod_loc = variation_list[selected_variation_key];
if (typeof prod_loc.warehouse != "undefined") {
var whOption = new Option(
prod_loc.warehouse.title,
prod_loc.warehouse.id,
true,
true
);
$('select[name="warehouse"]').append(whOption).trigger("change");
}
if (typeof prod_loc.floor != "undefined") {
var whOption = new Option(
prod_loc.floor.title,
prod_loc.floor.id,
true,
true
);
$('select[name="floor"]').append(whOption).trigger("change");
}
if (typeof prod_loc.rack != "undefined") {
var whOption = new Option(
prod_loc.rack.title,
prod_loc.rack.id,
true,
true
);
$('select[name="rack"]').append(whOption).trigger("change");
}
if (typeof prod_loc.bin != "undefined") {
var whOption = new Option(
prod_loc.bin.title,
prod_loc.bin.id,
true,
true
);
$('select[name="bin"]').append(whOption).trigger("change");
}
//load attributes
$.each(
variation_list[selected_variation_key].attributes,
function (i, v) {
$(
'select[name="attribute-' + v.parent_name.toLowerCase() + '"]'
).val(v.child_id);
}
);
}
//Initialze dropzone
// dzProductPhotos("#dz_product_photo");
dzProductPhotos();
//load images
if (selected_variation_key != null) {
// load images
$.each(
variation_list[selected_variation_key].images,
function (i, v) {
variation_images.push({
id: v.id,
path: v.path,
size: v.size,
name: v.name,
});
var mockFile = {
id: v.id,
name: v.name, //v.path,
size: v.size, //'12345' //v.unreadable_size
};
myDzProductPhotos.emit("addedfile", mockFile);
myDzProductPhotos.emit("complete", mockFile);
myDzProductPhotos.emit(
"thumbnail",
mockFile,
APP_DISK + "thumbnails/" + v.path
);
myDzProductPhotos.files.push(mockFile); // here you add them into the files array
}
);
}
//initialize datepicker
$(".datetimepicker").datetimepicker({
format: "MM/DD/YYYY hh:mm A",
// minDate: moment().subtract(1, "day"),
});
// $("[data-mask]").inputmask();
//init product location warehouse,floor,rack,bin
$('select[name="warehouse"]').select2({
theme: "bootstrap4",
language: {
noResults: function () {
return "Select store and enter warehouse name.";
},
},
escapeMarkup: function (markup) {
return markup;
},
placeholder: "Please Select",
ajax: {
url: "/admin/inventory/locations",
dataType: "json",
delay: 250,
data: function (data) {
return {
search: data.term,
limit: 15,
store_id: $('select[name="catalog_store"]').val(),
};
},
processResults: function (response) {
return {
results: response,
};
},
cache: true,
},
});
$('select[name="floor"]').select2({
theme: "bootstrap4",
language: {
noResults: function () {
return "Select warehouse and enter floor name.";
},
},
escapeMarkup: function (markup) {
return markup;
},
placeholder: "Please Select",
ajax: {
url: "/admin/inventory/locations",
dataType: "json",
delay: 250,
data: function (data) {
return {
search: data.term,
limit: 15,
parent_id: $('select[name="warehouse"]').val(),
type: "floor",
};
},
processResults: function (response) {
return {
results: response,
};
},
cache: true,
},
});
$('select[name="rack"]').select2({
theme: "bootstrap4",
language: {
noResults: function () {
return "Select floor and enter rack name.";
},
},
escapeMarkup: function (markup) {
return markup;
},
placeholder: "Please Select",
ajax: {
url: "/admin/inventory/locations",
dataType: "json",
delay: 250,
data: function (data) {
return {
search: data.term,
limit: 15,
parent_id: $('select[name="floor"]').val(),
type: "rack",
};
},
processResults: function (response) {
return {
results: response,
};
},
cache: true,
},
});
$('select[name="bin"]').select2({
theme: "bootstrap4",
language: {
noResults: function () {
return "Select floor and enter bin name.";
},
},
escapeMarkup: function (markup) {
return markup;
},
placeholder: "Please Select",
ajax: {
url: "/admin/inventory/locations",
dataType: "json",
delay: 250,
data: function (data) {
return {
search: data.term,
limit: 15,
parent_id: $('select[name="rack"]').val(),
type: "bin",
};
},
processResults: function (response) {
return {
results: response,
};
},
cache: true,
},
});
$('select[name="warehouse"]').on("change", function () {
$('select[name="floor"]').val(null).trigger("change");
});
$('select[name="floor"]').on("change", function () {
$('select[name="rack"]').val(null).trigger("change");
});
$('select[name="rack"]').on("change", function () {
$('select[name="bin"]').val(null).trigger("change");
});
$("#modal_variation").on("hidden.bs.modal", function () {
//destroy all elements in modal
// myDzProductPhotos.destroy();
myDzProductPhotos.files = [];
$(this).remove();
});
$("#btn_add_variation").prop("disabled", false);
$("#btn_save_variation").on("click", function () {
//validations
if ($('input[name="price"]').val() == "") {
toast("error", "Price cannot be empty.");
$('input[name="price"]').trigger("focus");
return false;
}
if (
isBelowN(
$('input[name="price"]'),
"Price cannot be negative value.",
0
)
) {
return false;
}
if (
isBelowN(
$('input[name="min_order_qty"]'),
"Minimum order quantity must be equal or greater than 1",
1
)
) {
return false;
}
if (
isBelowN(
$('input[name="max_order_qty"]'),
"Maximum order quantity must be equal or greater than 1",
1
)
) {
return false;
}
if (
isBelowN(
$('input[name="sale_price"]'),
"Sale price cannot be negative value.",
0
)
) {
return false;
}
if (
isBelowN(
$('input[name="quantity"]'),
"Quantity price cannot be negative value.",
0
)
) {
return false;
}
if (
isBelowN(
$('input[name="max_quantity"]'),
"Max quantity price cannot be negative value.",
0
)
) {
return false;
}
if (
isBelowN(
$('input[name="order_quantity"]'),
"Order quantity price cannot be negative value.",
0
)
) {
return false;
}
var is_empty_attr = false;
$("[data-attribute]").each(function () {
if (!$(this).val()) {
$(this).trigger("focus");
is_empty_attr = true;
return false;
}
});
if (is_empty_attr) {
toast("error", "Invalid attribute value.");
return false;
}
//sales price validation
if (
($("#sale_price_start").val() && !$("#sale_price_end").val()) ||
(!$("#sale_price_start").val() && $("#sale_price_end").val()) ||
moment($("#sale_price_start").val()) >=
moment($("#sale_price_end").val())
) {
toast("error", "Invalid sale date range.");
$("#sale_price_start").trigger("focus");
return false;
}
if (
($("#sale_price_start").val() &&
!$('input[name="sale_price"]').val()) ||
($("#sale_price_end").val() && !$('input[name="sale_price"]').val())
) {
toast("error", "Sale price cannot be empty.");
$('input[name="sale_price"]').trigger("focus");
return false;
}
if (
parseInt($('input[name="price"]').val()) <=
parseInt($('input[name="sale_price"]').val())
) {
toast("error", "Sale price must not greater or equal than price.");
$('input[name="sale_price"]').trigger("focus");
return false;
}
if ($('input[name="max_order_qty"]').val() != "") {
if (
parseInt($('input[name="max_order_qty"]').val()) <
parseInt($('input[name="min_order_qty"]').val())
) {
toast(
"error",
"Minimum order quantity must not greater than max order quantity."
);
$('input[name="min_order_qty"]').trigger("focus");
return false;
}
}
if ($('input[name="max_quantity"]').val() != "") {
//deprecated
// if (
// parseInt($('input[name="max_quantity"]').val()) <
// parseInt($('input[name="min_order_qty"]').val())
// ) {
// toast(
// "error",
// "Minimum order quantity must not greater than max quantity."
// );
// $('input[name="min_order_qty"]').trigger("focus");
// return false;
// }
// if (
// parseInt($('input[name="max_quantity"]').val()) <
// parseInt($('input[name="max_order_qty"]').val())
// ) {
// toast(
// "error",
// "Maximum order quantity must not greater than max quantity."
// );
// $('input[name="max_order_qty"]').trigger("focus");
// return false;
// }
if (
parseInt($('input[name="max_quantity"]').val()) <
parseInt($('input[name="quantity"]').val())
) {
toast("error", "Quantity must not greater than max quantity.");
$('input[name="quantity"]').trigger("focus");
return false;
}
if (
parseInt($('input[name="max_quantity"]').val()) <
parseInt($('input[name="order_quantity"]').val())
) {
toast(
"error",
"Order quantity must not greater than max quantity."
);
$('input[name="order_quantity"]').trigger("focus");
return false;
}
}
variation_attributes = [];
var obj_data = formObj("data-obj", $("[data-obj]"));
// console.log(obj_data);
// return false;
// Add Locations
if (parseInt($('select[name="warehouse"]').val())) {
obj_data["warehouse"] = {
id: $('select[name="warehouse"]').val(),
title: $('select[name="warehouse"] option:selected').text(),
type: "wh",
};
}
if (parseInt($('select[name="floor"]').val())) {
obj_data["floor"] = {
id: $('select[name="floor"]').val(),
title: $('select[name="floor"] option:selected').text(),
type: "floor",
};
}
if (parseInt($('select[name="rack"]').val())) {
obj_data["rack"] = {
id: $('select[name="rack"]').val(),
title: $('select[name="rack"] option:selected').text(),
type: "rack",
};
}
if (parseInt($('select[name="bin"]').val())) {
obj_data["bin"] = {
id: $('select[name="bin"]').val(),
title: $('select[name="bin"] option:selected').text(),
type: "bin",
};
}
//Add attributes to variation
$("[data-attribute]").each(function () {
var attr_obj = {
parent_id: parseInt($(this).attr("data-id")),
parent_name: $(this).attr("data-name"),
child_id: $(this).val(),
child_name: $("option:selected", this).text(),
};
variation_attributes.push(attr_obj);
});
//Legacy code for checking if attributes is exist
// //start check if variations has equal attributes
// $.each(variation_list, function(i, v) {
// // console.log('error');
// var result1 = JSON.parse(JSON.stringify(variation_attributes));
// var result2 = JSON.parse(JSON.stringify(v.attributes));
// if (result1.length != result2.length) {
// var uniqueResultOne = result1.filter(function(obj) {
// return !result2.some(function(obj2) {
// return obj.parent_id == obj2.parent_id;
// });
// });
// //Find values that are in result2 but not in result1
// var uniqueResultTwo = result2.filter(function(obj) {
// return !result1.some(function(obj2) {
// return obj.parent_id == obj2.parent_id;
// });
// });
// //Combine the two arrays of unique entries
// var result = JSON.parse(JSON.stringify(uniqueResultOne)); //uniqueResultOne.concat(uniqueResultTwo);
// result[0].child_id = '';
// result[0].child_name = '';
// console.log('added');
// $.each(result, function(k, j) {
// variation_list[i].attributes.push(j);
// });
// }
// });
//start check duplicate variations
// var isDuplicateVariation = false;
// $.each(variation_list, function (i, v) {
// if (selected_variation_key != null) {
// if (i == selected_variation_key) {
// return;
// }
// }
// var result1 = JSON.parse(JSON.stringify(variation_attributes));
// var result2 = JSON.parse(JSON.stringify(v.attributes));
// //Find values that are in result1 but not in result2
// var uniqueResultOne = result1.filter(function (obj) {
// return !result2.some(function (obj2) {
// return obj.child_id == obj2.child_id;
// });
// });
// //Find values that are in result2 but not in result1
// var uniqueResultTwo = result2.filter(function (obj) {
// return !result1.some(function (obj2) {
// return obj.child_id == obj2.child_id;
// });
// });
// //Combine the two arrays of unique entries
// var result = uniqueResultOne.concat(uniqueResultTwo);
// if (!result.length) {
// isDuplicateVariation = true;
// return false;
// }
// });
// if (isDuplicateVariation) {
// toast("error", "This variation is already added.");
// return false;
// }
if (checkDuplicateAddVariation()) {
toast("error", "This variation is already added.");
return false;
}
//end check duplicate variations
obj_data["attributes"] = JSON.parse(
JSON.stringify(variation_attributes)
);
//Add images from dropzone
obj_data["images"] = JSON.parse(JSON.stringify(variation_images));
$("#modal_variation").modal("hide");
toast("success", "Variation save.");
if (selected_variation_key != null) {
obj_data["default"] =
variation_list[selected_variation_key]["default"];
obj_data["id"] = variation_list[selected_variation_key].id;
variation_list[selected_variation_key] = obj_data;
} else {
//Set default variation
if (variation_list.length <= 0) {
obj_data["default"] = 1;
} else {
obj_data["default"] = 0;
}
obj_data["id"] = "";
variation_list.push(obj_data);
}
// refresh variation table
variationList();
});
},
error: function () {
toast("error", "Error has occurred. Try again.");
$("#btn_add_variation").prop("disabled", false);
},
});
}
function variationList() {
console.log("List: ");
console.log(variation_list);
var variationTableId = "#tbl_variations";
if ($.fn.DataTable.isDataTable(variationTableId)) {
// $(variationTableId).dataTable();
myVariationList.clear();
myVariationList.destroy();
}
$(variationTableId + " tbody").empty();
$(variationTableId + " thead").empty();
if (variation_list.length <= 0) {
return false;
}
//Object to table logic & algorithm : Clrkz 04/19/22
//fix cols
var cols = [
{
title: "Image",
data: "image",
className: "align-middle p-1 dt-center",
render: function (data, type, row, meta) {
return (
`
`
);
},
width: "5%",
},
{
title: "Price",
data: "price",
className: "align-middle p-1 dt-center",
ordering: true,
width: "15%",
render: function (data, type, row, meta) {
var sale_price_end = moment(variation_list[row.key].sale_price_end);
// console.log(sale_price_end);
var date_now = moment();
// console.log(sale_price_end);
// console.log(date_now);
// date is past
var price =
CURRENCY_SYMBOL +
parseFloat(row.price).toLocaleString("en-US", {
minimumFractionDigits: 2,
});
var sale_price = variation_list[row.key].sale_price;
var final_sale_price =
CURRENCY_SYMBOL +
parseFloat(sale_price).toLocaleString("en-US", {
minimumFractionDigits: 2,
}) +
`
` +
price +
``;
if (sale_price_end.isValid()) {
if (sale_price_end > date_now) {
// var sale_price = variation_list[row.key].sale_price;
return final_sale_price;
}
} else {
if (sale_price) {
return final_sale_price;
}
}
return price;
},
},
{
title: "Default",
data: "default",
render: function (data, type, row, meta) {
return (
`
`
);
},
className: "align-middle p-1 dt-center",
width: "5%",
},
{
title: "Action",
data: "key",
render: function (data, type, row, meta) {
return (
`
`
);
},
className: "align-middle p-1 dt-center",
width: "10%",
},
];
//get the variation as table cols
var col_attribute = [];
$.each(variation_list[0].attributes, function (i, v) {
if (!v) {
return;
}
col_attribute.push({
title: capitalizeFirstLetter(v.parent_name),
data: v.parent_name.toLowerCase().trim(),
className: "align-middle p-1",
});
});
//apend variation to fix cols
$.each(col_attribute.reverse(), function (i, v) {
cols.splice(1, 0, col_attribute[i]);
});
//Table Data
var data = [];
$.each(variation_list, function (i, v) {
var fix_data = {
image:
v.images.length <= 0
? APP_DISK + "products/default.png"
: APP_DISK + v.images[0].path,
price: v.price,
default: v.default,
key: i,
};
var data_attribute = [];
$.each(v.attributes, function (j, k) {
if (!k) {
return;
}
data_attribute[k.parent_name.toLowerCase().trim()] = k.child_name;
});
var merge_data = {};
Object.assign(merge_data, fix_data, data_attribute);
// console.log(merge_data)
data.push(merge_data);
});
myVariationList = $(variationTableId).DataTable({
retrieve: true,
columns: cols,
data: data,
paging: true,
lengthChange: false,
searching: false,
ordering: false,
info: true,
autoWidth: false,
responsive: true,
});
}
function formatCategory(category) {
if (!category.id) {
return category.text;
}
var baseUrl = "/assets/img/logo/AGC_TRANSPARENT.png";
var $category = $('
');
// Use .text() instead of HTML string concatenation to avoid script injection issues
$category.find("span").text(category.text.replaceAll("¦––", ""));
// $category.find("img").attr("src", baseUrl + "/" + category.element.value.toLowerCase() + ".png");
return $category;
}
function filterArray(array) {
return array.filter(function (el) {
return el != null;
});
}
function disableSelected() {
$(".repeater")
.find("select")
.each(function () {
var $current_el = $(this);
$("option:disabled", this).removeAttr("disabled");
// $.each(selected_attributes, function(index, value) {
var current_value = $(this).val();
$("option", $current_el).each(function () {
if (current_value != $(this).val()) {
var $option_el = $(this);
if (jQuery.inArray($option_el.val(), selected_attributes) !== -1) {
$option_el.attr("disabled", "disabled");
}
// $.each(selected_attributes, function(index, value) {
// if ($option_el.val() == value) {
// $option_el.attr("disabled", "disabled");
// }
// });
}
});
});
}
function gotoTab(nav, pane) {
$(".nav-1").removeClass("active");
$(".pane-1").removeClass("active show");
$(nav).addClass("active");
$(pane).addClass("active show");
}
//Update Products
function fetchProductInformation() {
console.log("Product Information: ");
console.log(product_information_json);
if (!Object.keys(product_information_json).length) {
return false;
}
$('input[name="catalog_name"]').val(product_information_json.title);
$("#catalog_description").summernote(
"code",
product_information_json.content
);
//catehories
$("select[name=catalog_brand]")
.val(product_information_json.brandId)
.trigger("change");
$("select[name=catalog_tax]")
.val(product_information_json.taxId)
.trigger("change");
if (product_information_json.available) {
$("input[name=catalog_status]").prop("checked", true).trigger("change");
}
$.each(product_information_json.categories, function (i, v) {
$("#catalog_category option[value='" + v + "']")
.prop("selected", true)
.trigger("change");
});
//Main images
$.each(product_information_json.product_images, function (i, v) {
product_images.push({
id: v.id,
path: v.path,
size: v.size,
name: v.name,
});
var mockFile = {
id: v.id,
name: v.name, //v.path,
size: v.size, //'12345' //v.unreadable_size
};
myDzProductMainPhotos.emit("addedfile", mockFile);
myDzProductMainPhotos.emit("complete", mockFile);
myDzProductMainPhotos.emit(
"thumbnail",
mockFile,
APP_DISK + "thumbnails/" + v.path
);
myDzProductMainPhotos.files.push(mockFile); // here you add them into the files array
});
// variation_list = product_information_json.variations;
if (product_information_json.attribute_sets.length) {
$(".variations").show();
$(".non-variations").hide();
}
//Variations and Attributes
$.each(product_information_json.attribute_sets, function (i, v) {
$("[data-repeater-create]").trigger("click");
var $attr_el = $(
'select[name="attribute_list[' + i + '][attribute_name]"]'
);
$attr_el.val(v.id);
});
setTimeout(function () {
$.each(product_information_json.attribute_sets, function (i, v) {
var $attr_el = $(
'select[name="attribute_list[' + i + '][attribute_name]"]'
);
$attr_el.trigger("change");
// var key = $attr_el.attr("data-select2-id");
// selected_attributes[key] = $attr_el.val();
});
// disableSelected();
// console.log(selected_attributes)
variation_list = product_information_json.variations;
variationList();
console.log(selected_attributes);
}, 1000);
// var key = $(this).find(".select2").attr("data-select2-id");
// selected_attributes[key] = $(this).val();
//Pricing
$('input[name="catalog_price"]').val(product_information_json.price);
$('input[name="catalog_sale_price"]').val(
product_information_json.discount
);
// if (product_information_json.startsAt) {
// $('input[name="catalog_sale_price_start"]').val(
// moment(product_information_json.startsAt).format("M/D/YYYY hh:mm A")
// );
$('input[name="catalog_sale_price_start"]').val(
product_information_json.startsAt
);
// }
// if (product_information_json.endsAt) {
$('input[name="catalog_sale_price_end"]').val(
// moment(product_information_json.endsAt).format("M/D/YYYY hh:mm A")
product_information_json.endsAt
);
// }
// Inventory
$('input[name="catalog_sku"]').val(product_information_json.sku);
$('input[name="catalog_quantity"]').val(product_information_json.quantity);
$('input[name="catalog_max_quantity"]').val(
product_information_json.maxQty
);
$('input[name="catalog_order_quantity"]').val(
product_information_json.reorderQty
);
$('input[name="catalog_min_order_qty"]').val(
product_information_json.minOrderQty
);
$('input[name="catalog_max_order_qty"]').val(
product_information_json.maxOrderQty
);
//Locations
var prod_loc = product_information_json.locations;
if (typeof prod_loc[0] != "undefined") {
var whOption = new Option(prod_loc[0].title, prod_loc[0].id, true, true);
$('select[name="catalog_warehouse"]').append(whOption).trigger("change");
}
if (typeof prod_loc[1] != "undefined") {
var floorOption = new Option(
prod_loc[1].title,
prod_loc[1].id,
true,
true
);
$('select[name="catalog_floor"]').append(floorOption).trigger("change");
}
if (typeof prod_loc[2] != "undefined") {
var rackOption = new Option(
prod_loc[2].title,
prod_loc[2].id,
true,
true
);
$('select[name="catalog_rack"]').append(rackOption).trigger("change");
}
if (typeof prod_loc[3] != "undefined") {
var binOption = new Option(prod_loc[3].title, prod_loc[3].id, true, true);
$('select[name="catalog_bin"]').append(binOption).trigger("change");
}
}
$(function () {
"use strict";
$.fn.datetimepicker.Constructor.Default = $.extend(
{},
$.fn.datetimepicker.Constructor.Default,
{
icons: {
time: "fa fa-clock",
date: "fa fa-calendar",
up: "fa fa-arrow-up",
down: "fa fa-arrow-down",
previous: "fa fa-chevron-left",
next: "fa fa-chevron-right",
today: "fa fa-calendar-check-o",
clear: "fa fa-trash",
close: "fa fa-times",
},
}
);
$("[name='catalog_status']").change(function () {
if ($(this).is(":checked")) {
$(this).val("1");
} else {
$(this).val("0");
}
});
$(".select2_category").select2({
theme: "bootstrap4",
templateSelection: formatCategory,
});
$("#catalog_description").summernote({
tabsize: 2,
height: 250,
});
$("#catalog_name").on("click", function () {
if ($("#catalog_description").summernote("isEmpty")) {
// alert('editor content is empty');
} else {
//summernote codes
var html = $("#catalog_description").summernote("code");
// alert(html);
}
});
removeSubmitButtonOffsetOn([
"#vert-tabs-attributes",
"#vert-tabs-variations",
"#vert-tabs-images",
]);
// Catalog form
$.validator.addMethod(
"catalogDescription",
function (value, element, param) {
if ($("#catalog_description").summernote("isEmpty")) {
gotoTab("#vert-tabs-general-tab", "#vert-tabs-general");
return false;
}
return true;
},
"This field is required."
);
$.validator.addMethod(
"catalogQuantity",
function (value, element, param) {
//if no attributes
var filtered_selected_attributes = filterArray(selected_attributes);
if (!filtered_selected_attributes.length) {
// if (parseInt($('input[name="catalog_max_quantity"]').val()) > 0) {
if ($('input[name="catalog_max_quantity"]').val() != "") {
if (
parseInt($('input[name="catalog_max_quantity"]').val()) <
parseInt($('input[name="catalog_quantity"]').val())
) {
gotoTab("#vert-tabs-inventory-tab", "#vert-tabs-inventory");
// $('input[name="catalog_quantity"]').trigger("focus");
return false;
}
}
}
return true;
},
"Quantity must not greater than max quantity."
);
$.validator.addMethod(
"catalogMinQuantity",
function (value, element, param) {
//if no attributes
var filtered_selected_attributes = filterArray(selected_attributes);
if (!filtered_selected_attributes.length) {
if ($('input[name="catalog_max_order_qty"]').val() != "") {
if (
parseInt($('input[name="catalog_max_order_qty"]').val()) <
parseInt($('input[name="catalog_min_order_qty"]').val())
) {
gotoTab("#vert-tabs-inventory-tab", "#vert-tabs-inventory");
return false;
}
}
}
return true;
},
"Minimum order quantity must not greater than max order quantity."
);
$.validator.addMethod(
"catalogOrderQuantity",
function (value, element, param) {
//if no attributes
var filtered_selected_attributes = filterArray(selected_attributes);
if (!filtered_selected_attributes.length) {
if (
parseInt($('input[name="catalog_max_quantity"]').val()) <
parseInt($('input[name="catalog_order_quantity"]').val())
) {
$.validator.messages.catalogOrderQuantity =
"Order quantity must not greater than max quantity.";
gotoTab("#vert-tabs-inventory-tab", "#vert-tabs-inventory");
// $('input[name="catalog_order_quantity"]').trigger("focus");
return false;
}
}
return true;
},
$.validator.messages.catalogOrderQuantity
);
$.validator.addMethod(
"catalogPrice",
function (value, element, param) {
//if no attributes
var filtered_selected_attributes = filterArray(selected_attributes);
if (!filtered_selected_attributes.length) {
if ($('input[name="catalog_price"]').val() == "") {
$.validator.messages.catalogPrice = "This field is required.";
gotoTab("#vert-tabs-price-tab", "#vert-tabs-price");
// $('input[name="catalog_price"]').trigger("focus");
return false;
}
}
return true;
},
$.validator.messages.catalogPrice
);
// if (
// ($("#sale_price_start").val() &&
// !$('input[name="sale_price"]').val()) ||
// ($("#sale_price_end").val() && !$('input[name="sale_price"]').val())
// ) {
// toast("error", "Sale price cannot be empty.");
// $('input[name="sale_price"]').trigger("focus");
// return false;
// }
// if (
// parseInt($('input[name="price"]').val()) <=
// parseInt($('input[name="sale_price"]').val())
// ) {
// toast("error", "Sale price must not greater or equal than price.");
// $('input[name="sale_price"]').trigger("focus");
// return false;
// }
$.validator.addMethod(
"catalogSalePriceEnd",
function (value, element, param) {
//if no attributes
var filtered_selected_attributes = filterArray(selected_attributes);
if (!filtered_selected_attributes.length) {
if (
($("#catalog_sale_price_start").val() &&
!$("#catalog_sale_price_end").val()) ||
(!$("#catalog_sale_price_start").val() &&
$("#catalog_sale_price_end").val()) ||
moment($("#catalog_sale_price_start").val()) >=
moment($("#catalog_sale_price_end").val())
) {
$.validator.messages.catalogSalePriceEnd =
"Invalid sale date range.";
gotoTab("#vert-tabs-price-tab", "#vert-tabs-price");
// $('input[name="catalog_sale_price_start"]').trigger("focus");
return false;
}
}
return true;
},
$.validator.messages.catalogSalePriceEnd
);
$.validator.addMethod(
"catalogSalePrice",
function (value, element, param) {
//if no attributes
var filtered_selected_attributes = filterArray(selected_attributes);
if (!filtered_selected_attributes.length) {
if (
($("#catalog_sale_price").val() &&
!$('input[name="catalog_sale_price"]').val()) ||
($("#catalog_sale_price_end").val() &&
!$('input[name="catalog_sale_price"]').val())
) {
$.validator.messages.catalogSalePrice =
"Sale price cannot be empty.";
gotoTab("#vert-tabs-price-tab", "#vert-tabs-price");
// $('input[name="catalog_sale_price_start"]').trigger("focus");
return false;
}
if (
parseInt($('input[name="catalog_price"]').val()) <=
parseInt($('input[name="catalog_sale_price"]').val())
) {
$.validator.messages.catalogSalePrice =
"Sale price must not greater or equal than price.";
gotoTab("#vert-tabs-price-tab", "#vert-tabs-price");
// $('input[name="catalog_sale_price"]').trigger("focus");
return false;
}
}
return true;
},
$.validator.messages.catalogSalePrice
);
$.validator.setDefaults({
submitHandler: function (form) {
// console.log(variation_list);
// return false;
window.onbeforeunload = false;
var formData = new FormData(form);
formData.append(
"id",
Object.keys(product_information_json).length
? product_information_json.id
: ""
);
var filtered_selected_attributes = filterArray(selected_attributes);
if (filtered_selected_attributes.length) {
if (variation_list.length) {
//chyeck if all variations attribute has filled
var isVariationAttributeNotEmpty = true;
// check if all variations has assigned attribute
$.each(variation_list, function (i, v) {
$.each(v.attributes, function (k, j) {
if (!j.child_id) {
isVariationAttributeNotEmpty = false;
return false;
}
});
});
if (isVariationAttributeNotEmpty) {
// $('input[name="variations"]').val(JSON.stringify(variation_list));
formData.append("variations", JSON.stringify(variation_list));
} else {
gotoTab("#vert-tabs-variations-tab", "#vert-tabs-variations");
toast(
"error",
"There's an incomplete variation, check attribute values."
);
return false;
}
//check if no duplicate variaions attributes
if (checkDuplicateVariation()) {
gotoTab("#vert-tabs-variations-tab", "#vert-tabs-variations");
toast("error", "There are duplicate variations");
return false;
}
} else {
gotoTab("#vert-tabs-variations-tab", "#vert-tabs-variations");
toast("error", "Add at least 1 product variation.");
return false;
}
}
//else {
// $('input[name="product_images"]').val(JSON.stringify(product_images));
formData.append("product_images", JSON.stringify(product_images));
// }
// var $form = $("#catalogForm");
// $form.append("test", "nice");
$.ajax({
url: "/admin/products",
type: "POST",
data: formData,
// timeout: 9000,
processData: false,
contentType: false,
beforeSend: function () {
$("#btn_save_product").prop("disabled", true);
},
success: function (result) {
// console.log(result);
// $("#btn_save_product").prop("disabled", false);
window.location.replace("/admin/products");
// $("#btn_save_product").prop("disabled", false);
return false;
},
error: function () {
toast("error", "Error has occurred. Try again.");
$("#btn_save_product").prop("disabled", false);
},
});
return false;
},
ignore: [],
});
$("#catalogForm").validate({
rules: {
catalog_name: {
required: true,
},
catalog_description: {
catalogDescription: true,
},
catalog_price: {
catalogPrice: true,
min: 0,
},
catalog_sale_price_end: {
catalogSalePriceEnd: true,
},
catalog_sale_price: {
catalogSalePrice: true,
min: 0,
},
catalog_quantity: {
catalogQuantity: true,
min: 0,
},
catalog_max_quantity: {
min: 0,
},
catalog_order_quantity: {
catalogOrderQuantity: true,
min: 0,
},
catalog_min_order_qty: {
catalogMinQuantity: true,
min: 0,
},
catalog_max_order_qty: {
min: 0,
},
},
messages: {
// catalog_name: "Meow",
},
errorElement: "span",
errorPlacement: function (error, element) {
error.addClass("invalid-feedback");
element.closest(".form-group").append(error);
},
highlight: function (element, errorClass, validClass) {
$(element).addClass("is-invalid");
},
unhighlight: function (element, errorClass, validClass) {
$(element).removeClass("is-invalid");
},
});
//fux summernote error on validator
$("#catalogForm").each(function () {
if ($(this).data("validator"))
$(this).data("validator").settings.ignore = ".note-editor *";
});
$(".repeater").repeater({
repeaters: [
{
// (Required)
// Specify the jQuery selector for this nested repeater
selector: ".inner-repeater",
},
],
hide: function (deleteElement) {
var option_key = $(this).find("select").val();
if (option_key) {
Swal.fire({
title: "Are you sure?",
text: "This attribute will be remove to all variants of this product.",
icon: "warning",
showCancelButton: true,
confirmButtonColor: "#3085d6",
cancelButtonColor: "#d33",
confirmButtonText: "Yes, remove it!",
showClass: {
backdrop: "swal2-noanimation", // disable backdrop animation
popup: "", // disable popup animation
icon: "", // disable icon animation
},
hideClass: {
popup: "", // disable popup fade-out animation
},
}).then((result) => {
if (result.isConfirmed) {
// remove this attribute to every variation
$.each(variation_list, function (i, v) {
$.each(v.attributes, function (k, j) {
if (j.parent_id == option_key) {
delete variation_list[i].attributes[k];
// clean and refresh variations attributes
variation_list[i].attributes = variation_list[
i
].attributes.filter(function (el) {
return el != null;
});
}
});
});
//check if theres more attribute to variation then if none remove all variation
var variation_counter = 0;
// $.each(variation_list, function (i, v) {
// $.each(v.attributes, function (k, j) {
// variation_counter++;
// });
// return false;
// });
if (variation_list.length) {
variation_counter = variation_list[0].attributes.length;
// $.each(variation_list[0].attributes, function (k, j) {
// if (parent_id == j.parent_id) {
// hasAttribute = true;
// return false;
// }
// });
}
// console.log(variation_counter);
if (!variation_counter) {
variation_list = [];
var variationTableId = "#tbl_variations";
if ($.fn.DataTable.isDataTable(variationTableId)) {
// $(variationTableId).dataTable();
myVariationList.clear();
myVariationList.destroy();
}
// if (myVariationList != null) {
// myVariationList.clear();
// // myVariationList.destroy(false);
// }
$(variationTableId + " tbody").empty();
$(variationTableId + " thead").empty();
} else {
variationList();
}
$(this).slideUp(function () {
//remove key in array
// var key = $(this).find(".select2").attr("data-select2-id");
var key = $(this).find("select").attr("data-select2-id");
// alert(key);
delete selected_attributes[key];
disableSelected();
deleteElement();
// itemRemove(); //another function if necessary
var repeatCount = $(".repeater").find("select").length;
var optionCount = $(this)
.find("select")
.children("option").length;
if (repeatCount != optionCount) {
$("[data-repeater-create]").show();
}
var filtered_selected_attributes =
filterArray(selected_attributes);
if (!filtered_selected_attributes.length) {
$(".variations").hide();
$(".non-variations").show();
}
});
}
});
} else {
//remove if no option selected
$(this).slideUp(function () {
//remove key in array
// var key = $(this).find(".select2").attr("data-select2-id");
var key = $(this).find("select").attr("data-select2-id");
delete selected_attributes[key];
disableSelected();
deleteElement();
// itemRemove(); //another function if necessary
var repeatCount = $(".repeater").find("select").length;
var optionCount = $(this).find("select").children("option").length;
if (repeatCount != optionCount) {
$("[data-repeater-create]").show();
}
var filtered_selected_attributes = filterArray(selected_attributes);
if (!filtered_selected_attributes.length) {
$(".variations").hide();
$(".non-variations").show();
}
});
}
},
show: function () {
// $(this).slideDown();
$(this).slideDown(function () {
//init select2 after adding repeater
$(this).find(".select2repeater").select2({
placeholder: "Select an option",
minimumResultsForSearch: -1,
});
//fix select2 arrow ui
$(this).find(".select2-selection__arrow").addClass("mt-1");
$(this)
.find("select")
.on("change", function () {
//add select2 id and selected value to array
var key = $(this).attr("data-select2-id");
console.log(key);
var parent_id = $(this).val();
// check if this attr is exist to variation attribute
// if not exist add if exist ignore
var hasAttribute = false;
if (variation_list.length) {
$.each(variation_list[0].attributes, function (k, j) {
if (parent_id == j.parent_id) {
hasAttribute = true;
return false;
}
});
}
// check if attribte exist if not push to selected attributes obj
if (!hasAttribute) {
var attr_obj = {
parent_id: parseInt(parent_id),
parent_name: $("option:selected", this).text(),
child_id: "",
child_name: "",
};
$.each(variation_list, function (i, v) {
variation_list[i].attributes.push(attr_obj);
});
selected_attributes[key] = $(this).val();
}
//remove list
// 1. get variation attributes
// 2. compare 2 selected attributes
// 3. remnove variation attribute if not exist in selected variations
var filtered_selected_attributes =
filterArray(selected_attributes);
$.each(variation_list, function (i, v) {
$.each(v.attributes, function (k, j) {
if (
!filtered_selected_attributes.includes(
parseInt(j.parent_id)
)
) {
// delete variation_list[i].attributes[k];
variation_list[i].attributes = filterArray(
variation_list[i].attributes
);
}
});
});
//hide non varaitons elements
if (filtered_selected_attributes.length) {
$(".variations").show();
$(".non-variations").hide();
}
variationList();
// }
disableSelected();
});
//enable all option in repeater select2
//disable array option in repeater
disableSelected();
var repeatCount = $(".repeater").find("select").length;
var optionCount = $(this).find("select").children("option").length;
if (repeatCount == optionCount) {
$("[data-repeater-create]").hide();
}
});
},
// defaultValues: {
//'text-input': 'foo'
//},
ready: function (setIndexes) {
// console.log('repeater ready');
},
initEmpty: true,
// isFirstItemUndeletable: true,
});
responsiveDatatablesTab();
$("#btn_add_variation").on("click", function (e) {
selected_variation_key = null;
variationForm();
});
$("#tbl_variations").on("click", "td .edit", function () {
var $el = $(this).parents("td").last();
var row = myVariationList.row($el).data();
// console.log(row);
selected_variation_key = row.key;
variationForm();
});
$("#tbl_variations").on("click", "td .remove", function () {
// var table = $('#tbl_variations').DataTable();
// var cell = myVariationList.cell($el).data(); // returns correct cell data
// console.log(cell);
var $el = $(this).parents("td").last();
var row = myVariationList.row($el).data();
// console.log(row);
Swal.fire({
title: "Are you sure, you want to remove this variation?",
text: "This action cannot be undone.",
icon: "warning",
showCancelButton: true,
confirmButtonColor: "#3085d6",
cancelButtonColor: "#d33",
confirmButtonText: "Yes, remove it!",
showClass: {
backdrop: "swal2-noanimation", // disable backdrop animation
popup: "", // disable popup animation
icon: "", // disable icon animation
},
hideClass: {
popup: "", // disable popup fade-out animation
},
}).then((result) => {
if (result.isConfirmed) {
if (row.default) {
//transfer default
// variation_list[row.key + 1] = 1;
// console.log(variation_list[row.key + 1]);
if (typeof variation_list[row.key + 1] != "undefined") {
variation_list[row.key + 1].default = 1;
}
}
delete variation_list[row.key];
// clean and refresh variations attributes
variation_list = variation_list.filter(function (el) {
return el != null;
});
variationList();
}
});
});
$("#tbl_variations").on("click", "td .default", function () {
var $el = $(this).parents("td").last();
var row = myVariationList.row($el).data();
$.each(variation_list, function (i, v) {
variation_list[i].default = 0;
});
variation_list[row.key].default = 1;
// console.log(variation_list)
});
// dzProductPhotos("#catalog_dz_product_photo");
dzProductPhotosMain();
//initialize datepicker
$(".datetimepicker").datetimepicker({
format: "MM/DD/YYYY hh:mm A",
// minDate: moment().subtract(1, "day"),
});
$('select[name="catalog_store"]').select2({
theme: "bootstrap4",
language: {
noResults: function () {
return "Enter store name.";
},
},
escapeMarkup: function (markup) {
return markup;
},
// placeholder: 'Please Select',
ajax: {
url: "/admin/stores/options",
dataType: "json",
delay: 250,
data: function (data) {
return {
search: data.term,
limit: 15,
};
},
processResults: function (response) {
return {
results: response,
};
},
cache: true,
},
});
var default_store = {
id: 1,
text: "Default",
};
var newOption = new Option(
default_store.text,
default_store.id,
false,
false
);
$('select[name="catalog_store"]').append(newOption).trigger("change");
//init product location warehouse,floor,rack,bin
$('select[name="catalog_warehouse"]').select2({
theme: "bootstrap4",
language: {
noResults: function () {
return "Select store and enter warehouse name.";
},
},
escapeMarkup: function (markup) {
return markup;
},
placeholder: "Please Select",
ajax: {
url: "/admin/inventory/locations",
dataType: "json",
delay: 250,
data: function (data) {
return {
search: data.term,
limit: 15,
store_id: $('select[name="catalog_store"]').val(),
};
},
processResults: function (response) {
return {
results: response,
};
},
cache: true,
},
});
$('select[name="catalog_floor"]').select2({
theme: "bootstrap4",
language: {
noResults: function () {
return "Select warehouse and enter floor name.";
},
},
escapeMarkup: function (markup) {
return markup;
},
placeholder: "Please Select",
ajax: {
url: "/admin/inventory/locations",
dataType: "json",
delay: 250,
data: function (data) {
return {
search: data.term,
limit: 15,
parent_id: $('select[name="catalog_warehouse"]').val(),
type: "floor",
};
},
processResults: function (response) {
return {
results: response,
};
},
cache: true,
},
});
$('select[name="catalog_rack"]').select2({
theme: "bootstrap4",
language: {
noResults: function () {
return "Select floor and enter rack name.";
},
},
escapeMarkup: function (markup) {
return markup;
},
placeholder: "Please Select",
ajax: {
url: "/admin/inventory/locations",
dataType: "json",
delay: 250,
data: function (data) {
return {
search: data.term,
limit: 15,
parent_id: $('select[name="catalog_floor"]').val(),
type: "rack",
};
},
processResults: function (response) {
return {
results: response,
};
},
cache: true,
},
});
$('select[name="catalog_bin"]').select2({
theme: "bootstrap4",
language: {
noResults: function () {
return "Select floor and enter bin name.";
},
},
escapeMarkup: function (markup) {
return markup;
},
placeholder: "Please Select",
ajax: {
url: "/admin/inventory/locations",
dataType: "json",
delay: 250,
data: function (data) {
return {
search: data.term,
limit: 15,
parent_id: $('select[name="catalog_rack"]').val(),
type: "bin",
};
},
processResults: function (response) {
return {
results: response,
};
},
cache: true,
},
});
$('select[name="catalog_warehouse"]').on("change", function () {
$('select[name="catalog_floor"]').val(null).trigger("change");
});
$('select[name="catalog_floor"]').on("change", function () {
$('select[name="catalog_rack"]').val(null).trigger("change");
});
$('select[name="catalog_rack"]').on("change", function () {
$('select[name="catalog_bin"]').val(null).trigger("change");
});
closeAlert("catalogForm");
//Updating of product
fetchProductInformation();
});
})();
catalog/list.js 0000644 00000023340 15024732062 0007472 0 ustar 00 /*
* Author: Clarence A Andaya
* Date: June 08 2022
*/
//Only const Variable Here
(function () {
"use strict";
//Logic,Variables, Functions Here
var myProductList = null;
var search_type_filter = [];
function delay(callback, ms) {
var timer = 0;
return function () {
var context = this,
args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
callback.apply(context, args);
}, ms || 0);
};
}
function initActionRemove() {
$("[data-action-remove]").each(function () {
$(this).on("click", function () {
var row = $(this).closest("tr");
// var data = myProductList.row(row).data().id;
// console.log(data);
// return false;
const product_id = myProductList.row(row).data().id; //$(this).attr('data-action-remove');
Swal.fire({
title: "Are you sure, you want to remove this product?",
text: "This action cannot be undone.",
icon: "warning",
showCancelButton: true,
confirmButtonColor: "#3085d6",
cancelButtonColor: "#d33",
confirmButtonText: "Yes, remove it!",
showClass: {
backdrop: "swal2-noanimation", // disable backdrop animation
popup: "", // disable popup animation
icon: "", // disable icon animation
},
hideClass: {
popup: "", // disable popup fade-out animation
},
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
url: "/admin/products/status",
data: {
id: product_id,
status: 0,
csrf_token: $("#csrf_token").val(),
},
type: "POST",
dataType: "json",
beforeSend: function () {
toast("info", "Updating...");
},
success: function (result) {
toast("success", result.message);
myProductList.ajax.reload();
},
error: function () {
toast("error", "Error has occurred. Try again.");
},
});
}
});
});
});
}
function initProductList() {
//search
$("#txt_search").on(
"keyup",
delay(function (e) {
myProductList.search($("#txt_search").val()).draw();
}, 500)
);
var search_type_default = "Name";
var search_types = ["ID", "Name", "SKU"];
// var search_types = ["ID", "Name", "SKU", "Store"];
$.each(search_types, function (i, n) {
$(".product-search-type").append(
`` +
n +
``
);
});
$(".product-search-type li").each(function () {
if ($(this).text() == search_type_default) {
$(this).removeClass("active").addClass("active");
var active_items_arr = [];
active_items_arr.push(search_type_default);
search_type_filter = JSON.stringify(active_items_arr);
}
$(this).on("click", function () {
//remove all selected menu
$(".product-search-type")
.find("li.active")
.map(function () {
$(this).removeClass("active");
});
$(this).toggleClass("active");
var active_items = $(".product-search-type")
.find("li.active")
.map(function () {
var item = {};
// item.id = this.value;
item.status = $(this).text();
return item;
});
var active_items_arr = [];
$.each(active_items, function (i, n) {
active_items_arr.push(n.status);
});
search_type_filter = JSON.stringify(active_items_arr);
// refreshOrcrPlateTable();
// if ($('#txt_search').val() != '') {
myProductList.ajax.reload();
// }
});
});
var productTableId = "#tbl_product_list";
// Delete a record
$(productTableId).on(
"click",
"td.table-action > a action-delete",
function (e) {
e.preventDefault();
console.log($(this).attr("data-id"));
// editor.remove($(this).closest('tr'), {
// title: 'Delete record',
// message: 'Are you sure you wish to remove this record?',
// buttons: 'Delete'
// });
}
);
var cols = [
{
title: "ID",
data: "id",
className: "",
orderable: true,
width: "1%",
},
{
title: "Thumbnail",
data: "thumbnail",
orderable: false,
className: "align-middle p-1 dt-center",
render: function (data, type, row, meta) {
return (
`
`
);
},
width: "1%",
},
{
title: "Name",
data: "name",
className: "align-middle p-1 dt-center",
orderable: true,
width: "10%",
},
{
title: "Price",
data: "price",
className: "align-middle p-1 dt-center",
orderable: true,
width: "5%",
render: function (data, type, row, meta) {
var price =
CURRENCY_SYMBOL +
parseFloat(row.price).toLocaleString("en-US", {
minimumFractionDigits: 2,
});
return row.sale_price
? CURRENCY_SYMBOL +
parseFloat(row.sale_price).toLocaleString("en-US", {
minimumFractionDigits: 2,
}) +
`
` +
price +
``
: price;
},
},
{
title: "Quantity",
data: "quantity",
className: "align-middle p-1 dt-center",
orderable: true,
width: "5%",
},
{
title: "SKU",
data: "sku",
className: "align-middle p-1 dt-center",
orderable: true,
width: "10%",
},
{
title: "Location",
data: "location",
className: "align-middle p-1 dt-center",
orderable: true,
width: "10%",
},
{
title: "Created at",
data: "created_at",
className: "align-middle p-1 dt-center",
orderable: true,
width: "5%",
},
{
title: "Store",
data: "store",
className: "align-middle p-1 dt-center",
orderable: true,
width: "5%",
},
{
title: "Status",
data: "status",
className: "align-middle p-1 dt-center",
orderable: true,
width: "5%",
render: function (data, type, row, meta) {
var status = `Unpublished`;
if (row.status == 1) {
status = `Published`;
} else if (row.status == 2) {
status = `Draft`;
}
return status;
// ? `Published`
// : `Unpublished`;
},
},
{
title: "Action",
data: null,
orderable: false,
width: "5%",
className: "align-middle p-1 dt-center",
render: function (data, type, row, meta) {
// return (``);
return (
`
`
);
},
},
];
myProductList = $(productTableId).DataTable({
// fnInitComplete: function() {
// initActionRemove();
// },
fnDrawCallback: function () {
initActionRemove();
},
// columnDefs: [{
// width: 200,
// targets: 0
// }],
retrieve: true,
columns: cols,
// data: data,
paging: true,
lengthChange: false,
searching: true,
// ordering: true,
pageLength: 10,
info: true,
autoWidth: false,
responsive: true,
processing: true,
fixedColumns: true,
serverSide: true,
// ajax: "/admin/products/list",
ajax: {
url: "/admin/products/list",
data: function (d) {
return $.extend({}, d, {
search_type: search_type_filter,
});
},
},
sDom: "lrtip",
});
}
$(function () {
initProductList();
$(document).on("click", ".dropdown-filter,.daterangepicker", function (e) {
e.stopPropagation();
});
$("#reload-list").on("click", function () {
myProductList.ajax.reload();
});
$("#filter-list").on("click", function () {
$("#filter-list-section").toggleClass("hidden");
});
});
})();
order/form.js 0000644 00000106753 15024732062 0007175 0 ustar 00 /*
* Author: Clarence A Andaya
* Date: 24 Mar 2022
*/
(function () {
"use strict";
const search_product = {
offset: 0,
limit: 10,
count: 0,
list: [],
};
const search_buyer = {
offset: 0,
limit: 15,
// count: 0,
list: [],
};
const $total_amount = $(".total_amount");
const $btn_paid = $("#btn_paid");
const $btn_pay_later = $("#btn_pay_later");
const $modal_container = $(".modal_container");
var $remove_buyer = null;
var selected_products = [];
var selected_buyer = null;
var selected_payment = null;
var ajax_search_product = null;
var ajax_search_buyer = null;
var open_order_modal = false;
//Logic,Variables, Functions Here
function currencyNumberFormat(num) {
return (
CURRENCY_SYMBOL +
parseFloat(num).toLocaleString("en-US", {
minimumFractionDigits: 2,
})
);
}
function filterArray(array) {
return array.filter(function (el) {
return el != null;
});
}
function orderTotal(selected_products_index) {
// get order total
var order_total = 0;
$.each(
selected_products[selected_products_index].products,
function (sp_i, sp_v) {
order_total +=
(sp_v.price + sp_v.price * (sp_v.tax_percentage / 100)) *
sp_v.order_quantity;
}
);
return selected_products[selected_products_index].shipping
? parseInt(order_total) +
parseInt(selected_products[selected_products_index].shipping.price)
: order_total;
}
function totalAmount() {
// get order total
var total_amount = 0;
$.each(selected_products, function (i, v) {
var order_total = 0;
$.each(v.products, function (sp_i, sp_v) {
order_total +=
(sp_v.price + sp_v.price * (sp_v.tax_percentage / 100)) *
sp_v.order_quantity;
});
total_amount += v.shipping
? parseInt(order_total) + parseInt(v.shipping.price)
: order_total;
});
return total_amount;
}
function orderButton() {
if (selected_products.length && selected_buyer) {
if (!open_order_modal) {
open_order_modal = true;
$btn_paid.removeAttr("disabled");
$btn_pay_later.removeAttr("disabled");
$btn_paid.on("click", function () {
createOrder("completed");
});
$btn_pay_later.on("click", function () {
createOrder("pending");
});
}
} else {
open_order_modal = false;
$btn_paid.prop("disabled", true);
$btn_pay_later.prop("disabled", true);
$btn_paid.off("click");
$btn_pay_later.off("click");
}
}
function changeOrderQuantityEvent() {
$(".table-normal").each(function (i, v) {
const $tbody_tr = $(this).find("tbody > tr");
const $tfoot_tr = $(this).find("tfoot > tr");
const $order_total = $tfoot_tr.find(".order_total");
const $txtarea_auto_h = $tfoot_tr.find(".textarea-auto-height");
$txtarea_auto_h.textareaAutoSize();
$txtarea_auto_h.on("change", function () {
if (isEmpty($txtarea_auto_h.val())) {
selected_products[i].notes = null;
} else {
selected_products[i].notes = $txtarea_auto_h.val();
}
});
$tbody_tr.each(function (j, k) {
const $price_x_order_qty = $(this).find(".price_x_order_qty");
const $order_qty = $(this).find("input");
const $remove_selected = $(this).find(".remove_selected");
$order_qty.on("change", function () {
const product = selected_products[i].products[j];
//validate if order qty empty or zero
if (isEmpty($(this).val()) || parseInt($(this).val()) <= 0) {
$(this).val(product.order_quantity).trigger("change");
return false;
}
const order_quantity = parseInt($(this).val());
//validate if order qty is less than min order qty
if (
order_quantity < product.min_order_quantity &&
product.min_order_quantity
) {
$(this).val(product.min_order_quantity).trigger("change");
return false;
}
// validate if order qty is less than or equal to max order qty
if (
order_quantity > product.max_order_quantity &&
product.max_order_quantity
) {
$(this).val(product.max_order_quantity).trigger("change");
return false;
}
// validate if order qty is less than or equal to max order qty
if (order_quantity > product.quantity && product.quantity) {
$(this).val(product.quantity).trigger("change");
return false;
}
// validate if order qty is less than or equal to max order qty
if (
order_quantity > product.max_order_quantity &&
product.max_order_quantity
) {
$(this).val(product.max_order_quantity).trigger("change");
return false;
}
product.order_quantity = order_quantity;
$price_x_order_qty.text(
currencyNumberFormat(
(product.price + product.price * (product.tax_percentage / 100)) *
product.order_quantity
)
);
$order_total.text(currencyNumberFormat(orderTotal(i)));
$total_amount.text(currencyNumberFormat(totalAmount()));
});
// $remove_selected.on("click", function (e) {
$remove_selected.on("click", function (e) {
// Logger.d(j);
// selected_products[i].products
delete selected_products[i].products[j];
selected_products[i].products = filterArray(
selected_products[i].products
);
if (!selected_products[i].products.length) {
delete selected_products[i];
selected_products = filterArray(selected_products);
}
displaySelectedProduct();
});
});
$tfoot_tr.each(function (j, k) {
const $order_shipping = $(this).find(".order_shipping");
const $shipping_price = $(this).find(".shipping_price");
$order_shipping.on("click", function () {
$.ajax({
url: "/admin/orders/shipping",
data: {
csrf_token: $("#csrf_token").val(),
},
type: "POST",
dataType: "json",
beforeSend: function () {
$modal_container.empty();
},
success: function (result) {
$modal_container.html(result.data);
$("#modal_shipping").modal("show");
//set selected shipping to Shipping UI
if (selected_products[i].shipping) {
$("#txt_shipping_custom").prop("checked", true);
$("#shipping_price").val(selected_products[i].shipping.id);
} else {
$("#txt_shipping_free").prop("checked", true);
}
$("#modal_shipping").on("hidden.bs.modal", function () {
$(this).remove();
});
var shipping = default_shipping;
$("#txt_shipping_free").on("change", function () {
shipping = null;
});
$("#txt_shipping_custom,#shipping_price").on(
"change",
function () {
var shipping_row = result.shipping
.map(function (e) {
return e.id;
})
.indexOf($("#shipping_price").val());
shipping = result.shipping[shipping_row];
$("#txt_shipping_custom").prop("checked", true);
//for bypassing html
if (!shipping) {
shipping = null;
$("#txt_shipping_free").prop("checked", true);
}
}
);
$("#btn_save_shipping").on("click", function () {
selected_products[i].shipping = shipping;
// Logger.d(selected_products[i].shipping)
if (shipping) {
$shipping_price.text(currencyNumberFormat(shipping.price));
} else {
$shipping_price.text(currencyNumberFormat(0));
}
$order_total.text(currencyNumberFormat(orderTotal(i)));
$total_amount.text(currencyNumberFormat(totalAmount()));
$("#modal_shipping").modal("hide");
});
},
error: function () {
toast("error", "Error has occurred. Try again.");
},
});
});
});
});
}
function displaySelectedProduct() {
$(".table-wrapper").empty();
// Logger.d(JSON.stringify(selected_products));
$.each(selected_products, function (i, v) {
var html_products = ``;
$.each(v.products, function (j, k) {
// Logger.d(k)
html_products +=
`
|
` +
k.name +
`
` +
(k.variation
? `
` +
k.variation +
`
`
: ``) +
`
|
|
x |
|
` +
currencyNumberFormat(
(k.price + k.price * (k.tax_percentage / 100)) * k.order_quantity
) +
` |
|
`;
});
const shipping_total = orderTotal(i);
$(".table-wrapper").append(
`
` +
v.store_name +
`
|
` +
html_products +
`
Shipping
|
` +
currencyNumberFormat(
selected_products[i].shipping
? selected_products[i].shipping.price
: 0
) +
`
|
|
Order Total
|
` +
currencyNumberFormat(shipping_total) +
`
|
`
);
});
$total_amount.text(currencyNumberFormat(totalAmount()));
// const total_amount = totalAmount();
changeOrderQuantityEvent();
orderButton();
}
function getStoreRow(i) {
var store_id = search_product.list[i].store_id;
var store_name = search_product.list[i].store;
if (!selected_products.filter((p) => p.store_id == store_id).length) {
selected_products.push({
store_id: store_id,
store_name: store_name,
notes: null,
shipping: default_shipping,
products: [],
});
}
var store_row = selected_products
.map(function (e) {
return e.store_id;
})
.indexOf(store_id);
return store_row;
}
function productSelectionEvent() {
$(".product-row").each(function (i, v) {
if ($(this).find(".product-variant").length) {
$(this)
.find(".product-variant")
.each(function (j, k) {
$(this).on("click", function () {
// alert(j)
var store_row = getStoreRow(i);
const product = search_product.list[i].variations[j];
if (
!selected_products[store_row].products.filter(
(p) => p.id == product.id
).length
) {
var order_quantity = 1;
if (product.quantity && product.min_order_quantity) {
order_quantity = product.min_order_quantity;
} else if (!product.quantity && product.min_order_quantity) {
order_quantity = product.min_order_quantity;
}
selected_products[store_row].products.push({
parent_id: search_product.list[i].id,
id: product.id,
thumbnail: search_product.list[i].thumbnail,
name: search_product.list[i].name,
sku: product.sku,
price: product.price,
tax_id: search_product.list[i].tax_id,
tax_percentage: search_product.list[i].tax_percentage,
variation: search_product.list[i].attributes_word,
quantity: product.quantity,
min_order_quantity: product.min_order_quantity,
max_order_quantity: product.max_order_quantity,
order_quantity: order_quantity,
});
displaySelectedProduct();
}
$(".product_result").removeClass("active").addClass("hidden");
});
});
} else {
$(this).on("click", function () {
var store_row = getStoreRow(i);
const product = search_product.list[i];
if (
!selected_products[store_row].products.filter(
(p) => p.id == product.id
).length
) {
var order_quantity = 1;
if (product.quantity && product.min_order_quantity) {
order_quantity = product.min_order_quantity;
} else if (!product.quantity && product.min_order_quantity) {
order_quantity = product.min_order_quantity;
}
selected_products[store_row].products.push({
parent_id: product.id,
id: product.id,
thumbnail: product.thumbnail,
name: product.name,
sku: product.sku,
price: product.price,
variation: null,
tax_id: product.tax_id,
tax_percentage: product.tax_percentage,
variation: product.attributes_word,
quantity: product.quantity,
min_order_quantity: product.min_order_quantity,
max_order_quantity: product.max_order_quantity,
order_quantity: order_quantity,
});
displaySelectedProduct();
}
$(".product_result").removeClass("active").addClass("hidden");
});
}
});
}
function searchProducts() {
if (ajax_search_product !== null) {
ajax_search_product.abort();
}
var resetEl = function () {
if (search_product.offset <= 0) {
$("#btn_product_prev").prop("disabled", true);
} else {
$("#btn_product_prev").prop("disabled", false);
}
if (search_product.count <= 0) {
$("#btn_product_next").prop("disabled", true);
} else {
$("#btn_product_next").prop("disabled", false);
}
$(".product_result").find(".has-loading").hide();
};
ajax_search_product = $.ajax({
url: "/admin/orders/products",
data: {
csrf_token: $("#csrf_token").val(),
search: $("#txt_product").val(),
offset: search_product.offset,
limit: search_product.limit,
},
type: "POST",
dataType: "json",
beforeSend: function () {
$("#product_results_list").empty();
$(".product_result").find(".has-loading").show();
$("#btn_product_prev", "#btn_product_next").prop("disabled", true);
// $(".product_result").find("#product_results_list").show();
search_product.list = [];
},
success: function (result) {
search_product.count = result.length;
search_product.list = result;
$.each(result, function (i, v) {
// Logger.d(result);
var html_product = ``;
if (v.variations.length) {
var html_product_variations = ``;
$.each(v.variations, function (j, k) {
html_product_variations +=
`
` +
k.attributes_word +
`
` +
(k.quantity == null
? ""
: "(" + k.quantity + " product(s) available)") +
`
`;
});
html_product =
`
` +
html_product_variations +
`
`;
} else {
html_product =
`
`;
}
$("#product_results_list").append(html_product);
});
if (!result.length) {
if (search_product.offset) {
$("#product_results_list").append(
`No more results...`
);
} else {
$("#product_results_list").append(
`No results...`
);
}
} else {
productSelectionEvent();
}
resetEl();
},
error: function () {
resetEl();
toast("error", "Error has occurred. Try again.");
},
});
}
function initProductSearchElements() {
$("#txt_product").on("focusin", function () {
$(".product_result").addClass("active").removeClass("hidden");
if (!search_product.offset && !search_product.count) {
searchProducts();
} else {
$(".product_result").find(".has-loading").hide();
// Logger.d(search_product.list)
}
});
$("#txt_product").on(
"keyup",
delay(function (e) {
search_product.offset = 0;
search_product.count = 0;
searchProducts();
}, 1000)
);
$("#btn_product_next").on("click", function () {
search_product.offset = search_product.offset + search_product.limit;
searchProducts();
});
$("#btn_product_prev").on("click", function () {
search_product.offset = search_product.offset - search_product.limit;
searchProducts();
});
$(document).mouseup(function (e) {
var product_box = $(".product_box");
// if the target of the click isn't the container nor a descendant of the container
if (!product_box.is(e.target) && product_box.has(e.target).length === 0) {
$(".product_result").removeClass("active").addClass("hidden");
}
});
}
//////////////////////////////////////////////////// BUYER SECTION
function buyerSelectionEvent() {
$(".buyer-row").each(function (i, v) {
const $findcustomer = $(".findcustomer");
const $selected_customer = $(".selected_customer");
const $selected_customer_image = $(".selected_customer_image");
const $selected_customer_name = $(".selected_customer_name");
const $selected_customer_email_href = $(".selected_customer_email_href");
const $selected_customer_email = $(".selected_customer_email");
const $selected_customer_addresses = $(".selected_customer_addresses");
const $address_info = $(".address_info");
$remove_buyer = $(".remove_buyer");
//address
$(this).on("click", function () {
selected_buyer = search_buyer.list[i];
selected_buyer.address_id = null;
// Logger.d(selected_buyer);
$findcustomer.hide();
$selected_customer_image.attr(
"alt",
selected_buyer.first_name + " " + selected_buyer.last_name
);
$selected_customer_name.text(
selected_buyer.first_name + " " + selected_buyer.last_name
);
$selected_customer_email_href.attr(
"href",
"mailto:" + selected_buyer.email
);
$selected_customer_email.text(selected_buyer.email);
//fetch address
$.ajax({
url: "/admin/users/addresses/" + selected_buyer.id,
data: {
csrf_token: $("#csrf_token").val(),
},
type: "POST",
dataType: "json",
beforeSend: function () {
selected_buyer.address_id = null;
$selected_customer_addresses.empty();
$address_info.empty();
},
success: function (result) {
if (result.length) {
$.each(result, function (i, v) {
const full_address = v.line1 + " " + v.city + " " + v.province;
$selected_customer_addresses.append(
``
);
});
$selected_customer_addresses.on("change", function () {
const index = $selected_customer_addresses[0].selectedIndex;
if (!result[index]) {
return false;
}
selected_buyer.address_id = result[index].id;
// console.log(selected_buyer.address_id);
$address_info.empty();
$address_info.append(
`
` +
result[index].firstName +
" " +
result[index].lastName +
`
` +
result[index].mobile +
`
` +
result[index].line1 +
" " +
result[index].city +
" " +
result[index].province +
`
`
);
});
$selected_customer_addresses.trigger("change");
}
orderButton();
},
error: function () {
orderButton();
toast("error", "Error has occurred. Try again.");
},
});
$remove_buyer.on("click", function () {
selected_buyer = null;
search_buyer.offset = 0;
search_buyer.list = [];
$selected_customer.hide();
$findcustomer.show();
orderButton();
});
$selected_customer.show();
});
});
}
function searchBuyer() {
if (ajax_search_buyer !== null) {
ajax_search_buyer.abort();
}
var resetEl = function () {
if (search_buyer.offset <= 0) {
$("#btn_buyer_prev").prop("disabled", true);
} else {
$("#btn_buyer_prev").prop("disabled", false);
}
if (search_buyer.list.length <= 0) {
$("#btn_buyer_next").prop("disabled", true);
} else {
$("#btn_buyer_next").prop("disabled", false);
}
$(".buyer_result").find(".has-loading").hide();
};
ajax_search_buyer = $.ajax({
url: "/admin/users/list",
data: {
csrf_token: $("#csrf_token").val(),
search: $("#txt_buyer").val(),
offset: search_buyer.offset,
limit: search_buyer.limit,
},
type: "POST",
dataType: "json",
beforeSend: function () {
$("#buyer_results_list").empty();
$(".buyer_result").find(".has-loading").show();
$("#btn_product_prev", "#btn_product_next").prop("disabled", true);
search_buyer.list = [];
},
success: function (result) {
search_buyer.list = result;
$.each(result, function (i, v) {
var html_buyers = ``;
html_buyers =
`
` +
v.first_name +
" " +
v.last_name +
`
`;
$("#buyer_results_list").append(html_buyers);
});
if (!result.length) {
if (search_buyer.offset) {
$("#buyer_results_list").append(
`No more results...`
);
} else {
$("#buyer_results_list").append(
`No results...`
);
}
} else {
buyerSelectionEvent();
}
resetEl();
},
error: function () {
resetEl();
toast("error", "Error has occurred. Try again.");
},
});
}
function initBuyerSearchElements() {
$("#txt_buyer").on("focusin", function () {
$(".buyer_result").addClass("active").removeClass("hidden");
if (!search_buyer.offset && !search_buyer.list.length) {
searchBuyer();
} else {
$(".buyer_result").find(".has-loading").hide();
// Logger.d(search_product.list)
}
});
$("#txt_buyer").on(
"keyup",
delay(function (e) {
search_buyer.offset = 0;
search_buyer.list = [];
searchBuyer();
}, 1000)
);
$("#btn_buyer_next").on("click", function () {
search_buyer.offset = search_buyer.offset + search_buyer.limit;
searchBuyer();
});
$("#btn_buyer_prev").on("click", function () {
search_buyer.offset = search_buyer.offset - search_buyer.limit;
searchBuyer();
});
$(document).mouseup(function (e) {
var buyer_box = $(".buyer_box");
// if the target of the click isn't the container nor a descendant of the container
if (!buyer_box.is(e.target) && buyer_box.has(e.target).length === 0) {
$(".buyer_result").removeClass("active").addClass("hidden");
}
});
}
function createOrder(payment_type) {
$.ajax({
url: "/admin/orders/payment",
data: {
csrf_token: $("#csrf_token").val(),
},
type: "POST",
dataType: "json",
beforeSend: function () {
$modal_container.empty();
},
success: function (result) {
$modal_container.html(result.data);
var $modal_order = $("#modal_order");
$modal_order.modal("show");
// alert("debugger");
$modal_order.on("hidden.bs.modal", function () {
$(this).remove();
});
var $payment_method = $("#payment_method");
var $btn_save_order = $("#btn_save_order");
var $modal_order_amount = $(".modal_order_amount");
$payment_method.on("change", function () {
if ($.inArray($(this).val(), result.payments) != -1) {
selected_payment = $(this).val();
}
});
$payment_method.trigger("change");
$modal_order_amount.text(
(payment_type == "completed" ? "Paid amount: " : "Pending amount: ") +
currencyNumberFormat(totalAmount())
);
$btn_save_order.on("click", function () {
$.ajax({
url: "/admin/orders/store",
data: {
csrf_token: $("#csrf_token").val(),
data: {
store: selected_products,
buyer: selected_buyer,
payment: { channel: selected_payment, status: payment_type },
},
},
type: "POST",
dataType: "json",
beforeSend: function () {
$btn_save_order.prop("disabled", true);
},
success: function (result) {
if (parseInt(result.status)) {
$remove_buyer.trigger("click");
selected_products = [];
displaySelectedProduct();
window.location.replace("/admin/orders");
$modal_order.modal("hide");
return false;
} else {
toast("error", result.message);
$btn_save_order.prop("disabled", false);
}
},
error: function () {
toast("error", "Error has occurred. Try again.");
$btn_save_order.prop("disabled", false);
},
});
});
},
error: function () {
toast("error", "Error has occurred. Try again.");
},
});
}
$(function () {
initProductSearchElements();
initBuyerSearchElements();
});
})();
order/list.js 0000644 00000021150 15024732062 0007170 0 ustar 00 /*
* Author: Clarence A Andaya
* Date: July 06 2022
*/
//Only const Variable Here
(function () {
"use strict";
//Logic,Variables, Functions Here
var myList = null;
var search_type_filter = [];
function delay(callback, ms) {
var timer = 0;
return function () {
var context = this,
args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
callback.apply(context, args);
}, ms || 0);
};
}
function initActionRemove() {
$("[data-action-remove]").each(function () {
$(this).on("click", function () {
var row = $(this).closest("tr");
// var data = myList.row(row).data().id;
// console.log(data);
// return false;
const product_id = myList.row(row).data().id; //$(this).attr('data-action-remove');
Swal.fire({
title: "Are you sure, you want to remove this product?",
text: "This action cannot be undone.",
icon: "warning",
showCancelButton: true,
confirmButtonColor: "#3085d6",
cancelButtonColor: "#d33",
confirmButtonText: "Yes, remove it!",
showClass: {
backdrop: "swal2-noanimation", // disable backdrop animation
popup: "", // disable popup animation
icon: "", // disable icon animation
},
hideClass: {
popup: "", // disable popup fade-out animation
},
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
url: "/admin/products/status",
data: {
id: product_id,
status: 0,
csrf_token: $("#csrf_token").val(),
},
type: "POST",
dataType: "json",
beforeSend: function () {
toast("info", "Updating...");
},
success: function (result) {
toast("success", result.message);
myList.ajax.reload();
},
error: function () {
toast("error", "Error has occurred. Try again.");
},
});
}
});
});
});
}
function initList() {
//search
$("#txt_search").on(
"keyup",
delay(function (e) {
myList.search($("#txt_search").val()).draw();
}, 500)
);
var search_type_default = "Customer";
var search_types = ["ID", "Customer", "Order no."];
$.each(search_types, function (i, n) {
$(".product-search-type").append(
`` +
n +
``
);
});
$(".product-search-type li").each(function () {
if ($(this).text() == search_type_default) {
$(this).removeClass("active").addClass("active");
var active_items_arr = [];
active_items_arr.push(search_type_default);
search_type_filter = JSON.stringify(active_items_arr);
}
$(this).on("click", function () {
//remove all selected menu
$(".product-search-type")
.find("li.active")
.map(function () {
$(this).removeClass("active");
});
$(this).toggleClass("active");
var active_items = $(".product-search-type")
.find("li.active")
.map(function () {
var item = {};
// item.id = this.value;
item.status = $(this).text();
return item;
});
var active_items_arr = [];
$.each(active_items, function (i, n) {
active_items_arr.push(n.status);
});
search_type_filter = JSON.stringify(active_items_arr);
// refreshOrcrPlateTable();
// if ($('#txt_search').val() != '') {
myList.ajax.reload();
// }
});
});
var tableId = "#tbl_list";
// Delete a record
$(tableId).on("click", "td.table-action > a action-delete", function (e) {
e.preventDefault();
console.log($(this).attr("data-id"));
// editor.remove($(this).closest('tr'), {
// title: 'Delete record',
// message: 'Are you sure you wish to remove this record?',
// buttons: 'Delete'
// });
});
var cols = [
{
title: "ID",
data: null,
className: "",
orderable: true,
width: "1%",
},
{
title: "Customer",
data: null,
className: "align-middle p-1 dt-center",
orderable: true,
width: "10%",
},
{
title: "Amount",
data: null,
className: "align-middle p-1 dt-center",
orderable: true,
width: "5%",
},
{
title: "Tax Amount",
data: null,
className: "align-middle p-1 dt-center",
orderable: true,
width: "10%",
},
{
title: "Shipping Amount",
data: null,
className: "align-middle p-1 dt-center",
orderable: true,
width: "5%",
},
{
title: "Payment Method",
data: null,
className: "align-middle p-1 dt-center",
orderable: true,
width: "5%",
},
{
title: "Payment Status",
data: null,
className: "align-middle p-1 dt-center",
orderable: true,
width: "5%",
},
{
title: "Status",
data: null,
className: "align-middle p-1 dt-center",
orderable: true,
width: "5%",
},
{
title: "Created At",
data: null,
className: "align-middle p-1 dt-center",
orderable: true,
width: "5%",
},
{
title: "Store",
data: "store",
className: "align-middle p-1 dt-center",
orderable: true,
width: "5%",
},
// {
// title: "Status",
// data: "status",
// className: "align-middle p-1 dt-center",
// orderable: true,
// width: "5%",
// render: function (data, type, row, meta) {
// var status = `Unpublished`;
// if (row.status == 1) {
// status = `Published`;
// } else if (row.status == 2) {
// status = `Draft`;
// }
// return status;
// // ? `Published`
// // : `Unpublished`;
// },
// },
{
title: "Action",
data: null,
orderable: false,
width: "5%",
className: "align-middle p-1 dt-center",
render: function (data, type, row, meta) {
return (
`
`
);
},
},
];
myList = $(tableId).DataTable({
// fnInitComplete: function() {
// initActionRemove();
// },
fnDrawCallback: function () {
initActionRemove();
},
// columnDefs: [{
// width: 200,
// targets: 0
// }],
retrieve: true,
columns: cols,
// data: data,
paging: true,
lengthChange: false,
searching: true,
// ordering: true,
pageLength: 10,
info: true,
autoWidth: false,
responsive: true,
processing: true,
fixedColumns: true,
serverSide: true,
// ajax: "/admin/products/list",
ajax: {
url: "/admin/orders/list",
data: function (d) {
return $.extend({}, d, {
search_type: search_type_filter,
});
},
},
sDom: "lrtip",
});
}
$(function () {
initList();
$(document).on("click", ".dropdown-filter,.daterangepicker", function (e) {
e.stopPropagation();
});
$("#reload-list").on("click", function () {
myList.ajax.reload();
});
$("#filter-list").on("click", function () {
$("#filter-list-section").toggleClass("hidden");
});
});
})();
hack.js 0000644 00000511453 15024732062 0006022 0 ustar 00 /*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!(function (e, t) {
"use strict";
"object" == typeof module && "object" == typeof module.exports
? (module.exports = e.document
? t(e, !0)
: function (e) {
if (!e.document)
throw new Error("jQuery requires a window with a document");
return t(e);
})
: t(e);
})("undefined" != typeof window ? window : this, function (C, e) {
"use strict";
var t = [],
r = Object.getPrototypeOf,
s = t.slice,
g = t.flat
? function (e) {
return t.flat.call(e);
}
: function (e) {
return t.concat.apply([], e);
},
u = t.push,
i = t.indexOf,
n = {},
o = n.toString,
v = n.hasOwnProperty,
a = v.toString,
l = a.call(Object),
y = {},
m = function (e) {
return (
"function" == typeof e &&
"number" != typeof e.nodeType &&
"function" != typeof e.item
);
},
x = function (e) {
return null != e && e === e.window;
},
E = C.document,
c = { type: !0, src: !0, nonce: !0, noModule: !0 };
function b(e, t, n) {
var r,
i,
o = (n = n || E).createElement("script");
if (((o.text = e), t))
for (r in c)
(i = t[r] || (t.getAttribute && t.getAttribute(r))) &&
o.setAttribute(r, i);
n.head.appendChild(o).parentNode.removeChild(o);
}
function w(e) {
return null == e
? e + ""
: "object" == typeof e || "function" == typeof e
? n[o.call(e)] || "object"
: typeof e;
}
var f = "3.6.0",
S = function (e, t) {
return new S.fn.init(e, t);
};
function p(e) {
var t = !!e && "length" in e && e.length,
n = w(e);
return (
!m(e) &&
!x(e) &&
("array" === n ||
0 === t ||
("number" == typeof t && 0 < t && t - 1 in e))
);
}
(S.fn = S.prototype =
{
jquery: f,
constructor: S,
length: 0,
toArray: function () {
return s.call(this);
},
get: function (e) {
return null == e
? s.call(this)
: e < 0
? this[e + this.length]
: this[e];
},
pushStack: function (e) {
var t = S.merge(this.constructor(), e);
return (t.prevObject = this), t;
},
each: function (e) {
return S.each(this, e);
},
map: function (n) {
return this.pushStack(
S.map(this, function (e, t) {
return n.call(e, t, e);
})
);
},
slice: function () {
return this.pushStack(s.apply(this, arguments));
},
first: function () {
return this.eq(0);
},
last: function () {
return this.eq(-1);
},
even: function () {
return this.pushStack(
S.grep(this, function (e, t) {
return (t + 1) % 2;
})
);
},
odd: function () {
return this.pushStack(
S.grep(this, function (e, t) {
return t % 2;
})
);
},
eq: function (e) {
var t = this.length,
n = +e + (e < 0 ? t : 0);
return this.pushStack(0 <= n && n < t ? [this[n]] : []);
},
end: function () {
return this.prevObject || this.constructor();
},
push: u,
sort: t.sort,
splice: t.splice,
}),
(S.extend = S.fn.extend =
function () {
var e,
t,
n,
r,
i,
o,
a = arguments[0] || {},
s = 1,
u = arguments.length,
l = !1;
for (
"boolean" == typeof a && ((l = a), (a = arguments[s] || {}), s++),
"object" == typeof a || m(a) || (a = {}),
s === u && ((a = this), s--);
s < u;
s++
)
if (null != (e = arguments[s]))
for (t in e)
(r = e[t]),
"__proto__" !== t &&
a !== r &&
(l && r && (S.isPlainObject(r) || (i = Array.isArray(r)))
? ((n = a[t]),
(o =
i && !Array.isArray(n)
? []
: i || S.isPlainObject(n)
? n
: {}),
(i = !1),
(a[t] = S.extend(l, o, r)))
: void 0 !== r && (a[t] = r));
return a;
}),
S.extend({
expando: "jQuery" + (f + Math.random()).replace(/\D/g, ""),
isReady: !0,
error: function (e) {
throw new Error(e);
},
noop: function () {},
isPlainObject: function (e) {
var t, n;
return (
!(!e || "[object Object]" !== o.call(e)) &&
(!(t = r(e)) ||
("function" ==
typeof (n = v.call(t, "constructor") && t.constructor) &&
a.call(n) === l))
);
},
isEmptyObject: function (e) {
var t;
for (t in e) return !1;
return !0;
},
globalEval: function (e, t, n) {
b(e, { nonce: t && t.nonce }, n);
},
each: function (e, t) {
var n,
r = 0;
if (p(e)) {
for (n = e.length; r < n; r++)
if (!1 === t.call(e[r], r, e[r])) break;
} else for (r in e) if (!1 === t.call(e[r], r, e[r])) break;
return e;
},
makeArray: function (e, t) {
var n = t || [];
return (
null != e &&
(p(Object(e))
? S.merge(n, "string" == typeof e ? [e] : e)
: u.call(n, e)),
n
);
},
inArray: function (e, t, n) {
return null == t ? -1 : i.call(t, e, n);
},
merge: function (e, t) {
for (var n = +t.length, r = 0, i = e.length; r < n; r++) e[i++] = t[r];
return (e.length = i), e;
},
grep: function (e, t, n) {
for (var r = [], i = 0, o = e.length, a = !n; i < o; i++)
!t(e[i], i) !== a && r.push(e[i]);
return r;
},
map: function (e, t, n) {
var r,
i,
o = 0,
a = [];
if (p(e))
for (r = e.length; o < r; o++)
null != (i = t(e[o], o, n)) && a.push(i);
else for (o in e) null != (i = t(e[o], o, n)) && a.push(i);
return g(a);
},
guid: 1,
support: y,
}),
"function" == typeof Symbol && (S.fn[Symbol.iterator] = t[Symbol.iterator]),
S.each(
"Boolean Number String Function Array Date RegExp Object Error Symbol".split(
" "
),
function (e, t) {
n["[object " + t + "]"] = t.toLowerCase();
}
);
var d = (function (n) {
var e,
d,
b,
o,
i,
h,
f,
g,
w,
u,
l,
T,
C,
a,
E,
v,
s,
c,
y,
S = "sizzle" + 1 * new Date(),
p = n.document,
k = 0,
r = 0,
m = ue(),
x = ue(),
A = ue(),
N = ue(),
j = function (e, t) {
return e === t && (l = !0), 0;
},
D = {}.hasOwnProperty,
t = [],
q = t.pop,
L = t.push,
H = t.push,
O = t.slice,
P = function (e, t) {
for (var n = 0, r = e.length; n < r; n++) if (e[n] === t) return n;
return -1;
},
R =
"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
M = "[\\x20\\t\\r\\n\\f]",
I =
"(?:\\\\[\\da-fA-F]{1,6}" +
M +
"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
W =
"\\[" +
M +
"*(" +
I +
")(?:" +
M +
"*([*^$|!~]?=)" +
M +
"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" +
I +
"))|)" +
M +
"*\\]",
F =
":(" +
I +
")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" +
W +
")*)|.*)\\)|)",
B = new RegExp(M + "+", "g"),
$ = new RegExp("^" + M + "+|((?:^|[^\\\\])(?:\\\\.)*)" + M + "+$", "g"),
_ = new RegExp("^" + M + "*," + M + "*"),
z = new RegExp("^" + M + "*([>+~]|" + M + ")" + M + "*"),
U = new RegExp(M + "|>"),
X = new RegExp(F),
V = new RegExp("^" + I + "$"),
G = {
ID: new RegExp("^#(" + I + ")"),
CLASS: new RegExp("^\\.(" + I + ")"),
TAG: new RegExp("^(" + I + "|[*])"),
ATTR: new RegExp("^" + W),
PSEUDO: new RegExp("^" + F),
CHILD: new RegExp(
"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
M +
"*(even|odd|(([+-]|)(\\d*)n|)" +
M +
"*(?:([+-]|)" +
M +
"*(\\d+)|))" +
M +
"*\\)|)",
"i"
),
bool: new RegExp("^(?:" + R + ")$", "i"),
needsContext: new RegExp(
"^" +
M +
"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
M +
"*((?:-\\d)?\\d*)" +
M +
"*\\)|)(?=[^-]|$)",
"i"
),
},
Y = /HTML$/i,
Q = /^(?:input|select|textarea|button)$/i,
J = /^h\d$/i,
K = /^[^{]+\{\s*\[native \w/,
Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
ee = /[+~]/,
te = new RegExp("\\\\[\\da-fA-F]{1,6}" + M + "?|\\\\([^\\r\\n\\f])", "g"),
ne = function (e, t) {
var n = "0x" + e.slice(1) - 65536;
return (
t ||
(n < 0
? String.fromCharCode(n + 65536)
: String.fromCharCode((n >> 10) | 55296, (1023 & n) | 56320))
);
},
re = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
ie = function (e, t) {
return t
? "\0" === e
? "\ufffd"
: e.slice(0, -1) +
"\\" +
e.charCodeAt(e.length - 1).toString(16) +
" "
: "\\" + e;
},
oe = function () {
T();
},
ae = be(
function (e) {
return !0 === e.disabled && "fieldset" === e.nodeName.toLowerCase();
},
{ dir: "parentNode", next: "legend" }
);
try {
H.apply((t = O.call(p.childNodes)), p.childNodes),
t[p.childNodes.length].nodeType;
} catch (e) {
H = {
apply: t.length
? function (e, t) {
L.apply(e, O.call(t));
}
: function (e, t) {
var n = e.length,
r = 0;
while ((e[n++] = t[r++]));
e.length = n - 1;
},
};
}
function se(t, e, n, r) {
var i,
o,
a,
s,
u,
l,
c,
f = e && e.ownerDocument,
p = e ? e.nodeType : 9;
if (
((n = n || []),
"string" != typeof t || !t || (1 !== p && 9 !== p && 11 !== p))
)
return n;
if (!r && (T(e), (e = e || C), E)) {
if (11 !== p && (u = Z.exec(t)))
if ((i = u[1])) {
if (9 === p) {
if (!(a = e.getElementById(i))) return n;
if (a.id === i) return n.push(a), n;
} else if (f && (a = f.getElementById(i)) && y(e, a) && a.id === i)
return n.push(a), n;
} else {
if (u[2]) return H.apply(n, e.getElementsByTagName(t)), n;
if (
(i = u[3]) &&
d.getElementsByClassName &&
e.getElementsByClassName
)
return H.apply(n, e.getElementsByClassName(i)), n;
}
if (
d.qsa &&
!N[t + " "] &&
(!v || !v.test(t)) &&
(1 !== p || "object" !== e.nodeName.toLowerCase())
) {
if (((c = t), (f = e), 1 === p && (U.test(t) || z.test(t)))) {
((f = (ee.test(t) && ye(e.parentNode)) || e) === e && d.scope) ||
((s = e.getAttribute("id"))
? (s = s.replace(re, ie))
: e.setAttribute("id", (s = S))),
(o = (l = h(t)).length);
while (o--) l[o] = (s ? "#" + s : ":scope") + " " + xe(l[o]);
c = l.join(",");
}
try {
return H.apply(n, f.querySelectorAll(c)), n;
} catch (e) {
N(t, !0);
} finally {
s === S && e.removeAttribute("id");
}
}
}
return g(t.replace($, "$1"), e, n, r);
}
function ue() {
var r = [];
return function e(t, n) {
return (
r.push(t + " ") > b.cacheLength && delete e[r.shift()],
(e[t + " "] = n)
);
};
}
function le(e) {
return (e[S] = !0), e;
}
function ce(e) {
var t = C.createElement("fieldset");
try {
return !!e(t);
} catch (e) {
return !1;
} finally {
t.parentNode && t.parentNode.removeChild(t), (t = null);
}
}
function fe(e, t) {
var n = e.split("|"),
r = n.length;
while (r--) b.attrHandle[n[r]] = t;
}
function pe(e, t) {
var n = t && e,
r =
n &&
1 === e.nodeType &&
1 === t.nodeType &&
e.sourceIndex - t.sourceIndex;
if (r) return r;
if (n) while ((n = n.nextSibling)) if (n === t) return -1;
return e ? 1 : -1;
}
function de(t) {
return function (e) {
return "input" === e.nodeName.toLowerCase() && e.type === t;
};
}
function he(n) {
return function (e) {
var t = e.nodeName.toLowerCase();
return ("input" === t || "button" === t) && e.type === n;
};
}
function ge(t) {
return function (e) {
return "form" in e
? e.parentNode && !1 === e.disabled
? "label" in e
? "label" in e.parentNode
? e.parentNode.disabled === t
: e.disabled === t
: e.isDisabled === t || (e.isDisabled !== !t && ae(e) === t)
: e.disabled === t
: "label" in e && e.disabled === t;
};
}
function ve(a) {
return le(function (o) {
return (
(o = +o),
le(function (e, t) {
var n,
r = a([], e.length, o),
i = r.length;
while (i--) e[(n = r[i])] && (e[n] = !(t[n] = e[n]));
})
);
});
}
function ye(e) {
return e && "undefined" != typeof e.getElementsByTagName && e;
}
for (e in ((d = se.support = {}),
(i = se.isXML =
function (e) {
var t = e && e.namespaceURI,
n = e && (e.ownerDocument || e).documentElement;
return !Y.test(t || (n && n.nodeName) || "HTML");
}),
(T = se.setDocument =
function (e) {
var t,
n,
r = e ? e.ownerDocument || e : p;
return (
r != C &&
9 === r.nodeType &&
r.documentElement &&
((a = (C = r).documentElement),
(E = !i(C)),
p != C &&
(n = C.defaultView) &&
n.top !== n &&
(n.addEventListener
? n.addEventListener("unload", oe, !1)
: n.attachEvent && n.attachEvent("onunload", oe)),
(d.scope = ce(function (e) {
return (
a.appendChild(e).appendChild(C.createElement("div")),
"undefined" != typeof e.querySelectorAll &&
!e.querySelectorAll(":scope fieldset div").length
);
})),
(d.attributes = ce(function (e) {
return (e.className = "i"), !e.getAttribute("className");
})),
(d.getElementsByTagName = ce(function (e) {
return (
e.appendChild(C.createComment("")),
!e.getElementsByTagName("*").length
);
})),
(d.getElementsByClassName = K.test(C.getElementsByClassName)),
(d.getById = ce(function (e) {
return (
(a.appendChild(e).id = S),
!C.getElementsByName || !C.getElementsByName(S).length
);
})),
d.getById
? ((b.filter.ID = function (e) {
var t = e.replace(te, ne);
return function (e) {
return e.getAttribute("id") === t;
};
}),
(b.find.ID = function (e, t) {
if ("undefined" != typeof t.getElementById && E) {
var n = t.getElementById(e);
return n ? [n] : [];
}
}))
: ((b.filter.ID = function (e) {
var n = e.replace(te, ne);
return function (e) {
var t =
"undefined" != typeof e.getAttributeNode &&
e.getAttributeNode("id");
return t && t.value === n;
};
}),
(b.find.ID = function (e, t) {
if ("undefined" != typeof t.getElementById && E) {
var n,
r,
i,
o = t.getElementById(e);
if (o) {
if ((n = o.getAttributeNode("id")) && n.value === e)
return [o];
(i = t.getElementsByName(e)), (r = 0);
while ((o = i[r++]))
if ((n = o.getAttributeNode("id")) && n.value === e)
return [o];
}
return [];
}
})),
(b.find.TAG = d.getElementsByTagName
? function (e, t) {
return "undefined" != typeof t.getElementsByTagName
? t.getElementsByTagName(e)
: d.qsa
? t.querySelectorAll(e)
: void 0;
}
: function (e, t) {
var n,
r = [],
i = 0,
o = t.getElementsByTagName(e);
if ("*" === e) {
while ((n = o[i++])) 1 === n.nodeType && r.push(n);
return r;
}
return o;
}),
(b.find.CLASS =
d.getElementsByClassName &&
function (e, t) {
if ("undefined" != typeof t.getElementsByClassName && E)
return t.getElementsByClassName(e);
}),
(s = []),
(v = []),
(d.qsa = K.test(C.querySelectorAll)) &&
(ce(function (e) {
var t;
(a.appendChild(e).innerHTML =
""),
e.querySelectorAll("[msallowcapture^='']").length &&
v.push("[*^$]=" + M + "*(?:''|\"\")"),
e.querySelectorAll("[selected]").length ||
v.push("\\[" + M + "*(?:value|" + R + ")"),
e.querySelectorAll("[id~=" + S + "-]").length || v.push("~="),
(t = C.createElement("input")).setAttribute("name", ""),
e.appendChild(t),
e.querySelectorAll("[name='']").length ||
v.push("\\[" + M + "*name" + M + "*=" + M + "*(?:''|\"\")"),
e.querySelectorAll(":checked").length || v.push(":checked"),
e.querySelectorAll("a#" + S + "+*").length ||
v.push(".#.+[+~]"),
e.querySelectorAll("\\\f"),
v.push("[\\r\\n\\f]");
}),
ce(function (e) {
e.innerHTML =
"";
var t = C.createElement("input");
t.setAttribute("type", "hidden"),
e.appendChild(t).setAttribute("name", "D"),
e.querySelectorAll("[name=d]").length &&
v.push("name" + M + "*[*^$|!~]?="),
2 !== e.querySelectorAll(":enabled").length &&
v.push(":enabled", ":disabled"),
(a.appendChild(e).disabled = !0),
2 !== e.querySelectorAll(":disabled").length &&
v.push(":enabled", ":disabled"),
e.querySelectorAll("*,:x"),
v.push(",.*:");
})),
(d.matchesSelector = K.test(
(c =
a.matches ||
a.webkitMatchesSelector ||
a.mozMatchesSelector ||
a.oMatchesSelector ||
a.msMatchesSelector)
)) &&
ce(function (e) {
(d.disconnectedMatch = c.call(e, "*")),
c.call(e, "[s!='']:x"),
s.push("!=", F);
}),
(v = v.length && new RegExp(v.join("|"))),
(s = s.length && new RegExp(s.join("|"))),
(t = K.test(a.compareDocumentPosition)),
(y =
t || K.test(a.contains)
? function (e, t) {
var n = 9 === e.nodeType ? e.documentElement : e,
r = t && t.parentNode;
return (
e === r ||
!(
!r ||
1 !== r.nodeType ||
!(n.contains
? n.contains(r)
: e.compareDocumentPosition &&
16 & e.compareDocumentPosition(r))
)
);
}
: function (e, t) {
if (t) while ((t = t.parentNode)) if (t === e) return !0;
return !1;
}),
(j = t
? function (e, t) {
if (e === t) return (l = !0), 0;
var n =
!e.compareDocumentPosition - !t.compareDocumentPosition;
return (
n ||
(1 &
(n =
(e.ownerDocument || e) == (t.ownerDocument || t)
? e.compareDocumentPosition(t)
: 1) ||
(!d.sortDetached && t.compareDocumentPosition(e) === n)
? e == C || (e.ownerDocument == p && y(p, e))
? -1
: t == C || (t.ownerDocument == p && y(p, t))
? 1
: u
? P(u, e) - P(u, t)
: 0
: 4 & n
? -1
: 1)
);
}
: function (e, t) {
if (e === t) return (l = !0), 0;
var n,
r = 0,
i = e.parentNode,
o = t.parentNode,
a = [e],
s = [t];
if (!i || !o)
return e == C
? -1
: t == C
? 1
: i
? -1
: o
? 1
: u
? P(u, e) - P(u, t)
: 0;
if (i === o) return pe(e, t);
n = e;
while ((n = n.parentNode)) a.unshift(n);
n = t;
while ((n = n.parentNode)) s.unshift(n);
while (a[r] === s[r]) r++;
return r
? pe(a[r], s[r])
: a[r] == p
? -1
: s[r] == p
? 1
: 0;
})),
C
);
}),
(se.matches = function (e, t) {
return se(e, null, null, t);
}),
(se.matchesSelector = function (e, t) {
if (
(T(e),
d.matchesSelector &&
E &&
!N[t + " "] &&
(!s || !s.test(t)) &&
(!v || !v.test(t)))
)
try {
var n = c.call(e, t);
if (
n ||
d.disconnectedMatch ||
(e.document && 11 !== e.document.nodeType)
)
return n;
} catch (e) {
N(t, !0);
}
return 0 < se(t, C, null, [e]).length;
}),
(se.contains = function (e, t) {
return (e.ownerDocument || e) != C && T(e), y(e, t);
}),
(se.attr = function (e, t) {
(e.ownerDocument || e) != C && T(e);
var n = b.attrHandle[t.toLowerCase()],
r = n && D.call(b.attrHandle, t.toLowerCase()) ? n(e, t, !E) : void 0;
return void 0 !== r
? r
: d.attributes || !E
? e.getAttribute(t)
: (r = e.getAttributeNode(t)) && r.specified
? r.value
: null;
}),
(se.escape = function (e) {
return (e + "").replace(re, ie);
}),
(se.error = function (e) {
throw new Error("Syntax error, unrecognized expression: " + e);
}),
(se.uniqueSort = function (e) {
var t,
n = [],
r = 0,
i = 0;
if (
((l = !d.detectDuplicates),
(u = !d.sortStable && e.slice(0)),
e.sort(j),
l)
) {
while ((t = e[i++])) t === e[i] && (r = n.push(i));
while (r--) e.splice(n[r], 1);
}
return (u = null), e;
}),
(o = se.getText =
function (e) {
var t,
n = "",
r = 0,
i = e.nodeType;
if (i) {
if (1 === i || 9 === i || 11 === i) {
if ("string" == typeof e.textContent) return e.textContent;
for (e = e.firstChild; e; e = e.nextSibling) n += o(e);
} else if (3 === i || 4 === i) return e.nodeValue;
} else while ((t = e[r++])) n += o(t);
return n;
}),
((b = se.selectors =
{
cacheLength: 50,
createPseudo: le,
match: G,
attrHandle: {},
find: {},
relative: {
">": { dir: "parentNode", first: !0 },
" ": { dir: "parentNode" },
"+": { dir: "previousSibling", first: !0 },
"~": { dir: "previousSibling" },
},
preFilter: {
ATTR: function (e) {
return (
(e[1] = e[1].replace(te, ne)),
(e[3] = (e[3] || e[4] || e[5] || "").replace(te, ne)),
"~=" === e[2] && (e[3] = " " + e[3] + " "),
e.slice(0, 4)
);
},
CHILD: function (e) {
return (
(e[1] = e[1].toLowerCase()),
"nth" === e[1].slice(0, 3)
? (e[3] || se.error(e[0]),
(e[4] = +(e[4]
? e[5] + (e[6] || 1)
: 2 * ("even" === e[3] || "odd" === e[3]))),
(e[5] = +(e[7] + e[8] || "odd" === e[3])))
: e[3] && se.error(e[0]),
e
);
},
PSEUDO: function (e) {
var t,
n = !e[6] && e[2];
return G.CHILD.test(e[0])
? null
: (e[3]
? (e[2] = e[4] || e[5] || "")
: n &&
X.test(n) &&
(t = h(n, !0)) &&
(t = n.indexOf(")", n.length - t) - n.length) &&
((e[0] = e[0].slice(0, t)), (e[2] = n.slice(0, t))),
e.slice(0, 3));
},
},
filter: {
TAG: function (e) {
var t = e.replace(te, ne).toLowerCase();
return "*" === e
? function () {
return !0;
}
: function (e) {
return e.nodeName && e.nodeName.toLowerCase() === t;
};
},
CLASS: function (e) {
var t = m[e + " "];
return (
t ||
((t = new RegExp("(^|" + M + ")" + e + "(" + M + "|$)")) &&
m(e, function (e) {
return t.test(
("string" == typeof e.className && e.className) ||
("undefined" != typeof e.getAttribute &&
e.getAttribute("class")) ||
""
);
}))
);
},
ATTR: function (n, r, i) {
return function (e) {
var t = se.attr(e, n);
return null == t
? "!=" === r
: !r ||
((t += ""),
"=" === r
? t === i
: "!=" === r
? t !== i
: "^=" === r
? i && 0 === t.indexOf(i)
: "*=" === r
? i && -1 < t.indexOf(i)
: "$=" === r
? i && t.slice(-i.length) === i
: "~=" === r
? -1 < (" " + t.replace(B, " ") + " ").indexOf(i)
: "|=" === r &&
(t === i || t.slice(0, i.length + 1) === i + "-"));
};
},
CHILD: function (h, e, t, g, v) {
var y = "nth" !== h.slice(0, 3),
m = "last" !== h.slice(-4),
x = "of-type" === e;
return 1 === g && 0 === v
? function (e) {
return !!e.parentNode;
}
: function (e, t, n) {
var r,
i,
o,
a,
s,
u,
l = y !== m ? "nextSibling" : "previousSibling",
c = e.parentNode,
f = x && e.nodeName.toLowerCase(),
p = !n && !x,
d = !1;
if (c) {
if (y) {
while (l) {
a = e;
while ((a = a[l]))
if (
x
? a.nodeName.toLowerCase() === f
: 1 === a.nodeType
)
return !1;
u = l = "only" === h && !u && "nextSibling";
}
return !0;
}
if (((u = [m ? c.firstChild : c.lastChild]), m && p)) {
(d =
(s =
(r =
(i =
(o = (a = c)[S] || (a[S] = {}))[a.uniqueID] ||
(o[a.uniqueID] = {}))[h] || [])[0] === k &&
r[1]) && r[2]),
(a = s && c.childNodes[s]);
while ((a = (++s && a && a[l]) || (d = s = 0) || u.pop()))
if (1 === a.nodeType && ++d && a === e) {
i[h] = [k, s, d];
break;
}
} else if (
(p &&
(d = s =
(r =
(i =
(o = (a = e)[S] || (a[S] = {}))[a.uniqueID] ||
(o[a.uniqueID] = {}))[h] || [])[0] === k && r[1]),
!1 === d)
)
while ((a = (++s && a && a[l]) || (d = s = 0) || u.pop()))
if (
(x
? a.nodeName.toLowerCase() === f
: 1 === a.nodeType) &&
++d &&
(p &&
((i =
(o = a[S] || (a[S] = {}))[a.uniqueID] ||
(o[a.uniqueID] = {}))[h] = [k, d]),
a === e)
)
break;
return (d -= v) === g || (d % g == 0 && 0 <= d / g);
}
};
},
PSEUDO: function (e, o) {
var t,
a =
b.pseudos[e] ||
b.setFilters[e.toLowerCase()] ||
se.error("unsupported pseudo: " + e);
return a[S]
? a(o)
: 1 < a.length
? ((t = [e, e, "", o]),
b.setFilters.hasOwnProperty(e.toLowerCase())
? le(function (e, t) {
var n,
r = a(e, o),
i = r.length;
while (i--) e[(n = P(e, r[i]))] = !(t[n] = r[i]);
})
: function (e) {
return a(e, 0, t);
})
: a;
},
},
pseudos: {
not: le(function (e) {
var r = [],
i = [],
s = f(e.replace($, "$1"));
return s[S]
? le(function (e, t, n, r) {
var i,
o = s(e, null, r, []),
a = e.length;
while (a--) (i = o[a]) && (e[a] = !(t[a] = i));
})
: function (e, t, n) {
return (r[0] = e), s(r, null, n, i), (r[0] = null), !i.pop();
};
}),
has: le(function (t) {
return function (e) {
return 0 < se(t, e).length;
};
}),
contains: le(function (t) {
return (
(t = t.replace(te, ne)),
function (e) {
return -1 < (e.textContent || o(e)).indexOf(t);
}
);
}),
lang: le(function (n) {
return (
V.test(n || "") || se.error("unsupported lang: " + n),
(n = n.replace(te, ne).toLowerCase()),
function (e) {
var t;
do {
if (
(t = E
? e.lang
: e.getAttribute("xml:lang") || e.getAttribute("lang"))
)
return (
(t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-")
);
} while ((e = e.parentNode) && 1 === e.nodeType);
return !1;
}
);
}),
target: function (e) {
var t = n.location && n.location.hash;
return t && t.slice(1) === e.id;
},
root: function (e) {
return e === a;
},
focus: function (e) {
return (
e === C.activeElement &&
(!C.hasFocus || C.hasFocus()) &&
!!(e.type || e.href || ~e.tabIndex)
);
},
enabled: ge(!1),
disabled: ge(!0),
checked: function (e) {
var t = e.nodeName.toLowerCase();
return (
("input" === t && !!e.checked) || ("option" === t && !!e.selected)
);
},
selected: function (e) {
return (
e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
);
},
empty: function (e) {
for (e = e.firstChild; e; e = e.nextSibling)
if (e.nodeType < 6) return !1;
return !0;
},
parent: function (e) {
return !b.pseudos.empty(e);
},
header: function (e) {
return J.test(e.nodeName);
},
input: function (e) {
return Q.test(e.nodeName);
},
button: function (e) {
var t = e.nodeName.toLowerCase();
return ("input" === t && "button" === e.type) || "button" === t;
},
text: function (e) {
var t;
return (
"input" === e.nodeName.toLowerCase() &&
"text" === e.type &&
(null == (t = e.getAttribute("type")) ||
"text" === t.toLowerCase())
);
},
first: ve(function () {
return [0];
}),
last: ve(function (e, t) {
return [t - 1];
}),
eq: ve(function (e, t, n) {
return [n < 0 ? n + t : n];
}),
even: ve(function (e, t) {
for (var n = 0; n < t; n += 2) e.push(n);
return e;
}),
odd: ve(function (e, t) {
for (var n = 1; n < t; n += 2) e.push(n);
return e;
}),
lt: ve(function (e, t, n) {
for (var r = n < 0 ? n + t : t < n ? t : n; 0 <= --r; ) e.push(r);
return e;
}),
gt: ve(function (e, t, n) {
for (var r = n < 0 ? n + t : n; ++r < t; ) e.push(r);
return e;
}),
},
}).pseudos.nth = b.pseudos.eq),
{ radio: !0, checkbox: !0, file: !0, password: !0, image: !0 }))
b.pseudos[e] = de(e);
for (e in { submit: !0, reset: !0 }) b.pseudos[e] = he(e);
function me() {}
function xe(e) {
for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value;
return r;
}
function be(s, e, t) {
var u = e.dir,
l = e.next,
c = l || u,
f = t && "parentNode" === c,
p = r++;
return e.first
? function (e, t, n) {
while ((e = e[u])) if (1 === e.nodeType || f) return s(e, t, n);
return !1;
}
: function (e, t, n) {
var r,
i,
o,
a = [k, p];
if (n) {
while ((e = e[u]))
if ((1 === e.nodeType || f) && s(e, t, n)) return !0;
} else
while ((e = e[u]))
if (1 === e.nodeType || f)
if (
((i =
(o = e[S] || (e[S] = {}))[e.uniqueID] ||
(o[e.uniqueID] = {})),
l && l === e.nodeName.toLowerCase())
)
e = e[u] || e;
else {
if ((r = i[c]) && r[0] === k && r[1] === p)
return (a[2] = r[2]);
if (((i[c] = a)[2] = s(e, t, n))) return !0;
}
return !1;
};
}
function we(i) {
return 1 < i.length
? function (e, t, n) {
var r = i.length;
while (r--) if (!i[r](e, t, n)) return !1;
return !0;
}
: i[0];
}
function Te(e, t, n, r, i) {
for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++)
(o = e[s]) && ((n && !n(o, r, i)) || (a.push(o), l && t.push(s)));
return a;
}
function Ce(d, h, g, v, y, e) {
return (
v && !v[S] && (v = Ce(v)),
y && !y[S] && (y = Ce(y, e)),
le(function (e, t, n, r) {
var i,
o,
a,
s = [],
u = [],
l = t.length,
c =
e ||
(function (e, t, n) {
for (var r = 0, i = t.length; r < i; r++) se(e, t[r], n);
return n;
})(h || "*", n.nodeType ? [n] : n, []),
f = !d || (!e && h) ? c : Te(c, s, d, n, r),
p = g ? (y || (e ? d : l || v) ? [] : t) : f;
if ((g && g(f, p, n, r), v)) {
(i = Te(p, u)), v(i, [], n, r), (o = i.length);
while (o--) (a = i[o]) && (p[u[o]] = !(f[u[o]] = a));
}
if (e) {
if (y || d) {
if (y) {
(i = []), (o = p.length);
while (o--) (a = p[o]) && i.push((f[o] = a));
y(null, (p = []), i, r);
}
o = p.length;
while (o--)
(a = p[o]) &&
-1 < (i = y ? P(e, a) : s[o]) &&
(e[i] = !(t[i] = a));
}
} else (p = Te(p === t ? p.splice(l, p.length) : p)), y ? y(null, t, p, r) : H.apply(t, p);
})
);
}
function Ee(e) {
for (
var i,
t,
n,
r = e.length,
o = b.relative[e[0].type],
a = o || b.relative[" "],
s = o ? 1 : 0,
u = be(
function (e) {
return e === i;
},
a,
!0
),
l = be(
function (e) {
return -1 < P(i, e);
},
a,
!0
),
c = [
function (e, t, n) {
var r =
(!o && (n || t !== w)) ||
((i = t).nodeType ? u(e, t, n) : l(e, t, n));
return (i = null), r;
},
];
s < r;
s++
)
if ((t = b.relative[e[s].type])) c = [be(we(c), t)];
else {
if ((t = b.filter[e[s].type].apply(null, e[s].matches))[S]) {
for (n = ++s; n < r; n++) if (b.relative[e[n].type]) break;
return Ce(
1 < s && we(c),
1 < s &&
xe(
e
.slice(0, s - 1)
.concat({ value: " " === e[s - 2].type ? "*" : "" })
).replace($, "$1"),
t,
s < n && Ee(e.slice(s, n)),
n < r && Ee((e = e.slice(n))),
n < r && xe(e)
);
}
c.push(t);
}
return we(c);
}
return (
(me.prototype = b.filters = b.pseudos),
(b.setFilters = new me()),
(h = se.tokenize =
function (e, t) {
var n,
r,
i,
o,
a,
s,
u,
l = x[e + " "];
if (l) return t ? 0 : l.slice(0);
(a = e), (s = []), (u = b.preFilter);
while (a) {
for (o in ((n && !(r = _.exec(a))) ||
(r && (a = a.slice(r[0].length) || a), s.push((i = []))),
(n = !1),
(r = z.exec(a)) &&
((n = r.shift()),
i.push({ value: n, type: r[0].replace($, " ") }),
(a = a.slice(n.length))),
b.filter))
!(r = G[o].exec(a)) ||
(u[o] && !(r = u[o](r))) ||
((n = r.shift()),
i.push({ value: n, type: o, matches: r }),
(a = a.slice(n.length)));
if (!n) break;
}
return t ? a.length : a ? se.error(e) : x(e, s).slice(0);
}),
(f = se.compile =
function (e, t) {
var n,
v,
y,
m,
x,
r,
i = [],
o = [],
a = A[e + " "];
if (!a) {
t || (t = h(e)), (n = t.length);
while (n--) (a = Ee(t[n]))[S] ? i.push(a) : o.push(a);
(a = A(
e,
((v = o),
(m = 0 < (y = i).length),
(x = 0 < v.length),
(r = function (e, t, n, r, i) {
var o,
a,
s,
u = 0,
l = "0",
c = e && [],
f = [],
p = w,
d = e || (x && b.find.TAG("*", i)),
h = (k += null == p ? 1 : Math.random() || 0.1),
g = d.length;
for (
i && (w = t == C || t || i);
l !== g && null != (o = d[l]);
l++
) {
if (x && o) {
(a = 0), t || o.ownerDocument == C || (T(o), (n = !E));
while ((s = v[a++]))
if (s(o, t || C, n)) {
r.push(o);
break;
}
i && (k = h);
}
m && ((o = !s && o) && u--, e && c.push(o));
}
if (((u += l), m && l !== u)) {
a = 0;
while ((s = y[a++])) s(c, f, t, n);
if (e) {
if (0 < u) while (l--) c[l] || f[l] || (f[l] = q.call(r));
f = Te(f);
}
H.apply(r, f),
i &&
!e &&
0 < f.length &&
1 < u + y.length &&
se.uniqueSort(r);
}
return i && ((k = h), (w = p)), c;
}),
m ? le(r) : r)
)).selector = e;
}
return a;
}),
(g = se.select =
function (e, t, n, r) {
var i,
o,
a,
s,
u,
l = "function" == typeof e && e,
c = !r && h((e = l.selector || e));
if (((n = n || []), 1 === c.length)) {
if (
2 < (o = c[0] = c[0].slice(0)).length &&
"ID" === (a = o[0]).type &&
9 === t.nodeType &&
E &&
b.relative[o[1].type]
) {
if (!(t = (b.find.ID(a.matches[0].replace(te, ne), t) || [])[0]))
return n;
l && (t = t.parentNode), (e = e.slice(o.shift().value.length));
}
i = G.needsContext.test(e) ? 0 : o.length;
while (i--) {
if (((a = o[i]), b.relative[(s = a.type)])) break;
if (
(u = b.find[s]) &&
(r = u(
a.matches[0].replace(te, ne),
(ee.test(o[0].type) && ye(t.parentNode)) || t
))
) {
if ((o.splice(i, 1), !(e = r.length && xe(o))))
return H.apply(n, r), n;
break;
}
}
}
return (
(l || f(e, c))(
r,
t,
!E,
n,
!t || (ee.test(e) && ye(t.parentNode)) || t
),
n
);
}),
(d.sortStable = S.split("").sort(j).join("") === S),
(d.detectDuplicates = !!l),
T(),
(d.sortDetached = ce(function (e) {
return 1 & e.compareDocumentPosition(C.createElement("fieldset"));
})),
ce(function (e) {
return (
(e.innerHTML = ""),
"#" === e.firstChild.getAttribute("href")
);
}) ||
fe("type|href|height|width", function (e, t, n) {
if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2);
}),
(d.attributes &&
ce(function (e) {
return (
(e.innerHTML = ""),
e.firstChild.setAttribute("value", ""),
"" === e.firstChild.getAttribute("value")
);
})) ||
fe("value", function (e, t, n) {
if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue;
}),
ce(function (e) {
return null == e.getAttribute("disabled");
}) ||
fe(R, function (e, t, n) {
var r;
if (!n)
return !0 === e[t]
? t.toLowerCase()
: (r = e.getAttributeNode(t)) && r.specified
? r.value
: null;
}),
se
);
})(C);
(S.find = d),
(S.expr = d.selectors),
(S.expr[":"] = S.expr.pseudos),
(S.uniqueSort = S.unique = d.uniqueSort),
(S.text = d.getText),
(S.isXMLDoc = d.isXML),
(S.contains = d.contains),
(S.escapeSelector = d.escape);
var h = function (e, t, n) {
var r = [],
i = void 0 !== n;
while ((e = e[t]) && 9 !== e.nodeType)
if (1 === e.nodeType) {
if (i && S(e).is(n)) break;
r.push(e);
}
return r;
},
T = function (e, t) {
for (var n = []; e; e = e.nextSibling)
1 === e.nodeType && e !== t && n.push(e);
return n;
},
k = S.expr.match.needsContext;
function A(e, t) {
return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase();
}
var N = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
function j(e, n, r) {
return m(n)
? S.grep(e, function (e, t) {
return !!n.call(e, t, e) !== r;
})
: n.nodeType
? S.grep(e, function (e) {
return (e === n) !== r;
})
: "string" != typeof n
? S.grep(e, function (e) {
return -1 < i.call(n, e) !== r;
})
: S.filter(n, e, r);
}
(S.filter = function (e, t, n) {
var r = t[0];
return (
n && (e = ":not(" + e + ")"),
1 === t.length && 1 === r.nodeType
? S.find.matchesSelector(r, e)
? [r]
: []
: S.find.matches(
e,
S.grep(t, function (e) {
return 1 === e.nodeType;
})
)
);
}),
S.fn.extend({
find: function (e) {
var t,
n,
r = this.length,
i = this;
if ("string" != typeof e)
return this.pushStack(
S(e).filter(function () {
for (t = 0; t < r; t++) if (S.contains(i[t], this)) return !0;
})
);
for (n = this.pushStack([]), t = 0; t < r; t++) S.find(e, i[t], n);
return 1 < r ? S.uniqueSort(n) : n;
},
filter: function (e) {
return this.pushStack(j(this, e || [], !1));
},
not: function (e) {
return this.pushStack(j(this, e || [], !0));
},
is: function (e) {
return !!j(this, "string" == typeof e && k.test(e) ? S(e) : e || [], !1)
.length;
},
});
var D,
q = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
((S.fn.init = function (e, t, n) {
var r, i;
if (!e) return this;
if (((n = n || D), "string" == typeof e)) {
if (
!(r =
"<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length
? [null, e, null]
: q.exec(e)) ||
(!r[1] && t)
)
return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
if (r[1]) {
if (
((t = t instanceof S ? t[0] : t),
S.merge(
this,
S.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : E, !0)
),
N.test(r[1]) && S.isPlainObject(t))
)
for (r in t) m(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
return this;
}
return (
(i = E.getElementById(r[2])) && ((this[0] = i), (this.length = 1)), this
);
}
return e.nodeType
? ((this[0] = e), (this.length = 1), this)
: m(e)
? void 0 !== n.ready
? n.ready(e)
: e(S)
: S.makeArray(e, this);
}).prototype = S.fn),
(D = S(E));
var L = /^(?:parents|prev(?:Until|All))/,
H = { children: !0, contents: !0, next: !0, prev: !0 };
function O(e, t) {
while ((e = e[t]) && 1 !== e.nodeType);
return e;
}
S.fn.extend({
has: function (e) {
var t = S(e, this),
n = t.length;
return this.filter(function () {
for (var e = 0; e < n; e++) if (S.contains(this, t[e])) return !0;
});
},
closest: function (e, t) {
var n,
r = 0,
i = this.length,
o = [],
a = "string" != typeof e && S(e);
if (!k.test(e))
for (; r < i; r++)
for (n = this[r]; n && n !== t; n = n.parentNode)
if (
n.nodeType < 11 &&
(a
? -1 < a.index(n)
: 1 === n.nodeType && S.find.matchesSelector(n, e))
) {
o.push(n);
break;
}
return this.pushStack(1 < o.length ? S.uniqueSort(o) : o);
},
index: function (e) {
return e
? "string" == typeof e
? i.call(S(e), this[0])
: i.call(this, e.jquery ? e[0] : e)
: this[0] && this[0].parentNode
? this.first().prevAll().length
: -1;
},
add: function (e, t) {
return this.pushStack(S.uniqueSort(S.merge(this.get(), S(e, t))));
},
addBack: function (e) {
return this.add(null == e ? this.prevObject : this.prevObject.filter(e));
},
}),
S.each(
{
parent: function (e) {
var t = e.parentNode;
return t && 11 !== t.nodeType ? t : null;
},
parents: function (e) {
return h(e, "parentNode");
},
parentsUntil: function (e, t, n) {
return h(e, "parentNode", n);
},
next: function (e) {
return O(e, "nextSibling");
},
prev: function (e) {
return O(e, "previousSibling");
},
nextAll: function (e) {
return h(e, "nextSibling");
},
prevAll: function (e) {
return h(e, "previousSibling");
},
nextUntil: function (e, t, n) {
return h(e, "nextSibling", n);
},
prevUntil: function (e, t, n) {
return h(e, "previousSibling", n);
},
siblings: function (e) {
return T((e.parentNode || {}).firstChild, e);
},
children: function (e) {
return T(e.firstChild);
},
contents: function (e) {
return null != e.contentDocument && r(e.contentDocument)
? e.contentDocument
: (A(e, "template") && (e = e.content || e),
S.merge([], e.childNodes));
},
},
function (r, i) {
S.fn[r] = function (e, t) {
var n = S.map(this, i, e);
return (
"Until" !== r.slice(-5) && (t = e),
t && "string" == typeof t && (n = S.filter(t, n)),
1 < this.length &&
(H[r] || S.uniqueSort(n), L.test(r) && n.reverse()),
this.pushStack(n)
);
};
}
);
var P = /[^\x20\t\r\n\f]+/g;
function R(e) {
return e;
}
function M(e) {
throw e;
}
function I(e, t, n, r) {
var i;
try {
e && m((i = e.promise))
? i.call(e).done(t).fail(n)
: e && m((i = e.then))
? i.call(e, t, n)
: t.apply(void 0, [e].slice(r));
} catch (e) {
n.apply(void 0, [e]);
}
}
(S.Callbacks = function (r) {
var e, n;
r =
"string" == typeof r
? ((e = r),
(n = {}),
S.each(e.match(P) || [], function (e, t) {
n[t] = !0;
}),
n)
: S.extend({}, r);
var i,
t,
o,
a,
s = [],
u = [],
l = -1,
c = function () {
for (a = a || r.once, o = i = !0; u.length; l = -1) {
t = u.shift();
while (++l < s.length)
!1 === s[l].apply(t[0], t[1]) &&
r.stopOnFalse &&
((l = s.length), (t = !1));
}
r.memory || (t = !1), (i = !1), a && (s = t ? [] : "");
},
f = {
add: function () {
return (
s &&
(t && !i && ((l = s.length - 1), u.push(t)),
(function n(e) {
S.each(e, function (e, t) {
m(t)
? (r.unique && f.has(t)) || s.push(t)
: t && t.length && "string" !== w(t) && n(t);
});
})(arguments),
t && !i && c()),
this
);
},
remove: function () {
return (
S.each(arguments, function (e, t) {
var n;
while (-1 < (n = S.inArray(t, s, n)))
s.splice(n, 1), n <= l && l--;
}),
this
);
},
has: function (e) {
return e ? -1 < S.inArray(e, s) : 0 < s.length;
},
empty: function () {
return s && (s = []), this;
},
disable: function () {
return (a = u = []), (s = t = ""), this;
},
disabled: function () {
return !s;
},
lock: function () {
return (a = u = []), t || i || (s = t = ""), this;
},
locked: function () {
return !!a;
},
fireWith: function (e, t) {
return (
a ||
((t = [e, (t = t || []).slice ? t.slice() : t]),
u.push(t),
i || c()),
this
);
},
fire: function () {
return f.fireWith(this, arguments), this;
},
fired: function () {
return !!o;
},
};
return f;
}),
S.extend({
Deferred: function (e) {
var o = [
[
"notify",
"progress",
S.Callbacks("memory"),
S.Callbacks("memory"),
2,
],
[
"resolve",
"done",
S.Callbacks("once memory"),
S.Callbacks("once memory"),
0,
"resolved",
],
[
"reject",
"fail",
S.Callbacks("once memory"),
S.Callbacks("once memory"),
1,
"rejected",
],
],
i = "pending",
a = {
state: function () {
return i;
},
always: function () {
return s.done(arguments).fail(arguments), this;
},
catch: function (e) {
return a.then(null, e);
},
pipe: function () {
var i = arguments;
return S.Deferred(function (r) {
S.each(o, function (e, t) {
var n = m(i[t[4]]) && i[t[4]];
s[t[1]](function () {
var e = n && n.apply(this, arguments);
e && m(e.promise)
? e
.promise()
.progress(r.notify)
.done(r.resolve)
.fail(r.reject)
: r[t[0] + "With"](this, n ? [e] : arguments);
});
}),
(i = null);
}).promise();
},
then: function (t, n, r) {
var u = 0;
function l(i, o, a, s) {
return function () {
var n = this,
r = arguments,
e = function () {
var e, t;
if (!(i < u)) {
if ((e = a.apply(n, r)) === o.promise())
throw new TypeError("Thenable self-resolution");
(t =
e &&
("object" == typeof e || "function" == typeof e) &&
e.then),
m(t)
? s
? t.call(e, l(u, o, R, s), l(u, o, M, s))
: (u++,
t.call(
e,
l(u, o, R, s),
l(u, o, M, s),
l(u, o, R, o.notifyWith)
))
: (a !== R && ((n = void 0), (r = [e])),
(s || o.resolveWith)(n, r));
}
},
t = s
? e
: function () {
try {
e();
} catch (e) {
S.Deferred.exceptionHook &&
S.Deferred.exceptionHook(e, t.stackTrace),
u <= i + 1 &&
(a !== M && ((n = void 0), (r = [e])),
o.rejectWith(n, r));
}
};
i
? t()
: (S.Deferred.getStackHook &&
(t.stackTrace = S.Deferred.getStackHook()),
C.setTimeout(t));
};
}
return S.Deferred(function (e) {
o[0][3].add(l(0, e, m(r) ? r : R, e.notifyWith)),
o[1][3].add(l(0, e, m(t) ? t : R)),
o[2][3].add(l(0, e, m(n) ? n : M));
}).promise();
},
promise: function (e) {
return null != e ? S.extend(e, a) : a;
},
},
s = {};
return (
S.each(o, function (e, t) {
var n = t[2],
r = t[5];
(a[t[1]] = n.add),
r &&
n.add(
function () {
i = r;
},
o[3 - e][2].disable,
o[3 - e][3].disable,
o[0][2].lock,
o[0][3].lock
),
n.add(t[3].fire),
(s[t[0]] = function () {
return (
s[t[0] + "With"](this === s ? void 0 : this, arguments), this
);
}),
(s[t[0] + "With"] = n.fireWith);
}),
a.promise(s),
e && e.call(s, s),
s
);
},
when: function (e) {
var n = arguments.length,
t = n,
r = Array(t),
i = s.call(arguments),
o = S.Deferred(),
a = function (t) {
return function (e) {
(r[t] = this),
(i[t] = 1 < arguments.length ? s.call(arguments) : e),
--n || o.resolveWith(r, i);
};
};
if (
n <= 1 &&
(I(e, o.done(a(t)).resolve, o.reject, !n),
"pending" === o.state() || m(i[t] && i[t].then))
)
return o.then();
while (t--) I(i[t], a(t), o.reject);
return o.promise();
},
});
var W = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
(S.Deferred.exceptionHook = function (e, t) {
C.console &&
C.console.warn &&
e &&
W.test(e.name) &&
C.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t);
}),
(S.readyException = function (e) {
C.setTimeout(function () {
throw e;
});
});
var F = S.Deferred();
function B() {
E.removeEventListener("DOMContentLoaded", B),
C.removeEventListener("load", B),
S.ready();
}
(S.fn.ready = function (e) {
return (
F.then(e)["catch"](function (e) {
S.readyException(e);
}),
this
);
}),
S.extend({
isReady: !1,
readyWait: 1,
ready: function (e) {
(!0 === e ? --S.readyWait : S.isReady) ||
((S.isReady = !0) !== e && 0 < --S.readyWait) ||
F.resolveWith(E, [S]);
},
}),
(S.ready.then = F.then),
"complete" === E.readyState ||
("loading" !== E.readyState && !E.documentElement.doScroll)
? C.setTimeout(S.ready)
: (E.addEventListener("DOMContentLoaded", B),
C.addEventListener("load", B));
var $ = function (e, t, n, r, i, o, a) {
var s = 0,
u = e.length,
l = null == n;
if ("object" === w(n))
for (s in ((i = !0), n)) $(e, t, s, n[s], !0, o, a);
else if (
void 0 !== r &&
((i = !0),
m(r) || (a = !0),
l &&
(a
? (t.call(e, r), (t = null))
: ((l = t),
(t = function (e, t, n) {
return l.call(S(e), n);
}))),
t)
)
for (; s < u; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
return i ? e : l ? t.call(e) : u ? t(e[0], n) : o;
},
_ = /^-ms-/,
z = /-([a-z])/g;
function U(e, t) {
return t.toUpperCase();
}
function X(e) {
return e.replace(_, "ms-").replace(z, U);
}
var V = function (e) {
return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType;
};
function G() {
this.expando = S.expando + G.uid++;
}
(G.uid = 1),
(G.prototype = {
cache: function (e) {
var t = e[this.expando];
return (
t ||
((t = {}),
V(e) &&
(e.nodeType
? (e[this.expando] = t)
: Object.defineProperty(e, this.expando, {
value: t,
configurable: !0,
}))),
t
);
},
set: function (e, t, n) {
var r,
i = this.cache(e);
if ("string" == typeof t) i[X(t)] = n;
else for (r in t) i[X(r)] = t[r];
return i;
},
get: function (e, t) {
return void 0 === t
? this.cache(e)
: e[this.expando] && e[this.expando][X(t)];
},
access: function (e, t, n) {
return void 0 === t || (t && "string" == typeof t && void 0 === n)
? this.get(e, t)
: (this.set(e, t, n), void 0 !== n ? n : t);
},
remove: function (e, t) {
var n,
r = e[this.expando];
if (void 0 !== r) {
if (void 0 !== t) {
n = (t = Array.isArray(t)
? t.map(X)
: (t = X(t)) in r
? [t]
: t.match(P) || []).length;
while (n--) delete r[t[n]];
}
(void 0 === t || S.isEmptyObject(r)) &&
(e.nodeType ? (e[this.expando] = void 0) : delete e[this.expando]);
}
},
hasData: function (e) {
var t = e[this.expando];
return void 0 !== t && !S.isEmptyObject(t);
},
});
var Y = new G(),
Q = new G(),
J = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
K = /[A-Z]/g;
function Z(e, t, n) {
var r, i;
if (void 0 === n && 1 === e.nodeType)
if (
((r = "data-" + t.replace(K, "-$&").toLowerCase()),
"string" == typeof (n = e.getAttribute(r)))
) {
try {
n =
"true" === (i = n) ||
("false" !== i &&
("null" === i
? null
: i === +i + ""
? +i
: J.test(i)
? JSON.parse(i)
: i));
} catch (e) {}
Q.set(e, t, n);
} else n = void 0;
return n;
}
S.extend({
hasData: function (e) {
return Q.hasData(e) || Y.hasData(e);
},
data: function (e, t, n) {
return Q.access(e, t, n);
},
removeData: function (e, t) {
Q.remove(e, t);
},
_data: function (e, t, n) {
return Y.access(e, t, n);
},
_removeData: function (e, t) {
Y.remove(e, t);
},
}),
S.fn.extend({
data: function (n, e) {
var t,
r,
i,
o = this[0],
a = o && o.attributes;
if (void 0 === n) {
if (
this.length &&
((i = Q.get(o)), 1 === o.nodeType && !Y.get(o, "hasDataAttrs"))
) {
t = a.length;
while (t--)
a[t] &&
0 === (r = a[t].name).indexOf("data-") &&
((r = X(r.slice(5))), Z(o, r, i[r]));
Y.set(o, "hasDataAttrs", !0);
}
return i;
}
return "object" == typeof n
? this.each(function () {
Q.set(this, n);
})
: $(
this,
function (e) {
var t;
if (o && void 0 === e)
return void 0 !== (t = Q.get(o, n))
? t
: void 0 !== (t = Z(o, n))
? t
: void 0;
this.each(function () {
Q.set(this, n, e);
});
},
null,
e,
1 < arguments.length,
null,
!0
);
},
removeData: function (e) {
return this.each(function () {
Q.remove(this, e);
});
},
}),
S.extend({
queue: function (e, t, n) {
var r;
if (e)
return (
(t = (t || "fx") + "queue"),
(r = Y.get(e, t)),
n &&
(!r || Array.isArray(n)
? (r = Y.access(e, t, S.makeArray(n)))
: r.push(n)),
r || []
);
},
dequeue: function (e, t) {
t = t || "fx";
var n = S.queue(e, t),
r = n.length,
i = n.shift(),
o = S._queueHooks(e, t);
"inprogress" === i && ((i = n.shift()), r--),
i &&
("fx" === t && n.unshift("inprogress"),
delete o.stop,
i.call(
e,
function () {
S.dequeue(e, t);
},
o
)),
!r && o && o.empty.fire();
},
_queueHooks: function (e, t) {
var n = t + "queueHooks";
return (
Y.get(e, n) ||
Y.access(e, n, {
empty: S.Callbacks("once memory").add(function () {
Y.remove(e, [t + "queue", n]);
}),
})
);
},
}),
S.fn.extend({
queue: function (t, n) {
var e = 2;
return (
"string" != typeof t && ((n = t), (t = "fx"), e--),
arguments.length < e
? S.queue(this[0], t)
: void 0 === n
? this
: this.each(function () {
var e = S.queue(this, t, n);
S._queueHooks(this, t),
"fx" === t && "inprogress" !== e[0] && S.dequeue(this, t);
})
);
},
dequeue: function (e) {
return this.each(function () {
S.dequeue(this, e);
});
},
clearQueue: function (e) {
return this.queue(e || "fx", []);
},
promise: function (e, t) {
var n,
r = 1,
i = S.Deferred(),
o = this,
a = this.length,
s = function () {
--r || i.resolveWith(o, [o]);
};
"string" != typeof e && ((t = e), (e = void 0)), (e = e || "fx");
while (a--)
(n = Y.get(o[a], e + "queueHooks")) &&
n.empty &&
(r++, n.empty.add(s));
return s(), i.promise(t);
},
});
var ee = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
te = new RegExp("^(?:([+-])=|)(" + ee + ")([a-z%]*)$", "i"),
ne = ["Top", "Right", "Bottom", "Left"],
re = E.documentElement,
ie = function (e) {
return S.contains(e.ownerDocument, e);
},
oe = { composed: !0 };
re.getRootNode &&
(ie = function (e) {
return (
S.contains(e.ownerDocument, e) || e.getRootNode(oe) === e.ownerDocument
);
});
var ae = function (e, t) {
return (
"none" === (e = t || e).style.display ||
("" === e.style.display && ie(e) && "none" === S.css(e, "display"))
);
};
function se(e, t, n, r) {
var i,
o,
a = 20,
s = r
? function () {
return r.cur();
}
: function () {
return S.css(e, t, "");
},
u = s(),
l = (n && n[3]) || (S.cssNumber[t] ? "" : "px"),
c =
e.nodeType &&
(S.cssNumber[t] || ("px" !== l && +u)) &&
te.exec(S.css(e, t));
if (c && c[3] !== l) {
(u /= 2), (l = l || c[3]), (c = +u || 1);
while (a--)
S.style(e, t, c + l),
(1 - o) * (1 - (o = s() / u || 0.5)) <= 0 && (a = 0),
(c /= o);
(c *= 2), S.style(e, t, c + l), (n = n || []);
}
return (
n &&
((c = +c || +u || 0),
(i = n[1] ? c + (n[1] + 1) * n[2] : +n[2]),
r && ((r.unit = l), (r.start = c), (r.end = i))),
i
);
}
var ue = {};
function le(e, t) {
for (var n, r, i, o, a, s, u, l = [], c = 0, f = e.length; c < f; c++)
(r = e[c]).style &&
((n = r.style.display),
t
? ("none" === n &&
((l[c] = Y.get(r, "display") || null),
l[c] || (r.style.display = "")),
"" === r.style.display &&
ae(r) &&
(l[c] =
((u = a = o = void 0),
(a = (i = r).ownerDocument),
(s = i.nodeName),
(u = ue[s]) ||
((o = a.body.appendChild(a.createElement(s))),
(u = S.css(o, "display")),
o.parentNode.removeChild(o),
"none" === u && (u = "block"),
(ue[s] = u)))))
: "none" !== n && ((l[c] = "none"), Y.set(r, "display", n)));
for (c = 0; c < f; c++) null != l[c] && (e[c].style.display = l[c]);
return e;
}
S.fn.extend({
show: function () {
return le(this, !0);
},
hide: function () {
return le(this);
},
toggle: function (e) {
return "boolean" == typeof e
? e
? this.show()
: this.hide()
: this.each(function () {
ae(this) ? S(this).show() : S(this).hide();
});
},
});
var ce,
fe,
pe = /^(?:checkbox|radio)$/i,
de = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i,
he = /^$|^module$|\/(?:java|ecma)script/i;
(ce = E.createDocumentFragment().appendChild(E.createElement("div"))),
(fe = E.createElement("input")).setAttribute("type", "radio"),
fe.setAttribute("checked", "checked"),
fe.setAttribute("name", "t"),
ce.appendChild(fe),
(y.checkClone = ce.cloneNode(!0).cloneNode(!0).lastChild.checked),
(ce.innerHTML = ""),
(y.noCloneChecked = !!ce.cloneNode(!0).lastChild.defaultValue),
(ce.innerHTML = ""),
(y.option = !!ce.lastChild);
var ge = {
thead: [1, ""],
col: [2, ""],
tr: [2, ""],
td: [3, ""],
_default: [0, "", ""],
};
function ve(e, t) {
var n;
return (
(n =
"undefined" != typeof e.getElementsByTagName
? e.getElementsByTagName(t || "*")
: "undefined" != typeof e.querySelectorAll
? e.querySelectorAll(t || "*")
: []),
void 0 === t || (t && A(e, t)) ? S.merge([e], n) : n
);
}
function ye(e, t) {
for (var n = 0, r = e.length; n < r; n++)
Y.set(e[n], "globalEval", !t || Y.get(t[n], "globalEval"));
}
(ge.tbody = ge.tfoot = ge.colgroup = ge.caption = ge.thead),
(ge.th = ge.td),
y.option ||
(ge.optgroup = ge.option =
[1, ""]);
var me = /<|?\w+;/;
function xe(e, t, n, r, i) {
for (
var o,
a,
s,
u,
l,
c,
f = t.createDocumentFragment(),
p = [],
d = 0,
h = e.length;
d < h;
d++
)
if ((o = e[d]) || 0 === o)
if ("object" === w(o)) S.merge(p, o.nodeType ? [o] : o);
else if (me.test(o)) {
(a = a || f.appendChild(t.createElement("div"))),
(s = (de.exec(o) || ["", ""])[1].toLowerCase()),
(u = ge[s] || ge._default),
(a.innerHTML = u[1] + S.htmlPrefilter(o) + u[2]),
(c = u[0]);
while (c--) a = a.lastChild;
S.merge(p, a.childNodes), ((a = f.firstChild).textContent = "");
} else p.push(t.createTextNode(o));
(f.textContent = ""), (d = 0);
while ((o = p[d++]))
if (r && -1 < S.inArray(o, r)) i && i.push(o);
else if (
((l = ie(o)), (a = ve(f.appendChild(o), "script")), l && ye(a), n)
) {
c = 0;
while ((o = a[c++])) he.test(o.type || "") && n.push(o);
}
return f;
}
var be = /^([^.]*)(?:\.(.+)|)/;
function we() {
return !0;
}
function Te() {
return !1;
}
function Ce(e, t) {
return (
(e ===
(function () {
try {
return E.activeElement;
} catch (e) {}
})()) ==
("focus" === t)
);
}
function Ee(e, t, n, r, i, o) {
var a, s;
if ("object" == typeof t) {
for (s in ("string" != typeof n && ((r = r || n), (n = void 0)), t))
Ee(e, s, n, r, t[s], o);
return e;
}
if (
(null == r && null == i
? ((i = n), (r = n = void 0))
: null == i &&
("string" == typeof n
? ((i = r), (r = void 0))
: ((i = r), (r = n), (n = void 0))),
!1 === i)
)
i = Te;
else if (!i) return e;
return (
1 === o &&
((a = i),
((i = function (e) {
return S().off(e), a.apply(this, arguments);
}).guid = a.guid || (a.guid = S.guid++))),
e.each(function () {
S.event.add(this, t, i, r, n);
})
);
}
function Se(e, i, o) {
o
? (Y.set(e, i, !1),
S.event.add(e, i, {
namespace: !1,
handler: function (e) {
var t,
n,
r = Y.get(this, i);
if (1 & e.isTrigger && this[i]) {
if (r.length)
(S.event.special[i] || {}).delegateType && e.stopPropagation();
else if (
((r = s.call(arguments)),
Y.set(this, i, r),
(t = o(this, i)),
this[i](),
r !== (n = Y.get(this, i)) || t ? Y.set(this, i, !1) : (n = {}),
r !== n)
)
return (
e.stopImmediatePropagation(), e.preventDefault(), n && n.value
);
} else
r.length &&
(Y.set(this, i, {
value: S.event.trigger(
S.extend(r[0], S.Event.prototype),
r.slice(1),
this
),
}),
e.stopImmediatePropagation());
},
}))
: void 0 === Y.get(e, i) && S.event.add(e, i, we);
}
(S.event = {
global: {},
add: function (t, e, n, r, i) {
var o,
a,
s,
u,
l,
c,
f,
p,
d,
h,
g,
v = Y.get(t);
if (V(t)) {
n.handler && ((n = (o = n).handler), (i = o.selector)),
i && S.find.matchesSelector(re, i),
n.guid || (n.guid = S.guid++),
(u = v.events) || (u = v.events = Object.create(null)),
(a = v.handle) ||
(a = v.handle =
function (e) {
return "undefined" != typeof S && S.event.triggered !== e.type
? S.event.dispatch.apply(t, arguments)
: void 0;
}),
(l = (e = (e || "").match(P) || [""]).length);
while (l--)
(d = g = (s = be.exec(e[l]) || [])[1]),
(h = (s[2] || "").split(".").sort()),
d &&
((f = S.event.special[d] || {}),
(d = (i ? f.delegateType : f.bindType) || d),
(f = S.event.special[d] || {}),
(c = S.extend(
{
type: d,
origType: g,
data: r,
handler: n,
guid: n.guid,
selector: i,
needsContext: i && S.expr.match.needsContext.test(i),
namespace: h.join("."),
},
o
)),
(p = u[d]) ||
(((p = u[d] = []).delegateCount = 0),
(f.setup && !1 !== f.setup.call(t, r, h, a)) ||
(t.addEventListener && t.addEventListener(d, a))),
f.add &&
(f.add.call(t, c), c.handler.guid || (c.handler.guid = n.guid)),
i ? p.splice(p.delegateCount++, 0, c) : p.push(c),
(S.event.global[d] = !0));
}
},
remove: function (e, t, n, r, i) {
var o,
a,
s,
u,
l,
c,
f,
p,
d,
h,
g,
v = Y.hasData(e) && Y.get(e);
if (v && (u = v.events)) {
l = (t = (t || "").match(P) || [""]).length;
while (l--)
if (
((d = g = (s = be.exec(t[l]) || [])[1]),
(h = (s[2] || "").split(".").sort()),
d)
) {
(f = S.event.special[d] || {}),
(p = u[(d = (r ? f.delegateType : f.bindType) || d)] || []),
(s =
s[2] &&
new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)")),
(a = o = p.length);
while (o--)
(c = p[o]),
(!i && g !== c.origType) ||
(n && n.guid !== c.guid) ||
(s && !s.test(c.namespace)) ||
(r && r !== c.selector && ("**" !== r || !c.selector)) ||
(p.splice(o, 1),
c.selector && p.delegateCount--,
f.remove && f.remove.call(e, c));
a &&
!p.length &&
((f.teardown && !1 !== f.teardown.call(e, h, v.handle)) ||
S.removeEvent(e, d, v.handle),
delete u[d]);
} else for (d in u) S.event.remove(e, d + t[l], n, r, !0);
S.isEmptyObject(u) && Y.remove(e, "handle events");
}
},
dispatch: function (e) {
var t,
n,
r,
i,
o,
a,
s = new Array(arguments.length),
u = S.event.fix(e),
l = (Y.get(this, "events") || Object.create(null))[u.type] || [],
c = S.event.special[u.type] || {};
for (s[0] = u, t = 1; t < arguments.length; t++) s[t] = arguments[t];
if (
((u.delegateTarget = this),
!c.preDispatch || !1 !== c.preDispatch.call(this, u))
) {
(a = S.event.handlers.call(this, u, l)), (t = 0);
while ((i = a[t++]) && !u.isPropagationStopped()) {
(u.currentTarget = i.elem), (n = 0);
while ((o = i.handlers[n++]) && !u.isImmediatePropagationStopped())
(u.rnamespace &&
!1 !== o.namespace &&
!u.rnamespace.test(o.namespace)) ||
((u.handleObj = o),
(u.data = o.data),
void 0 !==
(r = (
(S.event.special[o.origType] || {}).handle || o.handler
).apply(i.elem, s)) &&
!1 === (u.result = r) &&
(u.preventDefault(), u.stopPropagation()));
}
return c.postDispatch && c.postDispatch.call(this, u), u.result;
}
},
handlers: function (e, t) {
var n,
r,
i,
o,
a,
s = [],
u = t.delegateCount,
l = e.target;
if (u && l.nodeType && !("click" === e.type && 1 <= e.button))
for (; l !== this; l = l.parentNode || this)
if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) {
for (o = [], a = {}, n = 0; n < u; n++)
void 0 === a[(i = (r = t[n]).selector + " ")] &&
(a[i] = r.needsContext
? -1 < S(i, this).index(l)
: S.find(i, this, null, [l]).length),
a[i] && o.push(r);
o.length && s.push({ elem: l, handlers: o });
}
return (
(l = this), u < t.length && s.push({ elem: l, handlers: t.slice(u) }), s
);
},
addProp: function (t, e) {
Object.defineProperty(S.Event.prototype, t, {
enumerable: !0,
configurable: !0,
get: m(e)
? function () {
if (this.originalEvent) return e(this.originalEvent);
}
: function () {
if (this.originalEvent) return this.originalEvent[t];
},
set: function (e) {
Object.defineProperty(this, t, {
enumerable: !0,
configurable: !0,
writable: !0,
value: e,
});
},
});
},
fix: function (e) {
return e[S.expando] ? e : new S.Event(e);
},
special: {
load: { noBubble: !0 },
click: {
setup: function (e) {
var t = this || e;
return (
pe.test(t.type) && t.click && A(t, "input") && Se(t, "click", we),
!1
);
},
trigger: function (e) {
var t = this || e;
return (
pe.test(t.type) && t.click && A(t, "input") && Se(t, "click"), !0
);
},
_default: function (e) {
var t = e.target;
return (
(pe.test(t.type) &&
t.click &&
A(t, "input") &&
Y.get(t, "click")) ||
A(t, "a")
);
},
},
beforeunload: {
postDispatch: function (e) {
void 0 !== e.result &&
e.originalEvent &&
(e.originalEvent.returnValue = e.result);
},
},
},
}),
(S.removeEvent = function (e, t, n) {
e.removeEventListener && e.removeEventListener(t, n);
}),
(S.Event = function (e, t) {
if (!(this instanceof S.Event)) return new S.Event(e, t);
e && e.type
? ((this.originalEvent = e),
(this.type = e.type),
(this.isDefaultPrevented =
e.defaultPrevented ||
(void 0 === e.defaultPrevented && !1 === e.returnValue)
? we
: Te),
(this.target =
e.target && 3 === e.target.nodeType
? e.target.parentNode
: e.target),
(this.currentTarget = e.currentTarget),
(this.relatedTarget = e.relatedTarget))
: (this.type = e),
t && S.extend(this, t),
(this.timeStamp = (e && e.timeStamp) || Date.now()),
(this[S.expando] = !0);
}),
(S.Event.prototype = {
constructor: S.Event,
isDefaultPrevented: Te,
isPropagationStopped: Te,
isImmediatePropagationStopped: Te,
isSimulated: !1,
preventDefault: function () {
var e = this.originalEvent;
(this.isDefaultPrevented = we),
e && !this.isSimulated && e.preventDefault();
},
stopPropagation: function () {
var e = this.originalEvent;
(this.isPropagationStopped = we),
e && !this.isSimulated && e.stopPropagation();
},
stopImmediatePropagation: function () {
var e = this.originalEvent;
(this.isImmediatePropagationStopped = we),
e && !this.isSimulated && e.stopImmediatePropagation(),
this.stopPropagation();
},
}),
S.each(
{
altKey: !0,
bubbles: !0,
cancelable: !0,
changedTouches: !0,
ctrlKey: !0,
detail: !0,
eventPhase: !0,
metaKey: !0,
pageX: !0,
pageY: !0,
shiftKey: !0,
view: !0,
char: !0,
code: !0,
charCode: !0,
key: !0,
keyCode: !0,
button: !0,
buttons: !0,
clientX: !0,
clientY: !0,
offsetX: !0,
offsetY: !0,
pointerId: !0,
pointerType: !0,
screenX: !0,
screenY: !0,
targetTouches: !0,
toElement: !0,
touches: !0,
which: !0,
},
S.event.addProp
),
S.each({ focus: "focusin", blur: "focusout" }, function (e, t) {
S.event.special[e] = {
setup: function () {
return Se(this, e, Ce), !1;
},
trigger: function () {
return Se(this, e), !0;
},
_default: function () {
return !0;
},
delegateType: t,
};
}),
S.each(
{
mouseenter: "mouseover",
mouseleave: "mouseout",
pointerenter: "pointerover",
pointerleave: "pointerout",
},
function (e, i) {
S.event.special[e] = {
delegateType: i,
bindType: i,
handle: function (e) {
var t,
n = e.relatedTarget,
r = e.handleObj;
return (
(n && (n === this || S.contains(this, n))) ||
((e.type = r.origType),
(t = r.handler.apply(this, arguments)),
(e.type = i)),
t
);
},
};
}
),
S.fn.extend({
on: function (e, t, n, r) {
return Ee(this, e, t, n, r);
},
one: function (e, t, n, r) {
return Ee(this, e, t, n, r, 1);
},
off: function (e, t, n) {
var r, i;
if (e && e.preventDefault && e.handleObj)
return (
(r = e.handleObj),
S(e.delegateTarget).off(
r.namespace ? r.origType + "." + r.namespace : r.origType,
r.selector,
r.handler
),
this
);
if ("object" == typeof e) {
for (i in e) this.off(i, t, e[i]);
return this;
}
return (
(!1 !== t && "function" != typeof t) || ((n = t), (t = void 0)),
!1 === n && (n = Te),
this.each(function () {
S.event.remove(this, e, n, t);
})
);
},
});
var ke = /