diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2023-12-03 12:07:07 +0100 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2023-12-03 12:07:07 +0100 |
commit | a702051aef4b32fca7fd516a34415fcbb1e8c871 (patch) | |
tree | c5aa171840e44874484d1fe6d0d7e190070aab5d | |
parent | a36801c967c790ed10d7d074af12f9832a42aa50 (diff) |
Move theme switcher to bottom; add 'use device theme'
-rw-r--r-- | lib/DBInfoscreen/I18N/en.pm | 1 | ||||
-rw-r--r-- | public/static/js/collapse.js | 13 | ||||
-rw-r--r-- | sass/app.scss | 21 | ||||
-rw-r--r-- | templates/layouts/app.html.ep | 36 |
4 files changed, 51 insertions, 20 deletions
diff --git a/lib/DBInfoscreen/I18N/en.pm b/lib/DBInfoscreen/I18N/en.pm index 50790c5..8557781 100644 --- a/lib/DBInfoscreen/I18N/en.pm +++ b/lib/DBInfoscreen/I18N/en.pm @@ -36,7 +36,6 @@ our %Lexicon = ( 'Nur Abfahrt' => 'departure only', 'Nur Ankunft' => 'arrival only', 'Anzeigen' => 'Submit', - 'Über DBF' => 'About', 'Datenschutz' => 'Privacy', 'Impressum' => 'Imprint', diff --git a/public/static/js/collapse.js b/public/static/js/collapse.js index 2beead1..30e111e 100644 --- a/public/static/js/collapse.js +++ b/public/static/js/collapse.js @@ -4,6 +4,19 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ +function setLang(lang) { + document.cookie = 'lang=' + lang; + location.reload(); +} + +function setTheme(theme) { + localStorage.setItem('theme', theme); + if (!otherTheme.hasOwnProperty(theme)) { + theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; + } + addStyleSheet(theme, 'theme'); +} + function reload_app() { // TODO use a variable instead of window.location.href, as // window.location.href may be /z/... diff --git a/sass/app.scss b/sass/app.scss index b561c77..f63c85c 100644 --- a/sass/app.scss +++ b/sass/app.scss @@ -30,6 +30,7 @@ a { p, div.about, +div.config, div.input-field, div.notes { max-width: 94%; @@ -669,15 +670,27 @@ div.candidatelist a .traininfo { padding-bottom: 0.3em; } -div.about { +div.config { margin-top: 2em; font-family: Sans-Serif; color: $fg2; + + a { + color: $link-color; + cursor: pointer; + text-decoration: none; + } } -div.about a { - color: $link-color; - text-decoration: none; +div.about { + margin-top: 1em; + font-family: Sans-Serif; + color: $fg2; + + a { + color: $link-color; + text-decoration: none; + } } .notice { diff --git a/templates/layouts/app.html.ep b/templates/layouts/app.html.ep index 1795471..7e8e38a 100644 --- a/templates/layouts/app.html.ep +++ b/templates/layouts/app.html.ep @@ -27,14 +27,14 @@ % } <script> function addStyleSheet(name, id) { - var path = '/static/<%=$av%>/css/' + name + '.min.css'; - var old = document.getElementById(id); + const path = '/static/<%=$av%>/css/' + name + '.min.css'; + const old = document.getElementById(id); if (old && (old.href != path)) { old.href = path; document.cookie = 'theme=' + name; } } - var otherTheme = { + const otherTheme = { 'dark': 'light', 'light': 'dark', }; @@ -43,12 +43,6 @@ currentTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; } addStyleSheet(currentTheme, 'theme'); - - function toggleTheme() { - currentTheme = otherTheme[currentTheme] || 'light'; - localStorage.setItem('theme', currentTheme); - addStyleSheet(currentTheme, 'theme'); - } </script> %= stylesheet "/static/${av}/css/material-icons.css" %= stylesheet "/static/${av}/css/jquery-ui.min.css" @@ -88,9 +82,6 @@ <a href="<%= stash('api_link') %>"><span class="visually-hidden"><%= stash('api_text') %></span><i class="material-icons" aria-hidden="true"><%= stash('api_icon') %></i></a> </li> % } - <li class="waves-effect waves-light"> - <a onClick="javascript:toggleTheme()"><span class="visually-hidden">Farbschema invertieren</span><i class="material-icons" aria-hidden="true">invert_colors</i></a> - </li> % if (stash('hide_opts')) { <li><a href="/"><span class="visually-hidden">Hauptseite</span><i class="material-icons" aria-hidden="true">edit</i></a></li> % } @@ -296,13 +287,28 @@ </div> <!-- container --> <div class="container"> +<div class="config"> +Theme: +<a onClick="javascript:setTheme('dark')">dark</a> +· +<a onClick="javascript:setTheme('light')">light</a> +· +<a onClick="javascript:setTheme('default')">device theme</a> +<!--<br/> +Language: +<a onClick="javascript:setLang('de')">DE</a> +· +<a onClick="javascript:setLang('en')">EN</a> +· +<a onClick="javascript:setLang('default')">system language</a> +<br/>--> +</div> <div class="about"> -<a href="_about"><%= l 'Über DBF' %></a> +<a href="_about">DBF</a> v<%= stash('version') // '???' %> · <a href="_datenschutz" rel="nofollow"><%= l 'Datenschutz' %></a> · -<a href="_impressum" rel="nofollow"><%= l 'Impressum' %></a><br/> -Version <%= stash('version') // '???' %> +<a href="_impressum" rel="nofollow"><%= l 'Impressum' %></a> </div> <!-- about --> </div> <!-- container --> % } |