Skip to main content
Version: 1.0.1

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ığı

  1. Filtre Eklemek:
    • Kullanıcı "Add Filter" butonuna tıkladığında varsayılan bir filtre eklenir.
    • filters state'i güncellenerek tabloya yeni bir filtre eklenir.
  2. Filtre Değerlerini Güncellemek:
    • handleFilterChange fonksiyonu ile filtre türü, sütunu veya değerleri dinamik olarak değiştirilir.
  3. Filtre Kaldırmak:
    • Kullanıcı bir filtrenin yanındaki "delete" ikonuna tıkladığında, filters state'inden o filtre kaldırılır.
  4. Filtreleri Uygulamak:
    • "Apply" butonuna tıklandığında, tüm filtreler opsService.handleFilter ile backend'e iletilir.
  5. 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.getAllLeafColumns kullanı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.).
  • supportedFilterTypes ile seçilen sütunun desteklediği filtre türleri belirlenir.

3. BetweenValueComponent

  • "Between" operatörü için iki değer alır ve handleFilterChange ile 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 handleFilterChange ile 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 filters state'ine yansıtılır ve tabloya uygulanır.

Aldığı Propslar

IFiltersPopoverProps arayüzünden alınan propslar şunlardır:

PropTipiAçıklama
tableTable<unknown>Tablonun genel durumunu ve modellerini içerir.
opsServiceIOpsTableService<any>Tablonun veri işlemlerini yöneten servis sınıfı.
handlePopoverClose() => voidPopover kapatma olayını yönetmek için bir callback fonksiyonu.

Yönetilen Olaylar

  1. Filtre Ekleme:
    • Kullanıcı "Add Filter" butonuna tıkladığında, varsayılan bir filtre eklenir ve filters state'i güncellenir.
  2. Filtre Değiştirme:
    • handleFilterChange ile sütun, operatör veya değer gibi filtre özellikleri güncellenir.
  3. Filtre Silme:
    • Kullanıcı "delete" ikonuna tıkladığında, ilgili filtre filters state'inden kaldırılır.
  4. Filtreleri Uygulama:
    • "Apply" butonuna tıklandığında, opsService.handleFilter ile filtreler backend'e iletilir.
  5. 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 handleFilterChange ile işlenir.
  • Filtre Listeleme ve Silme: Mevcut filtreler filters state üzerinden kontrol edilir ve düzenlenir.
  • Alt Bileşen Entegrasyonu: ColumnSelect, OperatorSelect, BetweenValueComponent gibi 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}
/>
);
}