Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.15 KB | None | 0 0
  1. /* global wc_orders_params */
  2.  
  3. var WC_Shipping_Tracking;
  4.  
  5. jQuery( function( $ ) {
  6.  
  7.     if ( typeof WC_SHIPPING_TRACKING === 'undefined' ) {
  8.         return false;
  9.     }
  10.  
  11.     const KEYCODE_ENTER = 13;
  12.     const KEYCODE_ESC = 27;
  13.  
  14.     /**
  15.      * WCOrdersTable class.
  16.      */
  17.      WC_Shipping_Tracking = function() {
  18.         $( document )
  19.             .on( 'blur',     '.wc_shipping_tracking_input', this.onInputBlur )
  20.             .on( 'keyup',    '.wc_shipping_tracking_input', this.onInputKeyUp )
  21.             .on( 'keypress', '.wc_shipping_tracking_input', this.onInputKeyPress )
  22.             .on( 'click',    '.edit_wc_shipping_tracking',  this.onEditClick );
  23.     };
  24.  
  25.     /**
  26.      * Blur an input.
  27.      */
  28.     WC_Shipping_Tracking.prototype.onInputBlur = function( e ) {
  29.         console.log('blur');
  30.         if( $.trim( $( e.target ).val() ) != $( e.target ).data('original' ) ) {
  31.             WC_Shipping_Tracking.handle_save( $( e.target ) );
  32.         } else {
  33.             WC_Shipping_Tracking.handle_cancel( $( e.target ) );
  34.         }
  35.     };
  36.  
  37.     /**
  38.      * Clear on ESC
  39.      */
  40.     WC_Shipping_Tracking.prototype.onInputKeyUp = function( e ) {
  41.         if( e.which == KEYCODE_ESC ){
  42.             WC_Shipping_Tracking.handle_cancel( $( e.target ) );
  43.         }
  44.     };
  45.  
  46.     /**
  47.      * Save on enter.
  48.      */
  49.     WC_Shipping_Tracking.prototype.onInputKeyPress = function( e ) {
  50.         // Recommended to use e.which, it's normalized across browsers.
  51.         if( e.which == KEYCODE_ENTER ){
  52.             e.preventDefault();
  53.             WC_Shipping_Tracking.handle_save( $( e.target ) );
  54.         }
  55.     };
  56.  
  57.     /**
  58.      * Show the input when edit is clicked.
  59.      */
  60.     WC_Shipping_Tracking.prototype.onEditClick = function( e ) {
  61.         $( e.target ).hide().prev( '.tracking_number_input' ).show().focus().prev( '.wc_shipping_tracking_value' ).hide();
  62.     };
  63.  
  64.     /**
  65.      * Cancel an input.
  66.      */
  67.     WC_Shipping_Tracking.prototype.handle_cancel = function( $input ) {
  68.         if( typeof($input) === 'undefined' )
  69.             return false;
  70.  
  71.         $input.hide().val($input.data('original'));
  72.         $input.prev( '.wc_shipping_tracking_value' ).show();
  73.         $input.next( '.edit_wc_shipping_tracking' ).show();
  74.     };
  75.  
  76.     /**
  77.      * Save an input.
  78.      */
  79.     WC_Shipping_Tracking.prototype.handle_save = function( $input ) { console.log($input)
  80.         if( typeof($input) === 'undefined' )
  81.             return false;
  82.  
  83.         // Related objects.
  84.         var $display = $input.prev( '.wc_shipping_tracking_value' );
  85.         var $edit = $input.next( '.edit_wc_shipping_tracking' );
  86.         var $loader = $edit.next( '.tracking_number_loader' );
  87.  
  88.         // Show loader and disable input.
  89.         $loader.show().css( 'display', 'inline-block' );
  90.         $input.prop( 'disabled', true);
  91.  
  92.         // Get some data.
  93.         var order_id = $input.data( 'order_id' );
  94.         var tracking_number = $input.val();
  95.  
  96.         // Send via ajax.
  97.         $.ajax({
  98.             url: ajaxurl,
  99.             type: 'POST',
  100.             data: {
  101.                 'action' : 'save_tracking_number',
  102.                 'order_id' : order_id,
  103.                 'tracking_number' : tracking_number,
  104.                 'security' : WC_TRACKING_NUMBER.security
  105.              },
  106.         })
  107.  
  108.         .done( function( msg ){  console.log(msg);
  109.        
  110.             // Re-enable the input, show value, hide input.
  111.             $input.val( msg ).prop( 'disabled', false ).data( 'original', msg ).hide();
  112.             $loader.fadeOut( 'fast' );
  113.             $display.html( msg ).show();
  114.             $edit.show();
  115.  
  116.         });
  117.     }
  118.  
  119.     /*
  120.      * Initialize script.
  121.      */
  122.     new WC_Shipping_Tracking();
  123.  
  124. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement