document.getElementById('reset-filter').addEventListener('click', function(){ categoryChoices.removeActiveItems(); currencyChoices.removeActiveItems(); const event = new Event('change', { bubbles: true }); document.getElementById('orderby').value = 'ID'; document.getElementById('sort_by').value = 'desc'; document.getElementById('keyword').value = ''; document.getElementById('keyword').dispatchEvent(event); }); let formipay_table_grid = new gridjs.Grid({ server: { url: formipay_forms_page.ajax_url+'?action=formipay-tabledata-forms&post_status='+document.getElementById('post_status').value+'&orderby='+document.getElementById('orderby').value+'&sort='+document.getElementById('sort_by').value+'&search='+document.getElementById('keyword').value+'&_wpnonce='+formipay_forms_page.nonce, then: data => { if(data.posts_report){ processPostsReport(data.posts_report); } return data.results.map( form => [form.ID, form.ID, form.title, form.date, form.status] ); }, total: data => data.total }, columns: [ { id: 'checkbox', name: gridjs.html(``), width: '50px', formatter: (_, row) => gridjs.html( `` ) }, { name: formipay_forms_page.columns.id, width: '75px' }, { name: formipay_forms_page.columns.title, formatter: (_, row) => gridjs.html(` ${_}
`) }, { name: formipay_forms_page.columns.date, formatter: (_, row) => gridjs.html('' + _.split(' ').join('
') + '') }, { name: formipay_forms_page.columns.status, formatter: (_, row) => gridjs.html(` ${_} `) }, { name: formipay_forms_page.columns.shortcode, 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-forms')); document.addEventListener('click', function (e) { const copyButton = e.target.closest('[data-copy]'); // Check if the clicked element or its parent has the data-copy attribute if (copyButton) { const textToCopy = copyButton.getAttribute('data-copy'); // Use the Clipboard API to copy text navigator.clipboard.writeText(textToCopy) .then(() => { // Optionally, display a success message copyButton.innerHTML = ` ${formipay_forms_page.toast.copy_button.copied}`; setTimeout(() => { copyButton.innerHTML = ` ${formipay_forms_page.toast.copy_button.copy}`; // Reset button text }, 2000); Swal.fire({ icon: 'success', title: formipay_forms_page.toast.copy_button.title, toast: true, position: "top-end", showConfirmButton: false, timer: 3000, timerProgressBar: true, customClass: { container: 'top-40' }, didOpen: (toast) => { toast.onmouseenter = Swal.stopTimer; toast.onmouseleave = Swal.resumeTimer; } }) }) .catch((err) => { console.error('Failed to copy text: ', err); }); } }); jQuery(function($){ var $deleteBtn = $('#formipay-delete-selected'); function updateDeleteButtonVisibility() { if ($(document).find('.formipay-row-checkbox:checked').length > 0) { $deleteBtn.show(); } else { $deleteBtn.hide(); } } // Handle row and "select all" checkbox changes $(document).on('change', '.formipay-row-checkbox', function() { updateDeleteButtonVisibility(); }); // Handle row and "select all" checkbox changes $(document).on('change', '#select-all-rows', function() { const is_checked = $(this).is(':checked'); $(document).find('.formipay-row-checkbox').prop('checked', is_checked); updateDeleteButtonVisibility(); }); // Handle delete button click $deleteBtn.on('click', function() { var selectedIds = $(document).find('.formipay-row-checkbox:checked').map(function() { return $(this).data('id'); }).get(); console.log(selectedIds); if (selectedIds.length > 0) { Swal.fire({ icon: 'info', html: formipay_forms_page.modal.bulk_delete.question, showCancelButton: true, confirmButtonText: formipay_forms_page.modal.bulk_delete.confirmButton, cancelButtonText: formipay_forms_page.modal.bulk_delete.cancelButton }).then((result) => { /* Read more about isConfirmed, isDenied below */ if (result.isConfirmed) { $.ajax({ type: 'post', url: formipay_forms_page.ajax_url, data: { action: 'formipay-bulk-delete-form', ids: selectedIds, _wpnonce: formipay_forms_page.nonce }, success: function (res) { Swal.fire({ title: res.data.title, html: res.data.message, icon: res.data.icon }); formipay_table_grid.forceRender(); $(document).find('.formipay-row-checkbox').prop('checked', false); updateDeleteButtonVisibility(); refresh_table_with_filter(); } }); } }); } }); function refresh_table_with_filter() { formipay_table_grid.updateConfig({ server: { url: formipay_forms_page.ajax_url+'?action=formipay-tabledata-forms&post_status='+document.getElementById('post_status').value+'&orderby='+document.getElementById('orderby').value+'&sort='+document.getElementById('sort_by').value+'&search='+document.getElementById('keyword').value+'&_wpnonce='+formipay_forms_page.nonce, then: data => data.results.map( form => [form.ID, form.ID, form.title, form.date, form.status] ), total: data => data.total } }).forceRender(); } $('.form-tool, #post_status').on('change', function(){ refresh_table_with_filter(); }); $(document).on('mouseover', 'td[data-column-id=title]', function(){ $(this).find('.post-action').css('visibility', 'visible'); }); $(document).on('mouseleave', 'td[data-column-id=title]', function(){ $(this).find('.post-action').css('visibility', 'hidden'); }); $(document).on('click', '#add-new-form', async function(e){ e.preventDefault(); const { value: title } = await Swal.fire({ input: "text", inputLabel: formipay_forms_page.modal.add.title, showCancelButton: true, confirmButtonText: formipay_forms_page.modal.add.confirmButton, cancelButtonText: formipay_forms_page.modal.add.cancelButton, reverseButtons: true, inputValidator: (value) => { if (!value) { return formipay_forms_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_forms_page.ajax_url, data: { action: 'formipay-create-form-post', title: result.value, _wpnonce: formipay_forms_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-form', function(e){ e.preventDefault(); var data_id = $(this).attr('data-id'); Swal.fire({ icon: 'info', html: formipay_forms_page.bulk_delete.question, showCancelButton: true, confirmButtonText: formipay_forms_page.delete.confirmButton, cancelButtonText: formipay_forms_page.delete.cancelButton, }).then((result) => { /* Read more about isConfirmed, isDenied below */ if (result.isConfirmed) { $.ajax({ type: 'post', url: formipay_forms_page.ajax_url, data: { action: 'formipay-delete-form', id: data_id, _wpnonce: formipay_forms_page.nonce }, success: function (res) { Swal.fire({ title: res.data.title, html: res.data.message, icon: res.data.icon }); formipay_table_grid.forceRender(); } }); } }); }); $(document).on('click', '.duplicate-form', function(e){ e.preventDefault(); var data_id = $(this).attr('data-id'); Swal.fire({ icon: 'info', html: "Do you want to duplicate the form?", showCancelButton: true, confirmButtonText: "Confirm", }).then((result) => { /* Read more about isConfirmed, isDenied below */ if (result.isConfirmed) { $.ajax({ type: 'post', url: formipay_forms_page.ajax_url, data: { action: 'formipay-duplicate-form', id: data_id, _wpnonce: formipay_forms_page.nonce }, success: function (res) { Swal.fire({ title: res.data.title, html: res.data.message, icon: res.data.icon }); formipay_table_grid.forceRender(); } }); } }); }); });