/*global woocommerce_network_orders */ (function( $, _, undefined ) { if ( 'undefined' === typeof woocommerce_network_orders ) { return; } var orders = [], promises = [], // Track completion (pass or fail) of ajax requests. deferred = [], // Tracks the ajax deferreds. $tbody = $( document.getElementById( 'network-orders-tbody' ) ), template = _.template( $( document.getElementById( 'network-orders-row-template') ).text() ), $loadingIndicator = $( document.getElementById( 'woocommerce-network-order-table-loading' ) ), $orderTable = $( document.getElementById( 'woocommerce-network-order-table' ) ), $noneFound = $( document.getElementById( 'woocommerce-network-orders-no-orders' ) ); // No sites, so bail. if ( ! woocommerce_network_orders.sites.length ) { $loadingIndicator.removeClass( 'is-active' ); $orderTable.removeClass( 'is-active' ); $noneFound.addClass( 'is-active' ); return; } $.each( woocommerce_network_orders.sites, function( index, value ) { promises[ index ] = $.Deferred(); deferred.push( $.ajax( { url : woocommerce_network_orders.order_endpoint, data: { _wpnonce: woocommerce_network_orders.nonce, network_orders: true, blog_id: value }, type: 'GET' } ).success(function( response ) { var orderindex; for ( orderindex in response ) { orders.push( response[ orderindex ] ); } promises[ index ].resolve(); }).fail(function (){ promises[ index ].resolve(); }) ); } ); if ( promises.length > 0 ) { $.when.apply( $, promises ).done( function() { var orderindex, currentOrder; // Sort orders, newest first orders.sort(function( a, b ) { var adate, bdate; adate = Date.parse( a.date_created_gmt ); bdate = Date.parse( b.date_created_gmt ); if ( adate === bdate ) { return 0; } if ( adate < bdate ) { return 1; } else { return -1; } }); if ( orders.length > 0 ) { for ( orderindex in orders ) { currentOrder = orders[ orderindex ]; $tbody.append( template( currentOrder ) ); } $noneFound.removeClass( 'is-active' ); $loadingIndicator.removeClass( 'is-active' ); $orderTable.addClass( 'is-active' ); } else { $noneFound.addClass( 'is-active' ); $loadingIndicator.removeClass( 'is-active' ); $orderTable.removeClass( 'is-active' ); } } ); } })( jQuery, _ );