update Layout Events, add Category Selector

This commit is contained in:
Götz 2017-10-17 01:58:18 +02:00
parent 32f4c1acaa
commit 4345b05e21
12 changed files with 179 additions and 59 deletions

View File

@ -19,6 +19,7 @@ from apps.events import views
urlpatterns = [
url(r'^$', views.events_main_page, name='events-main'),
url(r'^today/$', views.day_events, name='day-events'),
url(r'^week/$', views.week_events, name='week-events'),
url(r'^all/$', views.all_events, name='all-events'),
]

View File

@ -1,10 +1,20 @@
import datetime
from time import time
from django.shortcuts import render
from apps.events.models import Event
# Helper Methods
def get_categories(events: list):
categories = []
for event in events:
if not categories.__contains__(event.category):
categories.append(event.category)
return categories
# Create your views here.
def events_main_page(request):
return render(request, "events/home.jinja")
@ -12,21 +22,33 @@ def events_main_page(request):
def all_events(request):
today = datetime.datetime.now()
all_future_events = Event.objects.filter(date__gte=today)
all_future_events = Event.objects.filter(date__gte=today).order_by('date', 'time')
lastdate = Event.objects.latest('date').date
return render(request, "events/all_events.jinja", {
'startdate': today,
'events': all_future_events,
'enddate': lastdate,
'categories': get_categories(all_future_events),
})
def week_events(request):
today = datetime.datetime.now()
weekdelta = today + datetime.timedelta(7)
events = Event.objects.filter(date__gte=today, date__lte=weekdelta)
events = Event.objects.filter(date__gte=today, date__lte=weekdelta).order_by('date', 'time')
return render(request, "events/week_events.jinja", {
'startdate': today,
'enddate': weekdelta,
'events': events,
'categories': get_categories(events),
})
def day_events(request):
today = datetime.datetime.now()
events = Event.objects.filter(date=today).order_by('time')
return render(request, "events/day_events.jinja", {
'date': today,
'events': events,
'categories': get_categories(events),
})

View File

@ -0,0 +1,47 @@
#food-nav {
padding-top: 0;
padding-bottom: 0;
}
#food-nav .container, #food-nav .container .nav-link {
height: 100%;
}
.jump-up-menu {
position: fixed;
margin-bottom: 50px;
bottom: 0;
right: 0;
background: white;
display: none;
border: 1px solid #343a40;
border-top-left-radius: 3px;
}
#category-jump-up:hover .jump-up-menu, .jump-up-menu:hover {
display: block;
}
.jump-up-elem {
padding: 5px;
margin-bottom: 0;
border-bottom: 1px solid #343a40;
}
.jump-up-elem:hover {
background-color: #cfcfcf;
}
footer {
/*mb equal height in #food-nav*/
margin-bottom: 50px;
}
/** Sticky Bottom Nav **/
#food-nav {
z-index: 5000;
bottom: 0;
position: fixed;
width: 100%;
height: 50px;
}

View File

@ -0,0 +1,19 @@
/**
* Created by michigg on 16.10.17.
*/
function showCategory(category) {
// TODO: Überarbeiten. Uni eigentlich /= Univis geht das auch schöner?
var events = document.getElementsByClassName('event');
for (var i = 0; i < events.length; i++) {
events[i].style.display = 'none';
}
for (var i = 0; i < events.length; i++) {
var classes = events[i].classList;
for (var j = 0; j < classes.length; j++) {
if (category.includes(classes[j])) {
console.log(events[i])
events[i].style.display = 'block';
}
}
}
}

View File

@ -8,8 +8,6 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>OFU App</title>
<meta name="author" content="Michael Götz"/>
{# {% javascript "main_js" %}#}
{# {% block js_head %}{% endblock %}#}
{% block js_extra %}{% endblock %}
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="{{ static('libs/font-awesome-4.7.0/css/font-awesome.css') }}">

View File

@ -1,10 +1,12 @@
{% extends 'base.jinja' %}
{% block head_extra_first %}
<!-- Make sure you put this AFTER Leaflet's CSS -->
{% block js_extra %}
<script src="{{ static('libs/leaflet/leaflet.js') }}"></script>
<script id="nav_data" src="{{ static('js/donar/navigate.js') }}" data-address="{{ room.address }}"
data-short="{{ room.short }}"></script>
{% endblock %}
{% block css_extra %}
<link rel="stylesheet" href="{{ static('libs/leaflet/leaflet.css') }}"/>
<!-- Make sure you put this AFTER Leaflet's CSS -->
<script src="{{ static('libs/leaflet/leaflet.js') }}"></script>
<script id="nav_data" src="{{ static('js/donar/navigate.js') }}" data-address="{{ room.address }}"
data-short="{{ room.short }}"></script>
{% endblock %}
{% block headline %}
<h1 class="text-center"> Donar </h1>

View File

@ -1,32 +1,14 @@
{% extends 'base.jinja' %}
{% extends 'events/events_wrapper.jinja' %}
{% import '/macros/event_macros.jinja' as macros %}
{% block headline %}
<h1 class="text-center">Alle Events an der OFU </h1>
<h2 class="text-center">{{ startdate.strftime("%d.%m.%Y") }} bis {{ enddate.strftime("%d.%m.%Y") }}</h2>
<h1 class="text-center">Events</h1>
<p class="text-center">{{ startdate.strftime("%d.%m.%Y") }} bis {{ enddate.strftime("%d.%m.%Y") }}</p>
{% endblock %}
{% block content %}
<div class="container">
<div class="row">
<div id="events" class="row">
{% for event in events %}
<div class="col-6 p-3">
<div class="p-3 border border-dark roundep-3 border border-dark rounded bg-light text-dark">
<h3>{{ event.title }}</h3>
<p>Wann: {{ event.date.strftime("%d.%m.") }} ab {{ event.time.strftime("%H:%M") }}</p>
<p>Wo:</p>
<ul>
{% for location in event.locations.all() %}
<li>{{ location.name }}</li>
{% endfor %}
</ul>
{% if event.orgname %}
<p>Organisator: {{ event.orgname }}</p>
{% endif %}
{% if event.link %}
<a href="{{ event.link }}">Details</a>
{% endif %}
<p>Kategorie: {{ event.category }}</p>
</div>
</div>
{{ macros.event(event) }}
{% endfor %}
</div>
</div>

View File

@ -0,0 +1,15 @@
{% extends 'events/events_wrapper.jinja' %}
{% import '/macros/event_macros.jinja' as macros %}
{% block headline %}
<h1 class="text-center">Events</h1>
<p class="text-center">{{ date.strftime("%d.%m.%Y") }}</p>
{% endblock %}
{% block content %}
<div class="container">
<div id="events" class="row">
{% for event in events %}
{{ macros.event(event) }}
{% endfor %}
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,23 @@
{% extends 'base.jinja' %}
{% block js_extra %}
<script src="{{ static('js/events/sort_categories.js') }}"></script>
{% endblock %}
{% block css_extra %}
<link rel="stylesheet" href="{{ static('css/events/main.css') }}">
{% endblock %}
{% block bottom_nav %}
<nav id="food-nav" class="navbar navbar-default bg-light">
<div class="container">
<a class="nav-link" href="{{ url('day-events') }}">Today</a>
<a class="nav-link" href="{{ url('week-events') }}">Week</a>
<a class="nav-link" href="{{ url('all-events') }}">All</a>
<div id="category-jump-up" class="nav-link"><i class="fa fa-bars" aria-hidden="true"></i>
<div class="jump-up-menu">
{% for category in categories %}
<p class="jump-up-elem" onclick="showCategory('{{ category }}')">{{ category }}</p>
{% endfor %}
</div>
</div>
</div>
</nav>
{% endblock %}

View File

@ -1,28 +1,17 @@
{% extends 'base.jinja' %}
{% extends 'events/events_wrapper.jinja' %}
{% import '/macros/event_macros.jinja' as macros %}
{% block js_extra %}
<script src="{{ static('js/events/sort_categories.js') }}"></script>
{% endblock %}
{% block headline %}
<h1 class="text-center">Events an der OFU </h1>
<h2 class="text-center">{{ startdate.strftime("%d.%m.%Y") }} bis {{ enddate.strftime("%d.%m.%Y") }}</h2>
<h1 class="text-center">Events</h1>
<p class="text-center">{{ startdate.strftime("%d.%m.%Y") }} bis {{ enddate.strftime("%d.%m.%Y") }}</p>
{% endblock %}
{% block content %}
<div class="container">
<div class="row">
<div id="events" class="row">
{% for event in events %}
<div class="col-6 p-3">
<div class="p-3 border border-dark rounded bg-light text-dark">
<h3>{{ event.title }}</h3>
<p>Wann: {{ event.date.strftime("%d.%m.") }} ab {{ event.time.strftime("%H:%M") }}</p>
<p>Wo:</p>
<ul>
{% for location in event.locations.all() %}
<li>{{ location.name }}</li>
{% endfor %}
</ul>
{% if event.link %}
<a href="{{ event.link }}">Details</a>
{% endif %}
<p>Kategorie: {{ event.category }}</p>
</div>
</div>
{{ macros.event(event) }}
{% endfor %}
</div>
</div>

View File

@ -4,10 +4,10 @@
<h1 class="text-center">Essen an der OFU</h1>
{% endblock %}
{% block content %}
<div class="container text-dark">
<div class="row">
{{ macros.home_item(title='Daily Food', url_id='daily-food', description='Übersicht über die heutigen Essensmöglichkeiten für Studenten') }}
{{ macros.home_item(title='Weekly Food', url_id='weekly-food', description='Übersicht über die wöchentlichen Essensmöglichkeiten für Studenten.') }}
</div>
</div>
{# <div class="container text-dark">#}
{# <div class="row">#}
{# {{ macros.home_item(title='Daily Food', url_id='daily-food', description='Übersicht über die heutigen Essensmöglichkeiten für Studenten') }}#}
{# {{ macros.home_item(title='Weekly Food', url_id='weekly-food', description='Übersicht über die wöchentlichen Essensmöglichkeiten für Studenten.') }}#}
{# </div>#}
{# </div>#}
{% endblock %}

View File

@ -0,0 +1,22 @@
{% macro event(event) -%}
<div class="col-sm-12 col-md-6 col p-3 event {{ event.category }}">
<div class="p-3 border border-dark rounded bg-light text-dark">
{% if event.link %}
<a href="{{ event.link }}">
<h5>{{ event.title }}</h5></a>
<small>{{ event.category }}</small>
{% else %}
<h5>{{ event.title }}</h5>
<small>{{ event.category }}</small>
{% endif %}
<p class="mb-0">Wann: {{ event.date.strftime("%d.%m.") }}
ab {{ event.time.strftime("%H:%M") }}</p>
<p>Wo:
{% for location in event.locations.all() %}
<span>{{ location.name }}</span>
{% endfor %}
</p>
</div>
</div>
{% endmacro %}