2021-04-10 02:31:14 +09:00
< html >
< head >
< meta charset = "utf-8" >
< meta http-equiv = "conent-security-policy" content = "default-src 'none'" >
2021-04-11 20:35:59 +09:00
{% if not debug %}< meta http-equiv = "refresh" content = "8" > {% endif %}
2021-04-10 02:31:14 +09:00
< style >
2021-04-16 21:28:41 +09:00
body {margin: 0 0.5em;min-height: calc(100vh - 1em);}
2021-04-15 20:37:04 +09:00
#messages {transform: scaleX(-1);}
2021-04-16 21:28:41 +09:00
form {margin: 0;}
2021-04-11 20:35:59 +09:00
.inline-block {display: inline-block;}
2021-04-10 02:31:14 +09:00
.rotate {transform: rotate(-180deg);}
.reverse {direction: rtl;}
Update website/static/external/grids-responsive-min.css, website/static/external/pure-min.css, website/static/external/video-js.css, website/static/external/video.js, website/static/external/videojs-contrib-hls.js, website/static/platform.css, website/static/platform.js, website/templates/chat-iframe.html, website/templates/comment-iframe.html, website/templates/index.html, website/templates/stream-info-iframe.html, website/utils/captcha.py, website/utils/colour.py, website/utils/stream.py, website/utils/tripcode.py, website/chat.py, website/concatenate.py, website/routes.py, website/viewership.py files
2021-04-14 23:12:40 +09:00
.comment {color: white;padding:4px 0;margin-top:-4px;margin-bottom:calc(-4px + 0.375em);overflow:hidden;}
2021-04-11 20:35:59 +09:00
.name {font-weight: bold;unicode-bidi: isolate;}
Update website/static/external/grids-responsive-min.css, website/static/external/pure-min.css, website/static/external/video-js.css, website/static/external/video.js, website/static/external/videojs-contrib-hls.js, website/static/platform.css, website/static/platform.js, website/templates/chat-iframe.html, website/templates/comment-iframe.html, website/templates/index.html, website/templates/stream-info-iframe.html, website/utils/captcha.py, website/utils/colour.py, website/utils/stream.py, website/utils/tripcode.py, website/chat.py, website/concatenate.py, website/routes.py, website/viewership.py files
2021-04-14 23:12:40 +09:00
sup {margin: 0 -0.25em 0 0.125em;font-size: 90%;font-family:monospace;}
2021-04-11 20:35:59 +09:00
.tripcode {
margin-left: 0.5em;
padding: 0 5px;
border-radius: 6px;
font-size: 90%;
font-family: monospace;
vertical-align: middle;
2021-04-15 20:37:04 +09:00
display: inline-block;
2021-04-11 20:35:59 +09:00
}
.message {margin-left: 0.5em;overflow-wrap: break-word;unicode-bidi: isolate;}
2021-04-13 22:20:09 +09:00
.camera {transform: scaleX(-1);text-shadow: 0px 0px 6px #{{ broadcaster_colour.hex() }};cursor: help;margin-right:0.25em;}
2021-04-11 20:35:59 +09:00
.time {font-size: 80%;color: gray;vertical-align:middle;margin-right:0.5em;}
2021-04-16 02:15:59 +09:00
{% if include_user_list %}
2021-04-16 21:28:41 +09:00
#users {color:white;}
2021-04-15 21:45:22 +09:00
.group {margin-bottom:1.5em;}
.group-name {margin-bottom:0.25em;}
.person {margin-left: 0.5em;}
2021-04-16 02:15:59 +09:00
{% endif %}
2021-04-15 20:37:04 +09:00
2021-04-11 13:18:32 +09:00
input[type="submit"] {padding: 0;margin-bottom: 0.5em;}
2021-04-16 21:28:41 +09:00
.refresh {
2021-04-11 13:18:32 +09:00
color: white;
background-color: gray;
position: sticky;
2021-04-16 21:28:41 +09:00
/*top: 100vh;*/ /* (when upside down etc.) placement is correct with top when there is no scrollbar */
bottom: 0; /* (when upside down etc.) placement is correct with bottom when there is a scrollbar */
2021-04-11 13:18:32 +09:00
padding: 1em;
text-align: center;
font-weight: bold;
border-radius: 4px;
box-shadow: 0px 2px 4px black;
2021-04-16 21:28:41 +09:00
margin: 0;
2021-04-11 13:18:32 +09:00
}
2021-04-16 21:28:41 +09:00
.unhide {
2021-04-11 15:11:58 +09:00
animation: unhide 0s forwards 30s;
2021-04-11 13:18:32 +09:00
height: 0;
padding: 0;
visibility: hidden;
}
2021-04-16 21:28:41 +09:00
.unhide-margin {
animation: unhide-margin 0s forwards 30s;
height: 0;
padding: 0;
visibility: hidden;
}
@keyframes unhide {
to {
height: revert;
padding: 1em;
visibility: visible;
}
}
@keyframes unhide-margin {
to {
height: revert;
padding: 1em;
visibility: visible;
margin-bottom: 1.25em;
}
2021-04-11 13:18:32 +09:00
}
2021-04-10 02:31:14 +09:00
< / style >
< / head >
< body >
2021-04-15 20:37:04 +09:00
< div id = "messages" >
2021-04-10 02:31:14 +09:00
{% if broadcaster %}
2021-04-16 01:57:11 +09:00
< form action = "{{ url_for('mod_chat') }}" method = "post" >
2021-04-10 02:31:14 +09:00
< div class = "reverse" >
< input class = "rotate" type = "submit" name = "ban" value = "Ban" >
< input class = "rotate" type = "submit" name = "hide" value = "Hide" >
< input class = "rotate" type = "submit" name = "ban_purge" value = "Ban and hide all" >
< / div >
{% endif %}
2021-04-14 23:48:30 +09:00
<!-- TODO: mobile tooltip / title -->
2021-04-11 15:15:47 +09:00
{% for message in messages %}
< div class = "comment rotate" >
{% if not message['hidden'] %}
{% if broadcaster %}
< input type = "checkbox" name = "message_id[]" value = "{{ message['id'] }}" >
2021-04-10 02:31:14 +09:00
{% endif %}
2021-04-11 20:35:59 +09:00
< span class = "time" title = "{{ message['date'] }}" > {{ message['time'] }}< /span
2021-04-11 15:15:47 +09:00
{% if message['viewer']['broadcaster'] %}
2021-04-11 20:35:59 +09:00
>< span class = "camera" title = "Broadcaster" > 🎥< /span
2021-04-11 19:17:05 +09:00
{% endif %}
Update website/static/external/grids-responsive-min.css, website/static/external/pure-min.css, website/static/external/video-js.css, website/static/external/video.js, website/static/external/videojs-contrib-hls.js, website/static/platform.css, website/static/platform.js, website/templates/chat-iframe.html, website/templates/comment-iframe.html, website/templates/index.html, website/templates/stream-info-iframe.html, website/utils/captcha.py, website/utils/colour.py, website/utils/stream.py, website/utils/tripcode.py, website/chat.py, website/concatenate.py, website/routes.py, website/viewership.py files
2021-04-14 23:12:40 +09:00
>< span class = "name" style = "color:#{{ message['viewer']['colour'].hex() }};" > {{ message['viewer']['nickname'] or default_nickname(message['viewer']['token']) }}{% with tag = message['viewer']['nickname'] == None and not message['viewer']['broadcaster'] %}{% if tag %}< sup > {{ message['viewer']['tag'] }}< / sup > {% endif %}< /span
{% if message['viewer']['tripcode']['string'] %}{% if tag %}>< span style = "margin-right:0.125em;" > < /span{% endif %}
>< div class = "tripcode" style = "background-color:#{{ message['viewer']['tripcode']['background_colour'].hex() }};color:#{{ message['viewer']['tripcode']['foreground_colour'].hex() }};" > {{ message['viewer']['tripcode']['string'] }}< /div
{% endif %}{% endwith %}
2021-04-11 20:35:59 +09:00
>< span class = "message" > {{ message['text'] }}< / span >
2021-04-11 15:15:47 +09:00
{% endif %}
< / div >
{% endfor %}
2021-04-10 02:31:14 +09:00
{% if broadcaster %}
< / form >
{% endif %}
2021-04-11 15:15:47 +09:00
2021-04-16 21:28:41 +09:00
< a href = "" style = "text-decoration: none;" > < div class = "refresh unhide rotate" > Manual refresh required< / div > < / a >
2021-04-15 20:37:04 +09:00
< / div >
2021-04-16 02:10:24 +09:00
{% if include_user_list %}
2021-04-16 21:28:41 +09:00
< div id = "users" style = "overflow: hidden;height:0;" >
< a href = "" style = "text-decoration: none;" >
< div class = "refresh unhide-margin" style = "bottom:revert;top:0;" > Manual refresh required< / div >
< / a >
< div style = "margin: 0.5em 1em 0 1em;" >
2021-04-16 00:18:46 +09:00
{% with person = people['broadcaster'] %}
{% if person %}
2021-04-15 21:45:22 +09:00
< div class = "group" >
2021-04-15 20:37:04 +09:00
< div class = "group-name" > Broadcaster< / div >
2021-04-15 21:45:22 +09:00
< div class = "person" >
2021-04-16 00:18:46 +09:00
< span class = "camera" title = "Broadcaster" > 🎥< / span > < span class = "name" style = "color:#{{ person['colour'].hex() }};" > {{ person['nickname'] or default_nickname(person['token']) }}< / span > {% if person['tripcode']['string'] %}< div class = "tripcode" style = "background-color:#{{ person['tripcode']['background_colour'].hex() }};color:#{{ person['tripcode']['foreground_colour'].hex() }};" > {{ person['tripcode']['string'] }}< / div > {% endif %}
2021-04-15 21:45:22 +09:00
< / div >
2021-04-15 20:37:04 +09:00
< / div >
{% endif %}
{% endwith %}
2021-04-16 00:18:46 +09:00
{% if broadcaster %}
< form action = "{{ url_for('mod_users') }}" method = "post" >
< input type = "hidden" name = "noscript" value = "0" >
< input type = "hidden" name = "banned" value = "1" >
{% endif %}
2021-04-15 21:45:22 +09:00
< div class = "group" >
< div class = "group-name" > Users watching ({{ len(people['watching']) }})< / div >
{% for person in people['watching'] %}
< div class = "person" >
2021-04-16 00:18:46 +09:00
{% if broadcaster %}< input type = "checkbox" name = "token[]" value = "{{ person['token'] }}" > {% endif %}< span class = "name" style = "color:#{{ person['colour'].hex() }};" > {{ person['nickname'] or default_nickname(person['token']) }}{% with tag = person['nickname'] == None %}{% if tag %}< sup > {{ person['tag'] }}< / sup > {% endif %}< / span > {% if person['tripcode']['string'] %}{% if tag %}< span style = "margin-right:0.125em;" > < / span > {% endif %}< div class = "tripcode" style = "background-color:#{{ person['tripcode']['background_colour'].hex() }};color:#{{ person['tripcode']['foreground_colour'].hex() }};" > {{ person['tripcode']['string'] }}< / div > {% endif %}{% endwith %}{% if person['token'] == token %}< span style = "margin-left:0.5em;color:white;" > (You)< / span > {% endif %}
2021-04-15 21:45:22 +09:00
< / div >
{% endfor %}
< / div >
< div class = "group" >
< div class = "group-name" > Users not watching ({{ len(people['not_watching']) }})< / div >
{% for person in people['not_watching'] %}
< div class = "person" >
2021-04-16 00:18:46 +09:00
{% if broadcaster %}< input type = "checkbox" name = "token[]" value = "{{ person['token'] }}" > {% endif %}< span class = "name" style = "color:#{{ person['colour'].hex() }};" > {{ person['nickname'] or default_nickname(person['token']) }}{% with tag = person['nickname'] == None %}{% if tag %}< sup > {{ person['tag'] }}< / sup > {% endif %}< / span > {% if person['tripcode']['string'] %}{% if tag %}< span style = "margin-right:0.125em;" > < / span > {% endif %}< div class = "tripcode" style = "background-color:#{{ person['tripcode']['background_colour'].hex() }};color:#{{ person['tripcode']['foreground_colour'].hex() }};" > {{ person['tripcode']['string'] }}< / div > {% endif %}{% endwith %}{% if person['token'] == token %}< span style = "margin-left:0.5em;color:white;" > (You)< / span > {% endif %}
2021-04-15 21:45:22 +09:00
< / div >
{% endfor %}
< / div >
2021-04-16 00:18:46 +09:00
{% if broadcaster %}
< button > Ban< / button >
< / form >
< div style = "margin:1.75em 0 1.5em 0;border-bottom:1px solid #3f3f3f;" > < / div >
< form action = "{{ url_for('mod_users') }}" method = "post" >
< input type = "hidden" name = "noscript" value = "0" >
< input type = "hidden" name = "banned" value = "0" >
< div class = "group-name" > Banned ({{ len(people['banned']) }})< / div >
< div class = "group" >
{% for person in people['banned'] %}
< div class = "person" >
< input type = "checkbox" name = "token[]" value = "{{ person['token'] }}" > < span class = "name" style = "color:#{{ person['colour'].hex() }};" > {{ person['nickname'] or default_nickname(person['token']) }}{% with tag = person['nickname'] == None %}{% if tag %}< sup > {{ person['tag'] }}< / sup > {% endif %}< / span > {% if person['tripcode']['string'] %}{% if tag %}< span style = "margin-right:0.125em;" > < / span > {% endif %}< div class = "tripcode" style = "background-color:#{{ person['tripcode']['background_colour'].hex() }};color:#{{ person['tripcode']['foreground_colour'].hex() }};" > {{ person['tripcode']['string'] }}< / div > {% endif %}{% endwith %}
< / div >
{% endfor %}
< / div >
< button > Unban< / button >
< / form >
{% endif %}
2021-04-15 20:37:04 +09:00
< / div >
2021-04-16 21:28:41 +09:00
< / div >
2021-04-16 01:57:11 +09:00
{% endif %}
2021-04-10 02:31:14 +09:00
< / body >
2021-04-16 21:28:41 +09:00
< / html >