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: }
|