Skip to content
Snippets Groups Projects
Commit 63f3bbb9 authored by Timothee P's avatar Timothee P :sunflower:
Browse files

display ellipsis and first-last page

parent 728549f2
No related branches found
No related tags found
2 merge requests!2132.3.2-rc1,!198REDMINE_ISSUE-12567
...@@ -198,7 +198,18 @@ ...@@ -198,7 +198,18 @@
>Précédent</a >Précédent</a
> >
<span> <span>
<span v-if="displayedPagesNumber[0] > 1" class="ellipsis"></span> <span v-if="pagination.currentPage >= 5">
<a
key="page1"
@click="$emit('update:page', 1)"
class="paginate_button"
aria-controls="table-features"
data-dt-idx="1"
tabindex="0"
>{{ 1 }}</a
>
<span class="ellipsis"></span>
</span>
<a <a
v-for="pageNumber in displayedPagesNumber" v-for="pageNumber in displayedPagesNumber"
:key="'page' + pageNumber" :key="'page' + pageNumber"
...@@ -212,7 +223,18 @@ ...@@ -212,7 +223,18 @@
tabindex="0" tabindex="0"
>{{ pageNumber }}</a >{{ pageNumber }}</a
> >
<span v-if="displayedPagesNumber.slice(-1)[0] < pageNumbers.slice(-1)[0]" class="ellipsis"></span> <span v-if="(lastPageNumber - pagination.currentPage) >= 4">
<span class="ellipsis"></span>
<a
:key="'page' + lastPageNumber"
@click="$emit('update:page', lastPageNumber)"
class="paginate_button"
aria-controls="table-features"
data-dt-idx="1"
tabindex="0"
>{{ lastPageNumber }}</a
>
</span>
</span> </span>
<a <a
id="table-features_next" id="table-features_next"
...@@ -244,12 +266,6 @@ export default { ...@@ -244,12 +266,6 @@ export default {
"sort", "sort",
], ],
data() {
return {
displayedPageStart: 0
}
},
computed: { computed: {
...mapState(["user"]), ...mapState(["user"]),
...mapGetters(["project", "permissions"]), ...mapGetters(["project", "permissions"]),
...@@ -267,6 +283,12 @@ export default { ...@@ -267,6 +283,12 @@ export default {
}, },
}, },
displayedPageEnd() {
return this.featuresCount <= this.pagination.end
? this.featuresCount
: this.pagination.end;
},
pageNumbers() { pageNumbers() {
const totalPages = Math.ceil( const totalPages = Math.ceil(
this.featuresCount / this.pagination.pagesize this.featuresCount / this.pagination.pagesize
...@@ -277,15 +299,25 @@ export default { ...@@ -277,15 +299,25 @@ export default {
}); });
}, },
displayedPageEnd() { lastPageNumber() {
return this.featuresCount <= this.pagination.end return this.pageNumbers.slice(-1)[0];
? this.featuresCount
: this.pagination.end;
}, },
displayedPagesNumber() { displayedPagesNumber() {
return [...this.pageNumbers].splice(this.displayedPageStart, 5); //* si la page courante est inférieur à 5, la liste commence à l'index 0 et on retourne 5 pages
} let firstPageInList = 0;
let pagesQuantity = 5;
//* à partir de la 5ième page et jusqu'à la 4ième page avant la fin : n'afficher que 3 page entre les ellipses et la page courante doit être au milieu
if (this.pagination.currentPage >= 5 && !(this.lastPageNumber - this.pagination.currentPage < 4)) {
firstPageInList = this.pagination.currentPage - 2;
pagesQuantity = 3
}
//* a partir de 4 résultat avant la fin afficher seulement les 5 derniers résultats
if (this.lastPageNumber - this.pagination.currentPage < 4) {
firstPageInList = this.lastPageNumber - 5;
}
return this.pageNumbers.slice(firstPageInList, firstPageInList + pagesQuantity);
},
}, },
methods: { methods: {
...@@ -309,17 +341,14 @@ export default { ...@@ -309,17 +341,14 @@ export default {
changeSort(column) { changeSort(column) {
if (this.sort.column === column) { if (this.sort.column === column) {
//changer order //changer order
this.$emit( this.$emit("update:sort", {
"update:sort", column: this.sort.column,
{ column: this.sort.column, ascending: !this.sort.ascending } ascending: !this.sort.ascending,
); });
} else { } else {
this.sort.column = column; this.sort.column = column;
this.sort.ascending = true; this.sort.ascending = true;
this.$emit( this.$emit("update:sort", { column, ascending: true });
"update:sort",
{ column, ascending: true }
);
} }
}, },
}, },
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment