From cf6519a73fad28e60957b9aad7d80e0d64ce1ba4 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Wed, 8 Jan 2014 14:09:40 -0800 Subject: [PATCH] CRM-12872 - Ajax pager fixes --- templates/CRM/common/pager.tpl | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/templates/CRM/common/pager.tpl b/templates/CRM/common/pager.tpl index dd05e9b1d2..a3b7b75b0f 100644 --- a/templates/CRM/common/pager.tpl +++ b/templates/CRM/common/pager.tpl @@ -64,11 +64,16 @@ numPages = {$pager->_response.numPages}, currentPage = {$pager->_response.currentPage}, perPageCount = {$pager->_perPage}, - currentLocation = {$pager->_response.currentLocation|json_encode}; + currentLocation = {$pager->_response.currentLocation|json_encode}, + spinning = null; + refreshing = false; {literal} function refresh(url) { - var options = url ? {url: url} : {}; - $form.closest('.crm-ajax-container, #crm-main-content-wrapper').crmSnippet(options).crmSnippet('refresh'); + if (!refreshing) { + refreshing = true; + var options = url ? {url: url} : {}; + $form.off().closest('.crm-ajax-container, #crm-main-content-wrapper').crmSnippet(options).crmSnippet('refresh'); + } } function page(num) { num = parseInt(num, 10); @@ -98,7 +103,6 @@ }) .on('change', function() { page($(this).spinner('value')); - return false; }) .on('keyup keydown keypress', preventSubmit); $('input.crm-rows-per-page-select', $form) @@ -108,16 +112,20 @@ }) .on('change', function() { changeCount($(this).spinner('value')); - return false; }) .on('keyup keydown keypress', preventSubmit); $form .on('click', 'a.ui-spinner-button', function(e) { - if ($(this).is('.crm-pager a')) { - page($(this).siblings('input[name^=crmPID]').spinner('value')); - } else { - changeCount($(this).siblings('input.crm-rows-per-page-select').spinner('value')); - } + var $el = $(this); + // Update after a short delay to allow multiple clicks + spinning !== null && window.clearTimeout(spinning); + spinning = window.setTimeout(function() { + if ($el.is('.crm-pager a')) { + page($el.siblings('input[name^=crmPID]').spinner('value')); + } else { + changeCount($el.siblings('input.crm-rows-per-page-select').spinner('value')); + } + }, 200); }) .on('click', 'a.crm-pager-link, #alpha-filter a', function() { refresh($(this).attr('href')); -- 2.25.1