jQuery(function($){ let formipay_coupon_table_grid = new gridjs.Grid({ server: { url: formipay_coupons_page.ajax_url+'?action=formipay-tabledata-coupons&search='+document.getElementById('keyword').value+'&_wpnonce='+formipay_coupons_page.nonce, then: data => { if(data.posts_report){ processPostsReport(data.posts_report); } return data.results.map( coupon => [coupon.ID, coupon.ID, coupon.code, coupon.value, coupon.type, coupon.usages, coupon.date_limit, coupon.status, coupon.case_sensitive] ); }, total: data => data.total }, columns: [ { id: 'checkbox', name: gridjs.html(``), width: '50px', formatter: (_, row) => gridjs.html( `` ) }, { name: formipay_coupons_page.columns.id, width: '75px' }, { name: formipay_coupons_page.columns.code, formatter: (_, row) => gridjs.html(` ${_}
`) }, { name: formipay_coupons_page.columns.amount, formatter: (_, row) => { var amount = 'unset'; if(row.cells[4].data === 'Percentage') { amount = numberFormat(_)+'%'; } if(row.cells[4].data === 'Fixed'){ amount = ''; _.forEach(function(currency){ const splitRaw = currency.raw.split(':::'); const symbol = splitRaw[2] ? splitRaw[2] : splitRaw[0]; amount += `${symbol} ${currency.amount}`; }) } return gridjs.html(amount); } }, { name: formipay_coupons_page.columns.type, formatter: (_, row) => gridjs.html(` ${_} `) }, { name: formipay_coupons_page.columns.usages, // { used: 1, limit: 5 } formatter: (_, row) => gridjs.html(`${_.used}/${_.limit}`) // 1/∞ }, formipay_coupons_page.columns.date_limit, { name: formipay_coupons_page.columns.status, formatter: (_, row) => gridjs.html(` ${_} `) }, ], pagination: { limit: 10, server: { url: (prev, page, limit) => `${prev}&limit=${limit}&offset=${page * limit}` }, summary: false }, className: { table: 'formipay-grid-table' } }).render(document.getElementById('formipay-coupons')); var $tableContainer = $('.formipay-grid-table'); var $deleteBtn = $('#formipay-delete-selected'); function updateDeleteButtonVisibility() { if ($tableContainer.find('.formipay-row-checkbox:checked').length > 0) { $deleteBtn.show(); } else { $deleteBtn.hide(); } } // Handle row and "select all" checkbox changes $tableContainer.on('change', '.formipay-row-checkbox', function() { updateDeleteButtonVisibility(); }); // Handle row and "select all" checkbox changes $tableContainer.on('change', '#select-all-rows', function() { const is_checked = $(this).is(':checked'); $tableContainer.find('.formipay-row-checkbox').prop('checked', is_checked); updateDeleteButtonVisibility(); }); // Handle delete button click $deleteBtn.on('click', function() { var selectedIds = $tableContainer.find('.formipay-row-checkbox:checked').map(function() { return $(this).data('id'); }).get(); if (selectedIds.length > 0) { Swal.fire({ icon: 'info', html: formipay_coupons_page.modal.bulk_delete.question, showCancelButton: true, confirmButtonText: formipay_coupons_page.modal.bulk_delete.confirmButton, cancelButtonText: formipay_coupons_page.modal.bulk_delete.cancelButton }).then((result) => { /* Read more about isConfirmed, isDenied below */ if (result.isConfirmed) { $.ajax({ type: 'post', url: formipay_coupons_page.ajax_url, data: { action: 'formipay-bulk-delete-coupon', ids: selectedIds, _wpnonce: formipay_coupons_page.nonce }, success: function (res) { Swal.fire({ title: res.data.title, html: res.data.message, icon: res.data.icon }); formipay_table_grid.forceRender(); $tableContainer.find('.formipay-row-checkbox').prop('checked', false); updateDeleteButtonVisibility(); refresh_table_with_filter(); } }); } }); } }); function refresh_table_with_filter() { formipay_coupon_table_grid.updateConfig({ server: { url: formipay_coupons_page.ajax_url+'?action=formipay-tabledata-coupons&search='+document.getElementById('keyword').value+'&_wpnonce='+formipay_coupons_page.nonce, then: data => data.results.map( coupon => [coupon.ID, coupon.ID, coupon.code, coupon.value, coupon.type, coupon.usages, coupon.date_limit, coupon.status, coupon.case_sensitive] ), total: data => data.total } }).forceRender(); } $('.form-tool, #post_status').on('change', function(){ refresh_table_with_filter(); }); $(document).on('mouseover', 'td[data-column-id=couponCode]', function(){ $(this).find('.post-action').css('visibility', 'visible'); }); $(document).on('mouseleave', 'td[data-column-id=couponCode]', function(){ $(this).find('.post-action').css('visibility', 'hidden'); }); $(document).on('input', 'input#swal2-input', function(){ const value = $(this).val(); $(this).val(value.replace(' ', '')); }); $(document).on('click', '#add-new-coupon', async function(e){ e.preventDefault(); const { value: coupon_code } = await Swal.fire({ input: "text", inputLabel: formipay_coupons_page.modal.add.title, showCancelButton: true, confirmButtonText: formipay_coupons_page.modal.add.confirmButton, cancelButtonText: formipay_coupons_page.modal.add.cancelButton, reverseButtons: true, inputValidator: (value) => { if (!value) { return formipay_coupons_page.modal.add.validation; } } }).then((result) => { /* Read more about isConfirmed, isDenied below, input value is ${coupon_code} */ if (result.isConfirmed && result.value) { $.ajax({ type: 'post', url: formipay_coupons_page.ajax_url, data: { action: 'formipay-create-coupon-post', title: result.value, _wpnonce: formipay_coupons_page.nonce }, success: function (res) { if(res.success){ window.location.href = res.data.edit_post_url; }else{ Swal.fire({ html: res.data.message, icon: 'error' }); } } }); } }); }); $(document).on('click', '.delete-coupon', function(e){ e.preventDefault(); var data_id = $(this).attr('data-id'); Swal.fire({ icon: 'info', html: "Do you want to delete the coupon?", showCancelButton: true, confirmButtonText: "Delete Permanently", }).then((result) => { /* Read more about isConfirmed, isDenied below */ if (result.isConfirmed) { $.ajax({ type: 'post', url: formipay_coupons_page.ajax_url, data: { action: 'formipay-delete-coupon', id: data_id, _wpnonce: formipay_coupons_page.nonce }, success: function (res) { Swal.fire({ title: res.data.title, html: res.data.message, icon: res.data.icon }); formipay_coupon_table_grid.forceRender(); } }); } }); }); $(document).on('click', '.duplicate-coupon', function(e){ e.preventDefault(); var data_id = $(this).attr('data-id'); Swal.fire({ icon: 'info', html: "Do you want to duplicate the coupon?", showCancelButton: true, confirmButtonText: "Confirm", }).then((result) => { /* Read more about isConfirmed, isDenied below */ if (result.isConfirmed) { $.ajax({ type: 'post', url: formipay_coupons_page.ajax_url, data: { action: 'formipay-duplicate-coupon', id: data_id, _wpnonce: formipay_coupons_page.nonce }, success: function (res) { Swal.fire({ title: res.data.title, html: res.data.message, icon: res.data.icon }); formipay_coupon_table_grid.forceRender(); } }); } }); }) });