From 7755ef6d57ac8b2efa6006a1f13c2a47e5520a78 Mon Sep 17 00:00:00 2001 From: geese_suck Date: Fri, 16 Dec 2022 15:35:01 -0800 Subject: [PATCH] dark mode toggle --- files/events/assets/css/blizzard.css | 2 + files/events/assets/css/themes/light.css | 1 + files/events/assets/js/darkmode.js | 19 ++ files/events/classes/eventuser.py | 2 +- files/events/helpers/__init__.py | 1 + files/events/helpers/jinja.py | 10 +- files/events/routes/__init__.py | 1 + files/events/routes/theme.py | 16 ++ files/events/templates/banner.svg | 199 --------------------- files/events/templates/banner_rDrama.html | 2 +- files/events/templates/sidebar_rDrama.html | 5 +- files/templates/util/html_head.html | 4 + 12 files changed, 58 insertions(+), 204 deletions(-) create mode 100644 files/events/assets/css/themes/light.css create mode 100644 files/events/assets/js/darkmode.js create mode 100644 files/events/routes/theme.py delete mode 100644 files/events/templates/banner.svg diff --git a/files/events/assets/css/blizzard.css b/files/events/assets/css/blizzard.css index 9c3cb1aef..56b1eee6f 100644 --- a/files/events/assets/css/blizzard.css +++ b/files/events/assets/css/blizzard.css @@ -147,6 +147,8 @@ textarea, input[type=textbox], input[type=search] { cursor: url(/assets/images/event/pointer.png?v=1), auto !important; } +.fa-moon-over-sun:before{content:"\f74a"} + /* lights */ .navbar::after, .lights::after { diff --git a/files/events/assets/css/themes/light.css b/files/events/assets/css/themes/light.css new file mode 100644 index 000000000..9d6f459ad --- /dev/null +++ b/files/events/assets/css/themes/light.css @@ -0,0 +1 @@ +/**/ diff --git a/files/events/assets/js/darkmode.js b/files/events/assets/js/darkmode.js new file mode 100644 index 000000000..217c9d08a --- /dev/null +++ b/files/events/assets/js/darkmode.js @@ -0,0 +1,19 @@ +function postToastRoastEventDarkmode(t, url) { + const xhr = createXhrWithFormKey(url); + xhr[0].onload = function() { + postToastLoadEventDarkmode(xhr[0]) + }; + xhr[0].send(xhr[1]); +} + +function postToastLoadEventDarkmode(xhr) { + let data + try { + data = JSON.parse(xhr.response) + } + catch (e) { + console.log(e) + } + success = xhr.status >= 200 && xhr.status < 300; + showToast(success, getMessageFromJsonData(success, data)); +} diff --git a/files/events/classes/eventuser.py b/files/events/classes/eventuser.py index d8e5d14dd..a275d827c 100644 --- a/files/events/classes/eventuser.py +++ b/files/events/classes/eventuser.py @@ -10,7 +10,7 @@ class EventUser(Base): event_music = Column(Boolean, default=True, nullable=False) # start event specific columns - + event_darkmode = Column(Boolean, default=False, nullable=False) # end event specific columns def __init__(self, *args, **kwargs): diff --git a/files/events/helpers/__init__.py b/files/events/helpers/__init__.py index 3651c2473..f278f91f7 100644 --- a/files/events/helpers/__init__.py +++ b/files/events/helpers/__init__.py @@ -1,2 +1,3 @@ from .const import * from .jinja import * +from .get import * diff --git a/files/events/helpers/jinja.py b/files/events/helpers/jinja.py index 90270fc9b..68fca8d48 100644 --- a/files/events/helpers/jinja.py +++ b/files/events/helpers/jinja.py @@ -1,12 +1,17 @@ import random from datetime import date +from .get import get_or_create_event_user -def daysTillChristmas(): +def days_till_christmas(): today = date.today() christmas = date(today.year, 12, 25) delta = abs(christmas - today) return delta.days +def user_event_darkmode(target, db): + user = get_or_create_event_user(target, db) + return user.event_darkmode + EVENT_JINJA_CONST = { "EVENT_BANNER": "banner_rDrama.html", "EVENT_ICONS": True, @@ -25,6 +30,7 @@ EVENT_JINJA_CONST = { " dramatards having their chimneys stuffed by Santa", ], "random": random, - "daysTillChristmas": daysTillChristmas, + "days_till_christmas": days_till_christmas, + "user_event_darkmode": user_event_darkmode, } diff --git a/files/events/routes/__init__.py b/files/events/routes/__init__.py index d33dc9c13..3e97f7861 100644 --- a/files/events/routes/__init__.py +++ b/files/events/routes/__init__.py @@ -1,2 +1,3 @@ from .awards import * from .jinja import * +from .theme import * diff --git a/files/events/routes/theme.py b/files/events/routes/theme.py new file mode 100644 index 000000000..f93566890 --- /dev/null +++ b/files/events/routes/theme.py @@ -0,0 +1,16 @@ +from files.events.helpers import get_or_create_event_user +from files.__main__ import g, app +from files.routes.wrappers import auth_required + +@app.post("/event-darkmode") +@auth_required +def event_darkmode(v): + user = get_or_create_event_user(v, g.db) + if user.event_darkmode: + user.event_darkmode = False + else: + user.event_darkmode = True + + g.db.add(user) + + return {} diff --git a/files/events/templates/banner.svg b/files/events/templates/banner.svg deleted file mode 100644 index b33ec1199..000000000 --- a/files/events/templates/banner.svg +++ /dev/null @@ -1,199 +0,0 @@ - diff --git a/files/events/templates/banner_rDrama.html b/files/events/templates/banner_rDrama.html index cf846cf12..1c5667988 100644 --- a/files/events/templates/banner_rDrama.html +++ b/files/events/templates/banner_rDrama.html @@ -11,7 +11,7 @@ 0
  • - {{daysTillChristmas()}} + {{days_till_christmas()}}
  • diff --git a/files/events/templates/sidebar_rDrama.html b/files/events/templates/sidebar_rDrama.html index 4e48d7311..923da2b09 100644 --- a/files/events/templates/sidebar_rDrama.html +++ b/files/events/templates/sidebar_rDrama.html @@ -22,9 +22,12 @@ - +

    + + {% if sub %} {% if sub.sidebar_html %}
    {{sub.sidebar_html|safe}}
    diff --git a/files/templates/util/html_head.html b/files/templates/util/html_head.html index a29dd2df5..b477146b3 100644 --- a/files/templates/util/html_head.html +++ b/files/templates/util/html_head.html @@ -160,6 +160,10 @@ {% if EVENT_STYLES %} {% set EVENT_STYLES = 'css/event/'+EVENT_STYLES %} + + {% if v and user_event_darkmode(v, g.db)%} + + {% endif %} {% endif %} {% if request.path == '/chat' %}