2016-11-02 20:54:04 -04:00
|
|
|
/* global Vue, gl */
|
|
|
|
/* eslint-disable no-param-reassign */
|
|
|
|
|
|
|
|
((gl) => {
|
|
|
|
gl.VueGlPagination = Vue.extend({
|
|
|
|
props: [
|
|
|
|
'changepage',
|
2016-11-03 00:41:51 -04:00
|
|
|
'count',
|
2016-11-03 13:20:15 -04:00
|
|
|
'pagenum',
|
2016-11-02 20:54:04 -04:00
|
|
|
],
|
2016-11-03 13:20:15 -04:00
|
|
|
methods: {
|
|
|
|
pagenumberstatus(n) {
|
2016-11-03 13:42:12 -04:00
|
|
|
if (n - 1 === +this.pagenum) return 'active';
|
2016-11-03 13:20:15 -04:00
|
|
|
return '';
|
|
|
|
},
|
2016-11-08 14:23:29 -05:00
|
|
|
createSection(n) { return Array.from(Array(n)).map((e, i) => i); },
|
2016-11-03 13:20:15 -04:00
|
|
|
},
|
2016-11-03 00:41:51 -04:00
|
|
|
computed: {
|
2016-11-08 14:23:29 -05:00
|
|
|
last() { return Math.ceil(+this.count / 5); },
|
|
|
|
getItems() {
|
|
|
|
const items = [];
|
|
|
|
const pages = this.createSection(+this.last + 1);
|
|
|
|
pages.shift();
|
|
|
|
|
|
|
|
if (+this.pagenum !== 1) items.push({ text: 'Prev' });
|
|
|
|
|
|
|
|
pages.forEach(i => items.push({ text: i }));
|
|
|
|
|
|
|
|
if (+this.pagenum < this.last) items.push({ text: 'Next' });
|
|
|
|
if (+this.pagenum !== this.last) items.push({ text: 'Last »' });
|
|
|
|
|
|
|
|
return items;
|
2016-11-03 13:20:15 -04:00
|
|
|
},
|
2016-11-03 00:41:51 -04:00
|
|
|
},
|
2016-11-02 20:54:04 -04:00
|
|
|
template: `
|
|
|
|
<div class="gl-pagination">
|
2016-11-08 14:23:29 -05:00
|
|
|
<ul class="pagination clearfix" v-for='(item, index) in getItems'>
|
|
|
|
<li :class='pagenumberstatus(index + 1)'>
|
|
|
|
<span @click='changepage($event, last)'>{{item.text}}</span>
|
2016-11-02 20:54:04 -04:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
`,
|
|
|
|
});
|
|
|
|
})(window.gl || (window.gl = {}));
|