mirror of
https://github.com/psforever/PSFPortal.git
synced 2026-01-19 18:14:45 +00:00
* Change favicon * Display account banned status on admin search * Pull in application version from Webpack * Add "Feedback" button in footer and github references * Fix faction icons to make them the same size * PaginatedList component now supports back * Tabbed navs support back * Hide Pagination when only one page * Improve admin table style and size
80 lines
1.8 KiB
Svelte
80 lines
1.8 KiB
Svelte
<script>
|
|
import { onMount } from 'svelte'
|
|
import axios from 'axios'
|
|
import Pagination from '../components/Pagination'
|
|
|
|
export let setURLParam = false;
|
|
export let URLSearchName = 'page';
|
|
export let fetch;
|
|
|
|
let data;
|
|
let fetching = false;
|
|
let pagination = { page: 1 };
|
|
|
|
export async function refresh() {
|
|
await list_fetch(pagination.page)
|
|
}
|
|
|
|
onMount(async () => {
|
|
const url = new URL(window.location.href)
|
|
let initialPage = 1;
|
|
|
|
console.log(setURLParam, URLSearchName)
|
|
if (setURLParam) {
|
|
let param = parseInt(url.searchParams.get(URLSearchName))
|
|
|
|
if (param != NaN)
|
|
initialPage = param;
|
|
}
|
|
|
|
await list_fetch(initialPage);
|
|
})
|
|
|
|
async function pageChange(page) {
|
|
if (pagination.page == page || fetching)
|
|
return
|
|
|
|
if (setURLParam) {
|
|
const url = new URL(window.location.href);
|
|
url.searchParams.set(URLSearchName, page);
|
|
history.replaceState(null, null,
|
|
url.pathname + url.search + url.hash)
|
|
}
|
|
|
|
await list_fetch(page);
|
|
}
|
|
|
|
async function list_fetch(page) {
|
|
fetching = true;
|
|
|
|
try {
|
|
if (fetch != undefined) {
|
|
const results = await fetch(page)
|
|
|
|
if (results != undefined) {
|
|
data = results[0];
|
|
pagination = results[1]
|
|
}
|
|
}
|
|
} finally {
|
|
fetching = false;
|
|
}
|
|
}
|
|
</script>
|
|
|
|
{#if data}
|
|
<slot name="header" data={data} pagination={pagination}></slot>
|
|
{#if pagination.item_count > 0}
|
|
{#if pagination.page_count > 1}
|
|
<Pagination {pagination} {pageChange} {setURLParam} {URLSearchName} />
|
|
{/if}
|
|
|
|
<slot name="body" data={data} pagination={pagination}></slot>
|
|
|
|
{#if pagination.page_count > 1}
|
|
<Pagination {pagination} {pageChange} {setURLParam} {URLSearchName} />
|
|
{/if}
|
|
{/if}
|
|
<slot name="footer" data={data} pagination={pagination}></slot>
|
|
{/if}
|