1
0
Fork 0
mirror of https://github.com/Kunsi/pretalx-plugin-broadcast-tools synced 2024-11-21 19:51:03 +00:00

move event info to dedicated json file, also load event color from json

This commit is contained in:
Franzi 2021-11-22 10:14:25 +01:00
parent f1e61ad655
commit 4973446da8
Signed by: kunsi
GPG key ID: 12E3D2136B818350
5 changed files with 31 additions and 13 deletions

View file

@ -17,6 +17,7 @@
padding: 15px; padding: 15px;
box-shadow: 5px 5px 10px 0px rgba(50, 50, 50, 0.75); box-shadow: 5px 5px 10px 0px rgba(50, 50, 50, 0.75);
background-color: #3aa57c;
} }
#title { #title {

View file

@ -1,5 +1,6 @@
schedule = null; schedule = null;
room_name = null; room_name = null;
event_info = null;
$(function() { $(function() {
$('#speaker').text('Content will appear soon.'); $('#speaker').text('Content will appear soon.');
@ -16,8 +17,8 @@ function update_lower_third() {
return return
} }
if (!schedule) { if (!schedule || !event_info) {
console.warn("There's no schedule yet, exiting ..."); console.warn("There's no schedule or no event info yet, exiting ...");
return return
} }
@ -51,7 +52,7 @@ function update_lower_third() {
$('#speaker').text(current_talk['persons'].join(', ')); $('#speaker').text(current_talk['persons'].join(', '));
$('#info_line').text(current_talk['infoline']); $('#info_line').text(current_talk['infoline']);
} else { } else {
$('#title').text(schedule['conference']['no_talk']); $('#title').text(event_info['no_talk']);
$('#speaker').text(''); $('#speaker').text('');
$('#info_line').text(''); $('#info_line').text('');
} }
@ -65,6 +66,11 @@ function update_lower_third() {
window.setInterval(update_lower_third, 1000); window.setInterval(update_lower_third, 1000);
function update_schedule() { function update_schedule() {
$.getJSON('event.json', function(data) {
event_info = data;
$('#box').css('background-color', data['color']);
});
$.getJSON('schedule.json', function(data) { $.getJSON('schedule.json', function(data) {
console.info('schedule updated with ' + data['talks'].length + ' talks in ' + data['rooms'].length + ' rooms'); console.info('schedule updated with ' + data['talks'].length + ' talks in ' + data['rooms'].length + ' rooms');

View file

@ -10,11 +10,6 @@
{% endcompress %} {% endcompress %}
<script src="{% static "pretalx_lower_thirds/update.js" %}"></script> <script src="{% static "pretalx_lower_thirds/update.js" %}"></script>
<link rel="stylesheet" href="{% static "pretalx_lower_thirds/frontend.css" %}" /> <link rel="stylesheet" href="{% static "pretalx_lower_thirds/frontend.css" %}" />
<style type="text/css">
#box {
background-color: {{ request.event.primary_color|default:"#3aa57c" }};
}
</style>
</head> </head>
<body> <body>
<div id="box"> <div id="box">

View file

@ -9,6 +9,11 @@ urlpatterns = [
views.LowerThirdsView.as_view(), views.LowerThirdsView.as_view(),
name="lowerthirds", name="lowerthirds",
), ),
re_path(
f"^(?P<event>[{SLUG_CHARS}]+)/p/lower-thirds/event.json$",
views.EventInfoView.as_view(),
name="event_info",
),
re_path( re_path(
f"^(?P<event>[{SLUG_CHARS}]+)/p/lower-thirds/schedule.json$", f"^(?P<event>[{SLUG_CHARS}]+)/p/lower-thirds/schedule.json$",
views.ScheduleView.as_view(), views.ScheduleView.as_view(),

View file

@ -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): class ScheduleView(EventPermissionRequired, ScheduleMixin, TemplateView):
permission_required = "agenda.view_schedule" permission_required = "agenda.view_schedule"
@ -52,11 +68,6 @@ class ScheduleView(EventPermissionRequired, ScheduleMixin, TemplateView):
infoline = str(schedule.event.settings.infoline or "") infoline = str(schedule.event.settings.infoline or "")
return JsonResponse( 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( "rooms": sorted(
{ {
str(room["name"]) str(room["name"])