quiz/public/buzzer.html

157 lines
4.7 KiB
HTML
Raw Normal View History

<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="buzzer.css" />
<body class="player">
<div id="error">
Error:
<code></code>
</div>
<div id="points-admin" class="admin-only">
<h2>Admin</h2>
2021-03-02 20:06:03 +01:00
<div>
<a href="monitor.html" onclick="this.href='monitor.html'+location.hash"
>Monitor</a
>
</div>
<div>
<label>points: <input type="number" name="points" value="0" /></label>
<button data-onclick="named.points.valueAsNumber += 100">+ 100</button>
<button data-onclick="named.points.valueAsNumber -= 100">- 100</button>
<button data-onclick="named.points.valueAsNumber *= -1">+/-</button>
</div>
<div>
<label>tokens: <input type="number" name="tokens" value="0" /></label>
</div>
<div>
2021-03-02 20:06:03 +01:00
<label
>monitored:
<input type="text" name="monitored1" value="" />
<input type="text" name="monitored2" value="" />
<input type="text" name="monitored3" value="" />
</label>
2021-03-02 20:06:03 +01:00
<button
data-onclick="conn.send('control', {targets: [
named.monitored1.value,
named.monitored2.value,
named.monitored3.value,
2021-03-02 20:06:03 +01:00
], action: 'monitor'})"
>
resubmit
</button>
</div>
<div>
2021-03-02 20:06:03 +01:00
<label
>text overlay:
<textarea
name="textbox"
data-onselect="
const text = target.value.substring(
target.selectionStart,
target.selectionEnd
) || ''
conn.send('control', {action: 'text', text})
2021-03-02 20:06:03 +01:00
"
data-onchange="
if (!target.value.length) {
conn.send('control', {action: 'text', text: ''})
}
2021-03-02 20:06:03 +01:00
"
></textarea>
</label>
</div>
<div>
<label
>double:
<button data-onclick="conn.send('control', {action: 'double'})">double</button>
</label>
</div>
</div>
<div id="userinfo" class="player-only">
<label
>You:
<input
type="text"
name="username"
id="username"
placeholder="Please put your name here ..."
data-onchange="q('#set-name').disabled = false"
2021-03-02 20:06:03 +01:00
/><button
id="set-name"
data-onclick="
set_name(named.username.value)
target.disabled = true
2021-03-02 20:06:03 +01:00
"
>
set name
</button>
</label>
</div>
<div id="info" class="admin-only">
<h2>All Players</h2>
<ul class="players">
<!-- players (see template#player) will be inserted here -->
</ul>
</div>
<div id="buzzbox" class="player-only">
<button id="buzzbutton">
<div class="ready">Press the big red button</div>
<div class="active">BZZZZZ!</div>
</button>
<p>or press <strong id="bkey">{key.name}</strong> to activate buzzer.</p>
<p class="inactive">Please focus the window to allow the buzzer to work.</p>
</div>
</body>
<template id="player">
<li class="player" data-cid="client ID">
<span class="name">player name</span>
<div class="admin-only">
(<span class="points">points</span> pts) (<span class="tokens">tokens</span> tks)
2021-03-02 20:06:03 +01:00
<button
data-onclick="(!named.monitored1.value.length ? named.monitored1 :
(!named.monitored2.value.length ? named.monitored2 :
named.monitored3)).value = client.id;
let monitored = [
named.monitored1.value,
named.monitored2.value,
named.monitored3.value,
];
2021-03-02 20:06:03 +01:00
conn.send('control', {targets: monitored, action: 'monitor'})"
>
monitor
</button>
<button
data-onclick="client.points += named.points.valueAsNumber;
2021-02-02 21:41:22 +01:00
conn.send('points', {id: client.id, points: client.points})"
>
add points
</button>
<button
data-onclick="client.tokens += named.tokens.valueAsNumber;
2021-02-02 21:41:22 +01:00
conn.send('tokens', {id: client.id, tokens: client.tokens})"
>
add tokens
</button>
2021-03-02 20:06:03 +01:00
<select
name="sound"
data-onchange="
2021-02-25 22:54:56 +01:00
conn.send('control', {action: 'sound', client_id: client.id, sound: target.value})
2021-03-02 20:06:03 +01:00
"
>
2021-02-25 22:54:56 +01:00
<option value="">-</option>
<option value="bark">bark</option>
<option value="chirp">chirp</option>
<option value="meow">meow</option>
<option value="moo">moo</option>
<option value="quack">quack</option>
<option value="ribbit">ribbit</option>
</select>
</div>
</li>
</template>
<script type="module" src="./buzzer.js"></script>