Ana içeriğe geç
Version: 1.0.1

handleFilter

Açıklama: Bu fonksiyon, kullanıcı tarafından seçilen filtreleme kriterlerini işleyerek API'ye gönderir ve gelen sonuçlarla tabloyu günceller.

Kod

handleFilter(filters: ITableFilters[], callback?: () => void) {
const formats = [
"YYYY-MM-DDTHH:mm:ss",
"YYYY-MM-DD hh:mm:ss A",
"YYYY-MM-DDTHH:mm",
"YYYY-MM-DD",
];

const convertValue = (filter: ITableFilters) => {
if (filter?.type === TypeGroupEnum.Number) return Number(filter?.value);
if (
filter?.type === TypeGroupEnum.Date &&
filter?.operator === FilterTypeEnum.DateEqualTo
)
return moment(filter?.value, formats, true).startOf("day").format();
if (filter?.type === TypeGroupEnum.Date)
return moment(filter?.value, formats, true).format();
return filter?.value;
};

const convertOtherValue = (filter: ITableFilters) => {
if (filter?.type === TypeGroupEnum.Number)
return Number(filter?.otherValue);
if (filter?.type === TypeGroupEnum.Date)
return moment(filter?.otherValue, formats, true).format();
return filter?.otherValue;
};

const filtering = filters?.map((filter) => {
return filter.operator === FilterTypeEnum.Between
? {
filterBy: filter.column,
filterType: filter.type,
value: convertValue(filter),
otherValue: convertOtherValue(filter),
type: filter.operator,
}
: {
filterBy: filter.column,
filterType: filter.type,
value: convertValue(filter),
type: filter.operator,
};
});

const requestData: IListRequest = {
...defaultParams,
filtering: {
criterias: filtering,
},
};

this.getdata(requestData, callback, callback);
}

Ne İşe Yarar?

  • Kullanıcının seçtiği filtreleme kriterlerini işler ve API'ye gönderir.
  • API'den alınan sonuçlarla tabloyu günceller.

Parametreler

ParametreTipiAçıklama
filtersITableFilters[]Kullanıcının seçtiği filtreleme kriterleri.
callback() => voidİşlem tamamlandığında çağrılacak opsiyonel fonksiyon.

Kullanım Alanları

1. FiltersPopover

  • Kullanım Amacı: Kullanıcı tarafından belirlenen filtreleme kriterlerini API'ye göndermek için çağrılır.
  • Kullanıldığı Yer: FiltersPopover bileşeninde.
handleFilter(currentFilters, () => setLoading(false));

2. OpsTableProvider

  • Kullanım Amacı: Tablonun filtreleme işlemini desteklemek için çağrılır.
  • Kullanıldığı Fonksiyon: getdata
this.handleFilter(activeFilters);

İş Mantığı

  1. Değer Dönüştürme:

    • Filtreleme kriterlerindeki value ve otherValue alanları filtre türüne göre dönüştürülür.
    • Tarih ve sayısal değerler uygun formatlara çevrilir.
  2. Filtreleme Nesnesi Oluşturma:

    • Kriterler, API'ye uygun bir formatta filtreleme nesnesine dönüştürülür.
  3. API Çağrısı:

    • getdata fonksiyonu kullanılarak filtreleme sonuçları alınır ve tablo güncellenir.
  4. Callback Yönetimi:

    • İşlem tamamlandığında callback fonksiyonu çağrılır.

Önemli İpuçları

  • FilterTypeEnum.Between operatörü kullanıldığında hem value hem de otherValue gereklidir.
  • Tarih formatlarının doğru çevrildiğinden emin olun, aksi takdirde API'den hatalı sonuçlar gelebilir.
  • Hatalı filtreleme kriterleri kullanıcıya uygun bir hata mesajı ile gösterilmelidir.