> For the complete documentation index, see [llms.txt](https://biglazytables.gitbook.io/big-lazy-tables/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://biglazytables.gitbook.io/big-lazy-tables/funktionen/filtering-and-sorting.md).

# Filtering & Sorting

[BLT](/big-lazy-tables/bachelorarbeit-ip6-big-lazy-tables-fur-das-kolibri-toolkit.md) unterstützt das Filtern und Sortieren eines Datensatzes.

Pro Tabellenspalte kann absteigend oder aufsteigend sortiert werden und per Inputfeld kann der Datensatz nach bestimmten Einträgen eingegrenzt werden. Durch die Konzeption eines veränderlichen [Filter Objekts](#filter-objekt), welches der Datenquelle mitgegeben wird, ist eine Spaltenübergreifende Filterung möglich.&#x20;

Das Sortieren **eines bereits gefilterten** Datensatzes ist ebenfalls möglich. Die Filter- und Sortiereingaben werden im Projektor auf einem HTML Element ausgelöst und mit den nötigen Parametern (Spalte, Sortierstatus/ Filtereingabewert) an den [Controller ](/big-lazy-tables/system/module/controller.md)übergeben.&#x20;

Der [Controller ](/big-lazy-tables/system/module/controller.md)ruft das letzte [Filterobjekt ](#filter-objekt)aus dem Modell ab und ergänzt/verändert es mit der neuen Eingabe. Das neu gebaute Filterobjekt wird an den Service weitergegeben und die neu gefilterten Dateneinträge werden **asynchron** vom Controller abgeholt und im [Presentation Model](/big-lazy-tables/system/module/presentation-model.md) abgelegt. Durch das Ändern der anzuzeigenden Daten wird die View benachrichtigt, holt sich über den Controller die aktuellen Einträge und führt intern die entsprechende update-Funktion aus.

### Filter Objekt

Das Filterobjekt besteht aus **zwei** Teilen:&#x20;

Der erste Teil verwaltet die Eingaben des Endnutzers aus den Filter-Eingabefeldern in Form eines Arrays. Die Stelle des Arrays repräsentiert die Spaltennummer und der String an der jeweiligen Stelle stellt die Eingabe des Endnutzers dar.&#x20;

{% hint style="info" %}
Die Sortierung ist Teil des Filter Objekts.&#x20;
{% endhint %}

Der zweite Teil verwaltet die aktuelle Sortierung. Da gleichzeitig nur eine Sortierung auf der gesamten Tabelle möglich ist, wird im Sortierobjekt nur die gewählte Spaltennummer und der Sortierstatus (ab- oder aufsteigend) verwaltet.

```javascript
filterObj: {
   ColumnFilters: ['', 'hans', '', '', 'zuerich', ''],
   ColumnSorter:
       {
           column: 1,
           state:  'asc'
       }
}
```

Beschreibung zum abgebildeten Filterobjekt-Beispiel:

Auf der ersten Spalte der **ColumnFilters** wurde der Name eingegrenzt und auf der vierten Spalte die Ortschaft. Zusätzlich wird der gefilterte Datensatz auf der ersten Spalte aufsteigend sortiert, definiert im **ColumnSorter**.

Genaueres zu den jeweiligen Implementierungen in den einzelnen Abschnitten:

{% content-ref url="/pages/7Vp7SbH9ih0y6avOVBik" %}
[Filtering](/big-lazy-tables/funktionen/filtering-and-sorting/filtering.md)
{% endcontent-ref %}

{% content-ref url="/pages/n7bhLKdzQytyxa9nLOOF" %}
[Sorting](/big-lazy-tables/funktionen/filtering-and-sorting/sorting.md)
{% endcontent-ref %}
