"use strict" class PackageEntry { } class State { entriesPerPage: number = 10 currentPage: number = 1 entryIndex: number = 0 loadedEntries: PackageEntry[] = [] getEntriesPerPage(): number { return this.entriesPerPage } setEntriesPerPage(entriesPerPage: number) { this.entriesPerPage = entriesPerPage this.updateRange() } getCurrentPage(): number { return this.currentPage } setCurrentPage(page: number) { this.currentPage = page document.getElementById("page-number").innerText = String(this.currentPage) this.updateRange() } getEntryIndex(): number { return this.entryIndex } setEntryIndex(entryIndex: number) { this.entryIndex = entryIndex this.updateRange() } getLoadedEntries(): PackageEntry[] { return this.loadedEntries } getMaxPage(): number { return this.loadedEntries.length / this.entriesPerPage } updateRange() { let max = Math.min(this.entryIndex + this.entriesPerPage, this.loadedEntries.length) document.getElementById("entry-counter").innerText = `${this.entryIndex}-${max} of ${this.loadedEntries.length}` } } let STATE: State function prevPage() { let current = STATE.getCurrentPage() if (current > 1) { STATE.setCurrentPage(STATE.getCurrentPage() - 1) } } function nextPage() { let current = STATE.getCurrentPage() if (current < STATE.getMaxPage()) { STATE.setCurrentPage(STATE.getCurrentPage() + 1) } } document.addEventListener("DOMContentLoaded", () => { STATE = new State() STATE.updateRange() document.getElementById("count").addEventListener("change", (event) => { STATE.setEntriesPerPage(parseInt((event.target as HTMLSelectElement).value)) }) })