Skip to content

Conversation

@fehrstef
Copy link

@fehrstef fehrstef commented Apr 21, 2025

Ich hab die Erweiterung der Tabelle aus dem anderen Branch heraus gelöst, sodass es hier erstmal nur um die Erweiterung der Kontakte-Tabelle gehen soll.

Grob funktioniert es wie folgt:

  • Die Tabelle in core_components wurde um ein paar Attribute ergänzt, durch die einzelne Spalten optional als sortier- bzw. filterbar markiert werden können
  • Wird auf die Überschrift einer solchen Spalte geklickt, wird die Sortierung angestoßen. Wird auf das Filtersymbol geklickt, wird ein entsprechender Dialog geöffnet.
  • Ein Großteil der eigentlichen Logik befindet sich in SortAndFilterTableHelper. Dort werden durch ein Makro Event-Handler für die Sortier- /Filter-Events der Tabelle bereitgestellt.
  • Die konkrete Tabelle, in dem Fall ContactsTableComponent, muss für das Makro die Funktionen column_to_database_field/1, column_to_getter/1 und load_data/3 bereitstellen. Über load_data soll dabei sowohl das Filter- als auch das Sortieren in der Datenbank übernommen werden. Dafür gibt es in Personal-Kontext die Funktion list_contacts/3. Sofern Sortieren oder Filtern nicht direkt auf der Datenbank möglich sind, macht SortAndFilterTableHelper es in-memory.

Um das ganze besser testen zu können, habe ich außerdem die seeds-Datei angepasst. Kontakte zu einem Verein werden dort jetzt in Sportyweb.ContactSeedHelper::add_contact/1 angelegt wo intern die Funktion add_contract merhmals verwendet werden kann.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant