diff --git a/assets/js/admin/settings-views-html-settings-tax.js b/assets/js/admin/settings-views-html-settings-tax.js
index fb6ce55039a..8cdfffc5a32 100644
--- a/assets/js/admin/settings-views-html-settings-tax.js
+++ b/assets/js/admin/settings-views-html-settings-tax.js
@@ -8,7 +8,8 @@
var rowTemplate = wp.template( 'wc-tax-table-row' ),
paginationTemplate = wp.template( 'wc-tax-table-pagination' ),
- $tbody = $('#rates');
+ $tbody = $('#rates' ),
+ $pagination = $( '#rates-pagination' );
/**
* Build the table contents.
@@ -42,24 +43,48 @@
}
/**
- * Handle the initial display.
+ * Renders table contents by page.
*/
- if ( data.rates.length <= data.limit ) {
- renderTableContents( data.rates );
- } else {
- var first_index = data.limit * ( data.page - 1),
- last_index = data.limit * data.page;
+ function renderPage( page_num ) {
+ var qty_pages = Math.ceil( data.rates.length / data.limit );
+
+ page_num = parseInt( page_num, 10 );
+ if ( page_num < 1 ) {
+ page_num = 1;
+ } else if ( page_num > qty_pages ) {
+ page_num = qty_pages;
+ }
+
+ var first_index = data.limit * ( page_num - 1),
+ last_index = data.limit * page_num;
renderTableContents( data.rates.slice( first_index, last_index ) );
- // We've now displayed our initial page, time to render the pagination box.
- $('#rates-pagination' ).html( paginationTemplate( {
- qty_rates : data.rates.length,
- current_page : data.page,
- qty_pages : Math.ceil( data.rates.length / data.limit )
- } ) );
+ if ( data.rates.length > data.limit ) {
+ // We've now displayed our initial page, time to render the pagination box.
+ $pagination.html( paginationTemplate( {
+ qty_rates : data.rates.length,
+ current_page : page_num,
+ qty_pages : qty_pages
+ } ) );
+ }
}
+ /**
+ * Handle the initial display.
+ */
+ renderPage( data.page );
+
+ /**
+ * Handle clicks on the pagination links.
+ *
+ * Abstracting it out here instead of re-running it after each render.
+ */
+ $pagination.on( 'click', 'a', function(event){
+ event.preventDefault();
+ renderPage( $( event.currentTarget ).data('goto') );
+ } );
+
$('.wc_tax_rates .remove_tax_rates').click(function() {
if ( $tbody.find('tr.current').length > 0 ) {
var $current = $tbody.find('tr.current');
diff --git a/includes/admin/settings/views/html-settings-tax.php b/includes/admin/settings/views/html-settings-tax.php
index 5957595e307..b328fb935ff 100644
--- a/includes/admin/settings/views/html-settings-tax.php
+++ b/includes/admin/settings/views/html-settings-tax.php
@@ -173,11 +173,11 @@ wp_enqueue_script( 'wc-settings-tax' );
-
+
›
-
+
»