aboutsummaryrefslogtreecommitdiff
path: root/index.html
blob: 36bc052abea356fba05901c068ce366907f76bd8 (plain)
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
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>queue go brrr</title>
    <link rel="icon" href="https://www.boringcactus.com/assets/icon.svg">
    <style>
    #canvas {
        display:none;
    }

    video, img {
        max-width: 100%;
    }

    #video-preview-container {
        position: relative;
    }

    #target-marker {
        position: absolute;
        border: 1px solid red;
        pointer-events: none;
    }
    </style>
</head>
<body>
<canvas id="canvas">
</canvas>
<main>
    <h1 id="title">queue go brrr</h1>
    <h2>For tracking your Login Queue (Extreme) raid progression.</h2>
    <p>
        Share your FFXIV window, and then this tool will try to calculate how much longer you probably have to wait.
        (The actual calculation isn't very well-designed, but it's better than nothing.)
        (Also this is incredibly janky; if anything breaks or misbehaves try reloading the page.)
    </p>
    <h2><button id="bootbutton">Start!</button></h2>
    <div class="output">
        <h3>Queue Position Preview (it looks like this says <span id="current-queue-position">something once you hit the button</span>)</h3>
        <img id="photo" alt="The screen capture will appear in this box.">
    </div>
    <h3>Live Window View (click to move the queue position box if it's misaligned)</h3>
    <div id="video-preview-container">
        <video id="video">Video stream not available.</video>
        <div id="target-marker"></div>
    </div>
    <p>brought to you by <a href="https://www.boringcactus.com">boringcactus</a>. source code <a href="https://code.boringcactus.com/queue-go-brrr/tree/">available</a>.</p>
</main>
<!-- Note the usage of `type=module` here as this is an ES6 module -->
<script type="module">
    // Use ES module import syntax to import functionality from the module
    // that we have compiled.
    //
    // Note that the `default` import is an initialization function which
    // will "boot" the module and make it ready to use. Currently browsers
    // don't support natively imported WebAssembly as an ES module, but
    // eventually the manual initialization won't be required!
    import init, { boot } from './pkg/queue_go_brrr.js';

    async function run() {
        await init();

        const bootButton = document.getElementById('bootbutton');
        bootButton.addEventListener('click', () => {
            bootButton.remove();
            boot();
        });
    }

    run();
</script>
</body>
</html>