oont-contents/plugins/woo-order-export-lite/assets/js/settings-form.js
2025-02-08 15:10:23 +01:00

261 lines
No EOL
7 KiB
JavaScript

String.prototype.hashCode = function () {
var hash = 0, i, chr;
if ( this.length === 0 ) {
return hash;
}
for ( i = 0; i < this.length; i ++ ) {
chr = this.charCodeAt( i );
hash = (
(
hash << 5
) - hash
) + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
};
function woe_make_json_var( obj ) {
return encodeURIComponent( woe_make_json( obj ) );
}
function woe_make_json( obj ) {
return JSON.stringify( obj.serializeJSON() );
}
function woe_change_filename_ext() {
if ( jQuery( '#export_filename' ).length ) {
var filename = jQuery( '#export_filename input' ).val();
var ext = output_format.toLowerCase();
if ( ext == 'xls' && ! jQuery( '#format_xls_use_xls_format' ).prop( 'checked' ) ) //fix for XLSX
{
ext = 'xlsx';
}
var file = filename.replace( /^(.*)\..+$/, "$1." + ext );
if ( file.indexOf( "." ) == - 1 ) //no dots??
{
file = file + "." + ext;
}
jQuery( '#export_filename input' ).val( file );
woe_show_summary_report( output_format );
}
}
function woe_show_summary_report( ext ) {
if ( woe_is_flat_format( ext ) ) {
jQuery( '#summary_report_by_products' ).show();
jQuery( '#summary_report_by_customers' ).show();
} else {
jQuery( '#summary_report_by_products' ).hide();
jQuery( '#summary_report_by_customers' ).hide();
jQuery( '#summary_setup_fields' ).hide();
jQuery( '#summary_report_by_products_checkbox' ).prop( 'checked', false ).trigger( 'change' );
}
}
//for warning
function woe_setup_alert_date_filter() {
default_date_filter_color = jQuery( "#my-date-filter" ).css( 'color' );
woe_try_color_date_filter();
jQuery( '#from_date' ).change( function () {
woe_try_color_date_filter();
} );
jQuery( '#to_date' ).change( function () {
woe_try_color_date_filter();
} );
}
function woe_is_flat_format( format ) {
return (
settings_form.flat_formats.indexOf( format ) > - 1
);
}
function woe_reset_date_filter_for_cron() {
if ( mode == 'cron' ) {
jQuery( "#from_date" ).val( "" );
jQuery( "#to_date" ).val( "" );
woe_try_color_date_filter();
}
}
function woe_try_color_date_filter() {
var color = default_date_filter_color;
if ( jQuery( "#from_date" ).val() || jQuery( "#to_date" ).val() ) {
color = 'red';
}
jQuery( "#my-date-filter" ).css( 'color', color );
}
function woe_show_error_message( text ) {
if ( ! text ) {
text = "Please, open section 'Misc Settings' and \n mark checkbox 'Enable debug output' \n to see exact error message";
}
alert( text );
}
function woe_init_image_uploaders() {
var custom_uploader;
jQuery( '.image-upload-button' ).click( function ( e ) {
e.preventDefault();
if ( custom_uploader ) {
custom_uploader.open();
return;
}
custom_uploader = wp.media.frames.file_frame = wp.media( {
title: 'Choose Image',
button: {
text: 'Choose Image'
},
multiple: false
} );
var self = this;
custom_uploader.on( 'select', function () {
attachment = custom_uploader.state().get( 'selection' ).first().toJSON();
jQuery( self ).siblings( 'input[type="hidden"].source_url' ).val( attachment.url );
jQuery( self ).siblings( 'input[type="hidden"].source_id' ).val( attachment.id );
jQuery( self ).siblings( 'img' ).attr( 'src', attachment.url ).removeClass( 'hidden' );
jQuery( self ).siblings( '.image-clear-button' ).removeClass( 'hidden' );
} );
custom_uploader.open();
} );
jQuery( '.image-clear-button' ).click( function ( e ) {
jQuery( this ).siblings( 'input[type="hidden"]' ).val( '' );
jQuery( this ).siblings( 'img' ).attr( 'src', '' ).addClass( 'hidden' );
jQuery( this ).addClass( 'hidden' );
} );
return custom_uploader;
}
var woe_form_submitting = false;
function woe_set_form_submitting() {
woe_form_submitting = true;
}
window.onload = function () {
var form = jQuery( '#export_job_settings' );
var on_load_form_data;
setTimeout(function () {
on_load_form_data = form.serialize();
}, 1500);
var woe_is_dirty = function ( on_load_form_data ) {
return on_load_form_data.hashCode() !== form.serialize().hashCode()
};
window.addEventListener( "beforeunload", function ( e ) {
var clicked_el = e.target.activeElement;
if ( clicked_el.id === 'copy-to-profiles' ) {
woe_set_form_submitting();
}
if ( woe_is_dirty( on_load_form_data ) && ! woe_form_submitting ) {
(
e || window.event
).returnValue = false; //Gecko + IE
return false; //Gecko + Webkit, Safari, Chrome etc.
} else {
return undefined;
}
} );
}
jQuery( document ).ready( function ( $ ) {
function woe_disable_input_by_id( current_elem, element_id ) {
var $disabled = $( '#' + element_id );
( current_elem.checked === true )
? $disabled.attr( 'disabled', true )
: $disabled.removeAttr( 'disabled' );
}
$( '.my-hide-next' ).click( function () {
$( this ).next().toggleClass('hide');
var is_shown = ! $( this ).next().is( ':hidden' );
$( this ).find( 'span' )
.toggleClass( 'ui-icon-triangle-1-n', is_shown )
.toggleClass( 'ui-icon-triangle-1-s', ! is_shown );
} );
$( '#date_format_block select' ).on( 'change', function () {
var value = $( this ).val();
if ( value == 'custom' ) {
$( '#custom_date_format_block' ).show();
} else {
$( '#custom_date_format_block' ).hide();
$( 'input[name="settings[date_format]"]' ).val( value );
}
} );
$( '#time_format_block select' ).on( 'change', function () {
var value = $( this ).val();
if ( value == 'custom' ) {
$( '#custom_time_format_block' ).show();
} else {
$( '#custom_time_format_block' ).hide();
$( 'input[name="settings[time_format]"]' ).val( value );
}
} );
$( 'input[type="checkbox"][name="settings[custom_php]"]' ).on( 'change', function () {
$( 'div#custom_php_code_textarea' ).toggle( $( this ).is( ':checked' ) );
} );
$( '#woe_format_disabler' ).on( 'change', function() {
woe_disable_input_by_id( this, 'woe_format_disabled' );
} ).trigger( 'change' );
$( '#woe_format_tsv_disabler').on( 'change', function() {
woe_disable_input_by_id( this, 'woe_format_tsv_disabled' );
} ).trigger( 'change' );
if (typeof settings_form.settings.show_date_time_picker_for_date_range !== 'undefined' && settings_form.settings.show_date_time_picker_for_date_range) {
if ( typeof woe_init_datetime_picker !== 'undefined' ) {
woe_init_datetime_picker($("#from_date"), {'hours': "00", 'minutes': "00", 'seconds': "00"});
woe_init_datetime_picker($("#to_date"), {'hours': "23", 'minutes': "59", 'seconds': "59"});
}
} else {
jQuery('.date').datepicker({
dateFormat: 'yy-mm-dd',
constrainInput: false
});
}
if ( mode == settings_form.EXPORT_SCHEDULE ) {
woe_setup_alert_date_filter();
}
//for XLSX
$( '#format_xls_use_xls_format' ).click( function () {
woe_change_filename_ext();
} );
woe_show_summary_report( output_format );
if ( ! summary_mode_by_products ) {
jQuery( '#summary_setup_fields' ).hide();
}
woe_init_image_uploaders();
// this line must be last , we don't have any errors
jQuery( '#JS_error_onload' ).hide();
} );