olalonde / handlebars-paginate

Pagination helper for Handlebars.
http://syskall.com/pagination-with-handlebars/
59 stars 21 forks source link

how to handle more req.query? #26

Open titoih opened 4 years ago

titoih commented 4 years ago

i am trying to include in <a {{#if disabled}}class="disabled"{{/if}} href="?page={{n}}"><li>First</li></a>

something like:

<a {{#if disabled}}class="disabled"{{/if}} href="{{#if state}}?state={{state}}&{{/if}} {{#unless state}}?{{/state}}page={{n}}"><li>First</li></a>

could you help me to solve that? thanks for your time and code!

titoih commented 4 years ago

I solved it. For anyone who want it, just need to pass whatever you need in the obj of controller and add to index.js like that:

` module.exports = function(pagination, options) { var type = options.hash.type || 'middle'; var ret = ''; var pageCount = Number(pagination.pageCount); var page = Number(pagination.page); var limit; var state = Number(pagination.state);

if (options.hash.limit) limit = +options.hash.limit;

//page pageCount var newContext = {}; switch (type) { case 'middle': if (typeof limit === 'number') { var i = 0; var leftCount = Math.ceil(limit / 2) - 1; var rightCount = limit - leftCount - 1; if (page + rightCount > pageCount) leftCount = limit - (pageCount - page) - 1; if (page - leftCount < 1) leftCount = page - 1; var start = page - leftCount;

    while (i < limit && i < pageCount) {
      newContext = { n: start, state: state };
      if (start === page) newContext.active = true;
      ret = ret + options.fn(newContext);
      start++;
      i++;
    }
  }
  else {
    for (var i = 1; i <= pageCount; i++) {
      newContext = { n: i, state: state };
      if (i === page) newContext.active = true;
      ret = ret + options.fn(newContext);
    }
  }
  break;
case 'previous':
  if (page === 1) {
    newContext = { disabled: true, n: 1, state: state }
  }
  else {
    newContext = { n: page - 1, state: state }
  }
  ret = ret + options.fn(newContext);
  break;
case 'next':
  newContext = {};
  if (page === pageCount) {
    newContext = { disabled: true, n: pageCount, state: state }
  }
  else {
    newContext = { n: page + 1 , state: state}
  }
  ret = ret + options.fn(newContext);
  break;
case 'first':
  if (page === 1) {
    newContext = { disabled: true, n: 1, state: state }
  }
  else {
    newContext = { n: 1, state: state }
  }
  ret = ret + options.fn(newContext);
  break;
case 'last':
  if (page === pageCount) {
    newContext = { disabled: true, n: pageCount, state: state }
  }
  else {
    newContext = { n: pageCount, state: state }
  }
  ret = ret + options.fn(newContext);
  break;

}

return ret; };

`