[PATCH 26/51] dynatable: Allow the user to have pre-defined pagination links

Damien Lespiau damien.lespiau at intel.com
Sat Sep 12 01:54:59 AEST 2015


We want two things to have the layout generated by dynatable look like
the existing design:

 - Have two pagination widgets. For that we need to make
   dynatable-pagination-links + element.id a class and not an id. This
   is to allow multiple widgets

 - The second part is to re-use elements that are already in the DOM is
   the user put them there.

Signed-off-by: Damien Lespiau <damien.lespiau at intel.com>
---
 lib/packages/jquery/jquery.dynatable.js | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/lib/packages/jquery/jquery.dynatable.js b/lib/packages/jquery/jquery.dynatable.js
index de04547..7397110 100644
--- a/lib/packages/jquery/jquery.dynatable.js
+++ b/lib/packages/jquery/jquery.dynatable.js
@@ -382,7 +382,7 @@
         $('#dynatable-record-count-' + obj.element.id).replaceWith(obj.recordsCount.create());
       }
       if (settings.features.paginate) {
-        $('#dynatable-pagination-links-' + obj.element.id).replaceWith(obj.paginationLinks.create());
+        $('.dynatable-pagination-links-' + obj.element.id).replaceWith(obj.paginationLinks.create());
         if (settings.features.perPageSelect) {
           $('#dynatable-per-page-' + obj.element.id).val(parseInt(settings.dataset.perPage));
         }
@@ -1387,7 +1387,7 @@
     };
 
     this.create = function() {
-      var pageLinks = '<ul id="' + 'dynatable-pagination-links-' + obj.element.id + '" class="' + settings.inputs.paginationClass + '">',
+      var pageLinks = '<ul class="' + 'dynatable-pagination-links-' + obj.element.id + ' ' + settings.inputs.paginationClass + '">',
           pageLinkClass = settings.inputs.paginationLinkClass,
           activePageClass = settings.inputs.paginationActiveClass,
           disabledPageClass = settings.inputs.paginationDisabledClass,
@@ -1439,7 +1439,7 @@
       pageLinks += '</ul>';
 
       // only bind page handler to non-active and non-disabled page links
-      var selector = '#dynatable-pagination-links-' + obj.element.id + ' a.' + pageLinkClass + ':not(.' + activePageClass + ',.' + disabledPageClass + ')';
+      var selector = '.dynatable-pagination-links-' + obj.element.id + ' a.' + pageLinkClass + ':not(.' + activePageClass + ',.' + disabledPageClass + ')';
       // kill any existing delegated-bindings so they don't stack up
       $(document).undelegate(selector, 'click.dynatable');
       $(document).delegate(selector, 'click.dynatable', function(e) {
@@ -1471,6 +1471,11 @@
     };
 
     this.attach = function() {
+      // if the user already has elements in the page, use them instead of
+      // creating our own
+      if ($('.dynatable-pagination-links-' + obj.element.id).length)
+          return;
+
       // append page links *after* delegate-event-binding so it doesn't need to
       // find and select all page links to bind event
       var $target = settings.inputs.paginationLinkTarget ? $(settings.inputs.paginationLinkTarget) : obj.$element;
-- 
2.1.0



More information about the Patchwork mailing list