File manager - Edit - /home/autoph/public_html/projects/api/public/js.tar
Back
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('<option value="' + result[index].id + '">' + result[index].name + '</option>"'); }); } }); } 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 '<img width="50px" height="50px" class="user-image img-circle elevation-2" src="/storage/users/' + value + '" />'; } 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 = $('<span><img class="img-flag" /> <span></span></span>'); // 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: ` <div class=""> <div class="col-sm-4 p-1"> <input style="width: 120px !important;" type="button" id="add-warehouse" class="btn btn-primary btn-sm" value="Warehouse"></input> </div> </div> `, 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: ` <div class=""> <div class="col-sm-4 p-1"> <input style="width: 120px !important;" type="button" id="add-warehouse" class="btn btn-primary btn-sm" value="Warehouse"></input> </div> <div class="col-sm-4 p-1"> <input style="width: 120px !important;" type="button" id="add-floor" class="btn btn-primary btn-sm" value="Floor"></input> </div> </div> `, 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: ` <div class=""> <div class="col-sm-4 p-1"> <input style="width: 120px !important;" type="button" id="add-rack" class="btn btn-primary btn-sm" value="Rack"></input> </div> </div> `, 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: ` <div class=""> <div class="col-sm-4 p-1"> <input style="width: 120px !important;" type="button" id="add-bin" class="btn btn-primary btn-sm" value="Bin"></input> </div> </div> `, 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: ` <div class=""> <div class="col-sm-4 p-1"> <input style="width: 120px !important;" type="button" id="add-bin" class="btn btn-primary btn-sm" value="Bin"></input> </div> </div> `, 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 ( ` <img src="` + row.image + `" alt="Image" width="50" height="50"> ` ); }, 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, }) + `<br><del class="text-danger">` + price + `</del>`; 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 ( ` <div class="text-center"> <input class="default" type="radio" name="touchbutton" data-key="` + row.key + `" value="" ` + (row.default ? "checked" : "") + ` > </div> ` ); }, className: "align-middle p-1 dt-center", width: "5%", }, { title: "Action", data: "key", render: function (data, type, row, meta) { return ( ` <div class="row justify-content-center"> <a data-update='` + row.key + `' style="cursor:pointer;" class="edit m-1 btn btn-primary btn-icon btn-sm" title="Edit"><i class="fa fa-pen"></i></a> <a data-remove='` + row.key + `' style="cursor:pointer;" class="remove m-1 btn btn-sm btn-danger" title="Remove"><i class="fa fa-trash"></i></a> </div> ` ); }, 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 = $('<span><img class="img-flag" /> <span></span></span>'); // 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( `<li class="dropdown-item cursor-pointer py-0"><span class="text-sm">` + n + `</span></li>` ); }); $(".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 ( ` <img src="` + APP_DISK + row.thumbnail + `" alt="Image" width="50" height="50">` ); }, 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, }) + `<br><del class="text-danger">` + price + `</del>` : 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 = `<span class="text-sm badge badge-warning font-weight-normal">Unpublished</span>`; if (row.status == 1) { status = `<span class="text-sm badge badge-success font-weight-normal">Published</span>`; } else if (row.status == 2) { status = `<span class="text-sm badge badge-danger font-weight-normal">Draft</span>`; } return status; // ? `<span class="text-sm badge badge-primary font-weight-normal">Published</span>` // : `<span class="text-sm badge badge-warning font-weight-normal">Unpublished</span>`; }, }, { title: "Action", data: null, orderable: false, width: "5%", className: "align-middle p-1 dt-center", render: function (data, type, row, meta) { // return (`<div class="row m-0"> // <a href="/admin/products/edit/` + row.id + `" class="col btn btn-icon btn-xs btn-primary m-1" title="Edit"><i class="fa fa-edit"></i></a> // <a href="#" class="col btn btn-icon btn-xs btn-danger m-1" data-action-remove="` + row.id + `" title="Remove"><i class="fa fa-trash"></i></a> // </div>`); return ( ` <div class="row justify-content-center"> <a href="/admin/products/edit/` + row.id + `" style="cursor:pointer;" class="m-1 btn btn-sm btn-primary btn-icon" title="Edit"><i class="fa fa-pen"></i></a> <a data-action-remove style="cursor:pointer;" class="m-1 btn btn-sm btn-danger btn-icon" title="Remove"><i class="fa fa-trash"></i></a> </div> ` ); }, }, ]; 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 += `<tr> <td class="width-60-px min-width-60-px"> <div class="wrap-img vertical-align-m-i"><img src="` + APP_DISK + k.thumbnail + `" alt="` + k.name + `" class="thumb-image"></div> </td> <td class="pl5 p-r5 min-width-200-px"> <a href="/admin/products/edit/` + k.parent_id + `" target="_blank" class="hover-underline pre-line">` + k.name + `</a> ` + (k.variation ? `<p class="type-subdued"><span> ` + k.variation + ` </span></p>` : ``) + ` </td> <td class="pl5 p-r5 width-100-px min-width-100-px text-center"> <div class="dropup dropdown-priceOrderNew"> <div class="inline_block dropdown"><a class="wordwrap hide-print">` + // $percentage = 50; // $totalWidth = 350; // $new_width = ($percentage / 100) * $totalWidth; currencyNumberFormat(k.price + k.price * (k.tax_percentage / 100)) + `</a></div> </div> </td> <td class="pl5 p-r5 width-20-px min-width-20-px text-center"> x</td> <td class="pl5 p-r5 width-20-px min-width-100-px"> <input type="number" class="next-input p-none-r" value="` + k.order_quantity + `"></td> <td class="pl5 p-r5 width-100-px min-width-100-px text-center price_x_order_qty">` + currencyNumberFormat( (k.price + k.price * (k.tax_percentage / 100)) * k.order_quantity ) + `</td> <td class="pl5 p-r5 text-end width-20-px min-width-20-px remove_selected"> <i class="fa fa-times text-danger text-md cursor-pointer" aria-hidden="true"></i> </td> </tr>`; }); const shipping_total = orderTotal(i); $(".table-wrapper").append( ` <table class="table-normal"> <thead> <tr class="bg-info"> <td class="py-2 px-2" colspan="7"> <span class="font-weight-bold">` + v.store_name + `</span> </td> </tr> </thead> <tbody>` + html_products + `</tbody> <tfoot> <tr class="bg-light mb-2"> <td colspan="5"> <a id="" href="#" class="order_shipping" role="button"><span>Shipping</span> </a> </td> <td class="text-center shipping_price" colspan="2"> ` + currencyNumberFormat( selected_products[i].shipping ? selected_products[i].shipping.price : 0 ) + ` </td> </tr> <tr> <td colspan="7"> <div class="form-group row mb-0 "> <div class="col-sm-12 "> <!-- <label class="py-1 font-weight-normal m-0">Note --> <!-- <span class="text-danger text-md">*</span> --> <!-- </label> --> <div class="form-group mb-1"> <!-- <textarea id="catalog_description" name="catalog_description"></textarea> --> <textarea id="" rows="2" placeholder="Note for order..." class="ui-text-area textarea-auto-height">` + (selected_products[i].notes ? selected_products[i].notes : "") + `</textarea> </div> </div> </div> </td> </tr> <tr class="bg-secondary"> <td class="py-2 px-2" colspan="5"> <span class="font-weight-bold"> Order Total</span> </td> <td class="text-center py-2 px-2" colspan="3"> <span class="font-weight-bold order_total">` + currencyNumberFormat(shipping_total) + `</span> </td> </tr> </tfoot> </table> <hr>` ); }); $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 += `<li class=" clearfix product-variant"> <a class=" float-left"><span>` + k.attributes_word + `</span> </a> <span><small> ` + (k.quantity == null ? "" : "(" + k.quantity + " product(s) available)") + `</small></span> </li>`; }); html_product = `<li class="product-row item-not-selectable"> <div class="wrap-img inline_block vertical-align-t float-left"> <img src="` + APP_DISK + v.thumbnail + `" title="` + v.name + `" alt="` + v.name + `" class="thumb-image"></div> <label class="inline_block ml-2 ws-nm" style="width: calc(100% - 50px);">` + v.name_w_store + ` </label> <div> <div class="clear"></div> <ul>` + html_product_variations + `</ul> </div> </li>`; } else { html_product = `<li class="product-row item-selectable" > <div class="wrap-img inline_block vertical-align-t float-left"> <img src="` + APP_DISK + v.thumbnail + `" title="` + v.name + `" alt="` + v.name + `" class="thumb-image"> </div> <label class="inline_block ml-2 mt-2 ws-nm" style="width: calc(100% - 50px);">` + v.name_w_store + ` <span><small> ` + (v.quantity == null ? "" : "(" + v.quantity + " product(s) available)") + `</small></span> </label> </li>`; } $("#product_results_list").append(html_product); }); if (!result.length) { if (search_product.offset) { $("#product_results_list").append( `<li class="item-not-selectable">No more results...</li>` ); } else { $("#product_results_list").append( `<li class="item-not-selectable">No results...</li>` ); } } 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( `<option value="` + v.id + `">` + full_address + `</option>` ); }); $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( ` <div>` + result[index].firstName + " " + result[index].lastName + `</div> <div>` + result[index].mobile + `</div> <div><a href="mailto:` + result[index].email + `">` + result[index].email + `</a></div> <div>` + result[index].line1 + " " + result[index].city + " " + result[index].province + `</div> <div><a target="_blank" href="https://maps.google.com/?q=` + result[index].line1 + " " + result[index].city + " " + result[index].province + `" class="hover-underline">See on maps</a></div> ` ); }); $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 = `<li class="row buyer-row"> <div class="flexbox-grid-default flexbox-align-items-center"> <div class="flexbox-auto-40"> <div class="wrap-img inline_block vertical-align-t radius-cycle"><img src="` + APP_DISK + `/users/default.png` + `" alt="Leone Hand I" class="thumb-image radius-cycle"></div> </div> <div class="flexbox-auto-content-right"> <div class="overflow-ellipsis">` + v.first_name + " " + v.last_name + `</div> <div class="overflow-ellipsis"><a href="mailto:` + v.email + `"><span>` + v.email + `</span></a></div> </div> </div> </li>`; $("#buyer_results_list").append(html_buyers); }); if (!result.length) { if (search_buyer.offset) { $("#buyer_results_list").append( `<li class="item-not-selectable">No more results...</li>` ); } else { $("#buyer_results_list").append( `<li class="item-not-selectable">No results...</li>` ); } } 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( `<li class="dropdown-item cursor-pointer py-0"><span class="text-sm">` + n + `</span></li>` ); }); $(".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 = `<span class="text-sm badge badge-warning font-weight-normal">Unpublished</span>`; // if (row.status == 1) { // status = `<span class="text-sm badge badge-success font-weight-normal">Published</span>`; // } else if (row.status == 2) { // status = `<span class="text-sm badge badge-danger font-weight-normal">Draft</span>`; // } // return status; // // ? `<span class="text-sm badge badge-primary font-weight-normal">Published</span>` // // : `<span class="text-sm badge badge-warning font-weight-normal">Unpublished</span>`; // }, // }, { title: "Action", data: null, orderable: false, width: "5%", className: "align-middle p-1 dt-center", render: function (data, type, row, meta) { return ( ` <div class="row justify-content-center"> <a href="/admin/products/edit/` + row.id + `" style="cursor:pointer;" class="m-1 btn btn-sm btn-primary btn-icon" title="Edit"><i class="fa fa-pen"></i></a> <a data-action-remove style="cursor:pointer;" class="m-1 btn btn-sm btn-danger btn-icon" title="Remove"><i class="fa fa-trash"></i></a> </div> ` ); }, }, ]; 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 = "<a id='" + S + "'></a><select id='" + S + "-\r\\' msallowcapture=''><option selected=''></option></select>"), 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 = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>"; 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 = "<a href='#'></a>"), "#" === 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 = "<input/>"), 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 = "<textarea>x</textarea>"), (y.noCloneChecked = !!ce.cloneNode(!0).lastChild.defaultValue), (ce.innerHTML = "<option></option>"), (y.option = !!ce.lastChild); var ge = { thead: [1, "<table>", "</table>"], col: [2, "<table><colgroup>", "</colgroup></table>"], tr: [2, "<table><tbody>", "</tbody></table>"], td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], _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, "<select multiple='multiple'>", "</select>"]); 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 = /<script|<style|<link/i, Ae = /checked\s*(?:[^=]|=\s*.checked.)/i, Ne = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g; function je(e, t) { return ( (A(e, "table") && A(11 !== t.nodeType ? t : t.firstChild, "tr") && S(e).children("tbody")[0]) || e ); } function De(e) { return (e.type = (null !== e.getAttribute("type")) + "/" + e.type), e; } function qe(e) { return ( "true/" === (e.type || "").slice(0, 5) ? (e.type = e.type.slice(5)) : e.removeAttribute("type"), e ); } function Le(e, t) { var n, r, i, o, a, s; if (1 === t.nodeType) { if (Y.hasData(e) && (s = Y.get(e).events)) for (i in (Y.remove(t, "handle events"), s)) for (n = 0, r = s[i].length; n < r; n++) S.event.add(t, i, s[i][n]); Q.hasData(e) && ((o = Q.access(e)), (a = S.extend({}, o)), Q.set(t, a)); } } function He(n, r, i, o) { r = g(r); var e, t, a, s, u, l, c = 0, f = n.length, p = f - 1, d = r[0], h = m(d); if (h || (1 < f && "string" == typeof d && !y.checkClone && Ae.test(d))) return n.each(function (e) { var t = n.eq(e); h && (r[0] = d.call(this, e, t.html())), He(t, r, i, o); }); if ( f && ((t = (e = xe(r, n[0].ownerDocument, !1, n, o)).firstChild), 1 === e.childNodes.length && (e = t), t || o) ) { for (s = (a = S.map(ve(e, "script"), De)).length; c < f; c++) (u = e), c !== p && ((u = S.clone(u, !0, !0)), s && S.merge(a, ve(u, "script"))), i.call(n[c], u, c); if (s) for (l = a[a.length - 1].ownerDocument, S.map(a, qe), c = 0; c < s; c++) (u = a[c]), he.test(u.type || "") && !Y.access(u, "globalEval") && S.contains(l, u) && (u.src && "module" !== (u.type || "").toLowerCase() ? S._evalUrl && !u.noModule && S._evalUrl( u.src, { nonce: u.nonce || u.getAttribute("nonce") }, l ) : b(u.textContent.replace(Ne, ""), u, l)); } return n; } function Oe(e, t, n) { for (var r, i = t ? S.filter(t, e) : e, o = 0; null != (r = i[o]); o++) n || 1 !== r.nodeType || S.cleanData(ve(r)), r.parentNode && (n && ie(r) && ye(ve(r, "script")), r.parentNode.removeChild(r)); return e; } S.extend({ htmlPrefilter: function (e) { return e; }, clone: function (e, t, n) { var r, i, o, a, s, u, l, c = e.cloneNode(!0), f = ie(e); if ( !( y.noCloneChecked || (1 !== e.nodeType && 11 !== e.nodeType) || S.isXMLDoc(e) ) ) for (a = ve(c), r = 0, i = (o = ve(e)).length; r < i; r++) (s = o[r]), (u = a[r]), void 0, "input" === (l = u.nodeName.toLowerCase()) && pe.test(s.type) ? (u.checked = s.checked) : ("input" !== l && "textarea" !== l) || (u.defaultValue = s.defaultValue); if (t) if (n) for (o = o || ve(e), a = a || ve(c), r = 0, i = o.length; r < i; r++) Le(o[r], a[r]); else Le(e, c); return ( 0 < (a = ve(c, "script")).length && ye(a, !f && ve(e, "script")), c ); }, cleanData: function (e) { for (var t, n, r, i = S.event.special, o = 0; void 0 !== (n = e[o]); o++) if (V(n)) { if ((t = n[Y.expando])) { if (t.events) for (r in t.events) i[r] ? S.event.remove(n, r) : S.removeEvent(n, r, t.handle); n[Y.expando] = void 0; } n[Q.expando] && (n[Q.expando] = void 0); } }, }), S.fn.extend({ detach: function (e) { return Oe(this, e, !0); }, remove: function (e) { return Oe(this, e); }, text: function (e) { return $( this, function (e) { return void 0 === e ? S.text(this) : this.empty().each(function () { (1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType) || (this.textContent = e); }); }, null, e, arguments.length ); }, append: function () { return He(this, arguments, function (e) { (1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType) || je(this, e).appendChild(e); }); }, prepend: function () { return He(this, arguments, function (e) { if ( 1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType ) { var t = je(this, e); t.insertBefore(e, t.firstChild); } }); }, before: function () { return He(this, arguments, function (e) { this.parentNode && this.parentNode.insertBefore(e, this); }); }, after: function () { return He(this, arguments, function (e) { this.parentNode && this.parentNode.insertBefore(e, this.nextSibling); }); }, empty: function () { for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (S.cleanData(ve(e, !1)), (e.textContent = "")); return this; }, clone: function (e, t) { return ( (e = null != e && e), (t = null == t ? e : t), this.map(function () { return S.clone(this, e, t); }) ); }, html: function (e) { return $( this, function (e) { var t = this[0] || {}, n = 0, r = this.length; if (void 0 === e && 1 === t.nodeType) return t.innerHTML; if ( "string" == typeof e && !ke.test(e) && !ge[(de.exec(e) || ["", ""])[1].toLowerCase()] ) { e = S.htmlPrefilter(e); try { for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (S.cleanData(ve(t, !1)), (t.innerHTML = e)); t = 0; } catch (e) {} } t && this.empty().append(e); }, null, e, arguments.length ); }, replaceWith: function () { var n = []; return He( this, arguments, function (e) { var t = this.parentNode; S.inArray(this, n) < 0 && (S.cleanData(ve(this)), t && t.replaceChild(e, this)); }, n ); }, }), S.each( { appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith", }, function (e, a) { S.fn[e] = function (e) { for (var t, n = [], r = S(e), i = r.length - 1, o = 0; o <= i; o++) (t = o === i ? this : this.clone(!0)), S(r[o])[a](t), u.apply(n, t.get()); return this.pushStack(n); }; } ); var Pe = new RegExp("^(" + ee + ")(?!px)[a-z%]+$", "i"), Re = function (e) { var t = e.ownerDocument.defaultView; return (t && t.opener) || (t = C), t.getComputedStyle(e); }, Me = function (e, t, n) { var r, i, o = {}; for (i in t) (o[i] = e.style[i]), (e.style[i] = t[i]); for (i in ((r = n.call(e)), t)) e.style[i] = o[i]; return r; }, Ie = new RegExp(ne.join("|"), "i"); function We(e, t, n) { var r, i, o, a, s = e.style; return ( (n = n || Re(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || ie(e) || (a = S.style(e, t)), !y.pixelBoxStyles() && Pe.test(a) && Ie.test(t) && ((r = s.width), (i = s.minWidth), (o = s.maxWidth), (s.minWidth = s.maxWidth = s.width = a), (a = n.width), (s.width = r), (s.minWidth = i), (s.maxWidth = o))), void 0 !== a ? a + "" : a ); } function Fe(e, t) { return { get: function () { if (!e()) return (this.get = t).apply(this, arguments); delete this.get; }, }; } !(function () { function e() { if (l) { (u.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0"), (l.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%"), re.appendChild(u).appendChild(l); var e = C.getComputedStyle(l); (n = "1%" !== e.top), (s = 12 === t(e.marginLeft)), (l.style.right = "60%"), (o = 36 === t(e.right)), (r = 36 === t(e.width)), (l.style.position = "absolute"), (i = 12 === t(l.offsetWidth / 3)), re.removeChild(u), (l = null); } } function t(e) { return Math.round(parseFloat(e)); } var n, r, i, o, a, s, u = E.createElement("div"), l = E.createElement("div"); l.style && ((l.style.backgroundClip = "content-box"), (l.cloneNode(!0).style.backgroundClip = ""), (y.clearCloneStyle = "content-box" === l.style.backgroundClip), S.extend(y, { boxSizingReliable: function () { return e(), r; }, pixelBoxStyles: function () { return e(), o; }, pixelPosition: function () { return e(), n; }, reliableMarginLeft: function () { return e(), s; }, scrollboxSize: function () { return e(), i; }, reliableTrDimensions: function () { var e, t, n, r; return ( null == a && ((e = E.createElement("table")), (t = E.createElement("tr")), (n = E.createElement("div")), (e.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"), (t.style.cssText = "border:1px solid"), (t.style.height = "1px"), (n.style.height = "9px"), (n.style.display = "block"), re.appendChild(e).appendChild(t).appendChild(n), (r = C.getComputedStyle(t)), (a = parseInt(r.height, 10) + parseInt(r.borderTopWidth, 10) + parseInt(r.borderBottomWidth, 10) === t.offsetHeight), re.removeChild(e)), a ); }, })); })(); var Be = ["Webkit", "Moz", "ms"], $e = E.createElement("div").style, _e = {}; function ze(e) { var t = S.cssProps[e] || _e[e]; return ( t || (e in $e ? e : (_e[e] = (function (e) { var t = e[0].toUpperCase() + e.slice(1), n = Be.length; while (n--) if ((e = Be[n] + t) in $e) return e; })(e) || e)) ); } var Ue = /^(none|table(?!-c[ea]).+)/, Xe = /^--/, Ve = { position: "absolute", visibility: "hidden", display: "block" }, Ge = { letterSpacing: "0", fontWeight: "400" }; function Ye(e, t, n) { var r = te.exec(t); return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t; } function Qe(e, t, n, r, i, o) { var a = "width" === t ? 1 : 0, s = 0, u = 0; if (n === (r ? "border" : "content")) return 0; for (; a < 4; a += 2) "margin" === n && (u += S.css(e, n + ne[a], !0, i)), r ? ("content" === n && (u -= S.css(e, "padding" + ne[a], !0, i)), "margin" !== n && (u -= S.css(e, "border" + ne[a] + "Width", !0, i))) : ((u += S.css(e, "padding" + ne[a], !0, i)), "padding" !== n ? (u += S.css(e, "border" + ne[a] + "Width", !0, i)) : (s += S.css(e, "border" + ne[a] + "Width", !0, i))); return ( !r && 0 <= o && (u += Math.max( 0, Math.ceil( e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - 0.5 ) ) || 0), u ); } function Je(e, t, n) { var r = Re(e), i = (!y.boxSizingReliable() || n) && "border-box" === S.css(e, "boxSizing", !1, r), o = i, a = We(e, t, r), s = "offset" + t[0].toUpperCase() + t.slice(1); if (Pe.test(a)) { if (!n) return a; a = "auto"; } return ( ((!y.boxSizingReliable() && i) || (!y.reliableTrDimensions() && A(e, "tr")) || "auto" === a || (!parseFloat(a) && "inline" === S.css(e, "display", !1, r))) && e.getClientRects().length && ((i = "border-box" === S.css(e, "boxSizing", !1, r)), (o = s in e) && (a = e[s])), (a = parseFloat(a) || 0) + Qe(e, t, n || (i ? "border" : "content"), o, r, a) + "px" ); } function Ke(e, t, n, r, i) { return new Ke.prototype.init(e, t, n, r, i); } S.extend({ cssHooks: { opacity: { get: function (e, t) { if (t) { var n = We(e, "opacity"); return "" === n ? "1" : n; } }, }, }, cssNumber: { animationIterationCount: !0, columnCount: !0, fillOpacity: !0, flexGrow: !0, flexShrink: !0, fontWeight: !0, gridArea: !0, gridColumn: !0, gridColumnEnd: !0, gridColumnStart: !0, gridRow: !0, gridRowEnd: !0, gridRowStart: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, widows: !0, zIndex: !0, zoom: !0, }, cssProps: {}, style: function (e, t, n, r) { if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) { var i, o, a, s = X(t), u = Xe.test(t), l = e.style; if ( (u || (t = ze(s)), (a = S.cssHooks[t] || S.cssHooks[s]), void 0 === n) ) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t]; "string" === (o = typeof n) && (i = te.exec(n)) && i[1] && ((n = se(e, t, i)), (o = "number")), null != n && n == n && ("number" !== o || u || (n += (i && i[3]) || (S.cssNumber[s] ? "" : "px")), y.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), (a && "set" in a && void 0 === (n = a.set(e, n, r))) || (u ? l.setProperty(t, n) : (l[t] = n))); } }, css: function (e, t, n, r) { var i, o, a, s = X(t); return ( Xe.test(t) || (t = ze(s)), (a = S.cssHooks[t] || S.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = We(e, t, r)), "normal" === i && t in Ge && (i = Ge[t]), "" === n || n ? ((o = parseFloat(i)), !0 === n || isFinite(o) ? o || 0 : i) : i ); }, }), S.each(["height", "width"], function (e, u) { S.cssHooks[u] = { get: function (e, t, n) { if (t) return !Ue.test(S.css(e, "display")) || (e.getClientRects().length && e.getBoundingClientRect().width) ? Je(e, u, n) : Me(e, Ve, function () { return Je(e, u, n); }); }, set: function (e, t, n) { var r, i = Re(e), o = !y.scrollboxSize() && "absolute" === i.position, a = (o || n) && "border-box" === S.css(e, "boxSizing", !1, i), s = n ? Qe(e, u, n, a, i) : 0; return ( a && o && (s -= Math.ceil( e["offset" + u[0].toUpperCase() + u.slice(1)] - parseFloat(i[u]) - Qe(e, u, "border", !1, i) - 0.5 )), s && (r = te.exec(t)) && "px" !== (r[3] || "px") && ((e.style[u] = t), (t = S.css(e, u))), Ye(0, t, s) ); }, }; }), (S.cssHooks.marginLeft = Fe(y.reliableMarginLeft, function (e, t) { if (t) return ( (parseFloat(We(e, "marginLeft")) || e.getBoundingClientRect().left - Me(e, { marginLeft: 0 }, function () { return e.getBoundingClientRect().left; })) + "px" ); })), S.each({ margin: "", padding: "", border: "Width" }, function (i, o) { (S.cssHooks[i + o] = { expand: function (e) { for ( var t = 0, n = {}, r = "string" == typeof e ? e.split(" ") : [e]; t < 4; t++ ) n[i + ne[t] + o] = r[t] || r[t - 2] || r[0]; return n; }, }), "margin" !== i && (S.cssHooks[i + o].set = Ye); }), S.fn.extend({ css: function (e, t) { return $( this, function (e, t, n) { var r, i, o = {}, a = 0; if (Array.isArray(t)) { for (r = Re(e), i = t.length; a < i; a++) o[t[a]] = S.css(e, t[a], !1, r); return o; } return void 0 !== n ? S.style(e, t, n) : S.css(e, t); }, e, t, 1 < arguments.length ); }, }), (((S.Tween = Ke).prototype = { constructor: Ke, init: function (e, t, n, r, i, o) { (this.elem = e), (this.prop = n), (this.easing = i || S.easing._default), (this.options = t), (this.start = this.now = this.cur()), (this.end = r), (this.unit = o || (S.cssNumber[n] ? "" : "px")); }, cur: function () { var e = Ke.propHooks[this.prop]; return e && e.get ? e.get(this) : Ke.propHooks._default.get(this); }, run: function (e) { var t, n = Ke.propHooks[this.prop]; return ( this.options.duration ? (this.pos = t = S.easing[this.easing]( e, this.options.duration * e, 0, 1, this.options.duration )) : (this.pos = t = e), (this.now = (this.end - this.start) * t + this.start), this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : Ke.propHooks._default.set(this), this ); }, }).init.prototype = Ke.prototype), ((Ke.propHooks = { _default: { get: function (e) { var t; return 1 !== e.elem.nodeType || (null != e.elem[e.prop] && null == e.elem.style[e.prop]) ? e.elem[e.prop] : (t = S.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0; }, set: function (e) { S.fx.step[e.prop] ? S.fx.step[e.prop](e) : 1 !== e.elem.nodeType || (!S.cssHooks[e.prop] && null == e.elem.style[ze(e.prop)]) ? (e.elem[e.prop] = e.now) : S.style(e.elem, e.prop, e.now + e.unit); }, }, }).scrollTop = Ke.propHooks.scrollLeft = { set: function (e) { e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now); }, }), (S.easing = { linear: function (e) { return e; }, swing: function (e) { return 0.5 - Math.cos(e * Math.PI) / 2; }, _default: "swing", }), (S.fx = Ke.prototype.init), (S.fx.step = {}); var Ze, et, tt, nt, rt = /^(?:toggle|show|hide)$/, it = /queueHooks$/; function ot() { et && (!1 === E.hidden && C.requestAnimationFrame ? C.requestAnimationFrame(ot) : C.setTimeout(ot, S.fx.interval), S.fx.tick()); } function at() { return ( C.setTimeout(function () { Ze = void 0; }), (Ze = Date.now()) ); } function st(e, t) { var n, r = 0, i = { height: e }; for (t = t ? 1 : 0; r < 4; r += 2 - t) i["margin" + (n = ne[r])] = i["padding" + n] = e; return t && (i.opacity = i.width = e), i; } function ut(e, t, n) { for ( var r, i = (lt.tweeners[t] || []).concat(lt.tweeners["*"]), o = 0, a = i.length; o < a; o++ ) if ((r = i[o].call(n, t, e))) return r; } function lt(o, e, t) { var n, a, r = 0, i = lt.prefilters.length, s = S.Deferred().always(function () { delete u.elem; }), u = function () { if (a) return !1; for ( var e = Ze || at(), t = Math.max(0, l.startTime + l.duration - e), n = 1 - (t / l.duration || 0), r = 0, i = l.tweens.length; r < i; r++ ) l.tweens[r].run(n); return ( s.notifyWith(o, [l, n, t]), n < 1 && i ? t : (i || s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l]), !1) ); }, l = s.promise({ elem: o, props: S.extend({}, e), opts: S.extend(!0, { specialEasing: {}, easing: S.easing._default }, t), originalProperties: e, originalOptions: t, startTime: Ze || at(), duration: t.duration, tweens: [], createTween: function (e, t) { var n = S.Tween( o, l.opts, e, t, l.opts.specialEasing[e] || l.opts.easing ); return l.tweens.push(n), n; }, stop: function (e) { var t = 0, n = e ? l.tweens.length : 0; if (a) return this; for (a = !0; t < n; t++) l.tweens[t].run(1); return ( e ? (s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l, e])) : s.rejectWith(o, [l, e]), this ); }, }), c = l.props; for ( !(function (e, t) { var n, r, i, o, a; for (n in e) if ( ((i = t[(r = X(n))]), (o = e[n]), Array.isArray(o) && ((i = o[1]), (o = e[n] = o[0])), n !== r && ((e[r] = o), delete e[n]), (a = S.cssHooks[r]) && ("expand" in a)) ) for (n in ((o = a.expand(o)), delete e[r], o)) (n in e) || ((e[n] = o[n]), (t[n] = i)); else t[r] = i; })(c, l.opts.specialEasing); r < i; r++ ) if ((n = lt.prefilters[r].call(l, o, c, l.opts))) return ( m(n.stop) && (S._queueHooks(l.elem, l.opts.queue).stop = n.stop.bind(n)), n ); return ( S.map(c, ut, l), m(l.opts.start) && l.opts.start.call(o, l), l .progress(l.opts.progress) .done(l.opts.done, l.opts.complete) .fail(l.opts.fail) .always(l.opts.always), S.fx.timer(S.extend(u, { elem: o, anim: l, queue: l.opts.queue })), l ); } (S.Animation = S.extend(lt, { tweeners: { "*": [ function (e, t) { var n = this.createTween(e, t); return se(n.elem, e, te.exec(t), n), n; }, ], }, tweener: function (e, t) { m(e) ? ((t = e), (e = ["*"])) : (e = e.match(P)); for (var n, r = 0, i = e.length; r < i; r++) (n = e[r]), (lt.tweeners[n] = lt.tweeners[n] || []), lt.tweeners[n].unshift(t); }, prefilters: [ function (e, t, n) { var r, i, o, a, s, u, l, c, f = "width" in t || "height" in t, p = this, d = {}, h = e.style, g = e.nodeType && ae(e), v = Y.get(e, "fxshow"); for (r in (n.queue || (null == (a = S._queueHooks(e, "fx")).unqueued && ((a.unqueued = 0), (s = a.empty.fire), (a.empty.fire = function () { a.unqueued || s(); })), a.unqueued++, p.always(function () { p.always(function () { a.unqueued--, S.queue(e, "fx").length || a.empty.fire(); }); })), t)) if (((i = t[r]), rt.test(i))) { if ( (delete t[r], (o = o || "toggle" === i), i === (g ? "hide" : "show")) ) { if ("show" !== i || !v || void 0 === v[r]) continue; g = !0; } d[r] = (v && v[r]) || S.style(e, r); } if ((u = !S.isEmptyObject(t)) || !S.isEmptyObject(d)) for (r in (f && 1 === e.nodeType && ((n.overflow = [h.overflow, h.overflowX, h.overflowY]), null == (l = v && v.display) && (l = Y.get(e, "display")), "none" === (c = S.css(e, "display")) && (l ? (c = l) : (le([e], !0), (l = e.style.display || l), (c = S.css(e, "display")), le([e]))), ("inline" === c || ("inline-block" === c && null != l)) && "none" === S.css(e, "float") && (u || (p.done(function () { h.display = l; }), null == l && ((c = h.display), (l = "none" === c ? "" : c))), (h.display = "inline-block"))), n.overflow && ((h.overflow = "hidden"), p.always(function () { (h.overflow = n.overflow[0]), (h.overflowX = n.overflow[1]), (h.overflowY = n.overflow[2]); })), (u = !1), d)) u || (v ? "hidden" in v && (g = v.hidden) : (v = Y.access(e, "fxshow", { display: l })), o && (v.hidden = !g), g && le([e], !0), p.done(function () { for (r in (g || le([e]), Y.remove(e, "fxshow"), d)) S.style(e, r, d[r]); })), (u = ut(g ? v[r] : 0, r, p)), r in v || ((v[r] = u.start), g && ((u.end = u.start), (u.start = 0))); }, ], prefilter: function (e, t) { t ? lt.prefilters.unshift(e) : lt.prefilters.push(e); }, })), (S.speed = function (e, t, n) { var r = e && "object" == typeof e ? S.extend({}, e) : { complete: n || (!n && t) || (m(e) && e), duration: e, easing: (n && t) || (t && !m(t) && t), }; return ( S.fx.off ? (r.duration = 0) : "number" != typeof r.duration && (r.duration in S.fx.speeds ? (r.duration = S.fx.speeds[r.duration]) : (r.duration = S.fx.speeds._default)), (null != r.queue && !0 !== r.queue) || (r.queue = "fx"), (r.old = r.complete), (r.complete = function () { m(r.old) && r.old.call(this), r.queue && S.dequeue(this, r.queue); }), r ); }), S.fn.extend({ fadeTo: function (e, t, n, r) { return this.filter(ae) .css("opacity", 0) .show() .end() .animate({ opacity: t }, e, n, r); }, animate: function (t, e, n, r) { var i = S.isEmptyObject(t), o = S.speed(e, n, r), a = function () { var e = lt(this, S.extend({}, t), o); (i || Y.get(this, "finish")) && e.stop(!0); }; return ( (a.finish = a), i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a) ); }, stop: function (i, e, o) { var a = function (e) { var t = e.stop; delete e.stop, t(o); }; return ( "string" != typeof i && ((o = e), (e = i), (i = void 0)), e && this.queue(i || "fx", []), this.each(function () { var e = !0, t = null != i && i + "queueHooks", n = S.timers, r = Y.get(this); if (t) r[t] && r[t].stop && a(r[t]); else for (t in r) r[t] && r[t].stop && it.test(t) && a(r[t]); for (t = n.length; t--; ) n[t].elem !== this || (null != i && n[t].queue !== i) || (n[t].anim.stop(o), (e = !1), n.splice(t, 1)); (!e && o) || S.dequeue(this, i); }) ); }, finish: function (a) { return ( !1 !== a && (a = a || "fx"), this.each(function () { var e, t = Y.get(this), n = t[a + "queue"], r = t[a + "queueHooks"], i = S.timers, o = n ? n.length : 0; for ( t.finish = !0, S.queue(this, a, []), r && r.stop && r.stop.call(this, !0), e = i.length; e--; ) i[e].elem === this && i[e].queue === a && (i[e].anim.stop(!0), i.splice(e, 1)); for (e = 0; e < o; e++) n[e] && n[e].finish && n[e].finish.call(this); delete t.finish; }) ); }, }), S.each(["toggle", "show", "hide"], function (e, r) { var i = S.fn[r]; S.fn[r] = function (e, t, n) { return null == e || "boolean" == typeof e ? i.apply(this, arguments) : this.animate(st(r, !0), e, t, n); }; }), S.each( { slideDown: st("show"), slideUp: st("hide"), slideToggle: st("toggle"), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }, fadeToggle: { opacity: "toggle" }, }, function (e, r) { S.fn[e] = function (e, t, n) { return this.animate(r, e, t, n); }; } ), (S.timers = []), (S.fx.tick = function () { var e, t = 0, n = S.timers; for (Ze = Date.now(); t < n.length; t++) (e = n[t])() || n[t] !== e || n.splice(t--, 1); n.length || S.fx.stop(), (Ze = void 0); }), (S.fx.timer = function (e) { S.timers.push(e), S.fx.start(); }), (S.fx.interval = 13), (S.fx.start = function () { et || ((et = !0), ot()); }), (S.fx.stop = function () { et = null; }), (S.fx.speeds = { slow: 600, fast: 200, _default: 400 }), (S.fn.delay = function (r, e) { return ( (r = (S.fx && S.fx.speeds[r]) || r), (e = e || "fx"), this.queue(e, function (e, t) { var n = C.setTimeout(e, r); t.stop = function () { C.clearTimeout(n); }; }) ); }), (tt = E.createElement("input")), (nt = E.createElement("select").appendChild(E.createElement("option"))), (tt.type = "checkbox"), (y.checkOn = "" !== tt.value), (y.optSelected = nt.selected), ((tt = E.createElement("input")).value = "t"), (tt.type = "radio"), (y.radioValue = "t" === tt.value); var ct, ft = S.expr.attrHandle; S.fn.extend({ attr: function (e, t) { return $(this, S.attr, e, t, 1 < arguments.length); }, removeAttr: function (e) { return this.each(function () { S.removeAttr(this, e); }); }, }), S.extend({ attr: function (e, t, n) { var r, i, o = e.nodeType; if (3 !== o && 8 !== o && 2 !== o) return "undefined" == typeof e.getAttribute ? S.prop(e, t, n) : ((1 === o && S.isXMLDoc(e)) || (i = S.attrHooks[t.toLowerCase()] || (S.expr.match.bool.test(t) ? ct : void 0)), void 0 !== n ? null === n ? void S.removeAttr(e, t) : i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""), n) : i && "get" in i && null !== (r = i.get(e, t)) ? r : null == (r = S.find.attr(e, t)) ? void 0 : r); }, attrHooks: { type: { set: function (e, t) { if (!y.radioValue && "radio" === t && A(e, "input")) { var n = e.value; return e.setAttribute("type", t), n && (e.value = n), t; } }, }, }, removeAttr: function (e, t) { var n, r = 0, i = t && t.match(P); if (i && 1 === e.nodeType) while ((n = i[r++])) e.removeAttribute(n); }, }), (ct = { set: function (e, t, n) { return !1 === t ? S.removeAttr(e, n) : e.setAttribute(n, n), n; }, }), S.each(S.expr.match.bool.source.match(/\w+/g), function (e, t) { var a = ft[t] || S.find.attr; ft[t] = function (e, t, n) { var r, i, o = t.toLowerCase(); return ( n || ((i = ft[o]), (ft[o] = r), (r = null != a(e, t, n) ? o : null), (ft[o] = i)), r ); }; }); var pt = /^(?:input|select|textarea|button)$/i, dt = /^(?:a|area)$/i; function ht(e) { return (e.match(P) || []).join(" "); } function gt(e) { return (e.getAttribute && e.getAttribute("class")) || ""; } function vt(e) { return Array.isArray(e) ? e : ("string" == typeof e && e.match(P)) || []; } S.fn.extend({ prop: function (e, t) { return $(this, S.prop, e, t, 1 < arguments.length); }, removeProp: function (e) { return this.each(function () { delete this[S.propFix[e] || e]; }); }, }), S.extend({ prop: function (e, t, n) { var r, i, o = e.nodeType; if (3 !== o && 8 !== o && 2 !== o) return ( (1 === o && S.isXMLDoc(e)) || ((t = S.propFix[t] || t), (i = S.propHooks[t])), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : (e[t] = n) : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t] ); }, propHooks: { tabIndex: { get: function (e) { var t = S.find.attr(e, "tabindex"); return t ? parseInt(t, 10) : pt.test(e.nodeName) || (dt.test(e.nodeName) && e.href) ? 0 : -1; }, }, }, propFix: { for: "htmlFor", class: "className" }, }), y.optSelected || (S.propHooks.selected = { get: function (e) { var t = e.parentNode; return t && t.parentNode && t.parentNode.selectedIndex, null; }, set: function (e) { var t = e.parentNode; t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex); }, }), S.each( [ "tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable", ], function () { S.propFix[this.toLowerCase()] = this; } ), S.fn.extend({ addClass: function (t) { var e, n, r, i, o, a, s, u = 0; if (m(t)) return this.each(function (e) { S(this).addClass(t.call(this, e, gt(this))); }); if ((e = vt(t)).length) while ((n = this[u++])) if (((i = gt(n)), (r = 1 === n.nodeType && " " + ht(i) + " "))) { a = 0; while ((o = e[a++])) r.indexOf(" " + o + " ") < 0 && (r += o + " "); i !== (s = ht(r)) && n.setAttribute("class", s); } return this; }, removeClass: function (t) { var e, n, r, i, o, a, s, u = 0; if (m(t)) return this.each(function (e) { S(this).removeClass(t.call(this, e, gt(this))); }); if (!arguments.length) return this.attr("class", ""); if ((e = vt(t)).length) while ((n = this[u++])) if (((i = gt(n)), (r = 1 === n.nodeType && " " + ht(i) + " "))) { a = 0; while ((o = e[a++])) while (-1 < r.indexOf(" " + o + " ")) r = r.replace(" " + o + " ", " "); i !== (s = ht(r)) && n.setAttribute("class", s); } return this; }, toggleClass: function (i, t) { var o = typeof i, a = "string" === o || Array.isArray(i); return "boolean" == typeof t && a ? t ? this.addClass(i) : this.removeClass(i) : m(i) ? this.each(function (e) { S(this).toggleClass(i.call(this, e, gt(this), t), t); }) : this.each(function () { var e, t, n, r; if (a) { (t = 0), (n = S(this)), (r = vt(i)); while ((e = r[t++])) n.hasClass(e) ? n.removeClass(e) : n.addClass(e); } else (void 0 !== i && "boolean" !== o) || ((e = gt(this)) && Y.set(this, "__className__", e), this.setAttribute && this.setAttribute("class", e || !1 === i ? "" : Y.get(this, "__className__") || "")); }); }, hasClass: function (e) { var t, n, r = 0; t = " " + e + " "; while ((n = this[r++])) if (1 === n.nodeType && -1 < (" " + ht(gt(n)) + " ").indexOf(t)) return !0; return !1; }, }); var yt = /\r/g; S.fn.extend({ val: function (n) { var r, e, i, t = this[0]; return arguments.length ? ((i = m(n)), this.each(function (e) { var t; 1 === this.nodeType && (null == (t = i ? n.call(this, e, S(this).val()) : n) ? (t = "") : "number" == typeof t ? (t += "") : Array.isArray(t) && (t = S.map(t, function (e) { return null == e ? "" : e + ""; })), ((r = S.valHooks[this.type] || S.valHooks[this.nodeName.toLowerCase()]) && "set" in r && void 0 !== r.set(this, t, "value")) || (this.value = t)); })) : t ? (r = S.valHooks[t.type] || S.valHooks[t.nodeName.toLowerCase()]) && "get" in r && void 0 !== (e = r.get(t, "value")) ? e : "string" == typeof (e = t.value) ? e.replace(yt, "") : null == e ? "" : e : void 0; }, }), S.extend({ valHooks: { option: { get: function (e) { var t = S.find.attr(e, "value"); return null != t ? t : ht(S.text(e)); }, }, select: { get: function (e) { var t, n, r, i = e.options, o = e.selectedIndex, a = "select-one" === e.type, s = a ? null : [], u = a ? o + 1 : i.length; for (r = o < 0 ? u : a ? o : 0; r < u; r++) if ( ((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !A(n.parentNode, "optgroup")) ) { if (((t = S(n).val()), a)) return t; s.push(t); } return s; }, set: function (e, t) { var n, r, i = e.options, o = S.makeArray(t), a = i.length; while (a--) ((r = i[a]).selected = -1 < S.inArray(S.valHooks.option.get(r), o)) && (n = !0); return n || (e.selectedIndex = -1), o; }, }, }, }), S.each(["radio", "checkbox"], function () { (S.valHooks[this] = { set: function (e, t) { if (Array.isArray(t)) return (e.checked = -1 < S.inArray(S(e).val(), t)); }, }), y.checkOn || (S.valHooks[this].get = function (e) { return null === e.getAttribute("value") ? "on" : e.value; }); }), (y.focusin = "onfocusin" in C); var mt = /^(?:focusinfocus|focusoutblur)$/, xt = function (e) { e.stopPropagation(); }; S.extend(S.event, { trigger: function (e, t, n, r) { var i, o, a, s, u, l, c, f, p = [n || E], d = v.call(e, "type") ? e.type : e, h = v.call(e, "namespace") ? e.namespace.split(".") : []; if ( ((o = f = a = n = n || E), 3 !== n.nodeType && 8 !== n.nodeType && !mt.test(d + S.event.triggered) && (-1 < d.indexOf(".") && ((d = (h = d.split(".")).shift()), h.sort()), (u = d.indexOf(":") < 0 && "on" + d), ((e = e[S.expando] ? e : new S.Event(d, "object" == typeof e && e)).isTrigger = r ? 2 : 3), (e.namespace = h.join(".")), (e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null), (e.result = void 0), e.target || (e.target = n), (t = null == t ? [e] : S.makeArray(t, [e])), (c = S.event.special[d] || {}), r || !c.trigger || !1 !== c.trigger.apply(n, t))) ) { if (!r && !c.noBubble && !x(n)) { for ( s = c.delegateType || d, mt.test(s + d) || (o = o.parentNode); o; o = o.parentNode ) p.push(o), (a = o); a === (n.ownerDocument || E) && p.push(a.defaultView || a.parentWindow || C); } i = 0; while ((o = p[i++]) && !e.isPropagationStopped()) (f = o), (e.type = 1 < i ? s : c.bindType || d), (l = (Y.get(o, "events") || Object.create(null))[e.type] && Y.get(o, "handle")) && l.apply(o, t), (l = u && o[u]) && l.apply && V(o) && ((e.result = l.apply(o, t)), !1 === e.result && e.preventDefault()); return ( (e.type = d), r || e.isDefaultPrevented() || (c._default && !1 !== c._default.apply(p.pop(), t)) || !V(n) || (u && m(n[d]) && !x(n) && ((a = n[u]) && (n[u] = null), (S.event.triggered = d), e.isPropagationStopped() && f.addEventListener(d, xt), n[d](), e.isPropagationStopped() && f.removeEventListener(d, xt), (S.event.triggered = void 0), a && (n[u] = a))), e.result ); } }, simulate: function (e, t, n) { var r = S.extend(new S.Event(), n, { type: e, isSimulated: !0 }); S.event.trigger(r, null, t); }, }), S.fn.extend({ trigger: function (e, t) { return this.each(function () { S.event.trigger(e, t, this); }); }, triggerHandler: function (e, t) { var n = this[0]; if (n) return S.event.trigger(e, t, n, !0); }, }), y.focusin || S.each({ focus: "focusin", blur: "focusout" }, function (n, r) { var i = function (e) { S.event.simulate(r, e.target, S.event.fix(e)); }; S.event.special[r] = { setup: function () { var e = this.ownerDocument || this.document || this, t = Y.access(e, r); t || e.addEventListener(n, i, !0), Y.access(e, r, (t || 0) + 1); }, teardown: function () { var e = this.ownerDocument || this.document || this, t = Y.access(e, r) - 1; t ? Y.access(e, r, t) : (e.removeEventListener(n, i, !0), Y.remove(e, r)); }, }; }); var bt = C.location, wt = { guid: Date.now() }, Tt = /\?/; S.parseXML = function (e) { var t, n; if (!e || "string" != typeof e) return null; try { t = new C.DOMParser().parseFromString(e, "text/xml"); } catch (e) {} return ( (n = t && t.getElementsByTagName("parsererror")[0]), (t && !n) || S.error( "Invalid XML: " + (n ? S.map(n.childNodes, function (e) { return e.textContent; }).join("\n") : e) ), t ); }; var Ct = /\[\]$/, Et = /\r?\n/g, St = /^(?:submit|button|image|reset|file)$/i, kt = /^(?:input|select|textarea|keygen)/i; function At(n, e, r, i) { var t; if (Array.isArray(e)) S.each(e, function (e, t) { r || Ct.test(n) ? i(n, t) : At( n + "[" + ("object" == typeof t && null != t ? e : "") + "]", t, r, i ); }); else if (r || "object" !== w(e)) i(n, e); else for (t in e) At(n + "[" + t + "]", e[t], r, i); } (S.param = function (e, t) { var n, r = [], i = function (e, t) { var n = m(t) ? t() : t; r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n); }; if (null == e) return ""; if (Array.isArray(e) || (e.jquery && !S.isPlainObject(e))) S.each(e, function () { i(this.name, this.value); }); else for (n in e) At(n, e[n], t, i); return r.join("&"); }), S.fn.extend({ serialize: function () { return S.param(this.serializeArray()); }, serializeArray: function () { return this.map(function () { var e = S.prop(this, "elements"); return e ? S.makeArray(e) : this; }) .filter(function () { var e = this.type; return ( this.name && !S(this).is(":disabled") && kt.test(this.nodeName) && !St.test(e) && (this.checked || !pe.test(e)) ); }) .map(function (e, t) { var n = S(this).val(); return null == n ? null : Array.isArray(n) ? S.map(n, function (e) { return { name: t.name, value: e.replace(Et, "\r\n") }; }) : { name: t.name, value: n.replace(Et, "\r\n") }; }) .get(); }, }); var Nt = /%20/g, jt = /#.*$/, Dt = /([?&])_=[^&]*/, qt = /^(.*?):[ \t]*([^\r\n]*)$/gm, Lt = /^(?:GET|HEAD)$/, Ht = /^\/\//, Ot = {}, Pt = {}, Rt = "*/".concat("*"), Mt = E.createElement("a"); function It(o) { return function (e, t) { "string" != typeof e && ((t = e), (e = "*")); var n, r = 0, i = e.toLowerCase().match(P) || []; if (m(t)) while ((n = i[r++])) "+" === n[0] ? ((n = n.slice(1) || "*"), (o[n] = o[n] || []).unshift(t)) : (o[n] = o[n] || []).push(t); }; } function Wt(t, i, o, a) { var s = {}, u = t === Pt; function l(e) { var r; return ( (s[e] = !0), S.each(t[e] || [], function (e, t) { var n = t(i, o, a); return "string" != typeof n || u || s[n] ? u ? !(r = n) : void 0 : (i.dataTypes.unshift(n), l(n), !1); }), r ); } return l(i.dataTypes[0]) || (!s["*"] && l("*")); } function Ft(e, t) { var n, r, i = S.ajaxSettings.flatOptions || {}; for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]); return r && S.extend(!0, e, r), e; } (Mt.href = bt.href), S.extend({ active: 0, lastModified: {}, etag: {}, ajaxSettings: { url: bt.href, type: "GET", isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test( bt.protocol ), global: !0, processData: !0, async: !0, contentType: "application/x-www-form-urlencoded; charset=UTF-8", accepts: { "*": Rt, text: "text/plain", html: "text/html", xml: "application/xml, text/xml", json: "application/json, text/javascript", }, contents: { xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/ }, responseFields: { xml: "responseXML", text: "responseText", json: "responseJSON", }, converters: { "* text": String, "text html": !0, "text json": JSON.parse, "text xml": S.parseXML, }, flatOptions: { url: !0, context: !0 }, }, ajaxSetup: function (e, t) { return t ? Ft(Ft(e, S.ajaxSettings), t) : Ft(S.ajaxSettings, e); }, ajaxPrefilter: It(Ot), ajaxTransport: It(Pt), ajax: function (e, t) { "object" == typeof e && ((t = e), (e = void 0)), (t = t || {}); var c, f, p, n, d, r, h, g, i, o, v = S.ajaxSetup({}, t), y = v.context || v, m = v.context && (y.nodeType || y.jquery) ? S(y) : S.event, x = S.Deferred(), b = S.Callbacks("once memory"), w = v.statusCode || {}, a = {}, s = {}, u = "canceled", T = { readyState: 0, getResponseHeader: function (e) { var t; if (h) { if (!n) { n = {}; while ((t = qt.exec(p))) n[t[1].toLowerCase() + " "] = ( n[t[1].toLowerCase() + " "] || [] ).concat(t[2]); } t = n[e.toLowerCase() + " "]; } return null == t ? null : t.join(", "); }, getAllResponseHeaders: function () { return h ? p : null; }, setRequestHeader: function (e, t) { return ( null == h && ((e = s[e.toLowerCase()] = s[e.toLowerCase()] || e), (a[e] = t)), this ); }, overrideMimeType: function (e) { return null == h && (v.mimeType = e), this; }, statusCode: function (e) { var t; if (e) if (h) T.always(e[T.status]); else for (t in e) w[t] = [w[t], e[t]]; return this; }, abort: function (e) { var t = e || u; return c && c.abort(t), l(0, t), this; }, }; if ( (x.promise(T), (v.url = ((e || v.url || bt.href) + "").replace( Ht, bt.protocol + "//" )), (v.type = t.method || t.type || v.method || v.type), (v.dataTypes = (v.dataType || "*").toLowerCase().match(P) || [""]), null == v.crossDomain) ) { r = E.createElement("a"); try { (r.href = v.url), (r.href = r.href), (v.crossDomain = Mt.protocol + "//" + Mt.host != r.protocol + "//" + r.host); } catch (e) { v.crossDomain = !0; } } if ( (v.data && v.processData && "string" != typeof v.data && (v.data = S.param(v.data, v.traditional)), Wt(Ot, v, t, T), h) ) return T; for (i in ((g = S.event && v.global) && 0 == S.active++ && S.event.trigger("ajaxStart"), (v.type = v.type.toUpperCase()), (v.hasContent = !Lt.test(v.type)), (f = v.url.replace(jt, "")), v.hasContent ? v.data && v.processData && 0 === (v.contentType || "").indexOf( "application/x-www-form-urlencoded" ) && (v.data = v.data.replace(Nt, "+")) : ((o = v.url.slice(f.length)), v.data && (v.processData || "string" == typeof v.data) && ((f += (Tt.test(f) ? "&" : "?") + v.data), delete v.data), !1 === v.cache && ((f = f.replace(Dt, "$1")), (o = (Tt.test(f) ? "&" : "?") + "_=" + wt.guid++ + o)), (v.url = f + o)), v.ifModified && (S.lastModified[f] && T.setRequestHeader("If-Modified-Since", S.lastModified[f]), S.etag[f] && T.setRequestHeader("If-None-Match", S.etag[f])), ((v.data && v.hasContent && !1 !== v.contentType) || t.contentType) && T.setRequestHeader("Content-Type", v.contentType), T.setRequestHeader( "Accept", v.dataTypes[0] && v.accepts[v.dataTypes[0]] ? v.accepts[v.dataTypes[0]] + ("*" !== v.dataTypes[0] ? ", " + Rt + "; q=0.01" : "") : v.accepts["*"] ), v.headers)) T.setRequestHeader(i, v.headers[i]); if (v.beforeSend && (!1 === v.beforeSend.call(y, T, v) || h)) return T.abort(); if ( ((u = "abort"), b.add(v.complete), T.done(v.success), T.fail(v.error), (c = Wt(Pt, v, t, T))) ) { if (((T.readyState = 1), g && m.trigger("ajaxSend", [T, v]), h)) return T; v.async && 0 < v.timeout && (d = C.setTimeout(function () { T.abort("timeout"); }, v.timeout)); try { (h = !1), c.send(a, l); } catch (e) { if (h) throw e; l(-1, e); } } else l(-1, "No Transport"); function l(e, t, n, r) { var i, o, a, s, u, l = t; h || ((h = !0), d && C.clearTimeout(d), (c = void 0), (p = r || ""), (T.readyState = 0 < e ? 4 : 0), (i = (200 <= e && e < 300) || 304 === e), n && (s = (function (e, t, n) { var r, i, o, a, s = e.contents, u = e.dataTypes; while ("*" === u[0]) u.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type")); if (r) for (i in s) if (s[i] && s[i].test(r)) { u.unshift(i); break; } if (u[0] in n) o = u[0]; else { for (i in n) { if (!u[0] || e.converters[i + " " + u[0]]) { o = i; break; } a || (a = i); } o = o || a; } if (o) return o !== u[0] && u.unshift(o), n[o]; })(v, T, n)), !i && -1 < S.inArray("script", v.dataTypes) && S.inArray("json", v.dataTypes) < 0 && (v.converters["text script"] = function () {}), (s = (function (e, t, n, r) { var i, o, a, s, u, l = {}, c = e.dataTypes.slice(); if (c[1]) for (a in e.converters) l[a.toLowerCase()] = e.converters[a]; o = c.shift(); while (o) if ( (e.responseFields[o] && (n[e.responseFields[o]] = t), !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), (u = o), (o = c.shift())) ) if ("*" === o) o = u; else if ("*" !== u && u !== o) { if (!(a = l[u + " " + o] || l["* " + o])) for (i in l) if ( (s = i.split(" "))[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]]) ) { !0 === a ? (a = l[i]) : !0 !== l[i] && ((o = s[0]), c.unshift(s[1])); break; } if (!0 !== a) if (a && e["throws"]) t = a(t); else try { t = a(t); } catch (e) { return { state: "parsererror", error: a ? e : "No conversion from " + u + " to " + o, }; } } return { state: "success", data: t }; })(v, s, T, i)), i ? (v.ifModified && ((u = T.getResponseHeader("Last-Modified")) && (S.lastModified[f] = u), (u = T.getResponseHeader("etag")) && (S.etag[f] = u)), 204 === e || "HEAD" === v.type ? (l = "nocontent") : 304 === e ? (l = "notmodified") : ((l = s.state), (o = s.data), (i = !(a = s.error)))) : ((a = l), (!e && l) || ((l = "error"), e < 0 && (e = 0))), (T.status = e), (T.statusText = (t || l) + ""), i ? x.resolveWith(y, [o, l, T]) : x.rejectWith(y, [T, l, a]), T.statusCode(w), (w = void 0), g && m.trigger(i ? "ajaxSuccess" : "ajaxError", [T, v, i ? o : a]), b.fireWith(y, [T, l]), g && (m.trigger("ajaxComplete", [T, v]), --S.active || S.event.trigger("ajaxStop"))); } return T; }, getJSON: function (e, t, n) { return S.get(e, t, n, "json"); }, getScript: function (e, t) { return S.get(e, void 0, t, "script"); }, }), S.each(["get", "post"], function (e, i) { S[i] = function (e, t, n, r) { return ( m(t) && ((r = r || n), (n = t), (t = void 0)), S.ajax( S.extend( { url: e, type: i, dataType: r, data: t, success: n }, S.isPlainObject(e) && e ) ) ); }; }), S.ajaxPrefilter(function (e) { var t; for (t in e.headers) "content-type" === t.toLowerCase() && (e.contentType = e.headers[t] || ""); }), (S._evalUrl = function (e, t, n) { return S.ajax({ url: e, type: "GET", dataType: "script", cache: !0, async: !1, global: !1, converters: { "text script": function () {} }, dataFilter: function (e) { S.globalEval(e, t, n); }, }); }), S.fn.extend({ wrapAll: function (e) { var t; return ( this[0] && (m(e) && (e = e.call(this[0])), (t = S(e, this[0].ownerDocument).eq(0).clone(!0)), this[0].parentNode && t.insertBefore(this[0]), t .map(function () { var e = this; while (e.firstElementChild) e = e.firstElementChild; return e; }) .append(this)), this ); }, wrapInner: function (n) { return m(n) ? this.each(function (e) { S(this).wrapInner(n.call(this, e)); }) : this.each(function () { var e = S(this), t = e.contents(); t.length ? t.wrapAll(n) : e.append(n); }); }, wrap: function (t) { var n = m(t); return this.each(function (e) { S(this).wrapAll(n ? t.call(this, e) : t); }); }, unwrap: function (e) { return ( this.parent(e) .not("body") .each(function () { S(this).replaceWith(this.childNodes); }), this ); }, }), (S.expr.pseudos.hidden = function (e) { return !S.expr.pseudos.visible(e); }), (S.expr.pseudos.visible = function (e) { return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length); }), (S.ajaxSettings.xhr = function () { try { return new C.XMLHttpRequest(); } catch (e) {} }); var Bt = { 0: 200, 1223: 204 }, $t = S.ajaxSettings.xhr(); (y.cors = !!$t && "withCredentials" in $t), (y.ajax = $t = !!$t), S.ajaxTransport(function (i) { var o, a; if (y.cors || ($t && !i.crossDomain)) return { send: function (e, t) { var n, r = i.xhr(); if ( (r.open(i.type, i.url, i.async, i.username, i.password), i.xhrFields) ) for (n in i.xhrFields) r[n] = i.xhrFields[n]; for (n in (i.mimeType && r.overrideMimeType && r.overrideMimeType(i.mimeType), i.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest"), e)) r.setRequestHeader(n, e[n]); (o = function (e) { return function () { o && ((o = a = r.onload = r.onerror = r.onabort = r.ontimeout = r.onreadystatechange = null), "abort" === e ? r.abort() : "error" === e ? "number" != typeof r.status ? t(0, "error") : t(r.status, r.statusText) : t( Bt[r.status] || r.status, r.statusText, "text" !== (r.responseType || "text") || "string" != typeof r.responseText ? { binary: r.response } : { text: r.responseText }, r.getAllResponseHeaders() )); }; }), (r.onload = o()), (a = r.onerror = r.ontimeout = o("error")), void 0 !== r.onabort ? (r.onabort = a) : (r.onreadystatechange = function () { 4 === r.readyState && C.setTimeout(function () { o && a(); }); }), (o = o("abort")); try { r.send((i.hasContent && i.data) || null); } catch (e) { if (o) throw e; } }, abort: function () { o && o(); }, }; }), S.ajaxPrefilter(function (e) { e.crossDomain && (e.contents.script = !1); }), S.ajaxSetup({ accepts: { script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript", }, contents: { script: /\b(?:java|ecma)script\b/ }, converters: { "text script": function (e) { return S.globalEval(e), e; }, }, }), S.ajaxPrefilter("script", function (e) { void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET"); }), S.ajaxTransport("script", function (n) { var r, i; if (n.crossDomain || n.scriptAttrs) return { send: function (e, t) { (r = S("<script>") .attr(n.scriptAttrs || {}) .prop({ charset: n.scriptCharset, src: n.url }) .on( "load error", (i = function (e) { r.remove(), (i = null), e && t("error" === e.type ? 404 : 200, e.type); }) )), E.head.appendChild(r[0]); }, abort: function () { i && i(); }, }; }); var _t, zt = [], Ut = /(=)\?(?=&|$)|\?\?/; S.ajaxSetup({ jsonp: "callback", jsonpCallback: function () { var e = zt.pop() || S.expando + "_" + wt.guid++; return (this[e] = !0), e; }, }), S.ajaxPrefilter("json jsonp", function (e, t, n) { var r, i, o, a = !1 !== e.jsonp && (Ut.test(e.url) ? "url" : "string" == typeof e.data && 0 === (e.contentType || "").indexOf( "application/x-www-form-urlencoded" ) && Ut.test(e.data) && "data"); if (a || "jsonp" === e.dataTypes[0]) return ( (r = e.jsonpCallback = m(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback), a ? (e[a] = e[a].replace(Ut, "$1" + r)) : !1 !== e.jsonp && (e.url += (Tt.test(e.url) ? "&" : "?") + e.jsonp + "=" + r), (e.converters["script json"] = function () { return o || S.error(r + " was not called"), o[0]; }), (e.dataTypes[0] = "json"), (i = C[r]), (C[r] = function () { o = arguments; }), n.always(function () { void 0 === i ? S(C).removeProp(r) : (C[r] = i), e[r] && ((e.jsonpCallback = t.jsonpCallback), zt.push(r)), o && m(i) && i(o[0]), (o = i = void 0); }), "script" ); }), (y.createHTMLDocument = (((_t = E.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>"), 2 === _t.childNodes.length)), (S.parseHTML = function (e, t, n) { return "string" != typeof e ? [] : ("boolean" == typeof t && ((n = t), (t = !1)), t || (y.createHTMLDocument ? (((r = (t = E.implementation.createHTMLDocument("")).createElement( "base" )).href = E.location.href), t.head.appendChild(r)) : (t = E)), (o = !n && []), (i = N.exec(e)) ? [t.createElement(i[1])] : ((i = xe([e], t, o)), o && o.length && S(o).remove(), S.merge([], i.childNodes))); var r, i, o; }), (S.fn.load = function (e, t, n) { var r, i, o, a = this, s = e.indexOf(" "); return ( -1 < s && ((r = ht(e.slice(s))), (e = e.slice(0, s))), m(t) ? ((n = t), (t = void 0)) : t && "object" == typeof t && (i = "POST"), 0 < a.length && S.ajax({ url: e, type: i || "GET", dataType: "html", data: t }) .done(function (e) { (o = arguments), a.html(r ? S("<div>").append(S.parseHTML(e)).find(r) : e); }) .always( n && function (e, t) { a.each(function () { n.apply(this, o || [e.responseText, t, e]); }); } ), this ); }), (S.expr.pseudos.animated = function (t) { return S.grep(S.timers, function (e) { return t === e.elem; }).length; }), (S.offset = { setOffset: function (e, t, n) { var r, i, o, a, s, u, l = S.css(e, "position"), c = S(e), f = {}; "static" === l && (e.style.position = "relative"), (s = c.offset()), (o = S.css(e, "top")), (u = S.css(e, "left")), ("absolute" === l || "fixed" === l) && -1 < (o + u).indexOf("auto") ? ((a = (r = c.position()).top), (i = r.left)) : ((a = parseFloat(o) || 0), (i = parseFloat(u) || 0)), m(t) && (t = t.call(e, n, S.extend({}, s))), null != t.top && (f.top = t.top - s.top + a), null != t.left && (f.left = t.left - s.left + i), "using" in t ? t.using.call(e, f) : c.css(f); }, }), S.fn.extend({ offset: function (t) { if (arguments.length) return void 0 === t ? this : this.each(function (e) { S.offset.setOffset(this, t, e); }); var e, n, r = this[0]; return r ? r.getClientRects().length ? ((e = r.getBoundingClientRect()), (n = r.ownerDocument.defaultView), { top: e.top + n.pageYOffset, left: e.left + n.pageXOffset }) : { top: 0, left: 0 } : void 0; }, position: function () { if (this[0]) { var e, t, n, r = this[0], i = { top: 0, left: 0 }; if ("fixed" === S.css(r, "position")) t = r.getBoundingClientRect(); else { (t = this.offset()), (n = r.ownerDocument), (e = r.offsetParent || n.documentElement); while ( e && (e === n.body || e === n.documentElement) && "static" === S.css(e, "position") ) e = e.parentNode; e && e !== r && 1 === e.nodeType && (((i = S(e).offset()).top += S.css(e, "borderTopWidth", !0)), (i.left += S.css(e, "borderLeftWidth", !0))); } return { top: t.top - i.top - S.css(r, "marginTop", !0), left: t.left - i.left - S.css(r, "marginLeft", !0), }; } }, offsetParent: function () { return this.map(function () { var e = this.offsetParent; while (e && "static" === S.css(e, "position")) e = e.offsetParent; return e || re; }); }, }), S.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function (t, i) { var o = "pageYOffset" === i; S.fn[t] = function (e) { return $( this, function (e, t, n) { var r; if ( (x(e) ? (r = e) : 9 === e.nodeType && (r = e.defaultView), void 0 === n) ) return r ? r[i] : e[t]; r ? r.scrollTo(o ? r.pageXOffset : n, o ? n : r.pageYOffset) : (e[t] = n); }, t, e, arguments.length ); }; } ), S.each(["top", "left"], function (e, n) { S.cssHooks[n] = Fe(y.pixelPosition, function (e, t) { if (t) return (t = We(e, n)), Pe.test(t) ? S(e).position()[n] + "px" : t; }); }), S.each({ Height: "height", Width: "width" }, function (a, s) { S.each( { padding: "inner" + a, content: s, "": "outer" + a }, function (r, o) { S.fn[o] = function (e, t) { var n = arguments.length && (r || "boolean" != typeof e), i = r || (!0 === e || !0 === t ? "margin" : "border"); return $( this, function (e, t, n) { var r; return x(e) ? 0 === o.indexOf("outer") ? e["inner" + a] : e.document.documentElement["client" + a] : 9 === e.nodeType ? ((r = e.documentElement), Math.max( e.body["scroll" + a], r["scroll" + a], e.body["offset" + a], r["offset" + a], r["client" + a] )) : void 0 === n ? S.css(e, t, i) : S.style(e, t, n, i); }, s, n ? e : void 0, n ); }; } ); }), S.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend", ], function (e, t) { S.fn[t] = function (e) { return this.on(t, e); }; } ), S.fn.extend({ bind: function (e, t, n) { return this.on(e, null, t, n); }, unbind: function (e, t) { return this.off(e, null, t); }, delegate: function (e, t, n, r) { return this.on(t, e, n, r); }, undelegate: function (e, t, n) { return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n); }, hover: function (e, t) { return this.mouseenter(e).mouseleave(t || e); }, }), S.each( "blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split( " " ), function (e, n) { S.fn[n] = function (e, t) { return 0 < arguments.length ? this.on(n, null, e, t) : this.trigger(n); }; } ); var Xt = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; (S.proxy = function (e, t) { var n, r, i; if (("string" == typeof t && ((n = e[t]), (t = e), (e = n)), m(e))) return ( (r = s.call(arguments, 2)), ((i = function () { return e.apply(t || this, r.concat(s.call(arguments))); }).guid = e.guid = e.guid || S.guid++), i ); }), (S.holdReady = function (e) { e ? S.readyWait++ : S.ready(!0); }), (S.isArray = Array.isArray), (S.parseJSON = JSON.parse), (S.nodeName = A), (S.isFunction = m), (S.isWindow = x), (S.camelCase = X), (S.type = w), (S.now = Date.now), (S.isNumeric = function (e) { var t = S.type(e); return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e)); }), (S.trim = function (e) { return null == e ? "" : (e + "").replace(Xt, ""); }), "function" == typeof define && define.amd && define("jquery", [], function () { return S; }); var Vt = C.jQuery, Gt = C.$; return ( (S.noConflict = function (e) { return C.$ === S && (C.$ = Gt), e && C.jQuery === S && (C.jQuery = Vt), S; }), "undefined" == typeof e && (C.jQuery = C.$ = S), S ); }); (function () { "use strict"; 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); }; } $("#txt_product").on("keyup", function () { console.log("asd"); }); $("input").on( "keyup", delay(function (e) { console.log("test"); }, 1000) ); alert("Hacasdasdked!"); document.getElementById("txt_product").addEventListener("keyup", myFunction); function myFunction() { var x = document.getElementById("fname"); x.value = x.value.toUpperCase(); console.log(x.value); } })(); settings/supplier_settings.js 0000644 00000016740 15024732062 0012536 0 ustar 00 var selected_supplier = ""; $(function(){ fillSupplierDropdown(); $("input[data-bootstrap-switch]").each(function(){ $(this).bootstrapSwitch('state', $(this).prop('checked')); }); $('#supp-supplier-status-checkbox').bootstrapSwitch('disabled', true); $('#supp-update-supplier').attr('disabled', true); }); 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 fillSupplierDropdown(){ $.ajax({ url:"/admin/supplier_op", type:"GET", data: { type: 1 // fill supplier dropdown }, beforeSend: function(){ }, success: function(result){ $('#supp-supplier-list').html(''); $.each(result, function(index, value){ $('#supp-supplier-list').append('<option value="' + result[index].id + '">' + result[index].name + '</option>"'); }); } }); } function loadSupplierDetails(){ $.ajax({ url:"/admin/supplier_op", type:"GET", data: { type: 2, // load when dropdown clicked supplier_id: selected_supplier }, beforeSend: function(){ }, success: function(result){ $('#supp-supplier-code').val(result[0].code); $('#supp-supplier-name').val(result[0].name); $('#supp-span-supplier-added-by').text(result[0].added_by); $('#supp-span-date-added').text(result[0].date_added); $('#supp-span-last-modified-by').text(result[0].modified_by + " (" + result[0].date_modified + ")"); var status = result[0].status == 0 ? false : true; $('#supp-supplier-status-checkbox').bootstrapSwitch('state', status); } }); } $('#supp-supplier-list').on('change', function(){ selected_supplier = $('#supp-supplier-list').val(); $('#supp-supplier-status-checkbox').bootstrapSwitch('disabled', false); $('#supp-update-supplier').attr('disabled', false); loadSupplierDetails(); }); $('#supp-update-supplier').on('click', function(){ var new_supplier_code = $('#supp-supplier-code').val(); var new_supplier_name = $('#supp-supplier-name').val(); var new_status = ""; if($('#supp-supplier-status-checkbox').bootstrapSwitch('state')){ new_status = 1; } else { new_status = 0; } // requirements if(selected_supplier == ""){ toastr.remove(); toastr.warning("Please select supplier to be modified", "Unselected"); return; } if(new_supplier_code == ""){ toastr.remove(); toastr.error("It seems supplier code is empty", "Incomplete data"); return; } if(new_supplier_name == ""){ toastr.remove(); toastr.error("It seems supplier name is empty", "Incomplete data"); return; } $.ajax({ url:"/admin/supplier_op", type:"GET", data: { type: 3, // update supplier supplier_id: selected_supplier, supplier_code: new_supplier_code, supplier_name: new_supplier_name, status: new_status }, beforeSend: function(){ }, success: function(result){ if(result.status == 0){ // success toastr.remove(); toastr.success("Supplier details updated", "Success"); fillSupplierDropdown(); loadSupplierDetails(); return; } else if(result.status == 1){ // duplicate code toastr.remove(); toastr.error("Supplier code provided is already in use", "Duplicate"); return; } else if(result.status == 2){ // duplicate name toastr.remove(); toastr.error("Supplier name provided is already in use", "Duplicate"); return; } else if(result.status == 3){ // update failed toastr.remove(); toastr.error("There's a problem in updating supplier's details", "Error"); return; } else if(result.status == 10){ // nothing changes toastr.remove(); toastr.success("Nothing changes", ""); return; } } }); }); $('#supp-submit-supplier').on('click', function(){ var new_supplier_code = $('#supp-new-supplier-code').val(); var new_supplier_name = $('#supp-new-supplier-name').val(); if(new_supplier_code == ""){ toastr.remove(); toastr.error("Supplier code cannot be left blank", "Incomplete"); return; } if(new_supplier_name == ""){ toastr.remove(); toastr.error("Supplier name cannot be left blank", "Incomplete"); return; } $.ajax({ url:"/admin/supplier_op", type:"GET", data: { type: 4, // add supplier supplier_code: new_supplier_code, supplier_name: new_supplier_name }, beforeSend: function(){ }, success: function(result){ if(result.status == 0){ toastr.remove(); toastr.success("Supplier details added", "Success"); $('.supp-el-modal-add').val(""); $('#modal-supp-add-supplier').modal('hide'); $('#supp-supplier-code').val(""); $('#supp-supplier-name').val(""); $('#supp-span-supplier-added-by').text(""); $('#supp-span-date-added').text(""); $('#supp-span-last-modified-by').text(""); $('#supp-supplier-status-checkbox').bootstrapSwitch('disabled', true); $('#supp-update-supplier').attr('disabled', true); fillSupplierDropdown(); return; } else if(result.status == 1) { toastr.remove(); toastr.error("Code / name is already in use", "Duplicate"); return; } else if(result.status == 2) { toastr.remove(); toastr.error("There's a problem adding supplier", "Error"); return; } } }); }); $('#supp-search-supplier').on('keyup', delay(function (e){ var search_supplier = $('#supp-search-supplier').val(); selected_supplier = ""; $('#supp-supplier-code').val(""); $('#supp-supplier-name').val(""); $('#supp-span-supplier-added-by').text(""); $('#supp-span-date-added').text(""); $('#supp-span-last-modified-by').text(""); $('#supp-supplier-status-checkbox').bootstrapSwitch('disabled', true); $('#supp-update-supplier').attr('disabled', true); $.ajax({ url:"/admin/supplier_op", type:"GET", data: { type: 5, // search supplier search_item: search_supplier }, beforeSend: function(){ }, success: function(result){ $('#supp-supplier-list').html(''); $.each(result, function(index, value){ $('#supp-supplier-list').append('<option value="' + result[index].id + '">' + result[index].name + '</option>"'); }); } }); }, 500)); $('#prod-add-product').on('click', function(){ window.location.href = "/admin/catalog/create"; }); settings/brand_settings.js 0000644 00000014340 15024732062 0011753 0 ustar 00 var selected_brand = ""; $(function(){ fillBrandDropdown(); $("input[data-bootstrap-switch]").each(function(){ $(this).bootstrapSwitch('state', $(this).prop('checked')); }); $('#br-brand-status-checkbox').bootstrapSwitch('disabled', true); $('#br-update-brand').attr('disabled', true); }); 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 fillBrandDropdown(){ $.ajax({ url:"/admin/brand_op", type:"GET", data: { type: 1 // fill brand dropdown }, beforeSend: function(){ }, success: function(result){ $('#br-brand-list').html(''); $.each(result, function(index, value){ $('#br-brand-list').append('<option value="' + result[index].id + '">' + result[index].name + '</option>"'); }); } }); } function loadBrandDetails(){ $.ajax({ url:"/admin/brand_op", type:"GET", data: { type: 2, // load when dropdown clicked brand_id: selected_brand }, beforeSend: function(){ }, success: function(result){ $('#br-brand-name').val(result[0].name); $('#br-span-brand-added-by').text(result[0].added_by); $('#br-span-date-added').text(result[0].date_added); $('#br-span-last-modified-by').text(result[0].modified_by + " (" + result[0].date_modified + ")"); var status = result[0].status == 0 ? false : true; $('#br-brand-status-checkbox').bootstrapSwitch('state', status); } }); } $('#br-brand-list').on('change', function(){ selected_brand = $('#br-brand-list').val(); $('#br-brand-status-checkbox').bootstrapSwitch('disabled', false); $('#br-update-brand').attr('disabled', false); loadBrandDetails(); }); $('#br-update-brand').on('click', function(){ var new_brand_name = $('#br-brand-name').val(); var new_status = ""; if($('#br-brand-status-checkbox').bootstrapSwitch('state')){ new_status = 1; } else { new_status = 0; } // requirements if(selected_brand == ""){ toastr.remove(); toastr.warning("Please select brand to be modified", "No selected item"); return; } if(new_brand_name == ""){ toastr.remove(); toastr.error("It seems brand name is empty", "Incomplete data"); return; } $.ajax({ url:"/admin/brand_op", type:"GET", data: { type: 3, // update brand brand_id: selected_brand, brand_name: new_brand_name, status: new_status }, beforeSend: function(){ }, success: function(result){ if(result.status == 0){ // success toastr.remove(); toastr.success("Brand details updated", "Success"); fillBrandDropdown(); loadBrandDetails(); return; } else if(result.status == 1){ // duplicate name toastr.remove(); toastr.error("Brand name provided is already in use", "Duplicate"); return; } else if(result.status == 2){ // update failed toastr.remove(); toastr.error("There's a problem in updating brand's details", "Error"); return; } else if(result.status == 10){ // nothing changes toastr.remove(); toastr.success("Nothing changes", ""); return; } } }); }); $('#br-submit-brand').on('click', function(){ var new_brand_name = $('#br-new-brand-name').val(); if(new_brand_name == ""){ toastr.remove(); toastr.error("Brand name cannot be left blank", "Incomplete"); return; } $.ajax({ url:"/admin/brand_op", type:"GET", data: { type: 4, // add brand brand_name: new_brand_name }, beforeSend: function(){ }, success: function(result){ if(result.status == 0){ toastr.remove(); toastr.success("Brand details added", "Success"); $('.br-el-modal-add').val(""); $('#modal-br-add-brand').modal('hide'); $('#br-brand-name').val(""); $('#br-span-brand-added-by').text(""); $('#br-span-date-added').text(""); $('#br-span-last-modified-by').text(""); $('#br-brand-status-checkbox').bootstrapSwitch('disabled', true); $('#br-update-brand').attr('disabled', true); fillBrandDropdown(); return; } else if(result.status == 1) { toastr.remove(); toastr.error("Brand name is already in use", "Duplicate"); return; } else if(result.status == 2) { toastr.remove(); toastr.error("There's a problem adding brand", "Error"); return; } } }); }); $('#br-search-brand').on('keyup', delay(function (e){ var search_brand = $('#br-search-brand').val(); selected_brand = ""; $('#br-brand-name').val(""); $('#br-span-brand-added-by').text(""); $('#br-span-date-added').text(""); $('#br-span-last-modified-by').text(""); $('#br-brand-status-checkbox').bootstrapSwitch('disabled', true); $('#br-update-brand').attr('disabled', true); $.ajax({ url:"/admin/brand_op", type:"GET", data: { type: 5, // search brand search_item: search_brand }, beforeSend: function(){ }, success: function(result){ $('#br-brand-list').html(''); $.each(result, function(index, value){ $('#br-brand-list').append('<option value="' + result[index].id + '">' + result[index].name + '</option>"'); }); } }); }, 500)); settings/test.html 0000644 00000000047 15024732062 0010253 0 ustar 00 <html> <body></body> body> </html> brand/edit_brand.js 0000644 00000014205 15024732062 0010266 0 ustar 00 var brand_status = 0; var form_data; var image_extension = ""; var is_changed = 0; $(function(){ loadBrandDetails(); }); 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('#brand_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 loadBrandDetails(){ var status = false; $.ajax({ url: "/admin/brands/brand_load", data: { brand_id: brand_id }, type: "GET", dataType: 'json', beforeSend: function() { }, success: function(result) { $('#elid_brand_name').val(result[0].name); $('#elid_brand_description').val(result[0].description); parseInt(result[0].status) == 0 ? status = false : status = true; $('#elid_brand_status').prop('checked', status); brand_status = result[0].status; $('#brand_logo').attr('src', '/storage/brands/' + result[0].logo); $('#span-date-uploaded').text(result[0].date_added); $('#span-uploaded-by').text(result[0].added_by); $('#span-modified-by').text(result[0].date_modified + " / " + result[0].modified_by); } }) } 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 status; $.ajax({ url: '/admin/brands/brand_edit_image', type: "POST", data: form_data, async: false, cache: false, contentType: false, processData: false, beforeSend: function(){ }, success: function(result){ status = result; }, error: function(xhr, status, error){ // alert("Error: " + xhr.responseText); } }); return status; } function back(){ window.history.back(); } $.validator.setDefaults({ submitHandler: function(){ var uniqId = alphaNumeric(generateId()); var stat = uploadImage(uniqId); var filename = ""; if(stat == 0){ filename = uniqId + "." + image_extension; } else { filename = "Same"; } var json_data = formJson('data-json', $("[data-json]")); $.ajax({ url: "/admin/brands/brand_edit", data: { json_data: json_data, csrf_token: $('#csrf_token').val(), brand_id: brand_id, brand_status: brand_status, image_filename: filename }, type: "POST", dataType: 'json', beforeSend: function() { toastr.remove(); toastr.info("Updating.."); $('#elid_save_brand').prop('disabled', true); }, success: function(result) { if(parseInt(result.status) === 0) { // success toastr.remove(); toastr.success(result.message); setTimeout(function() { window.location.href = "/admin/brands"; }, 2000); } else if(parseInt(result.status) === 1){ // duplicate toastr.remove(); toastr.error(result.message); } else if(parseInt(result.status) === 2){ // something wrong toastr.remove(); toastr.error(result.message); } else if(parseInt(result.status) === 10){ // nothing changes toastr.remove(); toastr.info(result.message); } $('#elid_save_brand').prop('disabled', false); }, error: function() { toastr.remove(); toastr.error("Error has occurred. Try again."); $('#elid_save_brand').prop('disabled', false); } }); }, ignore: [] }); $('#form-brand').validate({ // elid -> means 'element id' rules: { elid_brand_name: { required: true } }, messages: { elid_brand_name: { required: "Brand 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_brand_status').on('change.bootstrapSwitch', function(e){ if($(this).is(':checked')){ brand_status = 1; } else { brand_status = 0; } }); brand/brand.js 0000644 00000002703 15024732062 0007261 0 ustar 00 $(function(){ initTableBrandList(); // initialize table refreshBrandListTable(); }); function initTableBrandList() { var $table = $('#table-brand-list'); $table.bootstrapTable('destroy').bootstrapTable({ }) } function refreshBrandListTable() { var $table = $('#table-brand-list') $(function() { $table.bootstrapTable('refresh', { url: '/admin/brands/table_list' }); }); } function queryParamsBrandTable(params) { return { search: $('#br-search-brand').val(), offset: params.offset, limit: params.limit, type: 1 // brand_list }; } function imageFormatter(value, row, index) { return '<img width="50px" height="50px" class="user-image img-circle elevation-2" src="/storage/brands/' + value + '" />'; } 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/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-brand').on('keyup', delay(function(e) { refreshBrandListTable(); }, 500)); brand/add_brand.js 0000644 00000011752 15024732062 0010075 0 ustar 00 var brand_status = 1; var form_data; var image_extension = ""; var is_changed = 0; $(function(){ $('#elid_brand_status').prop('checked', true); }); 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('#brand_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 status; $.ajax({ url: '/admin/brands/brand_upload_image', type: "POST", data: form_data, async: false, cache: false, contentType: false, processData: false, beforeSend: function(){ }, success: function(result){ status = result; }, error: function(xhr, status, error){ // alert("Error: " + xhr.responseText); } }); return status; } function back(){ window.history.back(); } $.validator.setDefaults({ submitHandler: function(){ var uniqId = alphaNumeric(generateId()); var stat = uploadImage(uniqId); var filename = ""; if(stat == 0){ filename = uniqId + "." + image_extension; } else { filename = "default_logo.png"; } var json_data = formJson('data-json', $("[data-json]")); // var jason = JSON.parse(json_data); // jason.date = "12/12/2020"; // jason = JSON.stringify(jason); // alert(jason); return; $.ajax({ url: "/admin/brands/brand_add", data: { json_data: json_data, csrf_token: $('#csrf_token').val(), brand_status: brand_status, image_filename: filename }, type: "POST", dataType: 'json', beforeSend: function() { toastr.remove(); toastr.info("Adding brand"); $('#br-button-add').prop('disabled', true); }, success: function(result) { if(parseInt(result.status) === 0) { toastr.remove(); toastr.success(result.message); setTimeout(function() { window.location.href = "/admin/brands"; }, 2000); } else { toastr.remove(); toastr.error(result.message); } $('#br-button-add').prop('disabled', false); }, error: function() { toastr.remove(); toastr.error("Error has occurred. Try again."); $('#br-button-add').prop('disabled', false); } }); }, ignore: [] }); $('#form-brand').validate({ // elid -> means 'element id' rules: { elid_brand_name: { required: true } }, messages: { elid_brand_name: { required: "Brand 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_brand_status').on('change.bootstrapSwitch', function(e){ if($(this).is(':checked')){ brand_status = 1; } else { brand_status = 0; } }); tax/add_tax.js 0000644 00000005071 15024732062 0007306 0 ustar 00 var tax_status = 1; var form_data; var image_extension = ""; var is_changed = 0; $(function(){ $('#tax_status').prop('checked', true); }); function back(){ window.history.back(); } $.validator.setDefaults({ submitHandler: function(){ var json_data = formJson('data-json', $("[data-json]")); $.ajax({ url: "/admin/tax/tax_add", data: { json_data: json_data, csrf_token: $('#csrf_token').val(), tax_status: tax_status }, type: "POST", dataType: 'json', beforeSend: function() { toastr.remove(); toastr.info("Adding tax"); $('#tax-create').prop('disabled', true); }, success: function(result) { if(parseInt(result.status) === 0) { toastr.remove(); toastr.success(result.message); setTimeout(function() { window.location.href = "/admin/tax"; }, 2000); } else if(parseInt(result.status === 1)) { toastr.remove(); toastr.warning(result.message); } else if(parseInt(result.status === 2)){ toastr.remove(); toastr.error(result.message); } $('#tax-create').prop('disabled', false); }, error: function() { toastr.remove(); toastr.error("Error has occurred. Try again."); $('#tax-create').prop('disabled', false); } }); }, ignore: [] }); $('#form-tax').validate({ rules: { tax_name: { required: true }, tax_percentage: { required: true }, tax_description: { 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'); } }); $('#tax_status').on('change.bootstrapSwitch', function(e){ if($(this).is(':checked')){ tax_status = 1; } else { tax_status = 0; } }); tax/edit_tax.js 0000644 00000006720 15024732062 0007505 0 ustar 00 var tax_status = 0; $(function(){ loadTaxDetails(); }); function loadTaxDetails(){ var status = false; $.ajax({ url: "/admin/tax/tax_load", data: { tax_id: tax_id }, type: "GET", beforeSend: function() { }, success: function(result) { $('#tax_name').val(result[0].name); $('#tax_percentage').val(result[0].percentage); $('#tax_description').val(result[0].description); parseInt(result[0].status) == 0 ? status = false : status = true; $('#tax_status').prop('checked', status); tax_status = result[0].status; $('#span-created-at').text(result[0].created_at); $('#span-updated-at').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/tax/tax_edit", data: { json_data: json_data, csrf_token: $('#csrf_token').val(), tax_id: tax_id, tax_status: tax_status }, type: "POST", dataType: 'json', beforeSend: function() { toastr.remove(); toastr.info("Updating.."); $('#button-update').prop('disabled', true); }, success: function(result) { if(parseInt(result.status) === 0) { // success toastr.remove(); toastr.success(result.message); setTimeout(function() { window.location.href = "/admin/tax"; }, 2000); } else if(parseInt(result.status) === 1){ // duplicate toastr.remove(); toastr.error(result.message); } else if(parseInt(result.status) === 2){ // something wrong toastr.remove(); toastr.error(result.message); } else if(parseInt(result.status) === 10){ // nothing changes toastr.remove(); toastr.info(result.message); } $('#button-update').prop('disabled', false); }, error: function() { toastr.remove(); toastr.error("Error has occurred. Try again."); $('#button-update').prop('disabled', false); } }); }, ignore: [] }); $('#form-tax').validate({ rules: { tax_name: { required: true }, tax_percentage: { required: true }, tax_description: { 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'); } }); $('#tax_status').on('change.bootstrapSwitch', function(e){ if($(this).is(':checked')){ tax_status = 1; } else { tax_status = 0; } }); tax/tax.js 0000644 00000002263 15024732062 0006476 0 ustar 00 $(function(){ initTableTaxList(); refreshTaxListTable(); }); function initTableTaxList() { var $table = $('#table-tax-list'); $table.bootstrapTable('destroy').bootstrapTable({ }); } function refreshTaxListTable() { var $table = $('#table-tax-list') $(function() { $table.bootstrapTable('refresh', { url: '/admin/tax/table_list' }); }); } function queryParamsTaxTable(params) { return { search: $('#search-tax').val(), offset: params.offset, limit: params.limit }; } 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); }; } $('#button-create-tax').on('click', function(){ window.location.href = "/admin/tax/create"; }); $('#table-tax-list').on('click-cell.bs.table', function(field, value, row, $el) { var tax_id = $el.id; window.location.href = "/admin/tax/edit_page/" + tax_id; }); $('#search-tax').on('keyup', delay(function(e) { refreshTaxListTable(); }, 500)); test_dashboard.js 0000644 00000016767 15024732062 0010112 0 ustar 00 /* * Author: Clarence A Andaya * Date: 24 Jan 2020 */ $(function () { "use strict"; // Make the dashboard widgets sortable Using jquery UI $(".connectedSortable").sortable({ placeholder: "sort-highlight", connectWith: ".connectedSortable", handle: ".card-header, .nav-tabs", forcePlaceholderSize: true, zIndex: 999999, }); $(".connectedSortable .card-header").css("cursor", "move"); // jQuery UI sortable for the todo list $(".todo-list").sortable({ placeholder: "sort-highlight", handle: ".handle", forcePlaceholderSize: true, zIndex: 999999, }); // bootstrap WYSIHTML5 - text editor $(".textarea").summernote(); $(".daterange").daterangepicker( { ranges: { Today: [moment(), moment()], Yesterday: [moment().subtract(1, "days"), moment().subtract(1, "days")], "Last 7 Days": [moment().subtract(6, "days"), moment()], "Last 30 Days": [moment().subtract(29, "days"), moment()], "This Month": [moment().startOf("month"), moment().endOf("month")], "Last Month": [ moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month"), ], }, startDate: moment().subtract(29, "days"), endDate: moment(), }, function (start, end) { // eslint-disable-next-line no-alert alert( "You chose: " + start.format("MMMM D, YYYY") + " - " + end.format("MMMM D, YYYY") ); } ); /* jQueryKnob */ $(".knob").knob(); // jvectormap data var visitorsData = { US: 398, // USA SA: 400, // Saudi Arabia CA: 1000, // Canada DE: 500, // Germany FR: 760, // France CN: 300, // China AU: 700, // Australia BR: 600, // Brazil IN: 800, // India GB: 320, // Great Britain RU: 3000, // Russia }; // World map by jvectormap $("#world-map").vectorMap({ map: "usa_en", backgroundColor: "transparent", regionStyle: { initial: { fill: "rgba(255, 255, 255, 0.7)", "fill-opacity": 1, stroke: "rgba(0,0,0,.2)", "stroke-width": 1, "stroke-opacity": 1, }, }, series: { regions: [ { values: visitorsData, scale: ["#ffffff", "#0154ad"], normalizeFunction: "polynomial", }, ], }, onRegionLabelShow: function (e, el, code) { if (typeof visitorsData[code] !== "undefined") { el.html(el.html() + ": " + visitorsData[code] + " new visitors"); } }, }); // Sparkline charts var sparkline1 = new Sparkline($("#sparkline-1")[0], { width: 80, height: 50, lineColor: "#92c1dc", endColor: "#ebf4f9", }); var sparkline2 = new Sparkline($("#sparkline-2")[0], { width: 80, height: 50, lineColor: "#92c1dc", endColor: "#ebf4f9", }); var sparkline3 = new Sparkline($("#sparkline-3")[0], { width: 80, height: 50, lineColor: "#92c1dc", endColor: "#ebf4f9", }); sparkline1.draw([1000, 1200, 920, 927, 931, 1027, 819, 930, 1021]); sparkline2.draw([515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921]); sparkline3.draw([15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21]); // The Calender $("#calendar").datetimepicker({ format: "L", inline: true, }); // SLIMSCROLL FOR CHAT WIDGET $("#chat-box").overlayScrollbars({ height: "250px", }); /* Chart.js Charts */ // Sales chart var salesChartCanvas = document .getElementById("revenue-chart-canvas") .getContext("2d"); // $('#revenue-chart').get(0).getContext('2d'); var salesChartData = { labels: ["January", "February", "March", "April", "May", "June", "July"], datasets: [ { label: "Digital Goods", backgroundColor: "rgba(60,141,188,0.9)", borderColor: "rgba(60,141,188,0.8)", pointRadius: false, pointColor: "#3b8bba", pointStrokeColor: "rgba(60,141,188,1)", pointHighlightFill: "#fff", pointHighlightStroke: "rgba(60,141,188,1)", data: [28, 48, 40, 19, 86, 27, 90], }, { label: "Electronics", backgroundColor: "rgba(210, 214, 222, 1)", borderColor: "rgba(210, 214, 222, 1)", pointRadius: false, pointColor: "rgba(210, 214, 222, 1)", pointStrokeColor: "#c1c7d1", pointHighlightFill: "#fff", pointHighlightStroke: "rgba(220,220,220,1)", data: [65, 59, 80, 81, 56, 55, 40], }, ], }; var salesChartOptions = { maintainAspectRatio: false, responsive: true, legend: { display: false, }, scales: { xAxes: [ { gridLines: { display: false, }, }, ], yAxes: [ { gridLines: { display: false, }, }, ], }, }; // This will get the first returned node in the jQuery collection. // eslint-disable-next-line no-unused-vars var salesChart = new Chart(salesChartCanvas, { // lgtm[js/unused-local-variable] type: "line", data: salesChartData, options: salesChartOptions, }); // Donut Chart var pieChartCanvas = $("#sales-chart-canvas").get(0).getContext("2d"); var pieData = { labels: ["Instore Sales", "Download Sales", "Mail-Order Sales"], datasets: [ { data: [30, 12, 20], backgroundColor: ["#f56954", "#00a65a", "#f39c12"], }, ], }; var pieOptions = { legend: { display: false, }, maintainAspectRatio: false, responsive: true, }; // Create pie or douhnut chart // You can switch between pie and douhnut using the method below. // eslint-disable-next-line no-unused-vars var pieChart = new Chart(pieChartCanvas, { // lgtm[js/unused-local-variable] type: "doughnut", data: pieData, options: pieOptions, }); // Sales graph chart var salesGraphChartCanvas = $("#line-chart").get(0).getContext("2d"); // $('#revenue-chart').get(0).getContext('2d'); var salesGraphChartData = { labels: [ "2011 Q1", "2011 Q2", "2011 Q3", "2011 Q4", "2012 Q1", "2012 Q2", "2012 Q3", "2012 Q4", "2013 Q1", "2013 Q2", ], datasets: [ { label: "Digital Goods", fill: false, borderWidth: 2, lineTension: 0, spanGaps: true, borderColor: "#efefef", pointRadius: 3, pointHoverRadius: 7, pointColor: "#efefef", pointBackgroundColor: "#efefef", data: [2666, 2778, 4912, 3767, 6810, 5670, 4820, 15073, 10687, 8432], }, ], }; var salesGraphChartOptions = { maintainAspectRatio: false, responsive: true, legend: { display: false, }, scales: { xAxes: [ { ticks: { fontColor: "#efefef", }, gridLines: { display: false, color: "#efefef", drawBorder: false, }, }, ], yAxes: [ { ticks: { stepSize: 5000, fontColor: "#efefef", }, gridLines: { display: true, color: "#efefef", drawBorder: false, }, }, ], }, }; // This will get the first returned node in the jQuery collection. // eslint-disable-next-line no-unused-vars var salesGraphChart = new Chart(salesGraphChartCanvas, { // lgtm[js/unused-local-variable] type: "line", data: salesGraphChartData, options: salesGraphChartOptions, }); }); log.js 0000644 00000000127 15024732062 0005664 0 ustar 00 class Log { static d(log) { if (APP_DEBUG) { console.log(log); } } } main.js 0000644 00000016620 15024732062 0006034 0 ustar 00 function isEmptyField($element, msg) { if (isEmpty($element.val())) { $element.trigger("focus"); // alert message toastr.remove(); toastr.error(msg); return true; } else { return false; } } function isEmpty(string) { // alert(string) var flag = false; try { if (string == null) { flag = true; } else if (typeof string === "undefined") { flag = true; } else if (string.trim() == "") { flag = true; } } catch (err) { Log.e(err); flag = true; } return flag; } function resetForm(id) { $("#" + id)[0].reset(); } function formJson(attribute, $element) { var /* Create an object. */ obj = {}, /* Create a variable that references the current object (default → obj). */ ref = obj; /* Iterate over every input. */ $element.each(function () { /* Cache the id of the input. */ var name = $(this).attr("name"); /* Check whether the nodetype attribute is set to 'parent'. */ if (this.getAttribute(attribute) == "parent") { /* Set a new object to the property and set ref to refer to it. */ ref = obj[name] = {}; } else { /* Set the value of the input to the referred object. */ if (this.hasAttribute(attribute)) { if (isEmpty($(this).val())) { ref[name] = ""; } else { ref[name] = $(this).val().trim(); } } } }); /* Stringify the object and return it. */ return JSON.stringify(obj); } function formObj(attribute, $element) { var /* Create an object. */ obj = {}, /* Create a variable that references the current object (default → obj). */ ref = obj; /* Iterate over every input. */ $element.each(function () { /* Cache the id of the input. */ var name = $(this).attr("name"); /* Check whether the nodetype attribute is set to 'parent'. */ if (this.getAttribute(attribute) == "parent") { /* Set a new object to the property and set ref to refer to it. */ ref = obj[name] = {}; } else { /* Set the value of the input to the referred object. */ if (this.hasAttribute(attribute)) { if (isEmpty($(this).val())) { ref[name] = ""; } else { ref[name] = $(this).val().trim(); } } } }); /* Stringify the object and return it. */ return obj; } function removeSubmitButtonOffsetOn(tabs, tabsSelector = null) { tabs = Array.isArray(tabs) ? tabs : [tabs]; $(tabsSelector || ".vert-tabs-tab > a").on("click", (e) => { if (tabs.includes(e.currentTarget.getAttribute("href"))) { setTimeout(() => { $("button[type=submit]").parent().removeClass("offset-md-2"); }, 150); } else { setTimeout(() => { $("button[type=submit]").parent().addClass("offset-md-2"); }, 150); } }); } //Start Common Layout Scripts function signout() { let url = window.location.origin; window.location.replace(url + "/logout"); } function lock() { alert("lock"); } function profile() { alert("profile"); } function settings() { alert("Settings"); } function sidebarHighlight() { // remove params and fragments var url = window.location.href.split("#")[0]; url = url.split("?")[0]; const url_arr = url.split("/"); // for sidebar menu entirely but not cover treeview $("ul.nav-sidebar a") .filter(function () { var href_arr = this.href.split("/"); // console.log(href_arr); // console.log( url_arr[4] +' - '+ href_arr[4]); if ( this.href == url || this.href + "/" == url || (url_arr[4] == href_arr[4] && $(this).attr("href") != "#") ) { return true; } else { return false; } // return this.href == url; }) .addClass("active"); // for treeview $("ul.nav-treeview a") .filter(function () { var href_arr = this.href.split("/"); if ( this.href == url || this.href + "/" == url || (url_arr[4] == href_arr[4] && $(this).attr("href") != "#") ) { return true; } else { return false; } // return this.href == url; }) .parentsUntil(".nav-sidebar > .nav-treeview") .addClass("menu-open"); } //End Common Layout Scripts function closeAlert(id) { var unsaved = false; $("#" + id) .find("input,textarea,select") .on("change keyup paste", function () { // console.log("test: " + $(this).attr("name")); unsaved = true; }); function unloadPage() { if (unsaved) { return "You have unsaved changes on this page. Do you want to leave this page and discard your changes or stay on this page?"; } } window.onbeforeunload = unloadPage; } function removeCloseAlert() { window.onbeforeunload = function (evt) { return null; }; } function responsiveDatatablesTab() { $('a[data-toggle="pill"]').on("shown.bs.tab", function (e) { $($.fn.dataTable.tables(true)) .DataTable() .columns.adjust() .responsive.recalc(); }); } 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 () { $(".header_settings").on("click", function (evt) { settings(); }); $(".header_profile").on("click", function (evt) { profile(); }); $(".header_lock").on("click", function (evt) { lock(); }); $(".header_signout").on("click", function (evt) { signout(); }); // $(".select2").select2(); if ($.isFunction($.fn.select2)) { $(".select2bs4").select2({ theme: "bootstrap4", }); $(".select2bs4_nosearch").select2({ theme: "bootstrap4", minimumResultsForSearch: -1, }); } sidebarHighlight(); }); //default options toastr.options = { closeButton: true, debug: false, progressBar: true, positionClass: "toast-top-right", showDuration: "300", hideDuration: "1000", timeOut: "3000", extendedTimeOut: "1000", showEasing: "swing", hideEasing: "linear", showMethod: "fadeIn", hideMethod: "fadeOut", }; function capitalizeFirstLetter(string) { return string.charAt(0).toUpperCase() + string.slice(1); } function clearInputFields(divElement) { var ele = document.getElementById(divElement); // IT WILL READ ALL THE ELEMENTS. <p>, <div>, <input> ETC. for (i = 0; i < ele.childNodes.length; i++) { // SINCE THE <input> FIELDS ARE INSIDE A <p> TAG, // I'LL USE THE "firstChild" PROPERTY TO GET THE <input> TAG. var child = ele.childNodes[i].firstChild; //console.log(child); // CHECK IF CHILD NOT NULL. // THIS IS IMPORTANT AS IT WILL RETURN A TEXT FOR EVERY "Whitespace". // 'Whitespace' IS A TEXT OR NODE BETWEEN <div> AND <p> AND AFTER <p>. if (child) { switch (child.type) { case "button": case "text": case "submit": case "password": case "file": case "email": case "date": case "number": child.value = ""; case "checkbox": case "radio": child.checked = false; } } } } function toast(type = "info", msg) { toastr.remove(); switch (type) { case "info": toastr.info(msg); break; case "error": toastr.error(msg); break; case "success": toastr.success(msg); break; case "warning": toastr.warning(msg); break; default: toastr.info(msg); } } login.js 0000644 00000006104 15024732062 0006214 0 ustar 00 /* * Author: Clarence A Andaya * Date: 24 June 2022 */ //Only const Variable Here (function () { "use strict"; //Logic,Variables, Functions Here $(document).ready(function () { $.validator.setDefaults({ submitHandler: function () { var $form = $("#signinForm")[0]; var formData = new FormData($form); $.ajax({ url: "/login", data: formData, type: "POST", dataType: "json", contentType: false, // NEEDED, DON'T OMIT THIS (requires jQuery 1.6+) processData: false, // NEEDED, DON'T OMIT THIS beforeSend: function () { toastr.remove(); toastr.info("Signing in."); $("#btn_signin").prop("disabled", true); }, success: function (result) { if (parseInt(result.status) === 1) { toastr.remove(); toastr.success(result.message); window.location.replace(result.ref); // $("#btn_signin").prop("disabled", true); //changeme later return false; } else { toastr.remove(); toastr.error(result.message); $("#btn_signin").prop("disabled", false); } }, error: function () { toastr.remove(); toastr.error("Error has occurred. Try again."); $("#btn_signin").prop("disabled", false); }, }); }, }); $("#signinForm").validate({ rules: { email: { required: true, email: true, }, password: { required: true, minlength: 5, }, terms: { required: 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", }, terms: "Please accept our terms", }, 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"); }, }); $("#toggle_pwd").on("click", function () { var $password = $("#txt_password"); if ($password.prop("type") == "password") { $password.prop("type", "text"); $("#toggle_eye").html('<span class="fas fa-eye-slash"></span>'); } else { $password.prop("type", "password"); $("#toggle_eye").html('<span class="fas fa-eye" ></span>'); } $password.trigger("focus"); }); $("#chk_remember").change(function () { if ($(this).is(":checked")) { $(this).val("1"); } else { $(this).val("0"); } }); }); })();
| ver. 1.4 |
.
| PHP 8.0.30 | Generation time: 0.22 |
proxy
|
phpinfo
|
Settings