woocommerce/assets/js/admin/wc-product-import.js

94 lines
2.6 KiB
JavaScript
Raw Normal View History

/*global ajaxurl, wc_product_import_params */
;(function ( $, window ) {
/**
2017-05-17 22:00:16 +00:00
* productImportForm handles the import process.
*/
var productImportForm = function( $form ) {
2017-05-23 18:46:46 +00:00
this.$form = $form;
this.xhr = false;
this.mapping = wc_product_import_params.mapping;
this.position = 0;
this.file = wc_product_import_params.file;
2017-05-23 14:05:32 +00:00
this.update_existing = wc_product_import_params.update_existing;
this.delimiter = wc_product_import_params.delimiter;
2017-05-23 18:46:46 +00:00
this.security = wc_product_import_params.import_nonce;
// Number of import successes/failures.
this.imported = 0;
2017-05-18 16:49:58 +00:00
this.failed = 0;
2017-05-23 14:05:32 +00:00
this.updated = 0;
this.skipped = 0;
// Initial state.
this.$form.find('.woocommerce-importer-progress').val( 0 );
this.run_import = this.run_import.bind( this );
2017-05-23 14:05:32 +00:00
// 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: {
2017-05-23 18:46:46 +00:00
action : 'woocommerce_do_ajax_product_import',
position : $this.position,
mapping : $this.mapping,
file : $this.file,
2017-05-23 14:05:32 +00:00
update_existing : $this.update_existing,
delimiter : $this.delimiter,
2017-05-23 18:46:46 +00:00
security : $this.security
},
dataType: 'json',
success: function( response ) {
if ( response.success ) {
2017-05-18 16:49:58 +00:00
$this.position = response.data.position;
$this.imported += response.data.imported;
2017-05-18 16:49:58 +00:00
$this.failed += response.data.failed;
2017-05-23 14:05:32 +00:00
$this.updated += response.data.updated;
$this.skipped += response.data.skipped;
$this.$form.find('.woocommerce-importer-progress').val( response.data.percentage );
if ( 'done' === response.data.position ) {
2020-06-23 19:40:53 +00:00
var file_name = wc_product_import_params.file.split( '/' ).pop();
window.location = response.data.url +
'&products-imported=' +
parseInt( $this.imported, 10 ) +
'&products-failed=' +
parseInt( $this.failed, 10 ) +
'&products-updated=' +
parseInt( $this.updated, 10 ) +
'&products-skipped=' +
parseInt( $this.skipped, 10 ) +
'&file-name=' +
2020-07-01 16:00:25 +00:00
file_name;
} 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 );