PageSourceSearch

https://www.robinsonpetshop.it/app/plugins/rewardsystem/assets/js/footable.paginate.js?ver=31.3.0

js robinsonpetshop.it collected 2026-09-26 19:19:36 UTC 9,065 bytes, 241 lines download raw bytes

1(function ($, w, undefined) {
2	if (w.footable === undefined || w.footable === null)
3		throw new Error('Please check and make sure footable.js is included in the page and is loaded prior to this script.');
4
5	var defaults = {
6		paginate: true,
7		pageSize: 10,
8		pageNavigation: '.pagination',
9		firstText: '«',
10		previousText: '‹',
11		nextText: '›',
12		lastText: '»',
13		limitNavigation: 0,
14		limitPreviousText: '...',
15		limitNextText: '...'
16	};
17
18	function pageInfo(ft) {
19		var $table = $(ft.table), data = $table.data();
20		this.pageNavigation = data.pageNavigation || ft.options.pageNavigation;
21		this.pageSize = data.pageSize || ft.options.pageSize;
22		this.firstText = data.firstText || ft.options.firstText;
23		this.previousText = data.previousText || ft.options.previousText;
24		this.nextText = data.nextText || ft.options.nextText;
25		this.lastText = data.lastText || ft.options.lastText;
26		this.limitNavigation = parseInt(data.limitNavigation || ft.options.limitNavigation || defaults.limitNavigation, 10);
27		this.limitPreviousText = data.limitPreviousText || ft.options.limitPreviousText;
28		this.limitNextText = data.limitNextText || ft.options.limitNextText;
29		this.limit = this.limitNavigation > 0;
30		this.currentPage = data.currentPage || 0;
31		this.pages = [];
32		this.control = false;
33	}
34
35	function Paginate() {
36		var p = this;
37		p.name = 'Footable Paginate';
38
39		p.init = function (ft) {
40			if (ft.options.paginate === true) {
41				if ($(ft.table).data('page') === false) return;
42				p.footable = ft;
43				$(ft.table)
44					.unbind('.paging')
45					.bind({
46						'footable_initialized.paging footable_row_removed.paging footable_redrawn.paging footable_sorted.paging footable_filtered.paging': function () {
47							p.setupPaging();
48						}
49					})
50					//save the filter object onto the table so we can access it later
51					.data('footable-paging', p);
52			}
53		};
54
55		p.setupPaging = function () {
56			var ft = p.footable,
57				$tbody = $(ft.table).find('> tbody');
58
59			ft.pageInfo = new pageInfo(ft);
60
61			p.createPages(ft, $tbody);
62			p.createNavigation(ft, $tbody);
63			p.fillPage(ft, $tbody, ft.pageInfo.currentPage);
64		};
65
66		p.createPages = function (ft, tbody) {
67			var pages = 1;
68			var info = ft.pageInfo;
69			var pageCount = pages * info.pageSize;
70			var page = [];
71			var lastPage = [];
72			info.pages = [];
73			var rows = tbody.find('> tr:not(.footable-filtered,.footable-row-detail)');
74			rows.each(function (i, row) {
75				page.push(row);
76				if (i === pageCount - 1) {
77					info.pages.push(page);
78					pages++;
79					pageCount = pages * info.pageSize;
80					page = [];
81				} else if (i >= rows.length - (rows.length % info.pageSize)) {
82					lastPage.push(row);
83				}
84			});
85			if (lastPage.length > 0) info.pages.push(lastPage);
86			if (info.currentPage >= info.pages.length) info.currentPage = info.pages.length - 1;
87			if (info.currentPage < 0) info.currentPage = 0;
88			if (info.pages.length === 1) {
89				//we only have a single page
90				$(ft.table).addClass('no-paging');
91			} else {
92				$(ft.table).removeClass('no-paging');
93			}
94		};
95
96		p.createNavigation = function (ft, tbody) {
97			var $nav = $(ft.table).find(ft.pageInfo.pageNavigation);
98			//if we cannot find the navigation control within the table, then try find it outside
99			if ($nav.length === 0) {
100				$nav = $(ft.pageInfo.pageNavigation);
101				//if the navigation control is inside another table, then get out
102				if ($nav.parents('table:first').length > 0 && $nav.parents('table:first') !== $(ft.table)) return;
103				//if we found more than one navigation control, write error to console
104				if ($nav.length > 1 && ft.options.debug === true) console.error('More than one pagination control was found!');
105			}
106			//if we still cannot find the control, then don't do anything
107			if ($nav.length === 0) return;
108			//if the nav is not a UL, then find or create a UL
109			if (!$nav.is('ul')) {
110				if ($nav.find('ul:first').length === 0) {
111					$nav.append('<ul />');
112				}
113				$nav = $nav.find('ul');
114			}
115			$nav.find('li').remove();
116			var info = ft.pageInfo;
117			info.control = $nav;
118			if (info.pages.length > 0) {
119				$nav.append('<li class="footable-page-arrow"><a data-page="first" href="#first">' + ft.pageInfo.firstText + '</a>');
120				$nav.append('<li class="footable-page-arrow"><a data-page="prev" href="#prev">' + ft.pageInfo.previousText + '</a></li>');
121				if (info.limit){
122					$nav.append('<li class="footable-page-arrow"><a data-page="limit-prev" href="#limit-prev">' + ft.pageInfo.limitPreviousText + '</a></li>');
123				}
124				if (!info.limit){
125					$.each(info.pages, function (i, page) {
126						if (page.length > 0) {
127							$nav.append('<li class="footable-page"><a data-page="' + i + '" href="#">
127' + (i + 1) + '</a></li>');
128						}
129					});
130				}
131				if (info.limit){
132					$nav.append('<li class="footable-page-arrow"><a data-page="limit-next" href="#limit-next">' + ft.pageInfo.limitNextText + '</a></li>');
133					p.createLimited($nav, info, 0);
134				}
135				$nav.append('<li class="footable-page-arrow"><a data-page="next" href="#next">' + ft.pageInfo.nextText + '</a></li>');
136				$nav.append('<li class="footable-page-arrow"><a data-page="last" href="#last">' + ft.pageInfo.lastText + '</a></li>');
137			}
138			$nav.off('click', 'a[data-page]').on('click', 'a[data-page]', function (e) {
139				e.preventDefault();
140				var page = $(this).data('page');
141				var newPage = info.currentPage;
142				if (page === 'first') {
143					newPage = 0;
144				} else if (page === 'prev') {
145					if (newPage > 0) newPage--;
146				} else if (page === 'next') {
147					if (newPage < info.pages.length - 1) newPage++;
148				} else if (page === 'last') {
149					newPage = info.pages.length - 1;
150				} else if (page === 'limit-prev') {
151					newPage = -1;
152					var first = $nav.find('.footable-page:first a').data('page');
153					p.createLimited($nav, info, first - info.limitNavigation);
154					p.setPagingClasses($nav, info.currentPage, info.pages.length);
155				} else if (page === 'limit-next') {
156					newPage = -1;
157					var last = $nav.find('.footable-page:last a').data('page');
158					p.createLimited($nav, info, last + 1);
159					p.setPagingClasses($nav, info.currentPage, info.pages.length);
160				} else {
161					newPage = page;
162				}
163				if (newPage >= 0){
164					if (info.limit && info.currentPage != newPage){
165						var start = newPage;
166						while (start % info.limitNavigation !== 0){ start -= 1; }
167						p.createLimited($nav, info, start);
168					}
169					p.paginate(ft, newPage);
170				}
171			});
172			p.setPagingClasses($nav, info.currentPage, info.pages.length);
173		};
174
175		p.createLimited = function(nav, info, start){
176			start = start || 0;
177			nav.find('li.footable-page').remove();
178			var i, page,
179				$prev = nav.find('li.footable-page-arrow > a[data-page="limit-prev"]').parent(),
180				$next = nav.find('li.footable-page-arrow > a[data-page="limit-next"]').parent();
181			for (i = info.pages.length - 1; i >=0 ; i--){
182				page = info.pages[i];
183				if (i >= start && i < start + info.limitNavigation && page.length > 0) {
184					$prev.after('<li class="footable-page"><a data-page="' + i + '" href="#">' + (i + 1) + '</a></li>');
185				}
186			}
187			if (start === 0){ $prev.hide(); }
188			else { $prev.show(); }
189			if (start + info.limitNavigation >= info.pages.length){ $next.hide(); }
190			else { $next.show(); }
191		};
192
193		p.paginate = function (ft, newPage) {
194			var info = ft.pageInfo;
195			if (info.currentPage !== newPage) {
196				var $tbody = $(ft.table).find('> tbody');
197
198				//raise a pre-pagin event so that we can cancel the paging if needed
199				var event = ft.raise('footable_paging', { page: newPage, size: info.pageSize });
200				if (event && event.result === false) return;
201
202				p.fillPage(ft, $tbody, newPage);
203				info.control.find('li').removeClass('active disabled');
204				p.setPagingClasses(info.control, info.currentPage, info.pages.length);
205			}
206		};
207
208		p.setPagingClasses = function (nav, currentPage, pageCount) {
209			nav.find('li.footable-page > a[data-page=' + currentPage + ']').parent().addClass('active');
210			if (currentPage >= pageCount - 1) {
211				nav.find('li.footable-page-arrow > a[data-page="next"]').parent().addClass('disabled');
212				nav.find('li.footable-page-arrow > a[data-page="last"]').parent().addClass('disabled');
213			}
214			if (currentPage < 1) {
215				nav.find('li.footable-page-arrow > a[data-page="first"]').parent().addClass('disabled');
216				nav.find('li.footable-page-arrow > a[data-page="prev"]').parent().addClass('disabled');
217			}
218		};
219
220		p.fillPage = function (ft, tbody, pageNumber) {
221			ft.pageInfo.currentPage = pageNumber;
222			$(ft.table).data('currentPage', pageNumber);
223			tbody.find('> tr').hide();
224			$(ft.pageInfo.pages[pageNumber]).each(function () {
225				p.showRow(this, ft);
226			});
227		};
228
229		p.showRow = function (row, ft) {
230			var $row = $(row), $next = $row.next(), $table = $(ft.table);
231			if ($table.hasClass('breakpoint') && $row.hasClass('footable-detail-show') && $next.hasClass('footable-row-detail')) {
232				$row.add($next).show();
233				ft.createOrUpdateDetailRow(row);
234			}
235			else $row.show();
236		};
237	}
238
239	w.footable.plugins.register(Paginate, defaults);
240
241}
241)(jQuery, window);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.