|
@ -1,36 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>LADD Roller Derby Scoreboard</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<link rel="stylesheet" type="text/css" href="res/style.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>LADD Scoreboard</h1>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Having problems? Try something other than Internet Explorer!
|
|
||||||
Chrome and Firefox have both been tested extensively.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li><a href="scoreboard.html">Normal layout</a>, or <a href="classic.html">with team names</a></li>
|
|
||||||
<li><a href="crg.html">CRG-style layout</a>, or <a href="crg-nologo.html">CRG without logos</a></li>
|
|
||||||
<li><a href="highvis.html">High-visibility</a></li>
|
|
||||||
<li><a href="micro.html">Timers-only</a></li>
|
|
||||||
<li>Flags: <a href="flag-us.html">USA</a> <a href="flag-ca.html">Canada</a> <a href="flag-mx.html">Mexico</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h1>Documentation</h1>
|
|
||||||
<ul>
|
|
||||||
<li><a href="http://youtu.be/MXOzmmnHqXU">operation tutorial</a></li>
|
|
||||||
<li><a href="http://youtu.be/lH1VZ2kFatY">installation tutorial</a></li>
|
|
||||||
<li><a href="res/usage.html">Text documentation</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<address>
|
|
||||||
Neale Pickett <<a href="mailto:neale@woozle.org">neale@woozle.org</a>>
|
|
||||||
</address>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
* chrome.fileSystem.retainEntry?
|
||||||
|
* use chrome.power to keep the display on
|
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
"appName": {
|
||||||
|
"message": "Woozle Roller Derby Scoreboard",
|
||||||
|
"description": "Application name"
|
||||||
|
},
|
||||||
|
"appShortName": {
|
||||||
|
"message": "Woozle Scoreboard",
|
||||||
|
"description": "Short application name"
|
||||||
|
},
|
||||||
|
"appDesc": {
|
||||||
|
"message": "Roller Derby Scoreboard for WFTDA, USARS, RDCL, MADE, and JRDA",
|
||||||
|
"description": "Application description for app store listing"
|
||||||
|
},
|
||||||
|
|
||||||
|
"period1": {
|
||||||
|
"message": "Period 1",
|
||||||
|
"description": "Name of first period"
|
||||||
|
},
|
||||||
|
"period2": {
|
||||||
|
"message": "Period 2",
|
||||||
|
"description": "Name of second period"
|
||||||
|
},
|
||||||
|
"halftime": {
|
||||||
|
"message": "Halftime",
|
||||||
|
"description": "The name of the break between periods"
|
||||||
|
},
|
||||||
|
"timeToGame": {
|
||||||
|
"message": "To Derby",
|
||||||
|
"description": "Text shown after countdown to start of game"
|
||||||
|
},
|
||||||
|
|
||||||
|
"jam": {
|
||||||
|
"message": "Jam",
|
||||||
|
"description": "Time during the game when skaters are actively playing"
|
||||||
|
},
|
||||||
|
"lineup": {
|
||||||
|
"message": "Lineup",
|
||||||
|
"description": "Time between active play, when skaters are positioning themselves"
|
||||||
|
},
|
||||||
|
"timeout": {
|
||||||
|
"message": "Timeout",
|
||||||
|
"description": "Time when game is suspended: period clock stops counting down"
|
||||||
|
},
|
||||||
|
"setup": {
|
||||||
|
"message": "Setup",
|
||||||
|
"description": "Software state allowing logos and times to be adjusted"
|
||||||
|
}
|
||||||
|
}
|
100
classic.html
|
@ -1,100 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<!--
|
|
||||||
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>LADD Scoreboard</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<link rel="stylesheet" type="text/css" href="res/scoreboard.css">
|
|
||||||
<style type="text/css">
|
|
||||||
#name-a, #name-b {
|
|
||||||
font-family: PermanentMarker, monospace, sans-serif;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
font-size: 75%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#name-a {
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#name-b {
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
margin-top: 1em;
|
|
||||||
max-height: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#score-a, #score-b {
|
|
||||||
position: absolute;
|
|
||||||
font-size: 90%;
|
|
||||||
top: auto;
|
|
||||||
bottom: 0em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#jammer-a, #jammer-b {
|
|
||||||
bottom: 1.5em;
|
|
||||||
}
|
|
||||||
#timeouts-a, #timeouts-b {
|
|
||||||
bottom: 3em;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript" src="logos/logos.js"></script>
|
|
||||||
<script type="text/javascript" src="res/scoreboard.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<!--
|
|
||||||
HTML5 says not to use tables for layout. Since this is
|
|
||||||
a highly-styled page, it looks awful without CSS. Sorry.
|
|
||||||
-->
|
|
||||||
<div id="scoreboard">
|
|
||||||
<p class="left">
|
|
||||||
<span class="name" id="name-a" onclick="handle(event);">Home</span>
|
|
||||||
<img class="logo" src="" alt="A" id="logo-a" onclick="handle(event);">
|
|
||||||
<span class="timeouts" id="timeouts-a" onclick="handle(event);">0</span>
|
|
||||||
<span class="jammer" id="jammer-a" onclick="handle(event);">★</span>
|
|
||||||
<span class="score" id="score-a" onclick="handle(event);">-</span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<span id="period" onclick="handle(event);">--:--</span>
|
|
||||||
<span id="periodtext" onclick="handle(event);"></span>
|
|
||||||
<span id="jam" onclick="handle(event);">-:--.-</span>
|
|
||||||
<span id="jamtext" onclick="handle(event);"></span>
|
|
||||||
<span id="jamno" onclick="handle(event);">0</span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="right">
|
|
||||||
<span class="name" id="name-b" onclick="handle(event);">Vis</span>
|
|
||||||
<img class="logo" src="" alt="B" id="logo-b" onclick="handle(event);">
|
|
||||||
<span class="timeouts" id="timeouts-b" onclick="handle(event);">0</span>
|
|
||||||
<span class="jammer" id="jammer-b" onclick="handle(event);">★</span>
|
|
||||||
<span class="score" id="score-b" onclick="handle(event);">-</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="notice">
|
|
||||||
<div id="notice-1">Power Jam</div>
|
|
||||||
<div id="notice-2">Grand Slam</div>
|
|
||||||
<div id="notice-3">Ouch</div>
|
|
||||||
<div id="notice-4">OMG</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
192
crg-nologo.html
|
@ -1,192 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<!--
|
|
||||||
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>LADD Scoreboard</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<style type="text/css">
|
|
||||||
html {
|
|
||||||
height: 100%;
|
|
||||||
background: #000000; /* Old browsers */
|
|
||||||
background: -moz-linear-gradient(top, #000000 0%, #888888 100%); /* FF3.6+ */
|
|
||||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#000000), color-stop(100%,#888888)); /* Chrome,Safari4+ */
|
|
||||||
background: -webkit-linear-gradient(top, #000000 0%,#888888 100%); /* Chrome10+,Safari5.1+ */
|
|
||||||
background: -o-linear-gradient(top, #000000 0%,#888888 100%); /* Opera 11.10+ */
|
|
||||||
background: -ms-linear-gradient(top, #000000 0%,#888888 100%); /* IE10+ */
|
|
||||||
background: linear-gradient(to bottom, #000000 0%,#888888 100%); /* W3C */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#000000', endColorstr='#888888',GradientType=0 ); /* IE6-9 */
|
|
||||||
|
|
||||||
font-family: arial, "Numbus Sans L Bold", sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button {
|
|
||||||
background: rgb(242,245,246); /* Old browsers */
|
|
||||||
background: -moz-linear-gradient(top, rgba(242,245,246,1) 0%, rgba(227,234,237,1) 37%, rgba(200,215,220,1) 100%); /* FF3.6+ */
|
|
||||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(242,245,246,1)), color-stop(37%,rgba(227,234,237,1)), color-stop(100%,rgba(200,215,220,1))); /* Chrome,Safari4+ */
|
|
||||||
background: -webkit-linear-gradient(top, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* Chrome10+,Safari5.1+ */
|
|
||||||
background: -o-linear-gradient(top, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* Opera 11.10+ */
|
|
||||||
background: -ms-linear-gradient(top, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* IE10+ */
|
|
||||||
background: linear-gradient(to bottom, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* W3C */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f2f5f6', endColorstr='#c8d7dc',GradientType=0 ); /* IE6-9 */
|
|
||||||
|
|
||||||
border-radius: 0.3em;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
#scoreboard *[id] {
|
|
||||||
cursor: pointer;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-khtml-user-select: none;
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#team-a {
|
|
||||||
position: absolute;
|
|
||||||
left: 25%;
|
|
||||||
width: 3em;
|
|
||||||
margin-left: -1.5em;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#team-b {
|
|
||||||
position: absolute;
|
|
||||||
right: 25%;
|
|
||||||
width: 3em;
|
|
||||||
margin-right: -1.5em;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
img, p {
|
|
||||||
margin: 0.1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.name {
|
|
||||||
color: white;
|
|
||||||
font-size: 50%;
|
|
||||||
height: 4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.score {
|
|
||||||
position: relative;
|
|
||||||
top: -0.3em;
|
|
||||||
width: 2.2em;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#timeouts {
|
|
||||||
font-size: 30%;
|
|
||||||
position: absolute;
|
|
||||||
top: 6.2em;
|
|
||||||
left: 50%;
|
|
||||||
width: 4.5em;
|
|
||||||
margin-left: -2.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.label {
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.to {
|
|
||||||
margin: 1em 0;
|
|
||||||
width: 2em;
|
|
||||||
}
|
|
||||||
#timeouts-a {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
#timeouts-b {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pcol {
|
|
||||||
font-size: 66%;
|
|
||||||
position: absolute;
|
|
||||||
left: 25%;
|
|
||||||
width: 5em;
|
|
||||||
margin-left: -2.5em;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text {
|
|
||||||
width: 6em;
|
|
||||||
font-size: 50%;
|
|
||||||
margin: 0.1em auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.timer {
|
|
||||||
width: 4em;
|
|
||||||
margin: 0.1em auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#jcol {
|
|
||||||
font-size: 66%;
|
|
||||||
position: absolute;
|
|
||||||
right: 25%;
|
|
||||||
width: 5em;
|
|
||||||
margin-right: -2.5em;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript" src="res/scoreboard.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
longnames = true;
|
|
||||||
tenths = false;
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<!--
|
|
||||||
HTML5 says not to use tables for layout. Since this is
|
|
||||||
a highly-styled page, it looks awful without CSS. Sorry.
|
|
||||||
-->
|
|
||||||
<div id="scoreboard">
|
|
||||||
<div id="team-a">
|
|
||||||
<p class="name" id="name-a" onclick="handle(event);">Home</p>
|
|
||||||
<p class="score button" id="score-a" onclick="handle(event);">-</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="timeouts">
|
|
||||||
<p class="label button">Timeouts</p>
|
|
||||||
<p class="to button" id="timeouts-a" onclick="handle(event);">0</p>
|
|
||||||
<p class="to button" id="timeouts-b" onclick="handle(event);">0</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="team-b">
|
|
||||||
<p class="name" id="name-b" onclick="handle(event);">Home</p>
|
|
||||||
<p class="score button" id="score-b" onclick="handle(event);">-</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="pcol">
|
|
||||||
<p class="text button" id="periodtext" onclick="handle(event);"></p>
|
|
||||||
<p class="timer button"><span id="period" onclick="handle(event);">--:--</span></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="jcol">
|
|
||||||
<p class="text button" id="jtxt">
|
|
||||||
<span id="jamtext" onclick="handle(event);"></span>
|
|
||||||
<span id="jamno" onclick="handle(event);">0</span>
|
|
||||||
</p>
|
|
||||||
<p class="timer button"><span id="jam" onclick="handle(event);">-:--</span></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
199
crg.html
|
@ -1,199 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<!--
|
|
||||||
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>LADD Scoreboard</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<style type="text/css">
|
|
||||||
html {
|
|
||||||
height: 100%;
|
|
||||||
background: #000000; /* Old browsers */
|
|
||||||
background: -moz-linear-gradient(top, #000000 0%, #888888 100%); /* FF3.6+ */
|
|
||||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#000000), color-stop(100%,#888888)); /* Chrome,Safari4+ */
|
|
||||||
background: -webkit-linear-gradient(top, #000000 0%,#888888 100%); /* Chrome10+,Safari5.1+ */
|
|
||||||
background: -o-linear-gradient(top, #000000 0%,#888888 100%); /* Opera 11.10+ */
|
|
||||||
background: -ms-linear-gradient(top, #000000 0%,#888888 100%); /* IE10+ */
|
|
||||||
background: linear-gradient(to bottom, #000000 0%,#888888 100%); /* W3C */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#000000', endColorstr='#888888',GradientType=0 ); /* IE6-9 */
|
|
||||||
|
|
||||||
font-family: arial, "Numbus Sans L Bold", sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button {
|
|
||||||
background: rgb(242,245,246); /* Old browsers */
|
|
||||||
background: -moz-linear-gradient(top, rgba(242,245,246,1) 0%, rgba(227,234,237,1) 37%, rgba(200,215,220,1) 100%); /* FF3.6+ */
|
|
||||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(242,245,246,1)), color-stop(37%,rgba(227,234,237,1)), color-stop(100%,rgba(200,215,220,1))); /* Chrome,Safari4+ */
|
|
||||||
background: -webkit-linear-gradient(top, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* Chrome10+,Safari5.1+ */
|
|
||||||
background: -o-linear-gradient(top, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* Opera 11.10+ */
|
|
||||||
background: -ms-linear-gradient(top, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* IE10+ */
|
|
||||||
background: linear-gradient(to bottom, rgba(242,245,246,1) 0%,rgba(227,234,237,1) 37%,rgba(200,215,220,1) 100%); /* W3C */
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f2f5f6', endColorstr='#c8d7dc',GradientType=0 ); /* IE6-9 */
|
|
||||||
|
|
||||||
border-radius: 0.3em;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
#scoreboard *[id] {
|
|
||||||
cursor: pointer;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-khtml-user-select: none;
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#team-a {
|
|
||||||
position: absolute;
|
|
||||||
left: 25%;
|
|
||||||
width: 3em;
|
|
||||||
margin-left: -1.5em;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#team-b {
|
|
||||||
position: absolute;
|
|
||||||
right: 25%;
|
|
||||||
width: 3em;
|
|
||||||
margin-right: -1.5em;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
img, p {
|
|
||||||
margin: 0.1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.name {
|
|
||||||
color: white;
|
|
||||||
font-size: 30%;
|
|
||||||
height: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
height: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.score {
|
|
||||||
position: relative;
|
|
||||||
top: -0.3em;
|
|
||||||
width: 2.2em;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#timeouts {
|
|
||||||
font-size: 30%;
|
|
||||||
position: absolute;
|
|
||||||
top: 6.2em;
|
|
||||||
left: 50%;
|
|
||||||
width: 5em;
|
|
||||||
margin-left: -2.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.label {
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.to {
|
|
||||||
margin: 1em 0;
|
|
||||||
width: 2em;
|
|
||||||
}
|
|
||||||
#timeouts-a {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
#timeouts-b {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pcol {
|
|
||||||
font-size: 66%;
|
|
||||||
position: absolute;
|
|
||||||
left: 25%;
|
|
||||||
width: 5em;
|
|
||||||
margin-left: -2.5em;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.text {
|
|
||||||
width: 6em;
|
|
||||||
font-size: 50%;
|
|
||||||
margin: 0.1em auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.timer {
|
|
||||||
width: 4em;
|
|
||||||
margin: 0.1em auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#jcol {
|
|
||||||
font-size: 66%;
|
|
||||||
position: absolute;
|
|
||||||
right: 25%;
|
|
||||||
width: 5em;
|
|
||||||
margin-right: -2.5em;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript" src="logos/logos.js"></script>
|
|
||||||
<script type="text/javascript" src="res/scoreboard.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
longnames = true;
|
|
||||||
tenths = false;
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<!--
|
|
||||||
HTML5 says not to use tables for layout. Since this is
|
|
||||||
a highly-styled page, it looks awful without CSS. Sorry.
|
|
||||||
-->
|
|
||||||
<div id="scoreboard">
|
|
||||||
<div id="team-a">
|
|
||||||
<p class="name" id="name-a" onclick="handle(event);">Home</p>
|
|
||||||
<img class="logo" src="" alt="A" id="logo-a" onclick="handle(event);">
|
|
||||||
<p class="score button" id="score-a" onclick="handle(event);">-</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="timeouts">
|
|
||||||
<p class="label button">Timeouts</p>
|
|
||||||
<p class="to button" id="timeouts-a" onclick="handle(event);">0</p>
|
|
||||||
<p class="to button" id="timeouts-b" onclick="handle(event);">0</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="team-b">
|
|
||||||
<p class="name" id="name-b" onclick="handle(event);">Home</p>
|
|
||||||
<img class="logo" src="" alt="B" id="logo-b" onclick="handle(event);">
|
|
||||||
<p class="score button" id="score-b" onclick="handle(event);">-</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="pcol">
|
|
||||||
<p class="text button" id="periodtext" onclick="handle(event);"></p>
|
|
||||||
<p class="timer button"><span id="period" onclick="handle(event);">--:--</span></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="jcol">
|
|
||||||
<p class="text button" id="jtxt">
|
|
||||||
<span id="jamtext" onclick="handle(event);"></span>
|
|
||||||
<span id="jamno" onclick="handle(event);">0</span>
|
|
||||||
</p>
|
|
||||||
<p class="timer button"><span id="jam" onclick="handle(event);">-:--</span></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,4 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html style="background: black;"><head><title>flag</title></head>
|
|
||||||
<body><img style="max-width: 100%; max-height: 100%;" src="res/Flag_of_Canada.svg" alt="Flag"></body>
|
|
||||||
<html>
|
|
|
@ -1,4 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html style="background: black;"><head><title>flag</title></head>
|
|
||||||
<body><img style="max-width: 100%; max-height: 100%;" src="res/Flag_of_Mexico.svg" alt="Flag"></body>
|
|
||||||
<html>
|
|
|
@ -1,4 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html style="background: black;"><head><title>flag</title></head>
|
|
||||||
<body><img style="max-width: 100%; max-height: 100%;" src="res/Flag_of_the_United_States.svg" alt="Flag"></body>
|
|
||||||
<html>
|
|
99
highvis.html
|
@ -1,99 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<!--
|
|
||||||
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>LADD Scoreboard</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<link rel="stylesheet" type="text/css" href="res/scoreboard.css">
|
|
||||||
<style type="text/css">
|
|
||||||
body {
|
|
||||||
background: black;
|
|
||||||
color: white;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#scoreboard {
|
|
||||||
font-size: 1.4em;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
#jam, #period, #score-a, #score-b, #jammer-a.lead, #jammer-b.lead {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
#score-a, #score-b {
|
|
||||||
position: absolute;
|
|
||||||
top: 1.4em;
|
|
||||||
}
|
|
||||||
#jammer-a, #jammer-b {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
#jamtext {
|
|
||||||
font-family: monospace;
|
|
||||||
}
|
|
||||||
#score-a, #jammer-a {
|
|
||||||
left: 10px;
|
|
||||||
}
|
|
||||||
#score-b, #jammer-b {
|
|
||||||
right: 10px;
|
|
||||||
}
|
|
||||||
html, p {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
#notice {
|
|
||||||
position: absolute;
|
|
||||||
top: 10px;
|
|
||||||
left: 20%;
|
|
||||||
width: 60%;
|
|
||||||
background: white;
|
|
||||||
color: black;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript" src="res/scoreboard.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
window.onkeypress = key;
|
|
||||||
jamtext = ["J", "L", "T", "Setup"];
|
|
||||||
tenths = true;
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="scoreboard">
|
|
||||||
<p>
|
|
||||||
<span id="period" onclick="handle(event);">--:--</span>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<span id="score-a" onclick="handle(event);">-</span>
|
|
||||||
<span id="jammer-a" onclick="handle(event);">★</span>
|
|
||||||
<span id="jamtext">-</span>
|
|
||||||
<span id="jammer-b" onclick="handle(event);">★</span>
|
|
||||||
<span id="score-b" onclick="handle(event);">-</span>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<span id="jam" onclick="handle(event);">-:--.-</span>
|
|
||||||
</p>
|
|
||||||
<div id="notice">
|
|
||||||
<div id="notice-1">Power Jam</div>
|
|
||||||
<div id="notice-2">Grand Slam</div>
|
|
||||||
<div id="notice-3">Ouch!</div>
|
|
||||||
<div id="notice-4">OMG</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
152
index.html
|
@ -1,152 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<!--
|
|
||||||
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>LADD Roller Derby Scoreboard</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<link rel="stylesheet" type="text/css" href="res/style.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>LADD Roller Derby Scoreboard</h1>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
This is a free WFTDA-rules scoreboard, created with ease-of-use
|
|
||||||
in mind. It is known to work on PC, Mac, Android, iOS, or Linux, using any
|
|
||||||
common web browser.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p id="screenshot">
|
|
||||||
<img src="res/screenshot.png">
|
|
||||||
<br>
|
|
||||||
<a href="scoreboard.html">Try it right now</a>: click on things
|
|
||||||
to make them change.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h1>Features</h1>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Free to use, share, and change (GPLv3)
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
No Internet connection required
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Easy mouse-driven (with hotkeys) setup and operation
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
No complicated installation procedure: just open a web page
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Looks <em>good</em>, with colors tuned for high-visibility
|
|
||||||
on projectors
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Appearance can be customized in HTML and CSS; comes with
|
|
||||||
several pre-written themes
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Runs on practically anything, including older computers,
|
|
||||||
smartphones, and tablets
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Ships with <a href="logos/logos.html">an ever-expanding set of
|
|
||||||
team logos</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
The <b>only</b> scoreboard conforming to 9.1.5.4, requiring
|
|
||||||
<a href="penalties.html">penalty tracking</a>.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h1>Themes</h1>
|
|
||||||
<ul>
|
|
||||||
<li><a href="scoreboard.html">Normal layout</a> similar to most
|
|
||||||
other roller derby scoreboards</li>
|
|
||||||
<li><a href="crg.html">CRG-style layout</a>, or <a href="crg-nologo.html">CRG without logos</a></li>
|
|
||||||
<li><a href="penalties.html">Penalty tracking</a> layout</li>
|
|
||||||
<li><a href="highvis.html">High-visibility</a> for
|
|
||||||
low-power projectors or outdoor bouts</li>
|
|
||||||
<li><a href="micro.html">Timers-only</a> if you track
|
|
||||||
scores some other way</li>
|
|
||||||
<li><a href="flag.html">US Flag</a> in case you need it</li>
|
|
||||||
<li>Build your own using only HTML5 and CSS</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h1>Documentation</h1>
|
|
||||||
<p>
|
|
||||||
Watch a <a href="http://youtu.be/MXOzmmnHqXU">5-minute video
|
|
||||||
tutorial</a> or read the
|
|
||||||
<a href="res/usage.html">Full documentation</a> which comes bundled with the
|
|
||||||
download.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
<h1>Download</h1>
|
|
||||||
<p>
|
|
||||||
<a href="http://woozle.org/~neale/g.cgi/scoreboard/snapshot/scoreboard-5.2.zip">Download
|
|
||||||
version 5.2</a> to your hard drive to run a scoreboard
|
|
||||||
without Internet access (<strong>recommended</strong>:
|
|
||||||
<a href="http://youtu.be/lH1VZ2kFatY">watch how</a>). This
|
|
||||||
includes the documentation.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
If your scoreboard computer has an Internet connection, you don't
|
|
||||||
need to download anything at all. Just load up
|
|
||||||
the <a href="scoreboard.html">full-screen version</a> from this
|
|
||||||
page and you're all set.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
You can
|
|
||||||
also <a href="http://woozle.org/~neale/g.cgi/scoreboard">browse
|
|
||||||
the source tree</a> or clone it with git:
|
|
||||||
<pre>git clone http://woozle.org/~neale/projects/scoreboard</pre>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h1>Other Derby Stuff By Me</h1>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
I have several other software packages for NSOs and skaters at
|
|
||||||
<a href="http://woozle.org/derby/">woozle.org</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
I also keep a <a href="res/others.html">list of other free
|
|
||||||
scoreboard programs</a>. If the LADD scoreboard isn't
|
|
||||||
right for you, try one of these!
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h1>Contact Me</h1>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
If you'd like me to add your team logo, have an idea for improvement,
|
|
||||||
or just want to say hi, please send me an email. I especially
|
|
||||||
like hearing from people who are using the software: I love knowing
|
|
||||||
I'm able to help people out.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<address>
|
|
||||||
Neale Pickett <<a href="mailto:neale@woozle.org">neale@woozle.org</a>>
|
|
||||||
</address>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
BIN
logos/4crg.png
Before Width: | Height: | Size: 46 KiB |
BIN
logos/animas.png
Before Width: | Height: | Size: 58 KiB |
BIN
logos/aurora.png
Before Width: | Height: | Size: 94 KiB |
BIN
logos/bbdd.png
Before Width: | Height: | Size: 140 KiB |
Before Width: | Height: | Size: 49 KiB |
BIN
logos/black.png
Before Width: | Height: | Size: 9.7 KiB |
BIN
logos/blue.png
Before Width: | Height: | Size: 8.3 KiB |
BIN
logos/bombs.png
Before Width: | Height: | Size: 191 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 14 KiB |
BIN
logos/chupas.png
Before Width: | Height: | Size: 26 KiB |
BIN
logos/dcd.png
Before Width: | Height: | Size: 475 KiB |
BIN
logos/dia.png
Before Width: | Height: | Size: 125 KiB |
Before Width: | Height: | Size: 188 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 33 KiB |
BIN
logos/fdd.png
Before Width: | Height: | Size: 158 KiB |
BIN
logos/green.png
Before Width: | Height: | Size: 7.8 KiB |
BIN
logos/hobots.png
Before Width: | Height: | Size: 230 KiB |
Before Width: | Height: | Size: 30 KiB |
|
@ -1,74 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Roller Derby Logos</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="../res/style.css">
|
|
||||||
<style type="text/css">
|
|
||||||
#gallery {
|
|
||||||
}
|
|
||||||
#gallery div {
|
|
||||||
margin:2px;
|
|
||||||
height:auto;
|
|
||||||
width:auto;
|
|
||||||
display: inline-block;
|
|
||||||
text-align:center;
|
|
||||||
max-width: 12em;
|
|
||||||
}
|
|
||||||
#gallery img
|
|
||||||
{
|
|
||||||
background: url(../res/checkerboard.png) #282;
|
|
||||||
display:inline;
|
|
||||||
float: none;
|
|
||||||
margin:3px;
|
|
||||||
border:3px solid black;
|
|
||||||
max-width: 10em;
|
|
||||||
max-height: 10em;
|
|
||||||
}
|
|
||||||
#gallery a:hover img
|
|
||||||
{
|
|
||||||
border-color: yellow;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
color: yellow;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript" src="logos.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
function gallery() {
|
|
||||||
var g = document.getElementById("gallery");
|
|
||||||
|
|
||||||
for (tn in teams) {
|
|
||||||
var team = teams[tn];
|
|
||||||
var d = document.createElement("div");
|
|
||||||
var a = document.createElement("a");
|
|
||||||
var i = document.createElement("img");
|
|
||||||
|
|
||||||
i.setAttribute("src", team[1]);
|
|
||||||
i.setAttribute("alt", team[0] + " logo");
|
|
||||||
|
|
||||||
a.setAttribute("href", team[1]);
|
|
||||||
a.appendChild(i);
|
|
||||||
a.appendChild(document.createElement("br"));
|
|
||||||
a.appendChild(document.createTextNode(team[2] + " (" + team[0] + ")"));
|
|
||||||
|
|
||||||
d.appendChild(a);
|
|
||||||
|
|
||||||
g.appendChild(d);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
window.onload = gallery;
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Roller Derby Logo Gallery</h1>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Here are the logos currently shipping with the
|
|
||||||
free <a href="../index.html">LADD Scoreboard</a>. If you'd like
|
|
||||||
yours added, email your team name, preferred short name, and logo
|
|
||||||
to <a href="mailto:neale@woozle.org">neale@woozle.org</a>.
|
|
||||||
</p>
|
|
||||||
<div id="gallery"></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,52 +0,0 @@
|
||||||
teams = [
|
|
||||||
["LA", "bombs.png", "Los Alamos M'Atom Bombs"],
|
|
||||||
["ARG", "animas.png", "Animas Valley Roller Girls"],
|
|
||||||
["Taos", "taos.png", "Taos Whiplashes"],
|
|
||||||
["RIP", "rip.png", "Rollergirls In Pagosa"],
|
|
||||||
["4CRG", "4crg.png", "4 Corners Roller Girls"],
|
|
||||||
["DRG", "durango.png", "Durango Roller Girls"],
|
|
||||||
["SFe", "brawlers.png", "Disco Brawlers"],
|
|
||||||
["HCRD", "aurora.png", "High City Derby Divas"],
|
|
||||||
["Moab", "moab.png", "Moab Roller Derby"],
|
|
||||||
["Bots", "hobots.png", "Albuquerque Ho-Bots"],
|
|
||||||
["HNR", "hustlen.png", "HCDD Hustle N' Rollers"],
|
|
||||||
["DD", "doubledown.png", "HCDD Double Down"],
|
|
||||||
["DCD", "dcd.png", "Duke City Derby"],
|
|
||||||
["RMRG", "rmrg.png", "Rocky Mountain Roller Girls"],
|
|
||||||
["DD", "doomsdames.png", "Albuquerque Doomsdames"],
|
|
||||||
["TEX", "texpistols.png", "El Paso Tex Pistols"],
|
|
||||||
["PWH", "pistol.png", "El Paso Pistol Whip-Hers"],
|
|
||||||
["MT", "minorthreat.png", "Minor Threat"],
|
|
||||||
["CCR", "choicecity.png", "Choice City Rebels"],
|
|
||||||
["DIA", "dia.png", "Derby Intelligence Agency"],
|
|
||||||
["TRD", "tucson.png", "Tucson Roller Derby"],
|
|
||||||
["TST", "saddletramps.jpg","Tucson Saddle Tramps"],
|
|
||||||
["TC", "tallcity.png", "Tall City Roller Betties"],
|
|
||||||
["SS", "ssdd.png", "South Side Derby Dames"],
|
|
||||||
["WTRD", "wtrd.png", "West Texas Roller Dollz"],
|
|
||||||
["FDD", "fdd.png", "Faultline Derby Devilz"],
|
|
||||||
["CHPA", "chupas.png", "New Mexico Chupacabras"],
|
|
||||||
["TKRD", "tulare-kings.png", "Tulare Kings Roller Derby"],
|
|
||||||
["CHRY", "cherries.png", "Los Alamos Cherry Bombs"],
|
|
||||||
["PLG", "plague.png", "Zombie Plague"],
|
|
||||||
["BDB", "bd-betties.png", "Black Diamond Betties"],
|
|
||||||
["SKS", "sirens.png", "Sea to Sky Sirens"],
|
|
||||||
["BBDD", "bbdd.png", "Battle Born Derby Demons"],
|
|
||||||
["OKVD", "okvd.png", "Oklahoma Victory Dolls"],
|
|
||||||
["MM", "munecas.png", "Muñecas Muertas"],
|
|
||||||
["MARI", "marionettes.png", "Albuquerque Marionettes"],
|
|
||||||
["QSDD", "qsdd.png", "Quad Skate Derby Dames"],
|
|
||||||
["BWBS", "bwbs.png", "Backwoods Bombshells"]
|
|
||||||
["CRH", "redhots.png", "Chicago Red Hots"],
|
|
||||||
["HCRG", "campers.png", "Happy Camper Rollergirls"]
|
|
||||||
];
|
|
||||||
teams.sort();
|
|
||||||
|
|
||||||
// Add special teams at the beginning
|
|
||||||
teams.splice(0, 0,
|
|
||||||
["Blk", "black.png", "Black Team"],
|
|
||||||
["Wht", "white.png", "White Team"],
|
|
||||||
["Grn", "green.png", "Green Team"],
|
|
||||||
["Rng", "orange.png", "Orange Team"],
|
|
||||||
["Blu", "blue.png", "Blue Team"]
|
|
||||||
);
|
|
Before Width: | Height: | Size: 141 KiB |
Before Width: | Height: | Size: 26 KiB |
BIN
logos/moab.png
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 235 KiB |
BIN
logos/okvd.png
Before Width: | Height: | Size: 124 KiB |
BIN
logos/orange.png
Before Width: | Height: | Size: 9.3 KiB |
BIN
logos/pistol.png
Before Width: | Height: | Size: 38 KiB |
BIN
logos/plague.png
Before Width: | Height: | Size: 22 KiB |
BIN
logos/rip.png
Before Width: | Height: | Size: 16 KiB |
BIN
logos/rmrg.png
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 11 KiB |
BIN
logos/sirens.png
Before Width: | Height: | Size: 77 KiB |
BIN
logos/skate.png
Before Width: | Height: | Size: 17 KiB |
BIN
logos/ssdd.png
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 149 KiB |
BIN
logos/taos.png
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 94 KiB |
BIN
logos/tucson.png
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 6.4 KiB |
BIN
logos/wftda.png
Before Width: | Height: | Size: 12 KiB |
BIN
logos/white.png
Before Width: | Height: | Size: 10 KiB |
BIN
logos/wtrd.png
Before Width: | Height: | Size: 372 KiB |
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"manifest_version": 2,
|
||||||
|
|
||||||
|
"name": "BETA Woozle Scoreboard",
|
||||||
|
"short_name": "BETA Scoreboard",
|
||||||
|
"icons": {"128": "res/icon-plaid.png"},
|
||||||
|
|
||||||
|
"_name": "__MSG_appName__",
|
||||||
|
"_short_name": "__MSG_appShortName__",
|
||||||
|
"_icons": {"128": "res/icon.png"},
|
||||||
|
|
||||||
|
"description": "__MSG_appDesc__",
|
||||||
|
"author": "Neale Pickett <neale@woozle.org>",
|
||||||
|
"version": "7.0.2",
|
||||||
|
"app": {
|
||||||
|
"background": {
|
||||||
|
"scripts": ["res/background.js"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"permissions": [
|
||||||
|
"storage",
|
||||||
|
"fileSystem",
|
||||||
|
"fullscreen"
|
||||||
|
],
|
||||||
|
"default_locale": "en",
|
||||||
|
"offline_enabled": true
|
||||||
|
}
|
71
micro.html
|
@ -1,71 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<!--
|
|
||||||
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>LADD Scoreboard</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<link rel="stylesheet" type="text/css" href="res/scoreboard.css">
|
|
||||||
<style type="text/css">
|
|
||||||
body {
|
|
||||||
background: black;
|
|
||||||
}
|
|
||||||
#scoreboard {
|
|
||||||
font-size: 2em;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#jam, #period {
|
|
||||||
position: inherit;
|
|
||||||
margin: inherit;
|
|
||||||
width: inherit;
|
|
||||||
left: inherit;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
#jamtext {
|
|
||||||
font-family: inherit;
|
|
||||||
font-size: 50%;
|
|
||||||
margin: inherit;
|
|
||||||
width: inherit;
|
|
||||||
|
|
||||||
position: inherit;
|
|
||||||
bottom: 0em;
|
|
||||||
left: 0em;
|
|
||||||
}
|
|
||||||
html, p {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript" src="res/scoreboard.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
jamtext = ["J", "L", "T", "S"];
|
|
||||||
tenths = false;
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="scoreboard">
|
|
||||||
<p>
|
|
||||||
<span id="period" onclick="handle(event);">--:--</span>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<span id="jamtext">S</span>
|
|
||||||
<span id="jam" onclick="handle(event);">-:--</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
140
penalties.html
|
@ -1,140 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<!--
|
|
||||||
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>LADD Scoreboard</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<link rel="stylesheet" type="text/css" href="res/scoreboard.css">
|
|
||||||
<style type="text/css">
|
|
||||||
#jam {
|
|
||||||
bottom: auto;
|
|
||||||
top: 2em;
|
|
||||||
}
|
|
||||||
#jamtext {
|
|
||||||
bottom: auto;
|
|
||||||
top: 1.5em;
|
|
||||||
}
|
|
||||||
#jamno {
|
|
||||||
bottom: auto;
|
|
||||||
top: 3em;
|
|
||||||
}
|
|
||||||
.timeouts {
|
|
||||||
margin: 0em 6em;
|
|
||||||
}
|
|
||||||
.jammer {
|
|
||||||
margin: 0em 3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Penalties
|
|
||||||
*/
|
|
||||||
#penalties-a, #penalties-b {
|
|
||||||
position: absolute;
|
|
||||||
font-size: 13%;
|
|
||||||
bottom: 2px;
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
|
|
||||||
#penalties-a {
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
#penalties-b {
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#penalties td {
|
|
||||||
cursor: pointer;
|
|
||||||
border: 1px solid rgba(255, 255, 255, 0.075);
|
|
||||||
padding: 0;
|
|
||||||
vertical-align: bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
#penalties .minors td {
|
|
||||||
height: 3em;
|
|
||||||
}
|
|
||||||
#penalties .majors td {
|
|
||||||
height: 8em;
|
|
||||||
}
|
|
||||||
#penalties .minors div {
|
|
||||||
background-color: #880;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
#penalties .majors div {
|
|
||||||
background-color: #800;
|
|
||||||
}
|
|
||||||
#penalties .sk8ers td {
|
|
||||||
font-family: sans-serif;
|
|
||||||
vertical-align: top;
|
|
||||||
width: 1em;
|
|
||||||
line-height: 75%;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript" src="logos/logos.js"></script>
|
|
||||||
<script type="text/javascript" src="res/scoreboard.js"></script>
|
|
||||||
<script type="text/javascript" src="res/penalties.js"></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
tenths = true;
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="scoreboard">
|
|
||||||
<p class="left">
|
|
||||||
<img class="logo" id="logo-a" src="" alt="A" onclick="handle(event);">
|
|
||||||
<span class="timeouts" id="timeouts-a" onclick="handle(event);">0</span>
|
|
||||||
<span class="jammer" id="jammer-a" onclick="handle(event);">★</span>
|
|
||||||
<span class="score" id="score-a" onclick="handle(event);">-</span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="center">
|
|
||||||
<span id="period" onclick="handle(event);">--:--</span>
|
|
||||||
<span id="jam" onclick="handle(event);">-:--.-</span>
|
|
||||||
<span id="jamtext" onclick="handle(event);"></span>
|
|
||||||
<span id="jamno" onclick="handle(event);">0</span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="right">
|
|
||||||
<img class="logo" id="logo-b" src="" alt="B" onclick="handle(event);">
|
|
||||||
<span class="timeouts" id="timeouts-b" onclick="handle(event);">0</span>
|
|
||||||
<span class="jammer" id="jammer-b" onclick="handle(event);">★</span>
|
|
||||||
<span class="score" id="score-b" onclick="handle(event);">-</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="penalties">
|
|
||||||
<table id="penalties-a">
|
|
||||||
<tr class="majors"></tr>
|
|
||||||
<tr class="sk8ers"></tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<!-- Right here would be an excellent place for a sponsor logo -->
|
|
||||||
|
|
||||||
<table id="penalties-b">
|
|
||||||
<tr class="majors"></tr>
|
|
||||||
<tr class="sk8ers"></tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="notice">
|
|
||||||
<div id="notice-1">Power Jam</div>
|
|
||||||
<div id="notice-2">Grand Slam</div>
|
|
||||||
<div id="notice-3">Ouch</div>
|
|
||||||
<div id="notice-4">OMG</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
BIN
res/BadGirl.swf
|
@ -1 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="1000" height="500"><rect width="1000" height="500" fill="#f00"/><rect width="500" height="500" fill="#fff" x="250"/><path fill="#ff0000" d="m 499.99228,46.875 -34.11312,63.62529 c -3.87086,6.91501 -10.80627,6.27363 -17.74169,2.41138 l -24.69699,-12.78858 18.40705,97.72711 c 3.87086,17.85419 -8.54859,17.85419 -14.67765,10.13435 l -43.10105,-48.25099 -6.99738,24.503 c -0.80692,3.21777 -4.35481,6.59744 -9.67748,5.79261 l -54.50177,-11.45912 14.31524,52.04475 c 3.06451,11.58054 5.4549,16.37528 -3.09375,19.42959 l -19.42619,9.13025 93.82127,76.20838 c 3.7135,2.88151 5.58971,8.067 4.26768,12.7621 l -8.21136,26.94707 c 32.30405,-3.72371 61.24898,-9.32594 93.56939,-12.77619 2.85323,-0.30459 7.62988,4.40408 7.61029,7.71058 l -4.28024,98.72342 15.70639,0 -2.47237,-98.5117 c -0.0197,-3.3065 4.31372,-8.22689 7.16695,-7.9223 32.32041,3.45026 61.26538,9.05248 93.56942,12.77619 l -8.21134,-26.94707 c -1.32203,-4.6951 0.55417,-9.88059 4.26767,-12.7621 l 93.82125,-76.20838 -19.42617,-9.13025 c -8.54867,-3.05431 -6.15828,-7.84905 -3.09377,-19.42959 l 14.31527,-52.04475 -54.5018,11.45912 c -5.32267,0.80483 -8.87056,-2.57484 -9.6775,-5.79261 l -6.99737,-24.503 -43.10103,48.25099 c -6.12908,7.71984 -18.54854,7.71984 -14.67768,-10.13435 l 18.40702,-97.72711 -24.69694,12.78858 c -6.93559,3.86225 -13.87083,4.50363 -17.7417,-2.41138"/></svg>
|
|
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 338 KiB |
|
@ -1,12 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1235" height="650">
|
|
||||||
<defs>
|
|
||||||
<polygon id="pt" points="-0.1624598481164531,0 0,-0.5 0.1624598481164531,0" transform="scale(0.0616)" fill="#FFF"/>
|
|
||||||
<g id="star"><use xlink:href="#pt" transform="rotate(-144)"/><use xlink:href="#pt" transform="rotate(-72)"/><use xlink:href="#pt"/><use xlink:href="#pt" transform="rotate(72)"/><use xlink:href="#pt" transform="rotate(144)"/></g>
|
|
||||||
<g id="s5"><use xlink:href="#star" x="-0.252"/><use xlink:href="#star" x="-0.126"/><use xlink:href="#star"/><use xlink:href="#star" x="0.126"/><use xlink:href="#star" x="0.252"/></g>
|
|
||||||
<g id="s6"><use xlink:href="#s5" x="-0.063"/><use xlink:href="#star" x="0.315"/></g>
|
|
||||||
<g id="x4"><use xlink:href="#s6"/><use xlink:href="#s5" y="0.054"/><use xlink:href="#s6" y="0.108"/><use xlink:href="#s5" y="0.162"/></g>
|
|
||||||
<g id="u"><use xlink:href="#x4" y="-0.216"/><use xlink:href="#x4"/><use xlink:href="#s6" y="0.216"/></g>
|
|
||||||
<rect id="stripe" width="1235" height="50" fill="#B22234"/>
|
|
||||||
</defs>
|
|
||||||
<rect width="1235" height="650" fill="#FFF"/><use xlink:href="#stripe"/><use xlink:href="#stripe" y="100"/><use xlink:href="#stripe" y="200"/><use xlink:href="#stripe" y="300"/><use xlink:href="#stripe" y="400"/><use xlink:href="#stripe" y="500"/><use xlink:href="#stripe" y="600"/><rect width="494" height="350" fill="#3C3B6E"/><use xlink:href="#u" transform="translate(247,175) scale(650)"/></svg>
|
|
Before Width: | Height: | Size: 1.5 KiB |
BIN
res/HolyShot.swf
BIN
res/Magenta.woff
BIN
res/Ouch.swf
BIN
res/Pow.swf
BIN
res/Zounds.swf
|
@ -1,30 +0,0 @@
|
||||||
var advert_num = 100
|
|
||||||
var advert_itimer
|
|
||||||
|
|
||||||
function adverterror() {
|
|
||||||
if (advert_num > 1) {
|
|
||||||
advert_num = 1
|
|
||||||
rotate_advert()
|
|
||||||
} else {
|
|
||||||
var e = document.getElementById("advert")
|
|
||||||
clearInterval(advert_itimer)
|
|
||||||
e.style.visibility = "hidden"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function rotate_advert() {
|
|
||||||
var e = document.getElementById("advert")
|
|
||||||
var sn
|
|
||||||
|
|
||||||
if (advert_num < 10) {
|
|
||||||
sn = "0" + advert_num
|
|
||||||
} else {
|
|
||||||
sn = advert_num
|
|
||||||
}
|
|
||||||
|
|
||||||
e.src = "ads/ad" + sn + ".jpg"
|
|
||||||
|
|
||||||
advert_num = advert_num + 1
|
|
||||||
}
|
|
||||||
|
|
||||||
advert_itimer = setInterval(rotate_advert, 15000)
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
chrome.app.runtime.onLaunched.addListener(function() {
|
||||||
|
chrome.app.window.create('res/scoreboard.html', {
|
||||||
|
'state': 'fullscreen'
|
||||||
|
})
|
||||||
|
})
|
Before Width: | Height: | Size: 187 B |
After Width: | Height: | Size: 8.1 KiB |
|
@ -1,160 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) by Marsupilami -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
version="1.0"
|
|
||||||
width="1024"
|
|
||||||
height="729"
|
|
||||||
viewBox="-187.819908 -187.819908 9320.639816 6636.303416"
|
|
||||||
id="svg10326"
|
|
||||||
inkscape:version="0.48.3.1 r9886"
|
|
||||||
sodipodi:docname="hellokitty.svg"
|
|
||||||
inkscape:export-filename="/home/neale/src/scoreboard/logos/black.png"
|
|
||||||
inkscape:export-xdpi="18.299999"
|
|
||||||
inkscape:export-ydpi="18.299999">
|
|
||||||
<metadata
|
|
||||||
id="metadata18">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title></dc:title>
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<sodipodi:namedview
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1"
|
|
||||||
objecttolerance="10"
|
|
||||||
gridtolerance="10"
|
|
||||||
guidetolerance="10"
|
|
||||||
inkscape:pageopacity="0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:window-width="729"
|
|
||||||
inkscape:window-height="580"
|
|
||||||
id="namedview16"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:object-paths="true"
|
|
||||||
inkscape:zoom="0.84499314"
|
|
||||||
inkscape:cx="300.50256"
|
|
||||||
inkscape:cy="346.15303"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="16"
|
|
||||||
inkscape:window-maximized="0"
|
|
||||||
inkscape:current-layer="svg10326" />
|
|
||||||
<defs
|
|
||||||
id="defs10328" />
|
|
||||||
<path
|
|
||||||
style="fill:#707070;stroke:#000000;stroke-width:22;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
|
|
||||||
d="m 124.26136,401.18669 c -17.1599,297.63555 336.09741,293.4935 384.61851,292.31006 48.5211,-1.18344 415.97971,0.59172 386.98539,-299.41071 C 852.66964,147.33848 667.08313,156.66702 518.3474,156.21428 363.67452,155.74347 146.15503,188.75893 124.26136,401.18669 z"
|
|
||||||
id="path3836"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
|
|
||||||
sodipodi:nodetypes="czcac" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cccccccczcc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
style="fill:#000000;fill-opacity:1;stroke:none"
|
|
||||||
id="path2995"
|
|
||||||
d="m 2371.3064,4114.3702 c 0,0 37,241 193,290 0,0 73,22 147,-7 0,0 72,-28 119,-93 0,0 45,-63 54,-158 0,0 7,-66 -3,-173 0,0 -15,-74 -54,-134 0,0 -44,-68 -106,-96 0,0 -469.1426,-162.9385 -512.9158,-114.6523 -43.7732,48.2862 299.5961,136.972 251.5961,161.972 0,0 -114.6803,86.6803 -88.6803,323.6803" />
|
|
||||||
<path
|
|
||||||
d="M 4783.9999,4890.7568 C 4783.9999,4890.7568 4664.9999,4970.7568 4497.9999,4964.7568 C 4497.9999,4964.7568 4348.9999,4959.7568 4209.9999,4891.7568 C 4209.9999,4891.7568 4137.9999,4855.7568 4104.9999,4782.7568 C 4104.9999,4782.7568 4072.9998,4712.7568 4083.9998,4625.7568 C 4083.9998,4625.7568 4092.9998,4559.7568 4125.9999,4505.7568 C 4125.9999,4505.7568 4163.9999,4446.7568 4221.9999,4417.7568 C 4221.9999,4417.7568 4333.9999,4343.7568 4491.9999,4346.7568 C 4491.9999,4346.7568 4645.9999,4349.7568 4764.9999,4420.7568 C 4764.9999,4420.7568 4820.9999,4446.7568 4858.9999,4501.7568 C 4858.9999,4501.7568 4895.9999,4555.7568 4903.9999,4619.7568 C 4903.9999,4619.7568 4913.9999,4702.7568 4881.9999,4773.7568 C 4881.9999,4773.7568 4850.9999,4844.7568 4783.9999,4890.7568"
|
|
||||||
id="path9508"
|
|
||||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="M 4523.9999,4514.7568 C 4523.9999,4514.7568 4626.9999,4522.7568 4681.9999,4587.7568 C 4681.9999,4587.7568 4701.9999,4602.7568 4709.9999,4629.7568 L 4719.9999,4679.7568 C 4719.9999,4679.7568 4718.9999,4709.7568 4696.9999,4735.7568 C 4696.9999,4735.7568 4676.9999,4759.7568 4647.9999,4772.7568 C 4647.9999,4772.7568 4570.9999,4811.7568 4472.9999,4806.7568 C 4472.9999,4806.7568 4371.9999,4802.7568 4303.9999,4752.7568 C 4303.9999,4752.7568 4244.9999,4696.7568 4265.9999,4642.7568 C 4265.9999,4642.7568 4272.9999,4613.7568 4295.9999,4584.7568 C 4295.9999,4584.7568 4317.9999,4556.7568 4344.9999,4541.7568 C 4344.9999,4541.7568 4434.9999,4506.7568 4523.9999,4514.7568"
|
|
||||||
id="path9510"
|
|
||||||
style="fill:#d35f5f;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
|
|
||||||
<path
|
|
||||||
d="m 6503.9998,4119.7568 c 0,0 -37,241 -193,290 0,0 -73,22 -147,-7 0,0 -72,-28 -119,-93 0,0 -45,-63 -54,-158 0,0 -7,-66 3,-173 0,0 15,-74 54,-134 0,0 44,-68 106,-96 0,0 469.1426,-162.9385 512.9158,-114.6523 43.7732,48.2862 -299.5961,136.972 -251.5961,161.972 0,0 114.6803,86.6803 88.6803,323.6803"
|
|
||||||
id="path9512"
|
|
||||||
style="fill:#000000;fill-opacity:1;stroke:none"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="cccccccczcc" />
|
|
||||||
<path
|
|
||||||
style="fill:#2e2e2c;stroke:none;stroke-width:22;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
|
|
||||||
d="m 179.88312,276.92532 0,137.27923 -82.840912,0 C 139.6461,-80.47402 873.37987,-85.207794 938.46915,396.45292 l -87.57467,0 -2.36688,-111.2435 c -81.65747,34.31981 -519.53084,31.95291 -668.64448,-8.2841 z"
|
|
||||||
id="path3062"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
|
|
||||||
sodipodi:nodetypes="ccccccc" />
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
|
||||||
d="m 853.26136,488.76136 c 26.03572,1.18345 92.30844,11.83442 113.61039,17.75163"
|
|
||||||
id="path3838"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
|
|
||||||
sodipodi:nodetypes="cc" />
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
|
||||||
d="m 818.94156,564.50162 c 24.85227,1.18344 92.30844,30.76949 121.89448,47.33767"
|
|
||||||
id="path3840"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
|
|
||||||
sodipodi:nodetypes="cc" />
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
|
||||||
d="m 840.24351,421.30519 c 34.31981,-10.65097 132.54545,-14.20129 153.8474,-10.65097"
|
|
||||||
id="path3842"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
|
|
||||||
sodipodi:nodetypes="cc" />
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
|
||||||
d="m 228.40422,569.23539 c -27.21916,5.91721 -88.75812,37.87013 -121.89448,67.45617"
|
|
||||||
id="path3844"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
|
|
||||||
sodipodi:nodetypes="cc" />
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
|
||||||
d="m 188.16721,508.87987 c -30.76948,2.36688 -86.39124,10.65097 -111.243509,22.48539"
|
|
||||||
id="path3846"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
|
|
||||||
sodipodi:nodetypes="cc" />
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
|
||||||
d="M 183.43344,435.50649 C 142.01299,423.67207 54.438312,429.58929 33.136364,439.05682"
|
|
||||||
id="path3848"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
|
|
||||||
sodipodi:nodetypes="cc" />
|
|
||||||
<path
|
|
||||||
style="fill:#b7b7b7;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
|
||||||
d="m 3767.3612,2599.9585 c 0,-355.5162 212.3876,-2250.13849 330.8931,-2411.73679 l 1217.2588,55.99849 c -107.7322,301.65015 -311.2826,1811.3539 -257.4165,2382.3345 z"
|
|
||||||
id="path3852"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="ccccc" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="ccccccc"
|
|
||||||
transform="matrix(9.1032969,0,0,9.1032969,-188.388,-187.81991)"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path3856"
|
|
||||||
d="m 179.88312,276.92532 0,137.27923 -82.840912,0 C 139.6461,-80.47402 873.37987,-85.207794 938.46915,396.45292 l -87.57467,0 -2.36688,-111.2435 c -81.65747,34.31981 -519.53084,31.95291 -668.64448,-8.2841 z"
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:22;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
|
||||||
<path
|
|
||||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:200.27253723;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
|
||||||
d="M 5838.2978,769.94261 C 6376.116,872.83289 7139.0243,1331.5903 7465.1249,1681.5177 7504.7714,1222.6917 7479.8737,647.62134 7219.823,301.61753 6825.4554,244.38036 6182.3921,581.63217 5838.2978,769.94261 z"
|
|
||||||
id="path9502"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="cccc" />
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="cccc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path3850"
|
|
||||||
d="M 3397.0185,739.47134 C 2859.2003,842.36162 2096.292,1301.119 1770.1914,1651.0464 1730.5449,1192.2204 1755.4426,617.15007 2015.4933,271.14626 2409.8609,213.90909 3052.9242,551.1609 3397.0185,739.47134 z"
|
|
||||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:200.27253723;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
|
||||||
</svg>
|
|
||||||
<!-- version: 20090314, original size: 8945 6260.6636, border: 3% -->
|
|
||||||
|
|
Before Width: | Height: | Size: 9.8 KiB |
After Width: | Height: | Size: 544 B |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 11 KiB |
|
@ -0,0 +1,19 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Kitty Explorer</title>
|
||||||
|
<script type="text/javascript" src="kitty.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function meow() {
|
||||||
|
c = document.getElementById("kitty")
|
||||||
|
ctx = c.getContext("2d")
|
||||||
|
kitty(ctx, "#0088ff")
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener("load", meow)
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<canvas id="kitty" height="300" width="300" style="border: solid black 1px;">(meow)</canvas>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,355 @@
|
||||||
|
// This is kludged together from the output of http://www.professorcloud.com/svg-to-canvas/
|
||||||
|
// I saved as a 100×68.83 pixel SVG, then twiddled around with the prelude of the JS output.
|
||||||
|
// If you are reading this, there's probably a nicer converter out now.
|
||||||
|
// But this seems to work okay so it may not be worth the effort.
|
||||||
|
|
||||||
|
function kitty(ctx, kittyColor) {
|
||||||
|
|
||||||
|
var scaleBase = 0.1098503139616503
|
||||||
|
var scaleX = scaleBase * ctx.canvas.width / 100
|
||||||
|
var scaleY = scaleBase * ctx.canvas.height / 68.83
|
||||||
|
var scale = Math.min(scaleX, scaleY)
|
||||||
|
|
||||||
|
|
||||||
|
ctx.save();
|
||||||
|
ctx.scale(scale, scale);
|
||||||
|
ctx.translate(187.81991,187.81991);
|
||||||
|
ctx.strokeStyle = 'rgba(0,0,0,0)';
|
||||||
|
ctx.lineCap = 'butt';
|
||||||
|
ctx.lineJoin = 'miter';
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.save();
|
||||||
|
ctx.translate(0.22995231,-396.76901);
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = kittyColor;
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 20.37454605102539;
|
||||||
|
ctx.lineCap = "butt";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(263.23037,219.17781);
|
||||||
|
ctx.bezierCurveTo(209.09715,219.95058,155.19615,230.72191999999998,105.64392999999998,251.41147);
|
||||||
|
ctx.bezierCurveTo(105.57612999999998,251.43927000000002,105.47314999999999,251.38257000000002,105.40514999999998,251.41147);
|
||||||
|
ctx.bezierCurveTo(74.58948199999998,237.52258,40.50337099999997,225.86925000000002,15.867370999999977,229.44481000000002);
|
||||||
|
ctx.bezierCurveTo(-2.982406800000021,254.52492,-9.558406700000024,291.54425000000003,-10.397073000000024,327.57825);
|
||||||
|
ctx.bezierCurveTo(-68.96529500000003,384.63103,-109.75229000000002,464.09403000000003,-118.55874000000001,566.34569);
|
||||||
|
ctx.lineTo(-93.72685000000001,566.34569);
|
||||||
|
ctx.bezierCurveTo(-99.55329500000002,829.8689099999999,218.71792,826.24936,262.99159,825.16958);
|
||||||
|
ctx.bezierCurveTo(271.39515,824.9648,290.07180999999997,824.88991,314.80415,823.02069);
|
||||||
|
ctx.bezierCurveTo(331.29237,821.77436,350.61791999999997,819.6868,371.15326,816.3351399999999);
|
||||||
|
ctx.bezierCurveTo(376.28715,815.49736,381.38669999999996,814.48214,386.67314999999996,813.4700199999999);
|
||||||
|
ctx.bezierCurveTo(497.68913999999995,792.2149099999999,637.94381,730.7707999999999,621.6202499999999,549.8706899999999);
|
||||||
|
ctx.lineTo(660.7781399999999,549.8706899999999);
|
||||||
|
ctx.bezierCurveTo(649.6126999999999,467.2469199999999,617.1321399999999,400.28402999999986,571.4791399999999,348.58980999999983);
|
||||||
|
ctx.bezierCurveTo(572.5872599999999,307.2829199999998,567.21926,261.8263599999998,545.2146999999999,232.54880999999983);
|
||||||
|
ctx.bezierCurveTo(518.6728099999999,228.69657999999984,481.3090299999999,242.58857999999984,448.7526999999999,257.8581399999998);
|
||||||
|
ctx.bezierCurveTo(448.68599999999986,257.82703999999984,448.5803699999999,257.8892399999998,448.51391999999987,257.8581399999998);
|
||||||
|
ctx.bezierCurveTo(390.90069999999986,231.21335999999982,326.91391999999985,218.26880999999983,263.2303699999999,219.17780999999982);
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.translate(0.22995231,-396.76901);
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(45, 45, 45, 0.6745098039215687)";
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 20.37454605102539;
|
||||||
|
ctx.lineCap = "butt";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(263.23037,219.17781);
|
||||||
|
ctx.bezierCurveTo(209.02281,219.9517,155.01337,230.66592,105.40514999999999,251.41147);
|
||||||
|
ctx.bezierCurveTo(124.77393,260.14114,142.75193,269.80447000000004,156.26259,277.19836);
|
||||||
|
ctx.bezierCurveTo(101.54814999999999,287.66580999999996,23.972259999999977,334.24057999999997,-9.20318450000002,369.84013999999996);
|
||||||
|
ctx.bezierCurveTo(-10.36285100000002,356.41981,-10.73551800000002,342.11868999999996,-10.39707300000002,327.57824999999997);
|
||||||
|
ctx.bezierCurveTo(-68.96529500000003,384.63102999999995,-109.75229000000002,464.09403,-118.55874000000001,566.34569);
|
||||||
|
ctx.lineTo(-41.675629000000015,566.34569);
|
||||||
|
ctx.lineTo(-41.675629000000015,439.32147);
|
||||||
|
ctx.bezierCurveTo(96.42092599999998,476.58558,501.82402999999994,478.74613999999997,577.4483700000001,446.96202999999997);
|
||||||
|
ctx.lineTo(579.5972600000001,549.87069);
|
||||||
|
ctx.lineTo(660.7781400000001,549.87069);
|
||||||
|
ctx.bezierCurveTo(649.6127000000001,467.24692,617.1321400000002,400.28403,571.4791400000001,348.58980999999994);
|
||||||
|
ctx.bezierCurveTo(571.2552600000001,356.94624999999996,570.9641400000002,365.08991999999995,570.2852600000001,372.94402999999994);
|
||||||
|
ctx.bezierCurveTo(537.1098100000002,337.34457999999995,459.5339200000001,290.76980999999995,404.8194800000001,280.3023599999999);
|
||||||
|
ctx.bezierCurveTo(416.6672600000001,273.81846999999993,432.09703000000013,265.6700299999999,448.7527000000001,257.85813999999993);
|
||||||
|
ctx.bezierCurveTo(391.08781,231.15081,326.98737,218.2677,263.23037,219.17781);
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 20.37454605102539;
|
||||||
|
ctx.lineCap = "butt";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(-41.675629,439.32136);
|
||||||
|
ctx.lineTo(-41.675629,566.34569);
|
||||||
|
ctx.lineTo(-93.72685,566.34569);
|
||||||
|
ctx.bezierCurveTo(-99.55329499999999,829.8689099999999,218.71792,826.24936,262.9917,825.16958);
|
||||||
|
ctx.bezierCurveTo(307.81048,824.07647,646.49437,825.52791,621.62037,549.87069);
|
||||||
|
ctx.lineTo(579.59726,549.87069);
|
||||||
|
ctx.lineTo(577.44837,446.96191999999996);
|
||||||
|
ctx.bezierCurveTo(501.82413999999994,478.74602999999996,96.42092599999995,476.58547,-41.67562900000007,439.32135999999997);
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.transform(0.1017341,0,0,0.1017341,-189.21074,758.53069);
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 200.2725372314453;
|
||||||
|
ctx.lineCap = "round";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(5838.2978,-4701.1388);
|
||||||
|
ctx.bezierCurveTo(6376.116,-4598.2485,7139.0243,-4139.491099999999,7465.124900000001,-3789.5636999999997);
|
||||||
|
ctx.bezierCurveTo(7504.7714000000005,-4248.3897,7479.873700000001,-4823.4601,7219.823,-5169.4639);
|
||||||
|
ctx.bezierCurveTo(6825.455400000001,-5226.701,6182.3921,-4889.4492,5838.2978,-4701.1388);
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 200.2725372314453;
|
||||||
|
ctx.lineCap = "round";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(3397.0185,-4731.6101);
|
||||||
|
ctx.bezierCurveTo(2859.2003,-4628.7198,2096.2920000000004,-4169.9624,1770.1914000000002,-3820.035);
|
||||||
|
ctx.bezierCurveTo(1730.5449,-4278.861,1755.4426,-4853.9313,2015.4933,-5199.9351);
|
||||||
|
ctx.bezierCurveTo(2409.8609,-5257.172299999999,3052.9242000000004,-4919.9205,3397.0185,-4731.6101);
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "#000000";
|
||||||
|
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(52.032037,620.50691);
|
||||||
|
ctx.bezierCurveTo(52.032037,620.50691,55.796148,645.0247999999999,71.66670400000001,650.0097999999999);
|
||||||
|
ctx.bezierCurveTo(71.66670400000001,650.0097999999999,79.093259,652.2479099999999,86.621593,649.2976899999999);
|
||||||
|
ctx.bezierCurveTo(86.621593,649.2976899999999,93.946481,646.4491399999998,98.727926,639.8363599999999);
|
||||||
|
ctx.bezierCurveTo(98.727926,639.8363599999999,103.30604,633.4271399999999,104.22158999999999,623.76236);
|
||||||
|
ctx.bezierCurveTo(104.22158999999999,623.76236,104.93369999999999,617.0479099999999,103.91636999999999,606.1623599999999);
|
||||||
|
ctx.bezierCurveTo(103.91636999999999,606.1623599999999,102.39036999999999,598.6340299999999,98.42281499999999,592.5300299999999);
|
||||||
|
ctx.bezierCurveTo(98.42281499999999,592.5300299999999,93.94648099999999,585.61214,87.63892599999998,582.7635799999999);
|
||||||
|
ctx.bezierCurveTo(87.63892599999998,582.7635799999999,39.91114799999998,566.1871399999999,35.457925999999986,571.0994699999999);
|
||||||
|
ctx.bezierCurveTo(31.004703999999986,576.0117999999999,65.93703699999999,585.0342499999999,61.053814999999986,587.5775799999999);
|
||||||
|
ctx.bezierCurveTo(61.053814999999986,587.5775799999999,49.38692599999999,596.3959099999998,52.03203699999999,620.50691);
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "#000000";
|
||||||
|
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(297.48526,699.49191);
|
||||||
|
ctx.bezierCurveTo(297.48526,699.49191,285.37881,707.63058,268.38926,707.0202499999999);
|
||||||
|
ctx.bezierCurveTo(268.38926,707.0202499999999,253.23091999999997,706.5115799999999,239.08980999999997,699.5936899999999);
|
||||||
|
ctx.bezierCurveTo(239.08980999999997,699.5936899999999,231.76503999999997,695.93125,228.40780999999998,688.5045799999999);
|
||||||
|
ctx.bezierCurveTo(228.40780999999998,688.5045799999999,225.15225999999998,681.3832499999999,226.27137,672.5323599999999);
|
||||||
|
ctx.bezierCurveTo(226.27137,672.5323599999999,227.18692,665.8179099999999,230.54415,660.3242499999999);
|
||||||
|
ctx.bezierCurveTo(230.54415,660.3242499999999,234.41004,654.3219099999999,240.3107,651.37169);
|
||||||
|
ctx.bezierCurveTo(240.3107,651.37169,251.70492,643.84336,267.77881,644.1485799999999);
|
||||||
|
ctx.bezierCurveTo(267.77881,644.1485799999999,283.44592,644.4537999999999,295.55226000000005,651.6769099999999);
|
||||||
|
ctx.bezierCurveTo(295.55226000000005,651.6769099999999,301.24937000000006,654.3219099999999,305.11526000000003,659.9173599999999);
|
||||||
|
ctx.bezierCurveTo(305.11526000000003,659.9173599999999,308.87948000000006,665.4110299999999,309.69337,671.9219099999999);
|
||||||
|
ctx.bezierCurveTo(309.69337,671.9219099999999,310.71070000000003,680.3659099999999,307.45515,687.5890299999999);
|
||||||
|
ctx.bezierCurveTo(307.45515,687.5890299999999,304.30137,694.8121399999999,297.48526,699.4919099999998);
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "#d35f5f";
|
||||||
|
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(271.03437,661.23991);
|
||||||
|
ctx.bezierCurveTo(271.03437,661.23991,281.51292,662.0538,287.10837000000004,668.66647);
|
||||||
|
ctx.bezierCurveTo(287.10837000000004,668.66647,289.14304000000004,670.19247,289.95692,672.93925);
|
||||||
|
ctx.lineTo(290.97426,678.02603);
|
||||||
|
ctx.bezierCurveTo(290.97426,678.02603,290.87204,681.07803,288.63437,683.72314);
|
||||||
|
ctx.bezierCurveTo(288.63437,683.72314,286.5997,686.16469,283.64937,687.4872499999999);
|
||||||
|
ctx.bezierCurveTo(283.64937,687.4872499999999,275.81581,691.4549099999999,265.84592,690.9462499999998);
|
||||||
|
ctx.bezierCurveTo(265.84592,690.9462499999998,255.57080999999997,690.5393599999999,248.65281,685.4525799999999);
|
||||||
|
ctx.bezierCurveTo(248.65281,685.4525799999999,242.65059,679.75547,244.78691999999998,674.2617999999999);
|
||||||
|
ctx.bezierCurveTo(244.78691999999998,674.2617999999999,245.49915,671.3115799999999,247.83903999999998,668.3612499999999);
|
||||||
|
ctx.bezierCurveTo(247.83903999999998,668.3612499999999,250.07715,665.5126899999999,252.82392,663.98669);
|
||||||
|
ctx.bezierCurveTo(252.82392,663.98669,261.98004,660.42603,271.03436999999997,661.23991);
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "#000000";
|
||||||
|
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(472.46781,621.05491);
|
||||||
|
ctx.bezierCurveTo(472.46781,621.05491,468.70369999999997,645.5727999999999,452.83315,650.5577999999999);
|
||||||
|
ctx.bezierCurveTo(452.83315,650.5577999999999,445.40659,652.7959099999999,437.87826,649.8456899999999);
|
||||||
|
ctx.bezierCurveTo(437.87826,649.8456899999999,430.55337000000003,646.9971399999998,425.77192,640.3843599999999);
|
||||||
|
ctx.bezierCurveTo(425.77192,640.3843599999999,421.19392000000005,633.9751399999999,420.27826000000005,624.31036);
|
||||||
|
ctx.bezierCurveTo(420.27826000000005,624.31036,419.56615000000005,617.5959099999999,420.58348000000007,606.7103599999999);
|
||||||
|
ctx.bezierCurveTo(420.58348000000007,606.7103599999999,422.1094800000001,599.1820299999999,426.0771500000001,593.0780299999999);
|
||||||
|
ctx.bezierCurveTo(426.0771500000001,593.0780299999999,430.5533700000001,586.16014,436.8609200000001,583.3115799999999);
|
||||||
|
ctx.bezierCurveTo(436.8609200000001,583.3115799999999,484.5887000000001,566.7351399999999,489.04192000000006,571.6474699999999);
|
||||||
|
ctx.bezierCurveTo(493.49514000000005,576.5597999999999,458.56281000000007,585.5822499999999,463.44603000000006,588.1255799999999);
|
||||||
|
ctx.bezierCurveTo(463.44603000000006,588.1255799999999,475.1129200000001,596.9439099999998,472.46781000000004,621.05491);
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 20.37454605102539;
|
||||||
|
ctx.lineCap = "round";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(581.84259,635.47703);
|
||||||
|
ctx.bezierCurveTo(605.9547,636.57303,667.3308099999999,646.43714,687.05892,651.91714);
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 20.37454605102539;
|
||||||
|
ctx.lineCap = "round";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(550.05848,705.62125);
|
||||||
|
ctx.bezierCurveTo(573.0745900000001,706.71725,635.54681,734.1173600000001,662.94681,749.4614700000001);
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 20.37454605102539;
|
||||||
|
ctx.lineCap = "round";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(569.78648,573.0048);
|
||||||
|
ctx.bezierCurveTo(601.5707,563.1408,692.53892,559.8528,712.26703,563.1408);
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 20.37454605102539;
|
||||||
|
ctx.lineCap = "round";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(3.1525932,710.00536);
|
||||||
|
ctx.bezierCurveTo(-22.055518,715.48536,-79.047739,745.07747,-109.73585,772.47758);
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 20.37454605102539;
|
||||||
|
ctx.lineCap = "round";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(-34.111629,654.10914);
|
||||||
|
ctx.bezierCurveTo(-62.607629,656.30114,-114.11985000000001,663.9731400000001,-137.13596,674.93325);
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 20.37454605102539;
|
||||||
|
ctx.lineCap = "round";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(-38.495629,586.15692);
|
||||||
|
ctx.bezierCurveTo(-76.85574,575.1968,-157.95996,580.6768,-177.68807,589.44491);
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 20.37454605102539;
|
||||||
|
ctx.lineCap = "butt";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(-41.675629,439.32136);
|
||||||
|
ctx.lineTo(-41.675629,566.34569);
|
||||||
|
ctx.lineTo(-93.72685,566.34569);
|
||||||
|
ctx.bezierCurveTo(-99.55329499999999,829.8689099999999,218.71792,826.24936,262.9917,825.16958);
|
||||||
|
ctx.bezierCurveTo(307.81048,824.07647,646.49437,825.52791,621.62037,549.87069);
|
||||||
|
ctx.lineTo(579.59726,549.87069);
|
||||||
|
ctx.lineTo(577.44837,446.96191999999996);
|
||||||
|
ctx.bezierCurveTo(501.82413999999994,478.74602999999996,96.42092599999995,476.58547,-41.67562900000007,439.32135999999997);
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "#d7d7d7";
|
||||||
|
ctx.strokeStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(194.05837,466.43958);
|
||||||
|
ctx.bezierCurveTo(194.05837,430.27146999999997,215.66548,237.52380999999997,227.72147999999999,221.08369999999996);
|
||||||
|
ctx.lineTo(351.55826,226.78069999999997);
|
||||||
|
ctx.bezierCurveTo(340.59815000000003,257.46880999999996,319.89015,411.05714,325.37015,469.14536);
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.save();
|
||||||
|
ctx.fillStyle = "rgba(0, 0, 0, 0)";
|
||||||
|
ctx.strokeStyle = "#000000";
|
||||||
|
ctx.lineWidth = 20.37454605102539;
|
||||||
|
ctx.lineCap = "butt";
|
||||||
|
ctx.lineJoin = "round";
|
||||||
|
ctx.miterLimit = 4;
|
||||||
|
ctx.beginPath();
|
||||||
|
ctx.moveTo(263.23037,219.17781);
|
||||||
|
ctx.bezierCurveTo(209.02281,219.9517,155.01337,230.66592,105.40514999999999,251.41147);
|
||||||
|
ctx.bezierCurveTo(124.77393,260.14114,142.75193,269.80447000000004,156.26259,277.19836);
|
||||||
|
ctx.bezierCurveTo(101.54814999999999,287.66580999999996,23.972259999999977,334.24057999999997,-9.20318450000002,369.84013999999996);
|
||||||
|
ctx.bezierCurveTo(-10.36285100000002,356.41981,-10.73551800000002,342.11868999999996,-10.39707300000002,327.57824999999997);
|
||||||
|
ctx.bezierCurveTo(-68.96529500000003,384.63102999999995,-109.75229000000002,464.09403,-118.55874000000001,566.34569);
|
||||||
|
ctx.lineTo(-41.675629000000015,566.34569);
|
||||||
|
ctx.lineTo(-41.675629000000015,439.32147);
|
||||||
|
ctx.bezierCurveTo(96.42092599999998,476.58558,501.82402999999994,478.74613999999997,577.4483700000001,446.96202999999997);
|
||||||
|
ctx.lineTo(579.5972600000001,549.87069);
|
||||||
|
ctx.lineTo(660.7781400000001,549.87069);
|
||||||
|
ctx.bezierCurveTo(649.6127000000001,467.24692,617.1321400000002,400.28403,571.4791400000001,348.58980999999994);
|
||||||
|
ctx.bezierCurveTo(571.2552600000001,356.94624999999996,570.9641400000002,365.08991999999995,570.2852600000001,372.94402999999994);
|
||||||
|
ctx.bezierCurveTo(537.1098100000002,337.34457999999995,459.5339200000001,290.76980999999995,404.8194800000001,280.3023599999999);
|
||||||
|
ctx.bezierCurveTo(416.6672600000001,273.81846999999993,432.09703000000013,265.6700299999999,448.7527000000001,257.85813999999993);
|
||||||
|
ctx.bezierCurveTo(391.08781,231.15081,326.98737,218.2677,263.23037,219.17781);
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.fill();
|
||||||
|
ctx.stroke();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.restore();
|
||||||
|
ctx.restore();
|
||||||
|
};
|
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,184 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) by Marsupilami -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
version="1.0"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
viewBox="-187.81991 -187.81991 910.21878 910.32965"
|
||||||
|
id="svg10326"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
sodipodi:docname="kitty.svg"
|
||||||
|
inkscape:export-filename="/home/neale/src/scoreboard/res/kitty-k.png"
|
||||||
|
inkscape:export-xdpi="226.56"
|
||||||
|
inkscape:export-ydpi="226.56">
|
||||||
|
<metadata
|
||||||
|
id="metadata18">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1123"
|
||||||
|
inkscape:window-height="791"
|
||||||
|
id="namedview16"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:object-paths="true"
|
||||||
|
inkscape:zoom="5.7699913"
|
||||||
|
inkscape:cx="49.511891"
|
||||||
|
inkscape:cy="51.063088"
|
||||||
|
inkscape:window-x="166"
|
||||||
|
inkscape:window-y="6"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="g3131"
|
||||||
|
units="px" />
|
||||||
|
<defs
|
||||||
|
id="defs10328" />
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Background"
|
||||||
|
style="display:inline"
|
||||||
|
transform="translate(0,-254.89235)">
|
||||||
|
<path
|
||||||
|
style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:18.33709145;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||||
|
d="m 263.63628,249.48375 c -48.7199,0.6955 -97.2308,10.3897 -141.8278,29.0103 -0.061,0.025 -0.1537,-0.026 -0.2149,0 -27.7341,-12.5 -58.4116,-22.988 -80.584,-19.77 -16.9648,22.5721 -22.8832,55.8895 -23.638,88.3201 -52.7114,51.3475 -89.4197,122.8642 -97.3455,214.8907 l 22.3487,0 c -5.2438,237.1709 281.2003,233.9133 321.0466,232.9415 7.5632,-0.1843 24.3722,-0.2517 46.6313,-1.934 14.8394,-1.1217 32.2324,-3.0005 50.7142,-6.017 4.6205,-0.754 9.2101,-1.6677 13.9679,-2.5786 99.9144,-19.1296 226.1436,-74.4293 211.4524,-237.2394 l 35.2421,0 c -10.0489,-74.3614 -39.2814,-134.628 -80.3691,-181.1528 0.9973,-37.1762 -3.8339,-78.0871 -23.638,-104.4369 -23.8877,-3.467 -57.5151,9.0358 -86.8158,22.7784 -0.06,-0.028 -0.1551,0.028 -0.2149,0 -51.8519,-23.9803 -109.44,-35.6304 -166.7552,-34.8123 z"
|
||||||
|
id="path3770-1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:label="Foreground"
|
||||||
|
id="g3131"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
style="display:inline"
|
||||||
|
transform="translate(0,-254.89235)">
|
||||||
|
<path
|
||||||
|
style="fill:#2d2d2d;fill-opacity:0.67543856;stroke:#000000;stroke-width:18.33709145;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||||
|
d="m 263.63628,249.48375 c -48.7868,0.6965 -97.3953,10.3393 -142.0427,29.0103 17.4319,7.8567 33.6121,16.5537 45.7717,23.2082 -49.243,9.4207 -119.0613,51.338 -148.9192,83.3776 -1.0437,-12.0783 -1.3791,-24.9493 -1.0745,-38.0357 -52.7114,51.3475 -89.4197,122.8642 -97.3455,214.8907 l 69.1948,0 0,-114.3218 c 124.2869,33.5377 489.1497,35.4822 557.2116,6.8765 l 1.934,92.6178 73.0628,0 c -10.0489,-74.3614 -39.2814,-134.628 -80.3691,-181.1528 -0.2015,7.5208 -0.4635,14.8501 -1.0745,21.9188 -29.8579,-32.0395 -99.6762,-73.9568 -148.9192,-83.3775 10.663,-5.8355 24.5498,-13.1691 39.5399,-20.1998 -51.8984,-24.0366 -109.5888,-35.6314 -166.9701,-34.8123 z"
|
||||||
|
id="path3770"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||||
|
d="m -10.77912,447.61295 0,114.3219 -46.8461,0 c -5.2438,237.1709 281.2003,233.9133 321.0467,232.9415 40.3369,-0.9838 345.1524,0.3225 322.7658,-247.769 l -37.8208,0 -1.934,-92.6179 c -68.0618,28.6057 -432.9247,26.6612 -557.2116,-6.8765 z"
|
||||||
|
id="path3836" />
|
||||||
|
<g
|
||||||
|
transform="matrix(0.09156069,0,0,0.09156069,-143.56072,734.90135)"
|
||||||
|
id="g3003"
|
||||||
|
style="fill:none;display:inline">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:200.27253723;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 5838.2978,-4701.1388 c 537.8182,102.8903 1300.7265,561.6477 1626.8271,911.5751 39.6465,-458.826 14.7488,-1033.8964 -245.3019,-1379.9002 -394.3676,-57.2371 -1037.4309,280.0147 -1381.5252,468.3251 z"
|
||||||
|
id="path9502"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cccc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3850"
|
||||||
|
d="m 3397.0185,-4731.6101 c -537.8182,102.8903 -1300.7265,561.6477 -1626.8271,911.5751 -39.6465,-458.826 -14.7488,-1033.8963 245.3019,-1379.9001 394.3676,-57.2372 1037.4309,280.0146 1381.5252,468.325 z"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:200.27253723;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
d="m 73.55778,610.67995 c 0,0 3.3877,22.0661 17.6712,26.5526 0,0 6.6839,2.0143 13.4594,-0.6409 0,0 6.5924,-2.5637 10.8957,-8.5152 0,0 4.1203,-5.7683 4.9443,-14.4666 0,0 0.6409,-6.043 -0.2747,-15.84 0,0 -1.3734,-6.7755 -4.9442,-12.2691 0,0 -4.0287,-6.2261 -9.7055,-8.7898 0,0 -42.955,-14.9188 -46.9629,-10.4977 -4.0079,4.4211 27.4312,12.5413 23.0363,14.8303 0,0 -10.5002,7.9365 -8.1196,29.6364"
|
||||||
|
id="path2995"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:none;display:inline"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cccccccczcc" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:none;display:inline"
|
||||||
|
id="path9508"
|
||||||
|
d="m 294.46568,681.76645 c 0,0 -10.8958,7.3248 -26.1864,6.7755 0,0 -13.6425,-0.4578 -26.3695,-6.6839 0,0 -6.5923,-3.2962 -9.6138,-9.9802 0,0 -2.93,-6.4092 -1.9228,-14.375 0,0 0.824,-6.043 3.8455,-10.9873 0,0 3.4793,-5.4021 8.7899,-8.0573 0,0 10.2548,-6.7755 24.7213,-6.5008 0,0 14.1004,0.2747 24.9961,6.7755 0,0 5.1274,2.3805 8.6067,7.4164 0,0 3.3878,4.9443 4.1203,10.8041 0,0 0.9156,7.5996 -2.0144,14.1004 0,0 -2.8384,6.5008 -8.9729,10.7126" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
style="fill:#d35f5f;fill-opacity:1;stroke:none;display:inline"
|
||||||
|
id="path9510"
|
||||||
|
d="m 270.65988,647.33965 c 0,0 9.4307,0.7325 14.4666,6.6839 0,0 1.8312,1.3734 2.5637,3.8455 l 0.9156,4.5781 c 0,0 -0.092,2.7468 -2.1059,5.1274 0,0 -1.8312,2.1974 -4.4865,3.3877 0,0 -7.0502,3.5709 -16.0231,3.1131 0,0 -9.2476,-0.3662 -15.4738,-4.9443 0,0 -5.402,-5.1274 -3.4793,-10.0717 0,0 0.641,-2.6552 2.7469,-5.3105 0,0 2.0143,-2.5637 4.4864,-3.9371 0,0 8.2405,-3.2046 16.3894,-2.4721" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccccccczcc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:none;display:inline"
|
||||||
|
id="path9512"
|
||||||
|
d="m 451.94998,611.17315 c 0,0 -3.3877,22.0661 -17.6712,26.5526 0,0 -6.6839,2.0143 -13.4594,-0.6409 0,0 -6.5924,-2.5637 -10.8957,-8.5152 0,0 -4.1202,-5.7683 -4.9443,-14.4666 0,0 -0.6409,-6.043 0.2747,-15.84 0,0 1.3734,-6.7755 4.9443,-12.2691 0,0 4.0286,-6.2261 9.7054,-8.7898 0,0 42.955,-14.9188 46.9629,-10.4977 4.0079,4.4211 -27.4312,12.5413 -23.0363,14.8303 0,0 10.5002,7.9365 8.1196,29.6364" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3838"
|
||||||
|
d="m 550.38728,624.15305 c 21.7009,0.9864 76.9394,9.8641 94.6947,14.7961"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3840"
|
||||||
|
d="m 521.78158,687.28285 c 20.7145,0.9864 76.9395,25.6465 101.5995,39.4562"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3842"
|
||||||
|
d="m 539.53678,567.92805 c 28.6058,-8.8776 110.4772,-11.8368 128.2325,-8.8776"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3844"
|
||||||
|
d="m 29.56628,691.22855 c -22.6873,4.932 -73.9803,31.5649 -101.5996,56.225"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3846"
|
||||||
|
d="m -3.97152,640.92195 c -25.6464,1.9728 -72.0074,8.8776 -92.7219,18.7417"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3848"
|
||||||
|
d="m -7.91712,579.76495 c -34.5241,-9.8641 -107.5179,-4.9321 -125.2732,2.9592"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3796"
|
||||||
|
d="m -10.77912,447.61295 0,114.3219 -46.8461,0 c -5.2438,237.1709 281.2003,233.9133 321.0467,232.9415 40.3369,-0.9838 345.1524,0.3225 322.7658,-247.769 l -37.8208,0 -1.934,-92.6179 c -68.0618,28.6057 -432.9247,26.6612 -557.2116,-6.8765 z"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3852"
|
||||||
|
d="m 201.38148,472.01935 c 0,-32.5513 19.4464,-206.0242 30.2968,-220.8203 l 111.4531,5.1273 c -9.8641,27.6193 -28.5013,165.8488 -23.5693,218.1282 z"
|
||||||
|
style="fill:#d7d7d7;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline" />
|
||||||
|
<path
|
||||||
|
id="path3817"
|
||||||
|
d="m 263.63628,249.48375 c -48.7868,0.6965 -97.3953,10.3393 -142.0427,29.0103 17.4319,7.8567 33.6121,16.5537 45.7717,23.2082 -49.243,9.4207 -119.0613,51.338 -148.9192,83.3776 -1.0437,-12.0783 -1.3791,-24.9493 -1.0745,-38.0357 -52.7114,51.3475 -89.4197,122.8642 -97.3455,214.8907 l 69.1948,0 0,-114.3218 c 124.2869,33.5377 489.1497,35.4822 557.2116,6.8765 l 1.934,92.6178 73.0628,0 c -10.0489,-74.3614 -39.2814,-134.628 -80.3691,-181.1528 -0.2015,7.5208 -0.4635,14.8501 -1.0745,21.9188 -29.8579,-32.0395 -99.6762,-73.9568 -148.9192,-83.3775 10.663,-5.8355 24.5498,-13.1691 39.5399,-20.1998 -51.8984,-24.0366 -109.5888,-35.6314 -166.9701,-34.8123 z"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:18.33709145;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g3123"
|
||||||
|
transform="matrix(0.09156068,0,0,0.09156068,-143.56072,480.00905)"
|
||||||
|
style="display:inline" />
|
||||||
|
</svg>
|
||||||
|
<!-- version: 20090314, original size: 8945 6260.6636, border: 3% -->
|
||||||
|
|
After Width: | Height: | Size: 12 KiB |
143
res/others.html
|
@ -1,143 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Free Derby Scoreboard Software</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<link rel="stylesheet" type="text/css" href="style.css">
|
|
||||||
<style type="text/css">
|
|
||||||
table {
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
td {
|
|
||||||
border: solid white 1px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Free Derby Scoreboard Software</h1>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
This is a list of no-cost roller derby scoreboard software I have
|
|
||||||
found. Mine is at the top, because I think it's the best. I might
|
|
||||||
be wrong, though! Try the rest out and see for yourself.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<th>Name</th>
|
|
||||||
<th>Source?</th>
|
|
||||||
<th>Platform</th>
|
|
||||||
<th>Windows</th>
|
|
||||||
<th>Notes</th>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><a href="http://woozle.org/scoreboard/">LADD Scoreboard</a></td>
|
|
||||||
<td>YES</td>
|
|
||||||
<td>JavaScript (web browser)</td>
|
|
||||||
<td>1</td>
|
|
||||||
<td>Easy to operate, easy to read; also, I wrote it :)</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><a href="http://poang.gg/">POÄNG</a> (formerly <a href="http://www.david.kleinschmidt.name/qcrg-scoreboard/">QCRG Scoreboard</a>)</td>
|
|
||||||
<td>YES</td>
|
|
||||||
<td>Adobe AIR</td>
|
|
||||||
<td>2</td>
|
|
||||||
<td>Nice clean layout</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><a href="http://sourceforge.net/projects/derbyscoreboard/">CRD Scoreboard</a></td>
|
|
||||||
<td>YES</td>
|
|
||||||
<td>Java</td>
|
|
||||||
<td>2</td>
|
|
||||||
<td>Interesting cli/srv model allowing multiple operators on a LAN</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><a href="http://labs.metro-six.com/derbyscore/">Derby Score</a></td>
|
|
||||||
<td>YES</td>
|
|
||||||
<td>Java</td>
|
|
||||||
<td>2</td>
|
|
||||||
<td>Could use some visual polish, but I like the author's attitude</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><a href="http://rdnation.com/roller-derby-scoreboard">Thor's Hammer</a></td>
|
|
||||||
<td>no</td>
|
|
||||||
<td>Windows</td>
|
|
||||||
<td>2</td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><a href="http://www.rollerderbyproductions.com/">JamTracker</a></td>
|
|
||||||
<td>no</td>
|
|
||||||
<td>Adobe AIR</td>
|
|
||||||
<td>2</td>
|
|
||||||
<td>Busy layout</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><a href="http://www.rinxter.com/">Rinxter</a></td>
|
|
||||||
<td>no?</td>
|
|
||||||
<td>Windows</td>
|
|
||||||
<td>2</td>
|
|
||||||
<td>If Oracle made a scoreboard, this would be it. It's <strong>massive</strong>: generates reports!</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><a href="http://www.zebrahuddle.com/index.php?action=downloads;sa=view&id=1">DerbyBoard</a></td>
|
|
||||||
<td>no</td>
|
|
||||||
<td>Windows</td>
|
|
||||||
<td>2</td>
|
|
||||||
<td>What an incredible waste of screen real estate! I hope you play somewhere very dark.</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><a href="http://www.pcscoreboards.com/rollerderbyscoreboardpro/">Scoreboard Pro</a></td>
|
|
||||||
<td>no</td>
|
|
||||||
<td>Windows</td>
|
|
||||||
<td>2</td>
|
|
||||||
<td>The author does not appear to have read WFTDA's rules.</td>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<dl>
|
|
||||||
<dt>Source?</dt>
|
|
||||||
<dd>
|
|
||||||
Whether you can download and modify the source code. Important to
|
|
||||||
many nerds like myself.
|
|
||||||
</dd>
|
|
||||||
|
|
||||||
<dt>Platform</dt>
|
|
||||||
<dd>
|
|
||||||
What you need to buy/install before you can run it.
|
|
||||||
</dd>
|
|
||||||
|
|
||||||
<dt>Windows</dt>
|
|
||||||
<dd>
|
|
||||||
<dl>
|
|
||||||
<dt>1</dt>
|
|
||||||
<dd>
|
|
||||||
Operator interacts directly with the image on the projector.
|
|
||||||
What you see is what the audience sees.
|
|
||||||
</dd>
|
|
||||||
<dt>2</dt>
|
|
||||||
<dd>
|
|
||||||
Separate interface for operator and audience, like an old-school
|
|
||||||
7-panel display scoreboard. What you see is a control panel;
|
|
||||||
the audience sees something different.
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
|
|
||||||
<address>
|
|
||||||
Neale Pickett <<a href="mailto:neale@woozle.org">neale@woozle.org</a>>
|
|
||||||
</address>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
161
res/penalties.js
|
@ -1,161 +0,0 @@
|
||||||
/***********************************
|
|
||||||
* Penalties
|
|
||||||
*/
|
|
||||||
function penalties (team) {
|
|
||||||
var table = document.getElementById("penalties-" + team);
|
|
||||||
|
|
||||||
var majors = table.getElementsByClassName("majors")[0];
|
|
||||||
var sk8ers = table.getElementsByClassName("sk8ers")[0];
|
|
||||||
|
|
||||||
var majdiv = majors.getElementsByTagName("div");
|
|
||||||
var sk8div = sk8ers.getElementsByTagName("div");
|
|
||||||
|
|
||||||
var ret = [];
|
|
||||||
|
|
||||||
for (var i = 0; i < 20; i += 1) {
|
|
||||||
ret.push([sk8div[i].text,
|
|
||||||
majdiv[i].value || 0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
function penalties_save () {
|
|
||||||
var ls = localStorage || {};
|
|
||||||
|
|
||||||
var name_a = document.getElementById("name-a").innerHTML;
|
|
||||||
var name_b = document.getElementById("name-b").innerHTML;
|
|
||||||
|
|
||||||
var pen_a = JSON.stringify(penalties("a"));
|
|
||||||
var pen_b = JSON.stringify(penalties("b"));
|
|
||||||
|
|
||||||
ls["rdsb_penalties_a"] = pen_a;
|
|
||||||
ls["rdsb_penalties_b"] = pen_b;
|
|
||||||
|
|
||||||
ls["rdsb_roster " + name_a] = pen_a;
|
|
||||||
ls["rdsb_roster " + name_b] = pen_b;
|
|
||||||
}
|
|
||||||
|
|
||||||
function penalties_setdiv (div, value) {
|
|
||||||
if (div.text == undefined) {
|
|
||||||
div.value = value;
|
|
||||||
div.style.height = (value||0) + "em";
|
|
||||||
div.innerHTML = value?value:"";
|
|
||||||
} else {
|
|
||||||
div.text = value;
|
|
||||||
div.innerHTML = value?"":"•";
|
|
||||||
for (var i in value) {
|
|
||||||
var c = value[i];
|
|
||||||
// XXX: use CSS "text-wrap: unrestricted" when supported
|
|
||||||
div.innerHTML += c + " ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function penalties_load (team, values) {
|
|
||||||
var table = document.getElementById("penalties-" + team);
|
|
||||||
|
|
||||||
var majors = table.getElementsByClassName("majors")[0];
|
|
||||||
var sk8ers = table.getElementsByClassName("sk8ers")[0];
|
|
||||||
|
|
||||||
var majdiv = majors.getElementsByTagName("div");
|
|
||||||
var sk8div = sk8ers.getElementsByTagName("div");
|
|
||||||
|
|
||||||
for (var i = 0; i < values.length; i += 1) {
|
|
||||||
penalties_setdiv(sk8div[i], values[i][0]);
|
|
||||||
penalties_setdiv(majdiv[i], values[i][2]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function penalties_setTeamName (team, name) {
|
|
||||||
var ls = localStorage || {};
|
|
||||||
var roster_in = ls["rdsb_roster " + name];
|
|
||||||
var roster_out = [];
|
|
||||||
|
|
||||||
if (roster_in) {
|
|
||||||
roster_in = JSON.parse(roster_in);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i = 0; i < 20; i += 1) {
|
|
||||||
if (! roster_in) {
|
|
||||||
roster_out.push(["", 0, 0]);
|
|
||||||
} else {
|
|
||||||
roster_out.push([roster_in[i][0], 0, 0])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
penalties_load(team, roster_out);
|
|
||||||
}
|
|
||||||
|
|
||||||
function penalties_click (event) {
|
|
||||||
var element = event.currentTarget;
|
|
||||||
var pops = element.parentNode;
|
|
||||||
var div = element.getElementsByTagName("div")[0];
|
|
||||||
var inc = event.shiftKey?-1:1;
|
|
||||||
var val;
|
|
||||||
|
|
||||||
if (pops.className == "majors") {
|
|
||||||
val = ((div.value || 0) + inc + 9) % 9;
|
|
||||||
} else if (state == SETUP) {
|
|
||||||
val = prompt("Enter skater number", div.text);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val != undefined) {
|
|
||||||
penalties_setdiv(div, val);
|
|
||||||
penalties_save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove penalties area if there are no players set
|
|
||||||
function penalties_duck () {
|
|
||||||
var pen = document.getElementById("penalties");
|
|
||||||
var a = penalties("a");
|
|
||||||
var b = penalties("b");
|
|
||||||
|
|
||||||
for (var i = 0; i < 20; i += 1) {
|
|
||||||
if (a[i][0] || b[i][0]) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pen.style.display = "none";
|
|
||||||
}
|
|
||||||
|
|
||||||
function penalties_init () {
|
|
||||||
var ls = localStorage || {};
|
|
||||||
|
|
||||||
// Populate ALL ROWS AT ONCE because I'm crazy like that.
|
|
||||||
for (var j = 0; j < 2; j += 1) {
|
|
||||||
var team = (j==0)?"a":"b";
|
|
||||||
|
|
||||||
var table = document.getElementById("penalties-" + team);
|
|
||||||
var majors = table.getElementsByClassName("majors")[0];
|
|
||||||
var sk8ers = table.getElementsByClassName("sk8ers")[0];
|
|
||||||
|
|
||||||
for (var i = 0; i < 20; i += 1) {
|
|
||||||
var td;
|
|
||||||
var div;
|
|
||||||
|
|
||||||
var majdiv = document.createElement("div");
|
|
||||||
td = document.createElement("td");
|
|
||||||
td.onclick = penalties_click;
|
|
||||||
td.appendChild(majdiv);
|
|
||||||
majors.appendChild(td);
|
|
||||||
|
|
||||||
|
|
||||||
div = document.createElement("div");
|
|
||||||
div.text = "";
|
|
||||||
div.appendChild(document.createTextNode("•"));
|
|
||||||
td = document.createElement("td");
|
|
||||||
td.onclick = penalties_click;
|
|
||||||
td.appendChild(div);
|
|
||||||
sk8ers.appendChild(td);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ls.rdsb_penalties_a) {
|
|
||||||
penalties_load("a", JSON.parse(ls.rdsb_penalties_a));
|
|
||||||
}
|
|
||||||
if (ls.rdsb_penalties_b) {
|
|
||||||
penalties_load("b", JSON.parse(ls.rdsb_penalties_b));
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 47 KiB |
|
@ -1,14 +1,14 @@
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Magenta';
|
font-family: 'Ubuntu';
|
||||||
src: url('Magenta.woff') format('woff');
|
src: url('Ubuntu-Medium.ttf');
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'PermanentMarker';
|
font-family: 'Ubuntu';
|
||||||
src: url('PermanentMarker.woff') format('woff');
|
src: url('Ubuntu-Bold.ttf');
|
||||||
font-weight: normal;
|
font-weight: bold;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,18 +20,25 @@ body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
font: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[readonly] {
|
||||||
|
color: inherit;
|
||||||
|
background: inherit;
|
||||||
|
border: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
#scoreboard {
|
#scoreboard {
|
||||||
cursor: default;
|
cursor: default;
|
||||||
font-family: sans-serif;
|
font-family: Ubuntu, sans-serif;
|
||||||
font-weight: bold;
|
|
||||||
}
|
}
|
||||||
#scoreboard p {
|
#scoreboard p {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
#scoreboard *[id] {
|
#scoreboard *[id] {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
-moz-user-select: none;
|
|
||||||
-khtml-user-select: none;
|
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,10 +62,28 @@ body {
|
||||||
}
|
}
|
||||||
|
|
||||||
.logo {
|
.logo {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo img {
|
||||||
max-width: 1.8em;
|
max-width: 1.8em;
|
||||||
max-height: 2em;
|
max-height: 2em;
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.logo input {
|
||||||
|
top: 30%;
|
||||||
|
font-size: 10pt;
|
||||||
|
vertical-align: top;
|
||||||
|
max-height: 15pt;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.setup {
|
||||||
|
background: rgba(0, 255,0, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.timeouts {
|
.timeouts {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
font-size: 50%;
|
font-size: 50%;
|
||||||
|
@ -91,6 +116,7 @@ body {
|
||||||
|
|
||||||
#jam, #period {
|
#jam, #period {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
background: #000;
|
background: #000;
|
||||||
border-radius: 15px;
|
border-radius: 15px;
|
||||||
}
|
}
|
||||||
|
@ -106,26 +132,31 @@ body {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0em;
|
bottom: 0em;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
width: 4em;
|
width: 3.5em;
|
||||||
margin-left: -2em;
|
margin-left: -1.75em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#jamtext, #periodtext {
|
#jamtext, #periodtext, #preset {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: PermanentMarker, sans-serif;
|
font-family: Ubuntu, sans-serif;
|
||||||
font-weight: normal;
|
|
||||||
font-size: 75%;
|
font-size: 75%;
|
||||||
|
|
||||||
|
padding: 0.2em;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
width: 5em;
|
width: 5em;
|
||||||
margin-left: -2.5em;
|
margin-left: -2.7em;
|
||||||
|
z-index: -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#periodtext {
|
#periodtext {
|
||||||
top: 1.4em;
|
top: 1.4em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#preset {
|
||||||
|
top: 40%;
|
||||||
|
}
|
||||||
|
|
||||||
#jamtext {
|
#jamtext {
|
||||||
bottom: 1.4em;
|
bottom: 1.4em;
|
||||||
}
|
}
|
||||||
|
@ -174,6 +205,19 @@ body {
|
||||||
background: #060;
|
background: #060;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#close, #prefs {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 16px;
|
||||||
|
width: 16px;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#prefs {
|
||||||
|
top: inherit;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Notices
|
* Notices
|
||||||
|
@ -186,10 +230,9 @@ body {
|
||||||
width: 4em;
|
width: 4em;
|
||||||
height: 3em;
|
height: 3em;
|
||||||
margin-left: -2em;
|
margin-left: -2em;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notice embed {
|
#notice img {
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!--
|
||||||
|
Woozle Roller Derby Scoreboard
|
||||||
|
Copyright © 2014 Neale Pickett <neale@woozle.org>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Woozle Scoreboard</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<link rel="stylesheet" type="text/css" href="scoreboard.css">
|
||||||
|
<script type="text/javascript" src="kitty.js"></script>
|
||||||
|
<script type="text/javascript" src="scoreboard.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="scoreboard">
|
||||||
|
<div class="left">
|
||||||
|
<div class="logo" id="logo-a">
|
||||||
|
<img class="img" id="img-a" src="" alt="A">
|
||||||
|
<canvas class="kitty" id="kitty-a"></canvas>
|
||||||
|
<input type="color" class="setup color" id="color-a" value="#666666">
|
||||||
|
<input type="image" class="setup load" id="load-a" src="ic_picture.png">
|
||||||
|
</div>
|
||||||
|
<span class="timeouts" id="timeouts-a">3</span>
|
||||||
|
<span class="jammer" id="jammer-a">★</span>
|
||||||
|
<span class="score" id="score-a">-</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="right">
|
||||||
|
<div class="logo" id="logo-b">
|
||||||
|
<img class="img" id="img-b" src="" alt="B">
|
||||||
|
<canvas class="kitty" id="kitty-b"></canvas>
|
||||||
|
<input type="color" class="setup color" id="color-b" value="#ffffff">
|
||||||
|
<input type="image" class="setup load" id="load-b" src="ic_picture.png">
|
||||||
|
</div>
|
||||||
|
<span class="timeouts" id="timeouts-b">3</span>
|
||||||
|
<span class="jammer" id="jammer-b">★</span>
|
||||||
|
<span class="score" id="score-b">-</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="center">
|
||||||
|
<input id="period" value="--:--">
|
||||||
|
<span id="periodtext"></span>
|
||||||
|
<span class="setup" id="preset">-</span>
|
||||||
|
<input id="jam" value="-:--">
|
||||||
|
<span id="jamtext"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="notice">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<img id="close" src="close-icon-white.png" title="Close Scoreboard">
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
* LADD Roller Derby Scoreboard
|
Woozle Roller Derby Scoreboard
|
||||||
* Copyright © 2011 Neale Pickett <neale@woozle.org>
|
Copyright © 2014 Neale Pickett <neale@woozle.org>
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or (at
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
* your option) any later version.
|
(at your option) any later version.
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but
|
This program is distributed in the hope that it will be useful, but
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
* General Public License for more details.
|
General Public License for more details.
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* You can only have one scoreboard per page. This limitation is mostly
|
/* You can only have one scoreboard per page. This limitation is mostly
|
||||||
|
@ -24,17 +24,37 @@
|
||||||
* change in this file.
|
* change in this file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
longnames = false;
|
/* Times for various rulesets */
|
||||||
tenths = true;
|
var presets = [
|
||||||
|
["WFTDA", 30 * 60 * 1000, 120 * 1000, 30 * 1000, 3],
|
||||||
|
["USARS", 30 * 60 * 1000, 90 * 1000, 30 * 1000, 3],
|
||||||
|
["RDCL", 15 * 60 * 1000, 60 * 1000, 30 * 1000, 3],
|
||||||
|
["MADE", 15 * 60 * 1000, 90 * 1000, 30 * 1000, 1],
|
||||||
|
["JRDA", 30 * 60 * 1000, 120 * 1000, 30 * 1000, 2]
|
||||||
|
];
|
||||||
|
var period_time;
|
||||||
|
var jam_time;
|
||||||
|
var lineup_time;
|
||||||
|
var timeouts;
|
||||||
|
|
||||||
/* State names */
|
/* State names */
|
||||||
var SETUP = 0; // !P 30:00 !J 2:00
|
var SETUP = 0;
|
||||||
var JAM = 1; // P J 2:00
|
var JAM = 1;
|
||||||
var LINEUP = 2; // P J 1:00
|
var LINEUP = 2;
|
||||||
var TIMEOUT = 3; // !P J 1:00
|
var TIMEOUT = 3;
|
||||||
|
|
||||||
var periodtext = ["Period 1", "Halftime", "Period 2", "Break"];
|
var periodtext = [
|
||||||
var jamtext = ["Jam", "Lineup", "Timeout", "Setup"];
|
chrome.i18n.getMessage("period1"),
|
||||||
|
chrome.i18n.getMessage("halftime"),
|
||||||
|
chrome.i18n.getMessage("period2"),
|
||||||
|
chrome.i18n.getMessage("timeToGame")
|
||||||
|
];
|
||||||
|
var jamtext = [
|
||||||
|
chrome.i18n.getMessage("jam"),
|
||||||
|
chrome.i18n.getMessage("lineup"),
|
||||||
|
chrome.i18n.getMessage("timeout"),
|
||||||
|
chrome.i18n.getMessage("setup")
|
||||||
|
];
|
||||||
var period = 0;
|
var period = 0;
|
||||||
var jamno = 0;
|
var jamno = 0;
|
||||||
|
|
||||||
|
@ -42,65 +62,83 @@ var state = SETUP;
|
||||||
|
|
||||||
var timer_updates = [];
|
var timer_updates = [];
|
||||||
function update() {
|
function update() {
|
||||||
for (i in timer_updates) {
|
for (var i in timer_updates) {
|
||||||
var u = timer_updates[i];
|
var u = timer_updates[i];
|
||||||
|
|
||||||
u();
|
u();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function e(id) {
|
||||||
|
ret = document.getElementById(id);
|
||||||
|
if (! ret) {
|
||||||
|
return Array();
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// Create a timer on [element].
|
// Create a timer on [element].
|
||||||
// If [tenths] is true, show tenths of a second.
|
function startTimer(element) {
|
||||||
// If [callback] is defined, call it when time runs out.
|
|
||||||
function startTimer(element, tenths, callback) {
|
|
||||||
var startTime;
|
var startTime;
|
||||||
var running = false;
|
var running = false;
|
||||||
var set_duration = 0;
|
var set_duration = 0;
|
||||||
var duration = 0;
|
var duration = 0;
|
||||||
var className;
|
var className;
|
||||||
|
|
||||||
|
// Heartbeat
|
||||||
|
function pulse() {
|
||||||
|
if (! running) {
|
||||||
|
element.className = className + " paused";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
// Re-calculate and update displayed time
|
// Re-calculate and update displayed time
|
||||||
function refresh () {
|
function refresh() {
|
||||||
var remain = element.remaining();
|
var remain = Math.ceil(element.remaining() / 1000);
|
||||||
var min = Math.floor(Math.abs(remain / 60000));
|
var min = Math.floor(Math.abs(remain) / 60);
|
||||||
var sec = (Math.floor(Math.abs(remain / 100)) / 10) % 60;
|
var sec = Math.abs(remain) % 60;
|
||||||
|
|
||||||
// Set classes
|
// Set classes
|
||||||
|
if ((! className) && (remain <= 20)) {
|
||||||
|
element.className = "lowtime";
|
||||||
|
} else {
|
||||||
element.className = className;
|
element.className = className;
|
||||||
if ((! className) && (remain <= 20000)) {
|
|
||||||
element.className += " lowtime";
|
|
||||||
}
|
|
||||||
if (! running) {
|
|
||||||
element.className += " paused";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Has the timer run out?
|
// Has the timer run out?
|
||||||
if ((set_duration > 0) && (remain <= 0)) {
|
if ((set_duration > 0) && (remain <= 0)) {
|
||||||
duration = 0;
|
duration = 0;
|
||||||
sec = 0;
|
sec = 0;
|
||||||
running = false;
|
element.stop();
|
||||||
if (callback) {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// .toFixed() rounds, we want to truncate
|
sec = Math.ceil(sec);
|
||||||
if (! tenths) {
|
|
||||||
sec = Math.floor(sec);
|
|
||||||
} else {
|
|
||||||
sec = sec.toFixed(1);
|
|
||||||
}
|
|
||||||
// Zero-pad
|
// Zero-pad
|
||||||
if (sec < 10) {
|
if (sec < 10) {
|
||||||
sec = "0" + sec;
|
sec = "0" + sec;
|
||||||
}
|
}
|
||||||
|
|
||||||
var t = min + ":" + sec;
|
var t = min + ":" + sec;
|
||||||
if (t != element.innerHTML) {
|
if (t != element.value) {
|
||||||
element.innerHTML = t;
|
element.value = t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function inputHandler() {
|
||||||
|
var t = element.value.split(":");
|
||||||
|
var sec = (Number(t[0]) * 60) + Number(t[1]);
|
||||||
|
|
||||||
|
if (isNaN(sec) || (sec <= 0) || (sec > (59 * 60))) {
|
||||||
|
// Ignore goofy values
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
element.set(sec * 1000, className, true);
|
||||||
|
}
|
||||||
|
|
||||||
// Return remaining time in milliseconds
|
// Return remaining time in milliseconds
|
||||||
element.remaining = function() {
|
element.remaining = function() {
|
||||||
if (running) {
|
if (running) {
|
||||||
|
@ -113,13 +151,17 @@ function startTimer(element, tenths, callback) {
|
||||||
|
|
||||||
// Set timer to [d] milliseconds.
|
// Set timer to [d] milliseconds.
|
||||||
// Put element into class [cn], if set.
|
// Put element into class [cn], if set.
|
||||||
element.set = function(t, cn) {
|
// If [stealth] is set, don't refresh
|
||||||
|
element.set = function(t, cn, stealth) {
|
||||||
startTime = (new Date()).getTime();
|
startTime = (new Date()).getTime();
|
||||||
set_duration = t;
|
set_duration = t;
|
||||||
duration = t;
|
duration = t;
|
||||||
className = cn;
|
className = cn;
|
||||||
|
|
||||||
|
if (! stealth) {
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Start timer
|
// Start timer
|
||||||
element.start = function() {
|
element.start = function() {
|
||||||
|
@ -136,10 +178,12 @@ function startTimer(element, tenths, callback) {
|
||||||
duration = element.remaining();
|
duration = element.remaining();
|
||||||
running = false;
|
running = false;
|
||||||
}
|
}
|
||||||
refresh();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
timer_updates.push(refresh);
|
element.readOnly = true;
|
||||||
|
element.addEventListener("input", inputHandler);
|
||||||
|
|
||||||
|
timer_updates.push(pulse);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Transition state machine based on state
|
// Transition state machine based on state
|
||||||
|
@ -149,41 +193,49 @@ function transition(newstate) {
|
||||||
var jtext = e("jamtext");
|
var jtext = e("jamtext");
|
||||||
var jno = e("jamno");
|
var jno = e("jamno");
|
||||||
|
|
||||||
if ((newstate == undefined) || (newstate == state)) {
|
if ((newstate === undefined) || (newstate == state)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((state == SETUP) && window.penalties) {
|
|
||||||
penalties_duck();
|
|
||||||
}
|
|
||||||
|
|
||||||
state = newstate;
|
state = newstate;
|
||||||
|
|
||||||
if (state == JAM) {
|
if (state == JAM) {
|
||||||
pt.start();
|
pt.start();
|
||||||
jt.set(120000);
|
jt.set(jam_time);
|
||||||
jt.start();
|
jt.start();
|
||||||
jtext.innerHTML = jamtext[0];
|
jtext.innerHTML = jamtext[0];
|
||||||
jamno += 1;
|
jamno += 1;
|
||||||
jno.innerHTML = jamno;
|
jno.innerHTML = jamno;
|
||||||
|
pt.readOnly = true;
|
||||||
} else if (state == LINEUP) {
|
} else if (state == LINEUP) {
|
||||||
pt.start();
|
pt.start();
|
||||||
jt.set(30000, "lineup");
|
jt.set(lineup_time, "lineup");
|
||||||
jt.start();
|
jt.start();
|
||||||
jtext.innerHTML = jamtext[1];
|
jtext.innerHTML = jamtext[1];
|
||||||
|
pt.readOnly = true;
|
||||||
} else if (state == TIMEOUT) {
|
} else if (state == TIMEOUT) {
|
||||||
pt.stop();
|
pt.stop();
|
||||||
if (pt.remaining() <= 0) {
|
if (pt.remaining() <= 0) {
|
||||||
pt.set(1800000);
|
pt.set(period_time);
|
||||||
}
|
}
|
||||||
jt.set(0, "timeout");
|
jt.set(0, "timeout");
|
||||||
jt.start();
|
jt.start();
|
||||||
jtext.innerHTML = jamtext[2];
|
jtext.innerHTML = jamtext[2];
|
||||||
|
pt.readOnly = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset lead jammer indicators
|
// Reset lead jammer indicators
|
||||||
e("jammer-a").className = "";
|
e("jammer-a").className = "";
|
||||||
e("jammer-b").className = "";
|
e("jammer-b").className = "";
|
||||||
|
|
||||||
|
var setupElements = document.getElementsByClassName("setup")
|
||||||
|
for (var i = 0; i < setupElements.length; i += 1) {
|
||||||
|
var el = setupElements[i]
|
||||||
|
|
||||||
|
el.style.display = "none"
|
||||||
|
}
|
||||||
|
|
||||||
|
save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -192,32 +244,27 @@ function transition(newstate) {
|
||||||
* Notices
|
* Notices
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var notices = [
|
var notices = {
|
||||||
false,
|
"banana": '<img src="res/banana.gif">'
|
||||||
'<embed src="res/Zounds.swf" type="text/html">',
|
};
|
||||||
'<embed src="res/Ouch.swf" type="text/html">',
|
|
||||||
'<embed src="res/Pow.swf" type="text/html">',
|
|
||||||
'<embed src="res/HolyShot.swf" type="text/html">',
|
|
||||||
'<embed src="res/FasterFaster.swf" type="text/html">',
|
|
||||||
'<embed src="res/BadGirl.swf" type="text/html">',
|
|
||||||
'<embed src="res/banana.gif" type="image/gif">',
|
|
||||||
];
|
|
||||||
|
|
||||||
var notice_timer;
|
var notice_timer;
|
||||||
|
|
||||||
function notice_expire() {
|
function notice_expire() {
|
||||||
var c = document.getElementById("notice");
|
var c = e("notice");
|
||||||
|
|
||||||
c.innerHTML = "";
|
c.innerHTML = "";
|
||||||
c.style.display = "none";
|
c.style.display = "none";
|
||||||
}
|
}
|
||||||
|
|
||||||
function notice(n) {
|
function notice(n) {
|
||||||
var c = document.getElementById("notice");
|
var c = e("notice");
|
||||||
|
|
||||||
c.style.display = "block";
|
|
||||||
if (notices[n]) {
|
if (notices[n]) {
|
||||||
|
if (c.innerHTML != notices[n]) {
|
||||||
c.innerHTML = notices[n];
|
c.innerHTML = notices[n];
|
||||||
|
c.style.display = "block";
|
||||||
|
}
|
||||||
clearTimeout(notice_timer);
|
clearTimeout(notice_timer);
|
||||||
notice_timer = setTimeout(function() {notice_expire()}, 8000);
|
notice_timer = setTimeout(function() {notice_expire()}, 8000);
|
||||||
} else {
|
} else {
|
||||||
|
@ -225,19 +272,12 @@ function notice(n) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function e(id) {
|
|
||||||
ret = document.getElementById(id);
|
|
||||||
if (! ret) {
|
|
||||||
return Array();
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
function score(team, points) {
|
function score(team, points) {
|
||||||
var te = document.getElementById("score-" + team);
|
var te = e("score-" + team);
|
||||||
var ts = Number(te.innerHTML);
|
var ts = Number(te.innerHTML);
|
||||||
|
|
||||||
ts += points;
|
ts = Math.max(ts + points, 0);
|
||||||
te.innerHTML = ts;
|
te.innerHTML = ts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,8 +285,6 @@ function score(team, points) {
|
||||||
* Event handlers
|
* Event handlers
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var logo = {a:-1, b:-1};
|
|
||||||
|
|
||||||
function leadJammer(team) {
|
function leadJammer(team) {
|
||||||
tgt = e("jammer-" + team);
|
tgt = e("jammer-" + team);
|
||||||
var on = ! tgt.className;
|
var on = ! tgt.className;
|
||||||
|
@ -256,6 +294,30 @@ function leadJammer(team) {
|
||||||
if (on) tgt.className = "lead";
|
if (on) tgt.className = "lead";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function changeLogo(team) {
|
||||||
|
// Holy cow, asynchronous events galore here
|
||||||
|
var element = e("img-" + team)
|
||||||
|
|
||||||
|
function setURL(file) {
|
||||||
|
element.src = URL.createObjectURL(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
function loaded(entry) {
|
||||||
|
entry.file(setURL);
|
||||||
|
e("kitty-" + team).style.display = "none"
|
||||||
|
element.style.display = "inline"
|
||||||
|
}
|
||||||
|
|
||||||
|
chrome.fileSystem.chooseEntry(
|
||||||
|
{
|
||||||
|
"accepts": [{
|
||||||
|
"mimeTypes": ["image/*"]
|
||||||
|
}],
|
||||||
|
"acceptsAllTypes": false
|
||||||
|
},
|
||||||
|
loaded);
|
||||||
|
}
|
||||||
|
|
||||||
function handle(event) {
|
function handle(event) {
|
||||||
var tgt = event.target || window.event.srcElement;
|
var tgt = event.target || window.event.srcElement;
|
||||||
var team = tgt.id.substr(tgt.id.length - 1);
|
var team = tgt.id.substr(tgt.id.length - 1);
|
||||||
|
@ -264,50 +326,15 @@ function handle(event) {
|
||||||
var newstate;
|
var newstate;
|
||||||
|
|
||||||
switch (tgt.id) {
|
switch (tgt.id) {
|
||||||
case "name-a":
|
case "load-a":
|
||||||
case "name-b":
|
case "load-b":
|
||||||
if (state == SETUP) {
|
changeLogo(team)
|
||||||
var tn = prompt("Enter team " + team + " name", tgt.innerHTML);
|
break
|
||||||
|
case "img-a":
|
||||||
if (tn) {
|
case "img-b":
|
||||||
tgt.innerHTML = tn;
|
case "kitty-a":
|
||||||
}
|
case "kitty-b":
|
||||||
if (window.penalties) {
|
|
||||||
penalties_setTeamName(team, tn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "logo-a":
|
|
||||||
case "logo-b":
|
|
||||||
if (state == SETUP) {
|
|
||||||
if (mod) {
|
|
||||||
var u = prompt("Enter URL to team " + team + " logo");
|
|
||||||
|
|
||||||
if (u) {
|
|
||||||
tgt.src = u;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
var t, name;
|
|
||||||
|
|
||||||
logo[team] = (teams.length + logo[team] + adj) % teams.length;
|
|
||||||
t = teams[logo[team]];
|
|
||||||
|
|
||||||
if (longnames) {
|
|
||||||
name = t[2];
|
|
||||||
} else {
|
|
||||||
name = t[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
e("name-" + team).innerHTML = name;
|
|
||||||
tgt.src = "logos/" + t[1];
|
|
||||||
|
|
||||||
if (window.penalties) {
|
|
||||||
penalties_setTeamName(team, t[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
score(team, -adj);
|
score(team, -adj);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "jammer-a":
|
case "jammer-a":
|
||||||
case "jammer-b":
|
case "jammer-b":
|
||||||
|
@ -319,43 +346,24 @@ function handle(event) {
|
||||||
var v = Number(tgt.innerHTML);
|
var v = Number(tgt.innerHTML);
|
||||||
|
|
||||||
v -= adj;
|
v -= adj;
|
||||||
if (v == -1) v = 3;
|
if (v == -1) {
|
||||||
|
v = timeouts;
|
||||||
|
}
|
||||||
tgt.innerHTML = v;
|
tgt.innerHTML = v;
|
||||||
break;
|
break;
|
||||||
case "period":
|
case "period":
|
||||||
if ((state == SETUP) || (state == TIMEOUT)) {
|
if ((state == SETUP) || (state == TIMEOUT)) {
|
||||||
var r = prompt("Enter new time for period clock", tgt.innerHTML);
|
// Nothin'
|
||||||
if (! r) return;
|
|
||||||
|
|
||||||
var t = r.split(":");
|
|
||||||
var sec = 0;
|
|
||||||
|
|
||||||
if (t.length > 3) {
|
|
||||||
tgt.innerHTML = "What?";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i in t) {
|
|
||||||
var v = t[i];
|
|
||||||
sec = (sec * 60) + Number(v);
|
|
||||||
}
|
|
||||||
|
|
||||||
tgt.set(sec*1000);
|
|
||||||
} else {
|
} else {
|
||||||
newstate = TIMEOUT;
|
newstate = TIMEOUT;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "periodtext":
|
case "periodtext":
|
||||||
var pt;
|
var pt;
|
||||||
|
|
||||||
if (mod) {
|
|
||||||
pt = prompt("Enter new period indicator text", tgt.innerHTML);
|
|
||||||
} else {
|
|
||||||
var ptl = periodtext.length;
|
var ptl = periodtext.length;
|
||||||
|
|
||||||
period = (period + ptl + adj) % ptl;
|
period = (period + ptl + adj) % ptl;
|
||||||
pt = periodtext[period];
|
pt = periodtext[period];
|
||||||
}
|
|
||||||
if (pt) {
|
if (pt) {
|
||||||
tgt.innerHTML = pt;
|
tgt.innerHTML = pt;
|
||||||
if (state == TIMEOUT) {
|
if (state == TIMEOUT) {
|
||||||
|
@ -378,24 +386,84 @@ function handle(event) {
|
||||||
case "score-a":
|
case "score-a":
|
||||||
case "score-b":
|
case "score-b":
|
||||||
if (state == SETUP) {
|
if (state == SETUP) {
|
||||||
var s = prompt("Enter score for team " + team, tgt.innerHTML);
|
e(tgt.id).innerHTML = 0;
|
||||||
if (s) {
|
|
||||||
tgt.innerHTML = s;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
score(team, adj);
|
score(team, adj);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "preset":
|
||||||
|
load_preset(+1);
|
||||||
|
break;
|
||||||
|
case "close":
|
||||||
|
window.close();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
transition(newstate);
|
transition(newstate);
|
||||||
}
|
}
|
||||||
|
|
||||||
function key(event) {
|
function key(event) {
|
||||||
var e = event || window.event;
|
var e = event || window.event;
|
||||||
var c = String.fromCharCode(e.which || e.keyCode || 0);
|
var k = e.which || e.keyCode || 0;
|
||||||
|
var c;
|
||||||
var newstate;
|
var newstate;
|
||||||
|
|
||||||
|
switch (k) {
|
||||||
|
case 32:
|
||||||
|
c = " ";
|
||||||
|
break;
|
||||||
|
case 38:
|
||||||
|
c = "up";
|
||||||
|
break;
|
||||||
|
case 40:
|
||||||
|
c = "down";
|
||||||
|
break;
|
||||||
|
case 188:
|
||||||
|
c = ",";
|
||||||
|
break;
|
||||||
|
case 190:
|
||||||
|
c = ".";
|
||||||
|
break;
|
||||||
|
case 191:
|
||||||
|
c = "/";
|
||||||
|
break;
|
||||||
|
case 219:
|
||||||
|
c = e.shiftKey ? "{" : "[";
|
||||||
|
break;
|
||||||
|
case 221:
|
||||||
|
c = e.shiftKey ? "}" : "]";
|
||||||
|
break;
|
||||||
|
case 222:
|
||||||
|
c = e.shiftKey ? "\"" : "'";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if ((k >= 48) && (k <= 90)) {
|
||||||
|
c = String.fromCharCode(k);
|
||||||
|
if (! e.shiftKey) {
|
||||||
|
c = c.toLowerCase();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
c = null;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
bige = e;
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
case "up":
|
||||||
|
if ((state == TIMEOUT) || (state == SETUP)) {
|
||||||
|
var pt = e("period");
|
||||||
|
var rem = pt.remaining();
|
||||||
|
pt.set(rem + 1000);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "down":
|
||||||
|
if ((state == TIMEOUT) || (state == SETUP)) {
|
||||||
|
var pt = e("period");
|
||||||
|
var rem = pt.remaining();
|
||||||
|
pt.set(rem - 1000);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case " ":
|
case " ":
|
||||||
if (state == JAM) {
|
if (state == JAM) {
|
||||||
newstate = LINEUP;
|
newstate = LINEUP;
|
||||||
|
@ -410,15 +478,15 @@ function key(event) {
|
||||||
case "[":
|
case "[":
|
||||||
score('a', 1);
|
score('a', 1);
|
||||||
break;
|
break;
|
||||||
case "b":
|
case "'":
|
||||||
case "]":
|
case "]":
|
||||||
score('b', 1);
|
score('b', 1);
|
||||||
break;
|
break;
|
||||||
case "A":
|
case "z":
|
||||||
case "{":
|
case "{":
|
||||||
score('a', -1);
|
score('a', -1);
|
||||||
break;
|
break;
|
||||||
case "B":
|
case "/":
|
||||||
case "}":
|
case "}":
|
||||||
score('b', -1);
|
score('b', -1);
|
||||||
break;
|
break;
|
||||||
|
@ -428,151 +496,163 @@ function key(event) {
|
||||||
case ".":
|
case ".":
|
||||||
leadJammer('b');
|
leadJammer('b');
|
||||||
break;
|
break;
|
||||||
case "1":
|
case "g":
|
||||||
case "2":
|
window.notice("banana");
|
||||||
case "3":
|
break;
|
||||||
case "4":
|
|
||||||
case "5":
|
|
||||||
case "6":
|
|
||||||
case "7":
|
|
||||||
case "8":
|
|
||||||
case "9":
|
|
||||||
case "0":
|
|
||||||
var n = Number(c);
|
|
||||||
|
|
||||||
window.notice(n);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
transition(newstate);
|
transition(newstate);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get(k, d) {
|
|
||||||
if (! window.localStorage) {
|
|
||||||
return d;
|
|
||||||
} else {
|
|
||||||
var v = window.localStorage["rdsb_" + k];
|
|
||||||
if (v == undefined) {
|
|
||||||
return d;
|
|
||||||
}
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function store(k, v) {
|
|
||||||
if ((v == undefined) || ! window.localStorage) {
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
localStorage["rdsb_" + k] = v;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function save() {
|
function save() {
|
||||||
if (window.penalties_save) {
|
chrome.storage.local.set(
|
||||||
penalties_save();
|
{
|
||||||
|
"preset": e("preset").innerHTML,
|
||||||
|
"score_a": e("score-a").innerHTML,
|
||||||
|
"score_b": e("score-b").innerHTML,
|
||||||
|
"timeouts_a": e("timeouts-a").innerHTML,
|
||||||
|
"timeouts_b": e("timeouts-b").innerHTML,
|
||||||
|
"period_clock": e("period").remaining(),
|
||||||
}
|
}
|
||||||
store("period_clock", e("period").remaining());
|
);
|
||||||
store("name_a", e("name-a").innerHTML);
|
|
||||||
store("name_b", e("name-b").innerHTML);
|
|
||||||
store("logo_a", e("logo-a").src);
|
|
||||||
store("logo_b", e("logo-b").src);
|
|
||||||
store("score_a", e("score-a").innerHTML);
|
|
||||||
store("score_b", e("score-b").innerHTML);
|
|
||||||
store("timeout_a", e("timeouts-a").innerHTML);
|
|
||||||
store("timeout_b", e("timeouts-b").innerHTML);
|
|
||||||
store("jamno", jamno);
|
|
||||||
store("period", period);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function iecheck() {
|
function load_preset(preset_name) {
|
||||||
// If it's IE, it's got to be at least 7
|
var inc = false;
|
||||||
var ua = navigator.userAgent;
|
var pn = 0;
|
||||||
var ie = ua.indexOf("MSIE ");
|
|
||||||
|
|
||||||
if (ie == -1) {
|
if (preset_name == +1) {
|
||||||
// Not IE
|
preset_name = e("preset").innerHTML;
|
||||||
return;
|
inc = true;
|
||||||
} else {
|
}
|
||||||
var n = parseFloat(ua.substring(ie + 5, ua.indexOf(";", ie)));
|
|
||||||
if (n < 7) {
|
for (var i in presets) {
|
||||||
alert("Your browser is too old to run the Woozle scoreboard.\nYou can use Firefox, Chrome, Opera, or Internet Explorer 7 and up.");
|
if (presets[i][0] == preset_name) {
|
||||||
|
pn = Number(i);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (inc) {
|
||||||
|
pn = (pn + 1) % presets.length;
|
||||||
|
}
|
||||||
|
preset_name = presets[pn][0];
|
||||||
|
period_time = presets[pn][1];
|
||||||
|
jam_time = presets[pn][2];
|
||||||
|
lineup_time = presets[pn][3];
|
||||||
|
timeouts = presets[pn][4];
|
||||||
|
|
||||||
|
e("preset").innerHTML = preset_name;
|
||||||
|
e("jam").set(jam_time);
|
||||||
|
e("period").set(period_time);
|
||||||
|
e("timeouts-a").innerHTML = timeouts;
|
||||||
|
e("timeouts-b").innerHTML = timeouts;
|
||||||
|
e("score-a").innerHTML = 0;
|
||||||
|
e("score-b").innerHTML = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function load() {
|
||||||
|
function load_cb(state) {
|
||||||
|
load_preset(state.preset);
|
||||||
|
|
||||||
|
e("period").set((state.period_clock >= 0) ? state.period_clock : period_time);
|
||||||
|
|
||||||
|
e("score-a").innerHTML = state.score_a;
|
||||||
|
e("score-b").innerHTML = state.score_b;
|
||||||
|
|
||||||
|
e("timeouts-a").innerHTML = (state.timeouts_a >= 0) ? state.timeouts_a : timeouts;
|
||||||
|
e("timeouts-b").innerHTML = (state.timeouts_b >= 0) ? state.timeouts_b : timeouts;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
chrome.storage.local.get({
|
||||||
|
"preset": presets[0][0],
|
||||||
|
"period_clock": -1,
|
||||||
|
"score_a": 0,
|
||||||
|
"score_b": 0,
|
||||||
|
"timeouts_a": -1,
|
||||||
|
"timeouts_b": -1
|
||||||
|
}, load_cb);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function ei(name) {
|
||||||
|
el = e(name);
|
||||||
|
if (el.addEventListener) {
|
||||||
|
el.addEventListener("click", handle, false);
|
||||||
|
}
|
||||||
|
return el;
|
||||||
}
|
}
|
||||||
|
|
||||||
function start() {
|
function start() {
|
||||||
resize();
|
resize();
|
||||||
iecheck();
|
load();
|
||||||
|
|
||||||
var p = document.getElementById("period");
|
ei("logo-a");
|
||||||
var j = document.getElementById("jam");
|
ei("logo-b");
|
||||||
var c;
|
ei("score-a");
|
||||||
|
ei("score-b")
|
||||||
|
ei("jammer-a");
|
||||||
|
ei("jammer-b");
|
||||||
|
ei("timeouts-a");
|
||||||
|
ei("timeouts-b");
|
||||||
|
ei("period");
|
||||||
|
ei("jam");
|
||||||
|
ei("prefs");
|
||||||
|
ei("close");
|
||||||
|
ei("preset");
|
||||||
|
|
||||||
|
e("color-a").addEventListener("change", function() {rekitty("a")}, false);
|
||||||
|
e("color-b").addEventListener("change", function() {rekitty("b")}, false);
|
||||||
|
|
||||||
// IE8 doesn't have localStorage for file:// URLs :<
|
ei("periodtext").innerHTML = periodtext[period];
|
||||||
e("name-a").innerHTML = get("name_a", "Home");
|
ei("jamtext").innerHTML = jamtext[3];
|
||||||
e("name-b").innerHTML = get("name_b", "Vis");
|
|
||||||
e("logo-a").src = get("logo_a", "logos/black.png");
|
|
||||||
e("logo-b").src = get("logo_b", "logos/white.png");
|
|
||||||
e("score-a").innerHTML = get("score_a", 0);
|
|
||||||
e("score-b").innerHTML = get("score_b", 0);
|
|
||||||
e("timeouts-a").innerHTML = get("timeout_a", 3);
|
|
||||||
e("timeouts-b").innerHTML = get("timeout_b", 3);
|
|
||||||
period = Number(get("period", 0));
|
|
||||||
jamno = Number(get("jamno", 0));
|
|
||||||
|
|
||||||
if (window.localStorage) {
|
|
||||||
save_itimer = setInterval(save, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (window.penalties) {
|
|
||||||
penalties_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
e("periodtext").innerHTML = periodtext[period];
|
|
||||||
e("jamtext").innerHTML = jamtext[3];
|
|
||||||
transition();
|
transition();
|
||||||
|
|
||||||
c = Number(get("period_clock", 1800000));
|
|
||||||
|
|
||||||
|
var p = e("period");
|
||||||
startTimer(p);
|
startTimer(p);
|
||||||
p.set(c);
|
p.readOnly = false;
|
||||||
|
|
||||||
var j = document.getElementById("jam");
|
var j = e("jam");
|
||||||
startTimer(j, window.tenths);
|
startTimer(j);
|
||||||
j.set(120000);
|
|
||||||
|
|
||||||
save_timer = setInterval(save, 1000);
|
update_itimer = setInterval(update, 200); // 5 times a second
|
||||||
update_itimer = setInterval(update, 33);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function rekitty(team) {
|
||||||
|
var i = e("img-" + team)
|
||||||
|
var k = e("kitty-" + team)
|
||||||
|
var color = e("color-" + team).value
|
||||||
|
|
||||||
|
i.style.display = "none"
|
||||||
|
k.style.display = "inline"
|
||||||
|
kitty(k.getContext("2d"), color)
|
||||||
|
}
|
||||||
|
|
||||||
function resize() {
|
function resize() {
|
||||||
var b = document.getElementsByTagName("body")[0];
|
var w = window.innerWidth / 7
|
||||||
var w, h;
|
var h = window.innerHeight / 5
|
||||||
|
var fs = Math.min(w, h)
|
||||||
|
|
||||||
// Internet Explorer makes everything a pain in the ass
|
document.body.style.fontSize = Math.min(w, h) + 'px'
|
||||||
if (window.innerWidth) {
|
|
||||||
w = window.innerWidth;
|
// Now do kitty canvases
|
||||||
h = window.innerHeight;
|
var kw = fs * 1.8
|
||||||
} else if (document.documentElement && document.documentElement.clientWidth) {
|
var kh = kw * 0.6883
|
||||||
w = document.documentElement.clientWidth;
|
|
||||||
h = document.documentElement.clientHeight;
|
var kitties = document.getElementsByClassName("kitty")
|
||||||
} else if (document.body) {
|
for (var i = 0; i < kitties.length; i += 1) {
|
||||||
w = document.body.clientWidth;
|
k = kitties[i]
|
||||||
h = document.body.clientHeight;
|
k.width = kw
|
||||||
} else {
|
k.height = kh
|
||||||
// Punt
|
|
||||||
w = 800;
|
|
||||||
h = 600;
|
|
||||||
}
|
}
|
||||||
|
rekitty("a")
|
||||||
w /= 7;
|
rekitty("b")
|
||||||
h /= 5;
|
|
||||||
|
|
||||||
var fs = Math.min(w, h);
|
|
||||||
|
|
||||||
b.style.fontSize = fs + 'px';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
window.onload = start;
|
window.onload = start;
|
||||||
document.onkeypress = key; // IE requires document, not window
|
document.onkeydown = key; // IE requires document, not window
|
||||||
window.onresize = resize;
|
window.onresize = resize;
|
||||||
|
|
Before Width: | Height: | Size: 65 KiB |
|
@ -1,41 +0,0 @@
|
||||||
@font-face {
|
|
||||||
font-family: 'PermanentMarker';
|
|
||||||
src: url('PermanentMarker.woff') format('woff');
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background: #222 url(bg.jpg);
|
|
||||||
background-size: 100% auto;
|
|
||||||
color: #eee;
|
|
||||||
max-width: 40em;
|
|
||||||
margin: auto auto;
|
|
||||||
}
|
|
||||||
h1 {
|
|
||||||
color: #fd8;
|
|
||||||
font-family: PermanentMarker, fantasy, sans-serif;
|
|
||||||
font-size-adjust: 1.0;
|
|
||||||
}
|
|
||||||
h2 {
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
dt {
|
|
||||||
font-size: 120%;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
color: yellow;
|
|
||||||
}
|
|
||||||
caption {
|
|
||||||
font-size: 33%;
|
|
||||||
font-family: default;
|
|
||||||
}
|
|
||||||
|
|
||||||
#screenshot {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#screenshot img {
|
|
||||||
border: solid black 4px;
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
* When period ends and jam timer is toggled, period clock should not count up
|
|
||||||
* Auto-scale (3-digit score wrapped in Taos)
|
|
223
res/usage.html
|
@ -1,223 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<!--
|
|
||||||
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Using the LADD Roller Derby Scoreboard</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<link rel="stylesheet" type="text/css" href="style.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Using the LADD Roller Derby Scoreboard</h1>
|
|
||||||
|
|
||||||
<img src="scoreboard-explained.png" alt="Annotated scoreboard"
|
|
||||||
style="border: solid black 2px;">
|
|
||||||
|
|
||||||
<p>
|
|
||||||
If you don't like reading manuals, just start clicking on things;
|
|
||||||
it's supposed to be easy to figure out.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<dl>
|
|
||||||
<dt>Space Bar</dt>
|
|
||||||
<dd>Switch between Jam and Rotation</dd>
|
|
||||||
|
|
||||||
<dt>T</dt>
|
|
||||||
<dd>Enter timeout</dd>
|
|
||||||
|
|
||||||
<dt>A / Shift-A</dt>
|
|
||||||
<dd>Add / subtract a point on the left</dd>
|
|
||||||
|
|
||||||
<dt>B / Shift-B</dt>
|
|
||||||
<dd>Add / subtract a point on the right</dd>
|
|
||||||
|
|
||||||
<dt>F5</dt>
|
|
||||||
<dd>Enter Setup mode</dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<h1>Setup</h1>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
When the state indicator says "Setup", you can click on almost
|
|
||||||
anything to change it.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Set the logo before you change the team name.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
If your team's logo and name isn't in <a href="../logos/logos.html">the
|
|
||||||
list</a>, please email them to me so I can add them.
|
|
||||||
<li>
|
|
||||||
Reload the page (click "Reload" or type F5) to get back to Setup
|
|
||||||
mode. Scores, timeouts, and period clock time are all saved.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Type Space Bar or click the jam clock to begin the first jam.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
<h1>Running Jams</h1>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Press Space Bar or click the jam clock to switch between 2:00
|
|
||||||
jams and 0:30 rotations.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Type "A" or "B" to add points to a team's score. You can also
|
|
||||||
click a score to add a point.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Type "Shift+A" or "Shift+B" to remove points from a team's
|
|
||||||
score. You can also click a team logo to remove a point.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
<h1>Timeouts</h1>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Type "T" or click the period clock to enter into a timeout.
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
Click a team's timeout count to remove one from it. If it's at
|
|
||||||
0, click it to reset it to 3.
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
Click the period clock during a timeout to change the time left
|
|
||||||
in the period.
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
Type Space Bar or click the jam clock to exit timeout mode and
|
|
||||||
start the next jam.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
<h1>Periods</h1>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Go into Timeout mode to re-set the period clock to 30:00. Click
|
|
||||||
it to change it to a different time.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Click the period indicator to cycle between "Period 1",
|
|
||||||
"Halftime", "Period 2", and "Break".
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
<h1>Other cases</h1>
|
|
||||||
|
|
||||||
<dl>
|
|
||||||
<dt>Halftime / Double-header break</dt>
|
|
||||||
<dd>
|
|
||||||
<ol>
|
|
||||||
<li>Type "T" to enter timeout mode.</li>
|
|
||||||
<li>Click the period indicator until it says "Halftime" or
|
|
||||||
"Break"</li>
|
|
||||||
<li>Click the period clock.</li>
|
|
||||||
<li>Enter the duration of the break.</li>
|
|
||||||
<li>Type Space Bar to start counting down.</li>
|
|
||||||
<li>It's okay to let the jam clock reach 0:00.</li>
|
|
||||||
</ol>
|
|
||||||
</dd>
|
|
||||||
|
|
||||||
<dt>20-minute periods</dt>
|
|
||||||
<dd>
|
|
||||||
<ol>
|
|
||||||
<li>During Setup or Timeout, click the period clock.</li>
|
|
||||||
<li>Enter "20:00" for the new time.</li>
|
|
||||||
<li>Click the period indicator until it displays the
|
|
||||||
right period.</li>
|
|
||||||
</ol>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
|
|
||||||
<h1>Advanced Tips</h1>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
Hold down the "Shift" key to make counters, logos, etc. go the
|
|
||||||
other direction.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Hold down the "Ctrl" or "Alt" key while clicking a team logo in
|
|
||||||
Setup mode to provide a URL.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Hold down the "Ctrl" or "Alt" key while clicking the period
|
|
||||||
indicator to change it to any text.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
Timeouts can exceed three by clicking them while holding the
|
|
||||||
"Shift" key.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
You can leave off minutes or seconds if they're zero: "30:" is
|
|
||||||
the same as "30:00", and "19" is the same as "0:19".
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
If part of the scoreboard changes background color, click
|
|
||||||
(without shift) somewhere on the background to get it back to
|
|
||||||
normal. It changed color because your browser was selecting
|
|
||||||
that part of the page for copy and paste!
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
<h1>Customizing</h1>
|
|
||||||
<p>
|
|
||||||
If you use this, I want to add your logo and the logos of the
|
|
||||||
teams you play to the <a href="../logos/logos.html">included set of
|
|
||||||
logos</a>.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
The scoreboard is written in HTML5, CSS, and JavaScript, so a web
|
|
||||||
designer should be able to season to taste. Send me what you come
|
|
||||||
up with, I want to see it!
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
<h1>If you have problems</h1>
|
|
||||||
<p>
|
|
||||||
If something goes wrong, please email me (link below) with as much
|
|
||||||
detail as you can remember, and I'll try to fix it for you and
|
|
||||||
everybody else. For example:
|
|
||||||
</p>
|
|
||||||
<blockquote>
|
|
||||||
<p>
|
|
||||||
I clicked the period timer during a timeout and the Team A logo
|
|
||||||
turned into a photo of a burrito.
|
|
||||||
</p>
|
|
||||||
</blockquote>
|
|
||||||
|
|
||||||
<h1>Enjoy!</h1>
|
|
||||||
<address>Neale Pickett <a href="mailto:neale@woozle.org"><neale@woozle.org></a></address>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,58 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<!--
|
|
||||||
Roller Derby Scoreboard Copyright © 2011 Neale Pickett
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>LADD Scoreboard</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<link rel="stylesheet" type="text/css" href="res/scoreboard.css">
|
|
||||||
<script type="text/javascript" src="logos/logos.js"></script>
|
|
||||||
<script type="text/javascript" src="res/scoreboard.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<!--
|
|
||||||
HTML5 says not to use tables for layout. Since this is
|
|
||||||
a highly-styled page, it looks awful without CSS. Sorry.
|
|
||||||
-->
|
|
||||||
<div id="scoreboard">
|
|
||||||
<p class="left">
|
|
||||||
<img class="logo" id="logo-a" src="" alt="A" onclick="handle(event);">
|
|
||||||
<span class="timeouts" id="timeouts-a" onclick="handle(event);">0</span>
|
|
||||||
<span class="jammer" id="jammer-a" onclick="handle(event);">★</span>
|
|
||||||
<span class="score" id="score-a" onclick="handle(event);">-</span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="center">
|
|
||||||
<span id="period" onclick="handle(event);">--:--</span>
|
|
||||||
<span id="periodtext" onclick="handle(event);"></span>
|
|
||||||
<span id="jam" onclick="handle(event);">-:--.-</span>
|
|
||||||
<span id="jamtext" onclick="handle(event);"></span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="right">
|
|
||||||
<img class="logo" id="logo-b" src="" alt="B" onclick="handle(event);">
|
|
||||||
<span class="timeouts" id="timeouts-b" onclick="handle(event);">0</span>
|
|
||||||
<span class="jammer" id="jammer-b" onclick="handle(event);">★</span>
|
|
||||||
<span class="score" id="score-b" onclick="handle(event);">-</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="notice">
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|