| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /*global ajaxurl, wc_product_export_params */
- ;(function ( $, window ) {
- /**
- * productExportForm handles the export process.
- */
- var productExportForm = function( $form ) {
- this.$form = $form;
- this.xhr = false;
- // Initial state.
- this.$form.find('.woocommerce-exporter-progress').val( 0 );
- // Methods.
- this.processStep = this.processStep.bind( this );
- // Events.
- $form.on( 'submit', { productExportForm: this }, this.onSubmit );
- };
- /**
- * Handle export form submission.
- */
- productExportForm.prototype.onSubmit = function( event ) {
- event.preventDefault();
- var currentDate = new Date(),
- day = currentDate.getDate(),
- month = currentDate.getMonth() + 1,
- year = currentDate.getFullYear(),
- timestamp = currentDate.getTime(),
- filename = 'wc-product-export-' + day + '-' + month + '-' + year + '-' + timestamp + '.csv';
- event.data.productExportForm.$form.addClass( 'woocommerce-exporter__exporting' );
- event.data.productExportForm.$form.find('.woocommerce-exporter-progress').val( 0 );
- event.data.productExportForm.$form.find('.woocommerce-exporter-button').prop( 'disabled', true );
- event.data.productExportForm.processStep( 1, $( this ).serialize(), '', filename );
- };
- /**
- * Process the current export step.
- */
- productExportForm.prototype.processStep = function( step, data, columns, filename ) {
- var $this = this,
- selected_columns = $( '.woocommerce-exporter-columns' ).val(),
- export_meta = $( '#woocommerce-exporter-meta:checked' ).length ? 1: 0,
- export_types = $( '.woocommerce-exporter-types' ).val();
- $.ajax( {
- type: 'POST',
- url: ajaxurl,
- data: {
- form : data,
- action : 'woocommerce_do_ajax_product_export',
- step : step,
- columns : columns,
- selected_columns : selected_columns,
- export_meta : export_meta,
- export_types : export_types,
- filename : filename,
- security : wc_product_export_params.export_nonce
- },
- dataType: 'json',
- success: function( response ) {
- if ( response.success ) {
- if ( 'done' === response.data.step ) {
- $this.$form.find('.woocommerce-exporter-progress').val( response.data.percentage );
- window.location = response.data.url;
- setTimeout( function() {
- $this.$form.removeClass( 'woocommerce-exporter__exporting' );
- $this.$form.find('.woocommerce-exporter-button').prop( 'disabled', false );
- }, 2000 );
- } else {
- $this.$form.find('.woocommerce-exporter-progress').val( response.data.percentage );
- $this.processStep( parseInt( response.data.step, 10 ), data, response.data.columns, filename );
- }
- }
- }
- } ).fail( function( response ) {
- window.console.log( response );
- } );
- };
- /**
- * Function to call productExportForm on jquery selector.
- */
- $.fn.wc_product_export_form = function() {
- new productExportForm( this );
- return this;
- };
- $( '.woocommerce-exporter' ).wc_product_export_form();
- })( jQuery, window );
|