aboutsummaryrefslogtreecommitdiff
path: root/index.html
blob: 54bba8c638a677300900138b6ae62720a5423e8f (plain) (blame)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>fib</title>
    <style>
        .person {
            margin-bottom: 1em;
        }
        .person-pic {
            width: 50px;
        }
        .person-header {
            display: flex;
            align-items: end;
        }
        .person-header > * {
            margin: 0.5em;
        }
        .person-name {
            margin-bottom: 0;
        }
        .person-title {
            margin-top: 0;
            font-size: 80%;
        }
        .person > p {
            margin: 0;
            margin-left: 0.5em;
        }
        #contributors-container {
            margin-top: 3em;
            margin-bottom: 3em;
        }
    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
    <h1><code>fib</code></h1>
    <p>Can you please give me a Fibonacci function? Ideally (but not necessarily) one that only you would give me.</p>

    <p>For a submission to the "Our Space" exhibition at <a href="https://www.instagram.com/hatch_artgallery">Hatch Art Gallery</a>.</p>

    <div id="contributors-container">
        <h3>Contributors</h3>
        <div id="contributors"></div>
    </div>

    <a href="https://github.com/braxtonhall/fib#contributing"><span>Want to contribute?</span></a>
<script>
    const getContributors = _ => fetch(`/fib/people.json`).then(res => res.json());

    const toPersonNode = person => $("<div>", {class: "person"}).append(
        toPersonHeader(person),
        ...person.entries.sort(cmpName).map(toPersonEntryNode),
    );

    const toPersonImage = github => github
        ? $("<img>", {class: "person-pic", src: `https://github.com/${github}.png`, alt: github})
        : $("<div>", {class: "person-pic"});


    const toPersonDetails = person =>
        $("<div>").append(
            person.github
                ? $("<a>", {href: `https://github.com/${person.github}`})
                    .append($("<p>", {class: "person-name"}).text(person.name))
                : $("<p>", {class: "person-name"}).text(person.name),
            $("<p>", {class: "person-title"}).text(person.title),
        );

    const toPersonHeader = person => $("<div>", {class: "person-header"})
        .append(toPersonImage(person.github), toPersonDetails(person));

    const toPersonEntryNode = entry => $("<p>").append(
        $("<a>", {
            href: entry.link.startsWith("./entries")
                ? `https://github.com/braxtonhall/fib/tree/main/${entry.link.replace(/^\.\//, "")}`
                : entry.link
        }).append($("<code>").text(entry.name)),
    );

    const cmpName = (a, b) => a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1;

    $(document).ready(
        _ => getContributors()
            .then(people => people.sort(cmpName))
            .then(people => people.map(toPersonNode))
            .then(nodes => $("#contributors").append(...nodes))
    );
</script>
</body>
</html>