2 function SlickGridPager(dataView, grid, $container) {
6 dataView.onPagingInfoChanged.subscribe(function (e, pagingInfo) {
7 updatePager(pagingInfo);
11 updatePager(dataView.getPagingInfo());
14 function getNavState() {
15 var cannotLeaveEditMode = !Slick.GlobalEditorLock.commitCurrentEdit();
16 var pagingInfo = dataView.getPagingInfo();
17 var lastPage = pagingInfo.totalPages - 1;
20 canGotoFirst: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum > 0,
21 canGotoLast: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum != lastPage,
22 canGotoPrev: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum > 0,
23 canGotoNext: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum < lastPage,
24 pagingInfo: pagingInfo
28 function setPageSize(n) {
29 dataView.setRefreshHints({
30 isFilterUnchanged: true
32 dataView.setPagingOptions({pageSize: n});
35 function gotoFirst() {
36 if (getNavState().canGotoFirst) {
37 dataView.setPagingOptions({pageNum: 0});
42 var state = getNavState();
43 if (state.canGotoLast) {
44 dataView.setPagingOptions({pageNum: state.pagingInfo.totalPages - 1});
49 var state = getNavState();
50 if (state.canGotoPrev) {
51 dataView.setPagingOptions({pageNum: state.pagingInfo.pageNum - 1});
56 var state = getNavState();
57 if (state.canGotoNext) {
58 dataView.setPagingOptions({pageNum: state.pagingInfo.pageNum + 1});
62 function constructPagerUI() {
65 var $nav = $("<span class='slick-pager-nav' />").appendTo($container);
66 var $settings = $("<span class='slick-pager-settings' />").appendTo($container);
67 $status = $("<span class='slick-pager-status' />").appendTo($container);
70 .append("<span class='slick-pager-settings-expanded' style='display:none'>Show: <a data=0>All</a><a data='-1'>Auto</a><a data=25>25</a><a data=50>50</a><a data=100>100</a></span>");
72 $settings.find("a[data]").click(function (e) {
73 var pagesize = $(e.target).attr("data");
74 if (pagesize != undefined) {
76 var vp = grid.getViewport();
77 setPageSize(vp.bottom - vp.top);
79 setPageSize(parseInt(pagesize));
84 var icon_prefix = "<span class='ui-state-default ui-corner-all ui-icon-container'><span class='ui-icon ";
85 var icon_suffix = "' /></span>";
87 $(icon_prefix + "ui-icon-lightbulb" + icon_suffix)
89 $(".slick-pager-settings-expanded").toggle()
93 $(icon_prefix + "ui-icon-seek-first" + icon_suffix)
97 $(icon_prefix + "ui-icon-seek-prev" + icon_suffix)
101 $(icon_prefix + "ui-icon-seek-next" + icon_suffix)
105 $(icon_prefix + "ui-icon-seek-end" + icon_suffix)
109 $container.find(".ui-icon-container")
111 $(this).toggleClass("ui-state-hover");
114 $container.children().wrapAll("<div class='slick-pager' />");
118 function updatePager(pagingInfo) {
119 var state = getNavState();
121 $container.find(".slick-pager-nav span").removeClass("ui-state-disabled");
122 if (!state.canGotoFirst) {
123 $container.find(".ui-icon-seek-first").addClass("ui-state-disabled");
125 if (!state.canGotoLast) {
126 $container.find(".ui-icon-seek-end").addClass("ui-state-disabled");
128 if (!state.canGotoNext) {
129 $container.find(".ui-icon-seek-next").addClass("ui-state-disabled");
131 if (!state.canGotoPrev) {
132 $container.find(".ui-icon-seek-prev").addClass("ui-state-disabled");
135 if (pagingInfo.pageSize == 0) {
136 $status.text("Showing all " + pagingInfo.totalRows + " rows");
138 $status.text("Showing page " + (pagingInfo.pageNum + 1) + " of " + pagingInfo.totalPages);
145 // Slick.Controls.Pager
146 $.extend(true, window, { Slick:{ Controls:{ Pager:SlickGridPager }}});