Sortowanie tabeli (albo orderBy) - Angular

0

Cześć
Mam tabelę, która pobiera dane z zewnętrznej bazy danych. Jedna kolumna posiada wartości które nie należą do tej bazy tylko jest luźnym tekstem. Chciałbym posortować tę tabelę na podstawie kolumny z tym luźnym tekstem. Od 2 dni się męczę z tym i nie potrafię znaleźć rozwiązania. Ktoś wie jak można to ugryźć?

Kod tabeli:

<table class="table p-table">
                          <thead>
                          <tr>
                              <th class="p-name">Nazwa bonusu</th>
                              <th >Data rozpoczęcia</th>
                              <th >Data zakończenia</th>
                              <th >Status bonusu</th>
                              <th class="p-custom">Konfiguracja</th>
                          </tr>
                          </thead>
                          <tbody>
                          <tr *ngFor="let bonus of bonuses">
                              <td class="p-name">
                                  <a >{{bonus?.name}}</a>
                              </td>
                              <td class="p-startDate">
                                  <a id="starDate_function">{{bonus?.startDate}}</a>
                              </td>
                              <td class="p-endDate">                                  
                                  {{bonus?.endDate}}
                              </td>
                              <td>
                                  <span class="label label-primary" [hidden]="isBonusActive(bonus)" id="isBonusActiveId">{{activeBonus}}</span>
                              </td>
                              <td class="p-custom">
                                  <a (click)="onOpenModal(bonus, 'view')" class="btn btn-primary btn-xs"><i class="fa fa-folder"></i> Szczegóły </a>
                                  <a (click)="onOpenModal(bonus, 'edit')" class="btn btn-info btn-xs" data-original-title="Edit"><i class="fa fa-pencil"></i> Edytuj </a>
                                  <a (click)="onOpenModal(bonus, 'delete')" class="btn btn-danger btn-xs"><i class="fa fa-trash-o"></i> Usuń </a>
                              </td>
                          </tr>                          
                          </tbody>
                      </table>
1

No okej. Masz bazę z której wyciągasz wartości oraz luźny tekst, który nie należy do bazy. Czy istnieje jakiś warunek na podstawie którego przypisujesz ten tekst do konkretnego row? Jednym z wyjść jest stworzenie tablicy zawierającej dzienniki, gdzie jeden dziennik=jeden row. Każdy row dostaje ten luźny tekst. Sortujesz to i gotowy output wrzucasz w template i dalej robisz z tym co chcesz. Chyba, że źle zrozumiałem problem to mnie popraw :)

0

@ledi12: Tak, istnieje warunek. W tabeli jest kolumna "data rozpoczęcia" i "data zakończenia" i na podstawie dat określa jaki powinien być tekst. Mam osobno zmienną, która jest na starcie pusta i wraz z załadowaniem strony uruchamia się metoda która określa w każdym wierszu konkretny tekst.

public isBonusActive(bonus: Bonus): void {
    let format = 'YYYY-MM-DD';
    let startDate = moment(bonus.startDate + " 00:00:00");
    let endDate = moment(bonus.endDate + " 23:59:59");
    let today = moment();
    console.log(endDate);
    
    //Oczekujący albo wkrótce
    if (today.isBetween(startDate, endDate)) {
      this.activeBonus = "Aktywny";
    } else if (today.isBefore(startDate)) {
      this.activeBonus = "Oczekujący";
    } else if (today.isAfter(endDate)) {
      this.activeBonus = "Zakończony";
    } else if (today.isAfter(startDate) && bonus.endDate == null) {
      this.activeBonus = "Aktywny";
    } else if (today.isBefore(endDate) && bonus.startDate == null) {
      this.activeBonus = "Aktywny";
    }
    else this.activeBonus = "Błąd";
  }

Próbowałem zrobić osobną tablice, ale nie potrafiłem wrzucić do jednej tabeli danych z 2 źródeł, bo w 1, 2 i 3 kolumnie są wartości z bazy, a 4 kolumna to właśnie ten luźny tekst i nie umiałem z osobnej tablicy wrzucić do tej 4 kolumny tekst.
Mało tego, nie wychodzi mi nawet sortowanie tabeli na podstawie kolumny pobieranej z bazy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1