forked from security/hakurei
66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
"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))
|
|
})
|
|
}) |