diff --git a/assets/js/admin/settings-views-html-settings-tax.js b/assets/js/admin/settings-views-html-settings-tax.js index 95e82e90e9c..ecb440d3587 100644 --- a/assets/js/admin/settings-views-html-settings-tax.js +++ b/assets/js/admin/settings-views-html-settings-tax.js @@ -204,23 +204,45 @@ view.render(); }, - onDeleteRow : function() { - if ( $tbody.find('tr.current').length > 0 ) { - var $current = $tbody.find('tr.current'); - $current.find('input').val(''); - $current.find('input.remove_tax_rate').val('1'); + onDeleteRow : function( event ) { + var view = event.data.view, + model = view.model, + rates = _.indexBy( model.get('rates'), 'tax_rate_id' ), + changes = {}, + current_id, current_order; + event.preventDefault(); + + if ( $current = $tbody.children( '.current' ) ) { $current.each(function(){ - if ( $(this).is('.new') ) { - $( this ).remove(); - } else { - $( this ).hide(); - } + current_id = $( this ).data('id'); + current_order = parseInt( rates[ current_id ].tax_rate_order, 10 ); + + rates_to_reorder = _.filter( rates, function( rate ) { + if ( parseInt( rate.tax_rate_order, 10 ) > current_order ) { + return true; + } + return false; + } ); + + reordered_rates = _.map( rates_to_reorder, function( rate ) { + rate.tax_rate_order--; + changes[ rate.tax_rate_id ] = _.extend( changes[ rate.tax_rate_id ] || {}, { tax_rate_order : rate.tax_rate_order } ); + return rate; + } ); + + delete rates[ current_id ]; + + changes[ current_id ] = _.extend( changes[ current_id ] || {}, { deleted : 'deleted' } ); }); + + model.set( 'rates', rates ); + model.logChanges( changes ); + + view.render(); } else { window.alert( data.strings.no_rows_selected ); } - return false; }, onSearchField : function( event ){ event.data.view.updateUrl();