Advertisement
Guest User

Untitled

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