Skip to content

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 von dbtFilter aus makeCourseTable, aktuell Z. 116-177 in src/Handler/Course/List.hs. Für die Filter sollte jeweils ein Infix-Search passieren; der "search"-Filter aus CourseListR kann hierfür als Beispiel verwendet werden (aktuell Z. 171-176 in src/Handler/Course/List.hs).
  • dbtFilterUI ist für die Materialseite aktuell einfach mempty, d.h. es werden gar keine Filter angezeigt. Sobald die Filter implementiert sind, sollte in dbtFilterUI die Filteranzeige implementiert werden. Auch hier kann man sich aus CourseListR einiges abschauen, d.h. von dbtFilterUI aus makeCourseTable, aktuell Z. 178-185 in src/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 in src/Handler/Material.hs, dort die Definition von previouslyUsed (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, also makeCourseTable in src/Handler/Course/List.hs ansehen. Für dieses Issue relevant ist erstmal hauptsächlich dbtFilter und dbtFilterUI.
Edited by Sarah Vaupel