PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.3.8
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.3.8
4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 4.1.7.3.2 4.2.0 All 139 releases
learnpress / assets / src / js / admin / order / export_invoice.js

export_invoice.js in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.3.8, at assets/src/js/admin/order/export_invoice.js

117 lines 3.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Export invoice to PDF
3 */
4 export default function export_invoice() {
5 let html2pdf_obj, modal;
6
7 document.addEventListener( 'click', ( e ) => {
8 const target = e.target;
9
10 if ( target.id === 'lp-invoice__export' ) {
11 html2pdf_obj.save();
12 } else if ( target.id === 'lp-invoice__update' ) {
13 const elOption = document.querySelector( '.export-options__content' );
14 const fields = elOption.querySelectorAll( 'input' );
15 const fieldNameUnChecked = [];
16 fields.forEach( ( field ) => {
17 if ( ! field.checked ) {
18 fieldNameUnChecked.push( field.name );
19 }
20 } );
21
22 window.localStorage.setItem( 'lp_invoice_un_fields', JSON.stringify( fieldNameUnChecked ) );
23 window.localStorage.setItem( 'lp_invoice_show', 1 );
24 window.location.reload();
25 }
26 } );
27 const exportPDF = () => {
28 const pdfOptions = {
29 margin: [ 0, 0, 0, 5 ],
30 filename: document.title,
31 image: { type: 'webp' },
32 html2canvas: { scale: 2.5 },
33 jsPDF: { format: 'a4', orientation: 'p' },
34 };
35 const html = document.querySelector( '#lp-invoice__content' );
36 html2pdf_obj = html2pdf().set( pdfOptions ).from( html );
37 };
38 const showInfoFields = () => {
39 // Get fields name checked
40 const fieldsChecked = window.localStorage.getItem( 'lp_invoice_un_fields' );
41 const elOptions = document.querySelector( '.export-options__content' );
42 const elInvoiceFields = document.querySelectorAll( '.invoice-field' );
43 elInvoiceFields.forEach( ( field ) => {
44 const nameClass = field.classList[ 1 ];
45 if ( fieldsChecked && fieldsChecked.includes( nameClass ) ) {
46 field.remove();
47 const elOption = elOptions.querySelector( `[name=${ nameClass }]` );
48 if ( elOption ) {
49 elOption.checked = false;
50 }
51 }
52 } );
53 const showInvoice = parseInt( window.localStorage.getItem( 'lp_invoice_show' ) );
54 if ( showInvoice === 1 ) {
55 modal.style.display = 'block';
56 }
57 };
58
59 document.addEventListener( 'DOMContentLoaded', () => {
60 const elExportSection = document.querySelector( '#order-export__section' );
61 if ( ! elExportSection.length ) {
62 const tabs = document.querySelectorAll( '.tabs' );
63 const tab = document.querySelectorAll( '.tab' );
64 const panel = document.querySelectorAll( '.panel' );
65
66 function onTabClick( event ) {
67 // deactivate existing active tabs and panel
68
69 for ( let i = 0; i < tab.length; i++ ) {
70 tab[ i ].classList.remove( 'active' );
71 }
72
73 for ( let i = 0; i < panel.length; i++ ) {
74 panel[ i ].classList.remove( 'active' );
75 }
76
77 // activate new tabs and panel
78 event.target.classList.add( 'active' );
79 const classString = event.target.getAttribute( 'data-target' );
80 document.getElementById( 'panels' ).getElementsByClassName( classString )[ 0 ].classList.add( 'active' );
81 }
82
83 for ( let i = 0; i < tab.length; i++ ) {
84 tab[ i ].addEventListener( 'click', onTabClick, false );
85 }
86
87 // Get the modal
88 modal = document.getElementById( 'myModal' );
89 // Get the button that opens the modal
90 const btn = document.getElementById( 'order-export__button' );
91 // Get the <span> element that closes the modal
92 const span = document.getElementsByClassName( 'close' )[ 0 ];
93 // When the user clicks on the button, open the modal
94 btn.onclick = function() {
95 modal.style.display = 'block';
96 };
97
98 // When the user clicks on <span> (x), close the modal
99 span.onclick = function() {
100 modal.style.display = 'none';
101 window.localStorage.setItem( 'lp_invoice_show', 0 );
102 };
103
104 // When the user clicks anywhere outside the modal, close it
105 window.onclick = function( event ) {
106 if ( event.target === modal ) {
107 modal.style.display = 'none';
108 window.localStorage.setItem( 'lp_invoice_show', 0 );
109 }
110 };
111
112 showInfoFields();
113 exportPDF();
114 }
115 } );
116 }
117