Files
backend/html/users.html
2025-10-26 14:47:13 -04:00

135 lines
4.5 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<!-- initialize theme vars
https://coolors.co/10002b-240046-3c096c-5a189a-7b2cbf-9d4edd-c77dff-e0aaff -->
<!-- initialize externals -->
<meta property="og:title" content="Selenite" />
<meta property="description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
<meta content="/favicon.png" property="og:image" />
<meta content="#c77dff" data-react-helmet="true" name="theme-color" />
<meta name="googlebot" content="index, follow, snippet" />
<link rel="canonical" href="https://selenite.cc/" />
<meta property="og:description" content="Selenite is the best unblocked games site. With over 400 games and an account system, no other websites come close to Selenite." />
<meta property="og:title" content="Selenite">
<meta property="og:type" content="website">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Selenite",
"alternateName": "selenite.cc",
"url": "https://selenite.cc",
"logo": "https://selenite.cc/favicon.png",
"sameAs": [
"https://github.com/selenite-cc",
"https://youtube.com/@selenitecc",
"https://tiktok.com/@selenitecc",
"https://selenite.cc",
]
}
</script>
<!-- initialize my stuff -->
<script src="/js/all.min.js"></script>
<script src="/js/main.js"></script>
<!-- <script src="/js/widget.js"></script> -->
<script>
</script>
<link rel="stylesheet" href="/css/main.css" />
<link rel="stylesheet" href="/css/pages.css" />
<link rel="stylesheet" href="/css/users.css" />
<link rel="manifest" href="/manifest.json" />
<!-- seo + other things -->
<title>Selenite</title>
<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.ceil(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>
<link rel="icon" href="/favicon.ico" />
</head>
<alerts> </alerts>
<body>
<h1 class="title">users</h1>
<div id="users"></div>
<div id="pages"></div>
</body>
</html>