aboutsummaryrefslogtreecommitdiff
path: root/src/client/static
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/static')
-rw-r--r--src/client/static/.well-known/keybase.txt54
-rw-r--r--src/client/static/apple-touch-icon.pngbin0 -> 6447 bytes
-rw-r--r--src/client/static/browserconfig.xml9
-rw-r--r--src/client/static/favicon-16x16.pngbin0 -> 1293 bytes
-rw-r--r--src/client/static/favicon-32x32.pngbin0 -> 2103 bytes
-rw-r--r--src/client/static/favicon.icobin0 -> 15086 bytes
-rw-r--r--src/client/static/icons/mml-logo.pngbin0 -> 12508 bytes
-rw-r--r--src/client/static/icons/res/mipmap-hdpi/ic_launcher.pngbin0 -> 6503 bytes
-rw-r--r--src/client/static/icons/res/mipmap-mdpi/ic_launcher.pngbin0 -> 3854 bytes
-rw-r--r--src/client/static/icons/res/mipmap-xhdpi/ic_launcher.pngbin0 -> 9631 bytes
-rw-r--r--src/client/static/icons/res/mipmap-xxhdpi/ic_launcher.pngbin0 -> 15315 bytes
-rw-r--r--src/client/static/icons/res/mipmap-xxxhdpi/ic_launcher.pngbin0 -> 23445 bytes
-rw-r--r--src/client/static/manifest.beta.webmanifest29
-rw-r--r--src/client/static/manifest.webmanifest29
-rw-r--r--src/client/static/mstile-150x150.pngbin0 -> 3995 bytes
-rw-r--r--src/client/static/safari-pinned-tab.svg34
-rw-r--r--src/client/static/stylesheets/hello.css23
-rw-r--r--src/client/static/stylesheets/print.css63
-rw-r--r--src/client/static/stylesheets/style.css392
-rw-r--r--src/client/static/sw.js29
-rw-r--r--src/client/static/untisinfo.css11
21 files changed, 673 insertions, 0 deletions
diff --git a/src/client/static/.well-known/keybase.txt b/src/client/static/.well-known/keybase.txt
new file mode 100644
index 0000000..7e11526
--- /dev/null
+++ b/src/client/static/.well-known/keybase.txt
@@ -0,0 +1,54 @@
+==================================================================
+https://keybase.io/nloomans
+--------------------------------------------------------------------
+
+I hereby claim:
+
+ * I am an admin of https://rooster.hetmml.nl
+ * I am nloomans (https://keybase.io/nloomans) on keybase.
+ * I have a public key ASCCV4aRFiMkEv7inJTf34RgxZ6IK0wQ-wTH2ZfSIu3OzAo
+
+To do so, I am signing this object:
+
+{
+ "body": {
+ "key": {
+ "eldest_kid": "0101bbdb28841b169de6538a51d17ca94b30088ba2914e56fd19121eec05f7a389cc0a",
+ "host": "keybase.io",
+ "kid": "01208257869116232412fee29c94dfdf8460c59e882b4c10fb04c7d997d222edcecc0a",
+ "uid": "7a52ddabf92293dd59f8fbf3774ea319",
+ "username": "nloomans"
+ },
+ "service": {
+ "hostname": "rooster.hetmml.nl",
+ "protocol": "https:"
+ },
+ "type": "web_service_binding",
+ "version": 1
+ },
+ "client": {
+ "name": "keybase.io go client",
+ "version": "1.0.20"
+ },
+ "ctime": 1492017398,
+ "expire_in": 504576000,
+ "merkle_root": {
+ "ctime": 1492017367,
+ "hash": "463e597079ce3829ccc1f1aa7b15533c0848f9e13cdb55407af490a87bf4ac1b2d64e8235518ada07d93003b889157b576aad02eda294ccd594dc0dcbf8862ef",
+ "seqno": 1015311
+ },
+ "prev": "36959cd282a98f651138068f8695b07480a016f02ba99a0acbde277e0cf4ca30",
+ "seqno": 19,
+ "tag": "signature"
+}
+
+which yields the signature:
+
+hKRib2R5hqhkZXRhY2hlZMOpaGFzaF90eXBlCqNrZXnEIwEggleGkRYjJBL+4pyU39+EYMWeiCtMEPsEx9mX0iLtzswKp3BheWxvYWTFAvt7ImJvZHkiOnsia2V5Ijp7ImVsZGVzdF9raWQiOiIwMTAxYmJkYjI4ODQxYjE2OWRlNjUzOGE1MWQxN2NhOTRiMzAwODhiYTI5MTRlNTZmZDE5MTIxZWVjMDVmN2EzODljYzBhIiwiaG9zdCI6ImtleWJhc2UuaW8iLCJraWQiOiIwMTIwODI1Nzg2OTExNjIzMjQxMmZlZTI5Yzk0ZGZkZjg0NjBjNTllODgyYjRjMTBmYjA0YzdkOTk3ZDIyMmVkY2VjYzBhIiwidWlkIjoiN2E1MmRkYWJmOTIyOTNkZDU5ZjhmYmYzNzc0ZWEzMTkiLCJ1c2VybmFtZSI6Im5sb29tYW5zIn0sInNlcnZpY2UiOnsiaG9zdG5hbWUiOiJyb29zdGVyLmhldG1tbC5ubCIsInByb3RvY29sIjoiaHR0cHM6In0sInR5cGUiOiJ3ZWJfc2VydmljZV9iaW5kaW5nIiwidmVyc2lvbiI6MX0sImNsaWVudCI6eyJuYW1lIjoia2V5YmFzZS5pbyBnbyBjbGllbnQiLCJ2ZXJzaW9uIjoiMS4wLjIwIn0sImN0aW1lIjoxNDkyMDE3Mzk4LCJleHBpcmVfaW4iOjUwNDU3NjAwMCwibWVya2xlX3Jvb3QiOnsiY3RpbWUiOjE0OTIwMTczNjcsImhhc2giOiI0NjNlNTk3MDc5Y2UzODI5Y2NjMWYxYWE3YjE1NTMzYzA4NDhmOWUxM2NkYjU1NDA3YWY0OTBhODdiZjRhYzFiMmQ2NGU4MjM1NTE4YWRhMDdkOTMwMDNiODg5MTU3YjU3NmFhZDAyZWRhMjk0Y2NkNTk0ZGMwZGNiZjg4NjJlZiIsInNlcW5vIjoxMDE1MzExfSwicHJldiI6IjM2OTU5Y2QyODJhOThmNjUxMTM4MDY4Zjg2OTViMDc0ODBhMDE2ZjAyYmE5OWEwYWNiZGUyNzdlMGNmNGNhMzAiLCJzZXFubyI6MTksInRhZyI6InNpZ25hdHVyZSJ9o3NpZ8RAcP5FuvbGM9nXBzWqChr9zdj452IpBzrVbd6YvcktLyKjaUaRg51BOWsyHmYQ+uxmZ2ZCUI6xZbbJ1SIAnWqvC6hzaWdfdHlwZSCkaGFzaIKkdHlwZQildmFsdWXEING7Z+BlY2sOTnQqQJo/PUBashy75VL9UU4tGIEvMXbco3RhZ80CAqd2ZXJzaW9uAQ==
+
+And finally, I am proving ownership of this host by posting or
+appending to this document.
+
+View my publicly-auditable identity here: https://keybase.io/nloomans
+
+==================================================================
diff --git a/src/client/static/apple-touch-icon.png b/src/client/static/apple-touch-icon.png
new file mode 100644
index 0000000..5adfc69
--- /dev/null
+++ b/src/client/static/apple-touch-icon.png
Binary files differ
diff --git a/src/client/static/browserconfig.xml b/src/client/static/browserconfig.xml
new file mode 100644
index 0000000..b3930d0
--- /dev/null
+++ b/src/client/static/browserconfig.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+ <msapplication>
+ <tile>
+ <square150x150logo src="/mstile-150x150.png"/>
+ <TileColor>#da532c</TileColor>
+ </tile>
+ </msapplication>
+</browserconfig>
diff --git a/src/client/static/favicon-16x16.png b/src/client/static/favicon-16x16.png
new file mode 100644
index 0000000..1df47d3
--- /dev/null
+++ b/src/client/static/favicon-16x16.png
Binary files differ
diff --git a/src/client/static/favicon-32x32.png b/src/client/static/favicon-32x32.png
new file mode 100644
index 0000000..36cd5da
--- /dev/null
+++ b/src/client/static/favicon-32x32.png
Binary files differ
diff --git a/src/client/static/favicon.ico b/src/client/static/favicon.ico
new file mode 100644
index 0000000..c201043
--- /dev/null
+++ b/src/client/static/favicon.ico
Binary files differ
diff --git a/src/client/static/icons/mml-logo.png b/src/client/static/icons/mml-logo.png
new file mode 100644
index 0000000..fa5ae11
--- /dev/null
+++ b/src/client/static/icons/mml-logo.png
Binary files differ
diff --git a/src/client/static/icons/res/mipmap-hdpi/ic_launcher.png b/src/client/static/icons/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..514ad14
--- /dev/null
+++ b/src/client/static/icons/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/src/client/static/icons/res/mipmap-mdpi/ic_launcher.png b/src/client/static/icons/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..59bab1d
--- /dev/null
+++ b/src/client/static/icons/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/src/client/static/icons/res/mipmap-xhdpi/ic_launcher.png b/src/client/static/icons/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..908a6e8
--- /dev/null
+++ b/src/client/static/icons/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/src/client/static/icons/res/mipmap-xxhdpi/ic_launcher.png b/src/client/static/icons/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..f12048f
--- /dev/null
+++ b/src/client/static/icons/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/src/client/static/icons/res/mipmap-xxxhdpi/ic_launcher.png b/src/client/static/icons/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..7a0462e
--- /dev/null
+++ b/src/client/static/icons/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/src/client/static/manifest.beta.webmanifest b/src/client/static/manifest.beta.webmanifest
new file mode 100644
index 0000000..a1fdd92
--- /dev/null
+++ b/src/client/static/manifest.beta.webmanifest
@@ -0,0 +1,29 @@
+{
+ "name": "BETA Metis Rooster",
+ "short_name": "BETA Rooster",
+ "start_url": "/",
+ "display": "standalone",
+ "background_color": "#ececec",
+ "description": "Een verbeterde rooster pagina voor het metis",
+ "icons": [{
+ "src": "/icons/res/mipmap-mdpi/ic_launcher.png",
+ "sizes": "48x48",
+ "type": "image/png"
+ }, {
+ "src": "/icons/res/mipmap-hdpi/ic_launcher.png",
+ "sizes": "72x72",
+ "type": "image/png"
+ }, {
+ "src": "/icons/res/mipmap-xhdpi/ic_launcher.png",
+ "sizes": "96x96",
+ "type": "image/png"
+ }, {
+ "src": "/icons/res/mipmap-xxhdpi/ic_launcher.png",
+ "sizes": "144x144",
+ "type": "image/png"
+ }, {
+ "src": "/icons/res/mipmap-xxxhdpi/ic_launcher.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ }]
+}
diff --git a/src/client/static/manifest.webmanifest b/src/client/static/manifest.webmanifest
new file mode 100644
index 0000000..d33ee8e
--- /dev/null
+++ b/src/client/static/manifest.webmanifest
@@ -0,0 +1,29 @@
+{
+ "name": "Metis Rooster",
+ "short_name": "Rooster",
+ "start_url": "/",
+ "display": "standalone",
+ "background_color": "#ececec",
+ "description": "Een verbeterde rooster pagina voor het metis",
+ "icons": [{
+ "src": "/icons/res/mipmap-mdpi/ic_launcher.png",
+ "sizes": "48x48",
+ "type": "image/png"
+ }, {
+ "src": "/icons/res/mipmap-hdpi/ic_launcher.png",
+ "sizes": "72x72",
+ "type": "image/png"
+ }, {
+ "src": "/icons/res/mipmap-xhdpi/ic_launcher.png",
+ "sizes": "96x96",
+ "type": "image/png"
+ }, {
+ "src": "/icons/res/mipmap-xxhdpi/ic_launcher.png",
+ "sizes": "144x144",
+ "type": "image/png"
+ }, {
+ "src": "/icons/res/mipmap-xxxhdpi/ic_launcher.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ }]
+}
diff --git a/src/client/static/mstile-150x150.png b/src/client/static/mstile-150x150.png
new file mode 100644
index 0000000..5e381e6
--- /dev/null
+++ b/src/client/static/mstile-150x150.png
Binary files differ
diff --git a/src/client/static/safari-pinned-tab.svg b/src/client/static/safari-pinned-tab.svg
new file mode 100644
index 0000000..97ce8bf
--- /dev/null
+++ b/src/client/static/safari-pinned-tab.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="16.000000pt" height="16.000000pt" viewBox="0 0 16.000000 16.000000"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.11, written by Peter Selinger 2001-2013
+</metadata>
+<g transform="translate(0.000000,16.000000) scale(0.012030,-0.012030)"
+fill="#000000" stroke="none">
+<path d="M498 1233 c-10 -20 -1 -650 11 -690 18 -64 84 -154 141 -192 82 -55
+144 -66 385 -66 l209 0 1 478 c0 262 0 477 0 477 -1 0 -20 -18 -44 -40 -24
+-22 -64 -52 -89 -67 -44 -26 -49 -27 -231 -28 -102 -1 -202 3 -221 8 -47 12
+-107 54 -135 95 -13 18 -25 30 -27 25z"/>
+<path d="M405 917 c-95 -24 -193 -97 -250 -187 -77 -122 -83 -287 -14 -421 30
+-60 113 -142 173 -173 171 -86 353 -62 489 64 48 45 50 49 27 50 -14 0 -41
+-13 -59 -30 -33 -27 -131 -86 -131 -77 0 2 14 32 30 66 17 35 30 64 28 65 -42
+30 -86 48 -120 49 -42 2 -42 2 -43 42 -1 31 -27 95 -39 95 -1 0 -2 -30 -1 -67
+l0 -68 -73 -3 c-84 -3 -84 -2 -97 105 l-7 62 77 -1 c42 0 78 2 81 5 2 2 2 11
+-2 20 -4 12 -18 16 -48 16 -22 -1 -56 -1 -74 0 l-34 1 6 53 c4 28 10 66 14 82
+8 29 11 30 62 30 43 0 54 3 56 18 2 14 -6 17 -41 17 -24 0 -46 3 -48 8 -7 10
+39 102 65 129 22 24 32 50 20 56 -4 2 -25 -1 -47 -6z m-58 -119 l-32 -68 -52
+0 c-29 0 -53 4 -53 8 0 15 74 80 120 106 24 14 45 24 46 23 1 -1 -12 -32 -29
+-69z m-52 -153 c-4 -27 -8 -62 -10 -76 -1 -15 -5 -31 -8 -35 -5 -9 -133 -11
+-142 -2 -7 7 15 108 30 138 12 23 19 25 75 25 l62 1 -7 -51z m-14 -168 c0 -7
+2 -19 3 -27 2 -8 6 -41 10 -72 l7 -58 -61 0 -61 0 -19 43 c-10 23 -21 61 -25
+84 l-6 41 76 1 c52 0 75 -3 76 -12z m65 -257 c18 -35 32 -65 31 -67 -14 -13
+-167 102 -167 126 0 4 23 7 52 7 l51 -1 33 -65z m145 58 c3 -5 5 -41 4 -81 -1
+-70 -2 -72 -26 -69 -13 1 -32 13 -42 25 -14 19 -67 119 -67 129 0 7 126 3 131
+-4z m164 0 c8 -7 -35 -94 -61 -125 -11 -12 -28 -23 -39 -25 -18 -3 -20 3 -20
+72 -1 41 0 77 1 80 4 8 111 6 119 -2z"/>
+</g>
+</svg>
diff --git a/src/client/static/stylesheets/hello.css b/src/client/static/stylesheets/hello.css
new file mode 100644
index 0000000..edcbc92
--- /dev/null
+++ b/src/client/static/stylesheets/hello.css
@@ -0,0 +1,23 @@
+* {
+ box-sizing: border-box;
+}
+
+html, body {
+ margin: 0;
+ font-family: 'Roboto', sans-serif;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ text-align: center;
+ width: 100vw;
+ height: 100vh;
+ color: gray;
+}
+
+.ideas {
+ font-size: 0.8em;
+}
+
+a {
+ color: #3f51b5;
+}
diff --git a/src/client/static/stylesheets/print.css b/src/client/static/stylesheets/print.css
new file mode 100644
index 0000000..0e09533
--- /dev/null
+++ b/src/client/static/stylesheets/print.css
@@ -0,0 +1,63 @@
+#search, #week-selector {
+ background-color: inherit;
+ box-shadow: inherit;
+}
+
+#search {
+ border-bottom: 1px solid black;
+ position: absolute;
+}
+
+#search .top-bar, #week-selector .week-wrapper {
+ max-width: inherit;
+}
+
+#search input[type="search"] {
+ background-color: inherit;
+ color: black;
+ font-weight: bold;
+}
+
+#search .fav {
+ display: none !important;
+}
+
+#search #overflow-button {
+ display: none;
+}
+
+#week-selector .week-wrapper {
+ display: block;
+}
+
+#week-selector button {
+ display: none;
+}
+
+#week-selector .current {
+ color: black;
+ padding: 16px;
+ font-size: 1.1em;
+ float: right;
+}
+
+#search-space-filler {
+ display: none;
+}
+
+.mdl-menu__container {
+ display: none !important;
+}
+
+#schedule {
+ padding-top: 16px;
+ width: 100%;
+}
+
+.no-print {
+ display: none;
+}
+
+.print {
+ display: initial;
+}
diff --git a/src/client/static/stylesheets/style.css b/src/client/static/stylesheets/style.css
new file mode 100644
index 0000000..830b007
--- /dev/null
+++ b/src/client/static/stylesheets/style.css
@@ -0,0 +1,392 @@
+* {
+ box-sizing: border-box;
+}
+
+html, body {
+ margin: 0;
+ font-family: 'Roboto', sans-serif;
+}
+
+.other {
+ color: gray;
+ font-style: italic;
+ margin-left: 5px;
+}
+
+#search {
+ z-index: 2;
+ background-color: #F44336;
+ margin: 0 auto;
+ width: 100%;
+ position: fixed;
+ box-shadow: 0 0.5px 1.5px rgba(0,0,0,0.06), 0 0.5px 1px rgba(0,0,0,0.12);
+}
+
+#search .top-bar {
+ position: relative;
+ margin: 0 auto;
+ max-width: 600px;
+ padding: 10px;
+ display: flex;
+}
+
+#search .input-wrapper {
+ position: relative;
+ flex-grow: 1;
+ color: #FFFFFF;
+}
+
+#search input[type='search'] {
+ display: block;
+ background-color: #f6695e;
+ color: inherit;
+ border-radius: 2px;
+ width: 100%;
+ display: block;
+ outline: none;
+ border: 0;
+ padding: 16px;
+ font-size: 16px;
+ transition: box-shadow 200ms ease-in-out;
+}
+
+#search input[type='search']:focus {
+ background-color: #FFFFFF;
+ color: #212121;
+ box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
+}
+
+#search input[type='search']:focus + button {
+ color: #212121;
+}
+
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-results-button,
+input[type="search"]::-webkit-search-results-decoration {
+ display: none;
+}
+
+input[type="search"]::-ms-clear {
+ width: 0;
+ height: 0;
+}
+
+button::-moz-focus-inner {
+ border: 0;
+}
+
+
+/* WebKit, Blink, Edge */
+input::-webkit-input-placeholder {
+ color: #FFCDD2;
+}
+input:focus::-webkit-input-placeholder {
+ color: #757575;
+}
+
+/* Mozilla Firefox 4 to 18 */
+input:-moz-placeholder {
+ color: #FFCDD2;
+ opacity: 1;
+}
+input:focus:-moz-placeholder {
+ color: #757575;
+}
+
+/* Mozilla Firefox 19+ */
+input::-moz-placeholder {
+ color: #FFCDD2;
+ opacity: 1;
+}
+input:focus::-moz-placeholder {
+ color: #757575;
+}
+
+/* Internet Explorer 10-11 */
+input:-ms-input-placeholder {
+ color: #FFCDD2;
+}
+input:focus:-ms-input-placeholder {
+ color: #757575;
+}
+
+li:hover {
+ background-color: lightgray;
+ cursor: pointer;
+}
+
+.selected {
+ background-color: lightgray;
+}
+
+#schedule {
+ overflow: auto;
+}
+
+body.searched #search-space-filler {
+ height: 70px;
+}
+
+.autocomplete-wrapper {
+ background-color: white;
+}
+
+.autocomplete {
+ max-width: 600px;
+ margin: 0 auto;
+ padding: 0;
+}
+
+.autocomplete li {
+ list-style: none;
+ padding: 10px;
+}
+
+#week-selector {
+ z-index: 1;
+ background-color: #F44336;
+ box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
+ color: white;
+}
+
+#week-selector .week-wrapper {
+ max-width: 600px;
+ padding: 10px !important;
+ margin: 0 auto;
+ display: flex;
+ -js-display: flex;
+ padding: 10px 0;
+}
+
+#week-selector .current {
+ display: flex;
+ flex-grow: 1;
+ align-items: center;
+ justify-content: center;
+}
+
+#week-selector .current.changed {
+ font-weight: bold;
+}
+
+#week-selector button {
+ background: transparent;
+ color: white;
+ border: 0px;
+ padding: 5px 10px;
+ border-radius: 2px;
+}
+
+input {
+ -webkit-appearance: none;
+}
+
+#search .fav {
+ position: absolute;
+ font-size: 1.8em;
+ color: inherit;
+ right: 8.5px;
+ top: 8.5px;
+ border: 0;
+ padding: 4px;
+ border-radius: 2px;
+ background: none;
+
+ display: none;
+}
+
+body.searched #search .fav {
+ display: block;
+}
+
+#week-selector button:focus, #search #overflow-button:focus, #search .fav:focus {
+ outline: none;
+ background-color: #D32F2F;
+}
+
+#search #overflow-button {
+ background: none;
+ border: none;
+ padding: 3px 9px;
+ color: white;
+ border-radius: 2px;
+}
+
+.hidden {
+ display: none !important;
+}
+
+ul a {
+ color: inherit;
+ text-decoration: none;
+}
+
+#search .title {
+ display: none;
+}
+
+body:not(.no-input) {
+ overflow-y: scroll;
+}
+
+body.no-input #week-selector {
+ display: none;
+}
+
+@media screen and (min-height: 400px) {
+ body.no-input {
+ background-color: #ececec;
+ }
+
+ body.no-input #search {
+ height: 100%;
+ background-color: #ececec;
+ box-shadow: none;
+ }
+
+ body.no-input #search button {
+ display: none;
+ }
+
+ body.no-input #search #overflow-button {
+ position: absolute;
+ display: block;
+ top: 0;
+ right: 0;
+ color: #757575;
+ }
+
+ body.no-input #search .print-page {
+ display: none;
+ }
+
+ body.no-input #search #overflow-button:focus {
+ background-color: inherit;
+ color: #212121;
+ }
+
+ body.no-input #search .logo {
+ background-image: url(/icons/mml-logo.png);
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ height: 100px;
+ width: 100px;
+
+ /* virtual center: http://javier.xyz/visual-center/ */
+ transform: translate(-8%,-3%);
+ margin: 0 auto;
+ }
+
+ body.no-input #search .title {
+ display: block;
+ font-size: 55px;
+ padding-bottom: 32px;
+ }
+
+ body.no-input #search .title .text {
+ text-align: center;
+ line-height: 55px;
+ }
+
+ body.no-input #search .top-bar {
+ position: static;
+ display: block;
+ margin-top: 50vh;
+ transform: translateY(-75%);
+ }
+
+ body.no-input #search input[type='search'] {
+ background-color: #FFF;
+ }
+
+ /* WebKit, Blink, Edge */
+ body.no-input #search input::-webkit-input-placeholder {
+ color: #757575;
+ }
+
+ /* Mozilla Firefox 4 to 18 */
+ body.no-input #search input:-moz-placeholder {
+ color: #757575;
+ opacity: 1;
+ }
+
+ /* Mozilla Firefox 19+ */
+ body.no-input #search input::-moz-placeholder {
+ color: #757575;
+ opacity: 1;
+ }
+
+ /* Internet Explorer 10-11 */
+ body.no-input #search input:-ms-input-placeholder {
+ color: #757575;
+ }
+
+ body.no-input .tooltip {
+ display: block;
+ position: absolute;
+ background-color: white;
+ padding: 15px;
+ margin: 32px 8px;
+ border-radius: 2px;
+
+ left: 16px;
+ right: 16px;
+ }
+
+ body.no-input .tooltip::before {
+ content: '';
+ width: 24px;
+ height: 24px;
+ background-color: white;
+ top: -12px;
+ position: absolute;
+ transform: rotate(45deg);
+ z-index: -1;
+ }
+}
+
+.tooltip {
+ display: none;
+}
+
+.error {
+ text-align: center;
+ margin-top: 100px;
+ padding: 16px;
+}
+
+body.week-selector-not-visible #search {
+ box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
+}
+
+body.week-selector-not-visible #week-selector {
+ box-shadow: inherit;
+}
+
+.print {
+ display: none;
+}
+
+#notification {
+ max-width: 600px;
+ padding: 10px;
+ margin: 0 auto;
+}
+
+#notification .box {
+ display: flex;
+ background-color: #e0e0e0;
+ padding: 8px;
+ border-radius: 2px;
+ align-items: center;
+}
+
+#notification .text {
+ padding-left: 8px;
+}
+
+.grow {
+ flex-grow: 1;
+}
diff --git a/src/client/static/sw.js b/src/client/static/sw.js
new file mode 100644
index 0000000..bd43805
--- /dev/null
+++ b/src/client/static/sw.js
@@ -0,0 +1,29 @@
+/* global importScripts toolbox self */
+
+(global => {
+ 'use strict'
+
+ // Load the sw-toolbox library.
+ importScripts('/components/sw-toolbox/sw-toolbox.js')
+
+ // Ensure that our service worker takes control of the page as soon as possible.
+ global.addEventListener('install', event => event.waitUntil(global.skipWaiting()))
+ global.addEventListener('activate', event => event.waitUntil(global.clients.claim()))
+
+ toolbox.precache([
+ '/',
+ '/hello',
+ '/untisinfo.css',
+ '/javascripts/bundle.js',
+ '/stylesheets/style.css',
+ '/stylesheets/hello.css'
+ ])
+
+ toolbox.router.get('/', toolbox.fastest)
+ toolbox.router.get('/hello', toolbox.fastest)
+
+ toolbox.router.get('/javascripts/bundle.js', toolbox.fastest)
+ toolbox.router.get('/stylesheets/*', toolbox.fastest)
+ toolbox.router.get('/untisinfo.css', toolbox.fastest)
+ toolbox.router.get('/meetingpointProxy/*', toolbox.networkFirst)
+})(self)
diff --git a/src/client/static/untisinfo.css b/src/client/static/untisinfo.css
new file mode 100644
index 0000000..d74a7aa
--- /dev/null
+++ b/src/client/static/untisinfo.css
@@ -0,0 +1,11 @@
+html, body {
+ overflow: auto;
+ width: 100vw;
+ height: 100vh;
+ margin: 0;
+ -webkit-overflow-scrolling: touch;
+}
+
+center {
+ margin: 5px;
+}