Filters Popover
Filters Popover, Ops Table bileşeninde kullanıcıların filtreleri dinamik olarak yönetmesini sağlayan bir açılır menüdür. Kullanıcılar, sütunlara filtre eklemek, düzenlemek veya kaldırmak için bu bileşeni kullanabilir.
Ne İşe Yarar?
Filters Popover:
- Kullanıcıların tabloya dinamik filtreler eklemesine olanak tanır.
- Filtre türüne göre uygun bir arayüz sunar (metin, sayısal, tarihsel vb.).
- Mevcut filtreleri düzenlemek veya kaldırmak için araçlar sağlar.
İş Mantığı
- Filtre Eklemek:
- Kullanıcı "Add Filter" butonuna tıkladığında varsayılan bir filtre eklenir.
filtersstate'i güncellenerek tabloya yeni bir filtre eklenir.
- Filtre Değerlerini Güncellemek:
handleFilterChangefonksiyonu ile filtre türü, sütunu veya değerleri dinamik olarak değiştirilir.
- Filtre Kaldırmak:
- Kullanıcı bir filtrenin yanındaki "delete" ikonuna tıkladığında,
filtersstate'inden o filtre kaldırılır.
- Kullanıcı bir filtrenin yanındaki "delete" ikonuna tıkladığında,
- Filtreleri Uygulamak:
- "Apply" butonuna tıklandığında, tüm filtreler
opsService.handleFilterile backend'e iletilir.
- "Apply" butonuna tıklandığında, tüm filtreler
- Varsayılan Filtrelere Dönmek:
- Kullanıcı "Reset" butonuna tıkladığında tüm filtreler sıfırlanır.
Alt Bileşenler ve Fonksiyonlar
1. ColumnSelect
- Kullanıcı bir filtrenin uygulanacağı sütunu seçmek için kullanır.
table.getAllLeafColumnskullanılarak tüm uygun sütunlar listelenir.
2. OperatorSelect
- Kullanıcı bir filtrenin operatörünü seçmek için kullanır (eşittir, içerir, başlar vb.).
supportedFilterTypesile seçilen sütunun desteklediği filtre türleri belirlenir.
3. BetweenValueComponent
- "Between" operatörü için iki değer alır ve
handleFilterChangeile bu değerleri günceller.
4. StandartValueComponent
- Tek bir değer gerektiren filtreler için kullanılır (örneğin, metin veya sayı).
- Değeri dinamik olarak
handleFilterChangeile günceller.
5. handleFilterChange
- Filtre değerlerini, operatörünü veya sütununu değiştirmek için kullanılır.
- Tüm değişiklikler
filtersstate'ine yansıtılır ve tabloya uygulanır.
Aldığı Propslar
IFiltersPopoverProps arayüzünden alınan propslar şunlardır:
| Prop | Tipi | Açıklama |
|---|---|---|
table | Table<unknown> | Tablonun genel durumunu ve modellerini içerir. |
opsService | IOpsTableService<any> | Tablonun veri işlemlerini yöneten servis sınıfı. |
handlePopoverClose | () => void | Popover kapatma olayını yönetmek için bir callback fonksiyonu. |
Yönetilen Olaylar
- Filtre Ekleme:
- Kullanıcı "Add Filter" butonuna tıkladığında, varsayılan bir filtre eklenir ve
filtersstate'i güncellenir.
- Kullanıcı "Add Filter" butonuna tıkladığında, varsayılan bir filtre eklenir ve
- Filtre Değiştirme:
handleFilterChangeile sütun, operatör veya değer gibi filtre özellikleri güncellenir.
- Filtre Silme:
- Kullanıcı "delete" ikonuna tıkladığında, ilgili filtre
filtersstate'inden kaldırılır.
- Kullanıcı "delete" ikonuna tıkladığında, ilgili filtre
- Filtreleri Uygulama:
- "Apply" butonuna tıklandığında,
opsService.handleFilterile filtreler backend'e iletilir.
- "Apply" butonuna tıklandığında,
- Filtreleri Sıfırlama:
- "Reset" butonuna tıklandığında, tüm filtreler sıfırlanır ve varsayılan duruma döner.
İlgili Bileşenler
- OpsTablePopovers: FiltersPopover bileşenini tetikleyen ana popover.
- ColumnSelect: Kullanıcıların filtre sütununu seçmesini sağlar.
- OperatorSelect: Kullanıcıların filtre operatörünü belirlemesini sağlar.
- BetweenValueComponent: İki değer gerektiren filtreleri yönetir.
- StandartValueComponent: Tek bir değer gerektiren filtreler için kullanılır.
Burada Yapılan Ana İşlemler
Filters Popover bileşeninde aşağıdaki işlemler anahtar rol oynar ve bu olaylara müdahale etmek için ilgili bölümlere odaklanabilirsiniz:
- Filtre Değer Yönetimi: Kullanıcıların sütun, operatör ve değer seçimleri
handleFilterChangeile işlenir. - Filtre Listeleme ve Silme: Mevcut filtreler
filtersstate üzerinden kontrol edilir ve düzenlenir. - Alt Bileşen Entegrasyonu:
ColumnSelect,OperatorSelect,BetweenValueComponentgibi alt bileşenler ile filtre yönetimi sağlanır. - Uygulama ve Sıfırlama: "Apply" ve "Reset" işlemleri ile filtreler backend'e senkronize edilir veya sıfırlanır.
Örnek Kullanım
import React from "react";
import FiltersPopover from "./FiltersPopover";
export default function ExampleFiltersPopover({
table,
opsService,
handlePopoverClose,
}) {
return (
<FiltersPopover
table={table}
opsService={opsService}
handlePopoverClose={handlePopoverClose}
/>
);
}