From 4b220db7f933b02d58cca817dfdd14777dae709a Mon Sep 17 00:00:00 2001
From: Andreas Valder <andreasv@fsmpi.rwth-aachen.de>
Date: Wed, 24 Aug 2016 01:53:56 +0200
Subject: [PATCH] added video overwiew with group by

---
 server.py             |  6 +++-
 static/style.css      |  1 +
 templates/macros.html | 23 +++++++++++++++
 templates/videos.html | 69 ++++++++++++++++++++++++++++++++++++++++++-
 4 files changed, 97 insertions(+), 2 deletions(-)

diff --git a/server.py b/server.py
index f0b895a..ac6ad34 100755
--- a/server.py
+++ b/server.py
@@ -86,7 +86,11 @@ def index():
 
 @app.route('/videos')
 def videos():
-	return render_template('videos.html')
+	c=query("SELECT * FROM courses")
+	for i in c:
+		if i['semester'] == '':
+			i['semester'] = 'zeitlos'
+	return render_template('videos.html', courses=c, groupedby=request.args.get('groupedby'))
 
 @app.route('/faq')
 def faq():
diff --git a/static/style.css b/static/style.css
index 292953c..3a3885d 100644
--- a/static/style.css
+++ b/static/style.css
@@ -1,2 +1,3 @@
 .videopreview li:nth-child(even) { background: #f5f5f5; }
+.courses-list li:nth-child(even) { background: #fAfAfA; }
 .mejs-container { height: 80% !important; width: 100% !important; position: fixed !important; }
diff --git a/templates/macros.html b/templates/macros.html
index c1f8654..689b152 100644
--- a/templates/macros.html
+++ b/templates/macros.html
@@ -56,3 +56,26 @@
 	<source type="video/mp4" src="https://videoag.fsmpi.rwth-aachen.de/{{ videos[0]['path'] }}" />
 </video>
 {% endmacro %}
+
+{% macro course_list_item(course,show_semester=False) %}
+<li class="list-group-item">
+	<div class="row">
+		{% if show_semester %}
+			<span class="col-xs-1">
+				{{ course.semester }}
+			</span>
+			<span class="col-xs-6">
+		{% else %}
+			<span class="col-xs-7">
+		{% endif %}
+			{{ course.title }}
+		</span>
+		<span class="col-xs-3">
+			{{ course.organizer }}
+		</span>
+		<span class="col-xs-2">
+			{{ course.subject }}
+		</span>
+	</div>
+</li>
+{% endmacro %}
diff --git a/templates/videos.html b/templates/videos.html
index 142826f..aa4a8b3 100644
--- a/templates/videos.html
+++ b/templates/videos.html
@@ -1,6 +1,73 @@
+{% from 'macros.html' import course_list_item %}
+{% set active_page = 'videos' -%}
+{% set groupedby = groupedby|default('semester', true) -%}
+
 {% extends "base.html" %}
-{% set active_page = "videos" %}
 {% block content %}
 <div class="container-fluid">
+	<div class="row">
+		<div class="col-xs-12 dropdown">
+		  <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Grupierung
+		  <span class="caret"></span></button>
+		  <ul class="dropdown-menu">
+		    <li><a href="?groupedby=semester">Semester</a></li>
+		    <li><a href="?groupedby=courses">Veranstaltungen</a></li>
+		    <li><a href="?groupedby=organizer">Dozenten</a></li>
+		  </ul>
+		</div>
+	</div>
+	<div class="row"><div class="col-xs-offset-1 col-xs-10">
+	{% if groupedby == 'semester' %}
+		{% for g in courses|groupby('semester')|reverse %}
+			<div class="row panel-group">
+				<div class="col-xs-12"><div class="panel panel-default">
+					<div class="panel-heading">
+						<h1 class="panel-title">{{g.grouper}}</h1>
+					</div>
+					<ul class="courses-list list-group">
+						{% for i in g.list %}
+						{{ course_list_item(i) }}
+						{% endfor %}
+					</ul>
+				</div></div>
+			</div>
+		{% endfor %}
+	{% endif %}
+	
+	{% if groupedby == 'courses' %}
+		{% for g in courses|groupby('title')|reverse %}
+		<div class="row panel-group">
+			<div class="col-xs-12"><div class="panel panel-default">
+				<div class="panel-heading">
+					<h1 class="panel-title">{{g.grouper}}</h1>
+				</div>
+				<ul class="courses-list list-group">
+					{% for i in g.list|sort(attribute='semester') %}
+					{{ course_list_item(i,true) }}
+					{% endfor %}
+				</ul>
+			</div></div>
+		</div>
+		{% endfor %}
+	{% endif %}
+	
+	{% if groupedby == 'organizer' %}
+		{% for g in courses|groupby('organizer')|reverse %}
+		<div class="row panel-group">
+			<div class="col-xs-12"><div class="panel panel-default">
+				<div class="panel-heading">
+					<h1 class="panel-title">{{g.grouper}}</h1>
+				</div>
+				<ul class="courses-list list-group">
+					{% for i in g.list|sort(attribute='semester') %}
+					{{ course_list_item(i,true) }}
+					{% endfor %}
+				</ul>
+			</div></div>
+		</div>
+		{% endfor %}
+	{% endif %}
+	</div></div>
+
 </div>
 {% endblock %}
-- 
GitLab