From ea7597bab38053d2202d441ba5582d5549f6dc5e Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Thu, 5 May 2016 14:46:51 -0400 Subject: [PATCH] CRM-18286 - Strip the ids out of ajax urls to make them more generic --- js/Common.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/js/Common.js b/js/Common.js index 60c156b9da..d9ec1d7a1d 100644 --- a/js/Common.js +++ b/js/Common.js @@ -728,10 +728,18 @@ if (!CRM.vars) CRM.vars = {}; }; $.fn.crmAjaxTable = function() { + // Strip the ids from ajax urls to make pageLength storage more generic + function simplifyUrl(ajax) { + // Datatables ajax prop could be a url string or an object containing the url + var url = typeof ajax === 'object' ? ajax.url : ajax; + return typeof url === 'string' ? url.replace(/[&?]\w*id=\d+/g, '') : null; + } + return $(this).each(function() { // Recall pageLength for this table - if ($(this).data('ajax') && window.localStorage && localStorage['dataTablePageLength:' + $(this).data('ajax')]) { - $(this).data('pageLength', localStorage['dataTablePageLength:' + $(this).data('ajax')]); + var url = simplifyUrl($(this).data('ajax')); + if (url && window.localStorage && localStorage['dataTablePageLength:' + url]) { + $(this).data('pageLength', localStorage['dataTablePageLength:' + url]); } // Declare the defaults for DataTables var defaults = { @@ -762,7 +770,7 @@ if (!CRM.vars) CRM.vars = {}; // Remember pageLength $(this).on('length.dt', function(e, settings, len) { if (settings.ajax && window.localStorage) { - localStorage['dataTablePageLength:' + settings.ajax] = len; + localStorage['dataTablePageLength:' + simplifyUrl(settings.ajax)] = len; } }); //Make the DataTables call -- 2.25.1