88 lines
2.7 KiB
JavaScript
88 lines
2.7 KiB
JavaScript
|
function render() {
|
||
|
const html = `
|
||
|
<div id="top">
|
||
|
<div id="banner">
|
||
|
<div>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
<div id="info">
|
||
|
<div class="face">
|
||
|
|
||
|
</div>
|
||
|
<div class="infodata">
|
||
|
<span class="bold ltext">${data.user.firstname + ' ' + data.user.lastname}</span>
|
||
|
<span class="gtext">Joined ${parseDate(new Date(data.user.date))}</span>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="fullline" style="width: 80em; margin-bottom: 0;"></div>
|
||
|
<div class="profilebuttons">
|
||
|
<button class="${posts ? 'selected' : ''}" onclick="posts = true; render()">
|
||
|
Posts
|
||
|
</button>
|
||
|
<button class="${posts ? '' : 'selected'}" onclick="posts = false; render()">
|
||
|
About
|
||
|
</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
`
|
||
|
|
||
|
add(html, 'top')
|
||
|
|
||
|
const postsh = `
|
||
|
<div id="posts" class="${posts ? '' : 'hidden'}">
|
||
|
${data.posts.map(p => parsePost(p)).join('')}
|
||
|
</div>
|
||
|
`
|
||
|
|
||
|
add(postsh, 'posts')
|
||
|
|
||
|
const about = `
|
||
|
<div id="about" class="post ${posts ? 'hidden' : ''}">
|
||
|
<span class="bold ltext">About</span>
|
||
|
<div class="data">
|
||
|
<span class="gtext bold">Name: ${data.user.firstname + ' ' + data.user.lastname}</span>
|
||
|
<span class="gtext bold">Email: ${data.user.email}</span>
|
||
|
<span class="gtext bold">Gender: ${data.user.gender}</span>
|
||
|
<span class="gtext bold">Birthday: ${months[data.user.month] + ' ' + data.user.day + ', ' + data.user.year}</span>
|
||
|
<span class="gtext bold">User ID: ${data.user.user_id}</span>
|
||
|
</div>
|
||
|
</div>
|
||
|
`
|
||
|
|
||
|
add(about, 'about')
|
||
|
}
|
||
|
|
||
|
var posts = true
|
||
|
|
||
|
async function load() {
|
||
|
header(false, false)
|
||
|
|
||
|
var params = {};
|
||
|
for (const [key, value] of new URLSearchParams(location.search)) {
|
||
|
params[key] = value
|
||
|
}
|
||
|
|
||
|
const id = params.id !== undefined && !isNaN(params.id) ? parseInt(params.id) : (await loadself()).json.user_id
|
||
|
const posts = (await loadusersposts(id)).json
|
||
|
data.posts.push(... posts)
|
||
|
const batch = [id]
|
||
|
for (const post of posts) {
|
||
|
for(const comment of post.comments) {
|
||
|
if (data.users[comment[0]] !== undefined) continue
|
||
|
if (batch.includes(comment[0])) continue
|
||
|
batch.push(comment[0])
|
||
|
}
|
||
|
if (data.users[post.user_id] !== undefined) continue
|
||
|
if (batch.includes(post.user_id)) continue
|
||
|
batch.push(post.user_id)
|
||
|
}
|
||
|
const users = (await loadusers(batch)).json
|
||
|
for (const user of users) {
|
||
|
data.users[user.user_id] = user
|
||
|
}
|
||
|
data.user = data.users[id]
|
||
|
render()
|
||
|
}
|
||
|
|
||
|
load()
|