Global.renderPageNavigation (collection, url, itemsPerPage, pageIdx)
render pagewise-navigationbar

  • Parameter Object:
    collection to work on (either HopObject or Array)
  • Parameter String:
    url of action to link to
  • Parameter String:
    Number of items on one page
  • Parameter Int:
    currently viewed page index
  • Returns
    String rendered Navigationbar
Sourcecode in Global/renderFunctions.js:
1:   function renderPageNavigation(collection, url, itemsPerPage, pageIdx) {
2:      var maxItems = 10;
3:      var size = (collection instanceof Array) ? collection.length : collection.size();
4:      var lastPageIdx = Math.ceil(size/itemsPerPage)-1;
5:      // if we have just one page, there's no need for navigation
6:      if (lastPageIdx <= 0)
7:         return null;
8:   
9:      // init parameter object
10:     var param = new Object();
11:     var pageIdx = parseInt(pageIdx, 10);
12:     // check if the passed page-index is correct
13:     if (isNaN(pageIdx) || pageIdx > lastPageIdx || pageIdx < 0)
14:        pageIdx = 0;
15:     param.display = ((pageIdx*itemsPerPage) +1) + "-" + (Math.min((pageIdx*itemsPerPage)+itemsPerPage, size));
16:     param.total = size;
17:  
18:     // render the navigation-bar
19:     res.push();
20:     if (pageIdx > 0)
21:        renderPageNavItem("prev", "pageNavItem", url, pageIdx-1);
22:     var offset = Math.floor(pageIdx/maxItems)*maxItems;
23:     if (offset > 0)
24:        renderPageNavItem("[..]", "pageNavItem", url, offset-1);
25:     var currPage = offset;
26:     var stop = Math.min(currPage + maxItems, lastPageIdx+1);
27:     while (currPage < stop) {
28:        if (currPage == pageIdx)
29:           renderPageNavItem("[" + (currPage +1) + "]", "pageNavSelItem");
30:        else
31:           renderPageNavItem("[" + (currPage +1) + "]", "pageNavItem", url, currPage);
32:        currPage++;
33:     }
34:     if (currPage < lastPageIdx)
35:        renderPageNavItem("[..]", "pageNavItem", url, offset + maxItems);
36:     if (pageIdx < lastPageIdx)
37:        renderPageNavItem("next", "pageNavItem", url, pageIdx +1);
38:     param.pagenavigation = res.pop();
39:     return renderSkinAsString("pagenavigation", param);
40:  }