Hej
Mam prostą tabelkę i jej nagłówki kolumn (na razie 3, ale będzie ich 12). Każdy nagłówek ma przycisk do sortowania danych po danej kolumnie.
<tr>
<div>
Name
<button (onclick)="sort('name')">
<span class="glyphicon glyphicon-sort"></span>
</button>
</div>
<div>
Surname
<button (onclick)="sort('surname')">
<span class="glyphicon glyphicon-sort"></span>
</button>
</div>
<div>
Company
<button (onclick)="sort('company')">
<span class="glyphicon glyphicon-sort"></span>
</button>
</div>
</tr>
Funkcje sortowania (komponent angulara, plik .ts):
sort(parameter: string): void {
if (parameter == 'name') {
this.employees.sort((a,b) => a.name.localCompare(b.name));
} else if (parameter == 'surname') {
this.employees.sort((a,b) => a.surname.localCompare(b.surname));
} else if (parameter == 'company') {
this.employees.sort((a,b) => a.company.localCompare(b.company));
}
}
Wszystko działa, jednak problem jest taki, że tych nagłówków będzie 12 (czyli 12 różnych sortowań). Jeśli będę kontynuował moje podejście, to moja funkcja sort(param) będzie wtedy miała 12 if-elsów. Czy tak wygląda dobrej jakości kod? Alternatywą jest napisać 12 różnych funkcji (sortByName, sortBySurname...) bez parametru i dla każdego buttona podawać inną w (click).
Da się to jakoś ładnie wydzielić/ulepszyć/zrobić profesjonalniej? Jestem raczej początkujący i nie mam pomysłu...