Skip to content
Snippets Groups Projects
Commit 170926cf authored by Dorian Lesbre's avatar Dorian Lesbre
Browse files

Added timeline to activity view

parent f323e8aa
No related branches found
No related tags found
No related merge requests found
......@@ -13,18 +13,27 @@ class InterludesActivity(models.Model):
min_paricipants = models.PositiveIntegerField(
"Nombre minimum de participants"
)
display = models.BooleanField("afficher cette activité", default=False)
display = models.BooleanField("afficher dans la liste d'activités", default=False)
must_subscribe = models.BooleanField("sur inscription", default=False)
host_name = models.CharField("nom de l'organisateur", max_length=50)
host_email = models.EmailField("email de l'organisateur")
description = models.TextField("description", max_length=2000)
on_planning = models.BooleanField("afficher sur le planning", default=False)
on_planning = models.BooleanField(
"afficher sur le planning", default=False,
help_text="Nécessite de salle et heure de début non vide"
)
start = models.DateTimeField("début", null=True, blank=True)
room = models.CharField("salle", max_length=100, null=True, blank=True)
notes = models.TextField("Notes privées", max_length=2000, blank=True)
@property
def end(self):
if (not self.start) or (not self.duration):
return None
return self.start + self.duration
@property
def nb_participants(self) -> str:
if self.max_participants == 0:
......
......@@ -233,6 +233,14 @@ span.helptext {
unicode-bidi: bidi-override;
direction: rtl;
}
.planning_title {
font-size: 1em;
}
.planning_room {
font-size: 1em;
color: #555;
font-style: italic;
}
.button, .button:link, .button:visited, input[type=submit] {
color: white;
......
This diff is collapsed.
{% extends "base.html" %}
{% load static %}
{% block head %}
<script src="{% static 'js/vis-timeline.min.js' %}"></script>
{% endblock %}
{% block nav_activite %}current{% endblock %}
{% block "content" %}
{% if settings.display_planning %}
<h2>Planning</h2>
<div id="visualization"></div>
<script type="text/javascript">
// https://visjs.org/
// DOM element where the Timeline will be attached
var container = document.getElementById('visualization');
// Create a DataSet (allows two way data-binding)
var items = new vis.DataSet([
{% for act in planning %}
{
id: {{ act.id }},
content: '<strong>{{ act.title }}</strong><div class="planning_room">{{ act.room }}</div>',
start: '{{ act.start|date:"Y-m-d H:i:s" }}',
align: 'left',
title: 'hello',
subgroup: '{{ act.room }}',
//end:'{{ act.end|date:"Y-m-d H:i:s" }}'
},
{% endfor %}
]);
// Configuration for the Timeline
var options = {
// showMajorLabels: false,
showCurrentTime: false,
};
// Create a Timeline
var timeline = new vis.Timeline(container, items, options);
// timeline.on('select', function (properties) {
// alert('selected items: ' + properties.items);
// });
</script>
{% endif %}
<h2>Activités</h2>
<p>Durant tout l'événement, des jeux seront en libre-service et des tables disponibles pour jouer.
Certaines activités (JDRs, murders...) ne pourront se faire qu'avec inscription au vue d'un nombre de places limité.
......
......@@ -21,6 +21,7 @@
<ul>
<li>La création de compte est {% if settings.registrations_open %}ouverte{% else %}fermée{% endif %}.</li>
<li>Les inscriptions sont {% if settings.inscriptions_open %}ouvertes{% else %}fermées{% endif %}.</li>
<li>Le planning {% if settings.display_planning %}est affiché{% else %}n'est pas affiché{% endif %}.</li>
<li>La répartition des activités {% if settings.activities_allocated %}est effectuée et affichée{% else %}n'est pas faite/affichée{% endif %}.</li>
</ul>
......
......@@ -31,6 +31,7 @@ class ActivityView(TemplateView):
"""ajoute la liste des activités au contexte"""
context = super(ActivityView, self).get_context_data(**kwargs)
context['activities'] = InterludesActivity.objects.filter(display=True).order_by("title")
context['planning'] = InterludesActivity.objects.filter(on_planning=True).order_by("title")
return context
......
......@@ -41,7 +41,10 @@ class SiteSettings(SingletonModel):
display_planning = models.BooleanField("Afficher le planning", default=False)
activities_allocated = models.BooleanField("Afficher les activités obtenues", default=False)
activities_allocated = models.BooleanField(
"Afficher les activités obtenues", default=False,
help_text="Suppose que l'allocation des activités a été effectuée."
)
@property
def contact_email_reversed(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment