106 lines
3.4 KiB
HTML
Executable File
106 lines
3.4 KiB
HTML
Executable File
<!DOCTYPE html>
|
|
<html class="sl-theme-dark" lang="en">
|
|
<head>
|
|
<!-- initialize theme vars
|
|
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
|
|
|
|
<!-- initialize externals -->
|
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
|
<script src=" https://cdn.jsdelivr.net/npm/js-cookie@3.0.5/dist/js.cookie.min.js "></script>
|
|
|
|
<!-- initialize my stuff -->
|
|
<script src="/js/all.min.js"></script>
|
|
<script src="/js/main.js"></script>
|
|
<script src="/js/widget.js"></script>
|
|
<script src="/js/themes.js"></script>
|
|
|
|
<link rel="stylesheet" href="/style.css" />
|
|
|
|
<!-- seo + other things -->
|
|
<title>Users | Selenite</title>
|
|
<link rel="icon" href="/favicon.ico" />
|
|
<script>
|
|
async function loadUsers(query, page) {
|
|
let above = false;
|
|
let below = false;
|
|
let data = await (await fetch(`/api/getUsers?page=${page - 1}&query=${query}`)).json();
|
|
let users = data['users'];
|
|
let url = new URL(location.href);
|
|
|
|
pages = Math.floor(data.count / 12);
|
|
document.getElementById("users").innerHTML = "";
|
|
for (let i = 0; i < Object.keys(users).length; i++) {
|
|
document.getElementById("users").innerHTML += `<a href="/u/${users[i].username}" class="users"><img class="pfp" src="${users[i].pfp_url}"/><div class="user_info"><h1>${users[i].name}</h1><p>${users[i].about}</p></div></a>`;
|
|
}
|
|
document.getElementById("pages").innerHTML = "";
|
|
for (let i = 1; i < pages + 1; i++) {
|
|
if (i + 6 > page && i - 6 < page) {
|
|
let curPage = parseInt(page);
|
|
let element = document.createElement("a");
|
|
if (!(i == curPage)) {
|
|
url.searchParams.set("page", i);
|
|
element.setAttribute("href", url);
|
|
}
|
|
element.setAttribute("class", `pages-btn`);
|
|
element.innerText = i;
|
|
document.getElementById("pages").append(element);
|
|
} else {
|
|
if (i + 6 > page) {
|
|
above = true;
|
|
}
|
|
if (i - 6 < page) {
|
|
below = true;
|
|
}
|
|
}
|
|
}
|
|
if (above) {
|
|
let element = document.createElement("a");
|
|
element.setAttribute("class", "pages-btn");
|
|
element.innerText = "...";
|
|
document.getElementById("pages").append(element);
|
|
}
|
|
if (below) {
|
|
let element = document.createElement("a");
|
|
element.setAttribute("class", "pages-btn");
|
|
element.innerText = "...";
|
|
document.getElementById("pages").prepend(element);
|
|
}
|
|
}
|
|
let pages;
|
|
document.addEventListener("DOMContentLoaded", async () => {
|
|
let params = location.search.substring(1).split("&");
|
|
let query;
|
|
let page;
|
|
if (params) {
|
|
for (let i = 0; i < params.length; i++) {
|
|
if (params[i].startsWith("query")) {
|
|
query = params[i].substring(6);
|
|
}
|
|
if (params[i].startsWith("page")) {
|
|
page = params[i].substring(5);
|
|
if (isNaN(page)) {
|
|
page = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
await loadUsers(query ? query : "", page ? page : 0);
|
|
document.getElementById("search").addEventListener("keydown", async (e) => {
|
|
if (e.key == "Enter") {
|
|
let url = new URL(location.href);
|
|
url.searchParams.set("query", document.getElementById("search").value);
|
|
url.searchParams.set("page", 1);
|
|
location.href = url;
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
</head>
|
|
<alerts> </alerts>
|
|
<body id="noscroll">
|
|
<input id="search" type="text" placeholder="search.." />
|
|
<div id="users"></div>
|
|
<div id="pages"></div>
|
|
</body>
|
|
</html>
|