From 4973446da8c4e883780db1111bc696d5b14523af Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Mon, 22 Nov 2021 10:14:25 +0100 Subject: [PATCH] move event info to dedicated json file, also load event color from json --- .../static/pretalx_lower_thirds/frontend.css | 1 + .../static/pretalx_lower_thirds/update.js | 12 ++++++++--- .../pretalx_lower_thirds/lower_thirds.html | 5 ----- pretalx_lower_thirds/urls.py | 5 +++++ pretalx_lower_thirds/views.py | 21 ++++++++++++++----- 5 files changed, 31 insertions(+), 13 deletions(-) diff --git a/pretalx_lower_thirds/static/pretalx_lower_thirds/frontend.css b/pretalx_lower_thirds/static/pretalx_lower_thirds/frontend.css index 074f1dd..a933d42 100644 --- a/pretalx_lower_thirds/static/pretalx_lower_thirds/frontend.css +++ b/pretalx_lower_thirds/static/pretalx_lower_thirds/frontend.css @@ -17,6 +17,7 @@ padding: 15px; box-shadow: 5px 5px 10px 0px rgba(50, 50, 50, 0.75); + background-color: #3aa57c; } #title { diff --git a/pretalx_lower_thirds/static/pretalx_lower_thirds/update.js b/pretalx_lower_thirds/static/pretalx_lower_thirds/update.js index a0b401e..1bd8cb6 100644 --- a/pretalx_lower_thirds/static/pretalx_lower_thirds/update.js +++ b/pretalx_lower_thirds/static/pretalx_lower_thirds/update.js @@ -1,5 +1,6 @@ schedule = null; room_name = null; +event_info = null; $(function() { $('#speaker').text('Content will appear soon.'); @@ -16,8 +17,8 @@ function update_lower_third() { return } - if (!schedule) { - console.warn("There's no schedule yet, exiting ..."); + if (!schedule || !event_info) { + console.warn("There's no schedule or no event info yet, exiting ..."); return } @@ -51,7 +52,7 @@ function update_lower_third() { $('#speaker').text(current_talk['persons'].join(', ')); $('#info_line').text(current_talk['infoline']); } else { - $('#title').text(schedule['conference']['no_talk']); + $('#title').text(event_info['no_talk']); $('#speaker').text(''); $('#info_line').text(''); } @@ -65,6 +66,11 @@ function update_lower_third() { window.setInterval(update_lower_third, 1000); function update_schedule() { + $.getJSON('event.json', function(data) { + event_info = data; + + $('#box').css('background-color', data['color']); + }); $.getJSON('schedule.json', function(data) { console.info('schedule updated with ' + data['talks'].length + ' talks in ' + data['rooms'].length + ' rooms'); diff --git a/pretalx_lower_thirds/templates/pretalx_lower_thirds/lower_thirds.html b/pretalx_lower_thirds/templates/pretalx_lower_thirds/lower_thirds.html index f144458..5b2fdc9 100644 --- a/pretalx_lower_thirds/templates/pretalx_lower_thirds/lower_thirds.html +++ b/pretalx_lower_thirds/templates/pretalx_lower_thirds/lower_thirds.html @@ -10,11 +10,6 @@ {% endcompress %} -
diff --git a/pretalx_lower_thirds/urls.py b/pretalx_lower_thirds/urls.py index 9c44df7..592cad3 100644 --- a/pretalx_lower_thirds/urls.py +++ b/pretalx_lower_thirds/urls.py @@ -9,6 +9,11 @@ urlpatterns = [ views.LowerThirdsView.as_view(), name="lowerthirds", ), + re_path( + f"^(?P[{SLUG_CHARS}]+)/p/lower-thirds/event.json$", + views.EventInfoView.as_view(), + name="event_info", + ), re_path( f"^(?P[{SLUG_CHARS}]+)/p/lower-thirds/schedule.json$", views.ScheduleView.as_view(), diff --git a/pretalx_lower_thirds/views.py b/pretalx_lower_thirds/views.py index 6f45603..e410cc9 100644 --- a/pretalx_lower_thirds/views.py +++ b/pretalx_lower_thirds/views.py @@ -40,6 +40,22 @@ class LowerThirdsOrgaView(PermissionRequired, FormView): } +class EventInfoView(TemplateView): + def get(self, request, *args, **kwargs): + color = (self.request.event.primary_color or "#3aa57c") + return JsonResponse( + { + "slug": self.request.event.slug, + "name": str(self.request.event.name), + "no_talk": str(self.request.event.settings.lower_thirds_no_talk_info), + "color": color, + }, + json_dumps_params={ + "indent": 4, + }, + ) + + class ScheduleView(EventPermissionRequired, ScheduleMixin, TemplateView): permission_required = "agenda.view_schedule" @@ -52,11 +68,6 @@ class ScheduleView(EventPermissionRequired, ScheduleMixin, TemplateView): infoline = str(schedule.event.settings.infoline or "") return JsonResponse( { - "conference": { - "slug": schedule.event.slug, - "name": str(schedule.event.name), - "no_talk": str(schedule.event.settings.lower_thirds_no_talk_info), - }, "rooms": sorted( { str(room["name"])