-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathliferaft.mjs
66 lines (51 loc) · 2.13 KB
/
liferaft.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
addPersonToLiferaft()
async function addPersonToLiferaft() {
const PEOPLE = await fetchPeople()
const entries = Object.entries(PEOPLE)
for (const entry of entries) {
const [ name, data ] = entry
createPersonCard({ name, ...data })
}
}
function createPersonCard(person) {
const TEMPLATE = document.querySelector("template#people")
const holder = document.querySelector('section.people-list')
const node = TEMPLATE.content.cloneNode(true);
const infoHolder = node.querySelector('div.info')
const nameNode = document.createElement('h4')
nameNode.innerText = person.name;
node.querySelector('summary').append(nameNode);
node.querySelector('.bio').innerText = person.bio ?? ''
node.querySelector('span.title').innerText = person.jobTitle ?? ''
if (person.email) {
const link = document.createElement('A')
link.href = `mailto:${person.email}`
link.innerText = person.email
node.querySelector('span.email').append(link)
} else {
node.querySelector('span.email').innerText = 'Not available'
}
for (const linkdata of Object.entries(person.links)) {
const [ name, url ] = linkdata
const nameSpan = document.createElement('SPAN')
const urlSpan = document.createElement('SPAN')
const link = document.createElement('A')
nameSpan.innerText = name;
nameSpan.classList.add('social-link')
urlSpan.append(link)
link.href = url
link.innerText = url;
infoHolder.insertBefore(nameSpan, infoHolder.lastElementChild.nextElementSibling)
infoHolder.insertBefore(urlSpan, infoHolder.lastElementChild.nextElementSibling)
}
holder.appendChild(node)
}
async function fetchPeople() {
const PEOPLE_FETCH = await fetch('people.json').catch((err) => {
console.error(`Error fetching people from the server! Refresh the page to try again.\n${err}`)
})
const PEOPLE = await PEOPLE_FETCH.json().catch((err) => {
console.error(`Error parsing JSON file from the server! Refresh the page to try again.\n${err}`)
})
return PEOPLE;
}