frontend/.pnpm-store/v3/files/65/ea3991eb4375f19b9994d7d45d62ae92ae378e74fa1dece3fd13df23f94e66278f62bfcfd60bcb7fb86ea040956af2743bdd040b3cd990673ed4b2cf624507

54 lines
1.5 KiB
Plaintext

export default class Pages {
pageNumber;
rowCount;
rowsPerPage;
triggerChange;
pages;
constructor(context) {
this.pageNumber = context.pageNumber;
this.rowCount = context.rowCount;
this.rowsPerPage = context.rowsPerPage;
this.triggerChange = context.triggerChange;
this.pages = context.pages;
}
get() {
return this.pages;
}
goTo(number) {
this.pageNumber.update(store => {
const $rowsPerPage = this.getRowsPerPage();
if ($rowsPerPage) {
const $rowsTotal = this.getTotalRowCout();
if (number >= 1 && number <= Math.ceil($rowsTotal / $rowsPerPage)) {
store = number;
this.triggerChange.update(store => { return store + 1; });
}
}
return store;
});
}
previous() {
const number = this.getPageNumber() - 1;
this.goTo(number);
}
next() {
const number = this.getPageNumber() + 1;
this.goTo(number);
}
getPageNumber() {
let value = 1;
this.pageNumber.subscribe(store => value = store);
return value;
}
getTotalRowCout() {
let value = 0;
this.rowCount.subscribe(store => value = store.total);
return value;
}
getRowsPerPage() {
let value = null;
this.rowsPerPage.subscribe(store => value = store);
return value;
}
}