Filter für Kursmaterial-Tabelle
Status Quo: Die Tabelle von Kursmaterialen (= MaterialListR
) ist aktuell überhaupt nicht filterbar. Filter nach Name, Art und Beschreibung wären sinnvoll.
TODO:
Filter für MaterialListR
implementieren, sodass nach Name, Art und Beschreibung gefiltert werden kann. Zusätzlich sollte es Autovervollständigung im Filterfeld für Art geben, d.h. zuerst sollten alle für diesen Kurs eingetragenen Material-Arten aus der Datenbank geholt werden und als Option angezeigt werden.
Dafür muss getMaterialListR
(in src/Handler/Material.hs
) erweitert werden:
- In
dbtFilter
sollten Filter nach Name, Art und Beschreibung hinzugefügt werden. Hierzu kann man sich aus der Kursliste (=CourseListR
) das grundlegende Vorgehen abschauen; konkreter vondbtFilter
ausmakeCourseTable
, aktuell Z. 116-177 insrc/Handler/Course/List.hs
. Für die Filter sollte jeweils ein Infix-Search passieren; der "search"-Filter ausCourseListR
kann hierfür als Beispiel verwendet werden (aktuell Z. 171-176 insrc/Handler/Course/List.hs
). -
dbtFilterUI
ist für die Materialseite aktuell einfachmempty
, d.h. es werden gar keine Filter angezeigt. Sobald die Filter implementiert sind, sollte indbtFilterUI
die Filteranzeige implementiert werden. Auch hier kann man sich ausCourseListR
einiges abschauen, d.h. vondbtFilterUI
ausmakeCourseTable
, aktuell Z. 178-185 insrc/Handler/Course/List.hs
. - Eine "Autovervollständigung" für den Filter nach der Material-Art wäre sinnvoll. Beim Anlegen von neuem Material wird bereits eine solche Liste angezeigt; siehe auch
makeMaterialForm
insrc/Handler/Material.hs
, dort die Definition vonpreviouslyUsed
(aktuell Z. 41-47).
Zum Einlesen:
- Zum Schreiben der Filter benötigt man rudimentäres Vorwissen zu SQL und Esqueleto.
Zum Einlesen in SQL an sich bietet PostgreSQL ein einigermaßen gutes Tutorial an.
Zum Einlesen in Esqueleto lohnt es sich die Haddock-Dokumentation zu überfliegen. - Zum Einlesen in
DBTable
kann man sich allgemein die Kursliste, alsomakeCourseTable
insrc/Handler/Course/List.hs
ansehen. Für dieses Issue relevant ist erstmal hauptsächlichdbtFilter
unddbtFilterUI
.
Edited by Sarah Vaupel