/*global ajaxurl, wc_product_import_params */ ;(function ( $, window ) { /** * productImportForm handles the import process. */ var productImportForm = function( $form ) { this.$form = $form; this.xhr = false; this.mapping = wc_product_import_params.mapping; this.position = 0; this.file = wc_product_import_params.file; this.security = wc_product_import_params.import_nonce; // Number of import successes/failures. this.imported = 0; this.failed = 0; // Initial state. this.$form.find('.woocommerce-importer-progress').val( 0 ); this.run_import = this.run_import.bind( this ); //Start importing. this.run_import(); }; /** * Run the import in batches until finished. */ productImportForm.prototype.run_import = function() { var $this = this; $.ajax( { type: 'POST', url: ajaxurl, data: { action : 'woocommerce_do_ajax_product_import', position : $this.position, mapping : $this.mapping, file : $this.file, security : $this.security }, dataType: 'json', success: function( response ) { if ( response.success ) { $this.position = response.data.position; $this.imported += response.data.imported; $this.failed += response.data.failed; $this.$form.find('.woocommerce-importer-progress').val( response.data.percentage ); if ( 'done' === response.data.position ) { window.location = response.data.url + '&imported=' + parseInt( $this.imported, 10 ) + '&failed=' + parseInt( $this.failed, 10 ); } else { $this.run_import(); } } } } ).fail( function( response ) { window.console.log( response ); } ); }; /** * Function to call productImportForm on jQuery selector. */ $.fn.wc_product_importer = function() { new productImportForm( this ); return this; }; $( '.woocommerce-importer' ).wc_product_importer(); })( jQuery, window );