Custom Table Cells
Custom Table Cells, Ops Table bileşenindeki her hücrenin içeriğini dinamik olarak render eden ve uygun formatlama işlemlerini gerçekleştiren bir bileşendir. Hücredeki içerik, sütun meta bilgilerine ve hücre verilerine göre biçimlendirilir.
Ne İşe Yarar?
Custom Table Cells:
- Hücre içeriğini sütun türüne göre dinamik olarak render eder.
- Veriyi kullanıcı dostu bir şekilde formatlar.
- Geniş içeriğe sahip hücrelerde otomatik tooltip gösterimi sağlar.
İş Mantığı
-
Hücre Verisi İşleme:
- Veri Alma: Hücrede gösterilecek veri,
cell.getValue()
metodu ile alınır. Bu, tablo verilerinin satır ve sütun bazında hücre seviyesine kadar parçalanmasını sağlar. - Sütun Meta Verisi Kullanımı: Hücredeki içeriğin nasıl görüneceği sütun meta bilgisi (
metaItem
) ile kontrol edilir. Bu bilgi, hücrede kullanılacak formatları, varsayılan değerleri ve tooltip ayarlarını belirler.
- Veri Alma: Hücrede gösterilecek veri,
-
Tooltip Yönetimi:
- İçerik Uzunluğu Kontrolü: Hücre içeriği, hücrenin boyutunu aşarsa tooltip gösterimi aktif hale gelir.
- Dinamik Gösterim: Kullanıcı fareyle hücrenin üzerine geldiğinde içerik tooltip içinde geniş bir şekilde gösterilir. Tooltip içeriği
getToolTipText
fonksiyonu ile oluşturulur.
-
Tür Bazlı Formatlama:
- Tarih Türü: Tarih içeren hücreler için
getLocalizedMoment(cellValue).format("LLL")
kullanılarak kullanıcı dostu bir tarih formatı uygulanır. - Karmaşık Veri Yapıları: Eğer hücredeki veri bir nesne (object) türündeyse,
genericFormatString
veyaformatObject
fonksiyonları ile bu veri, anlamlı bir şekilde formatlanır. - Varsayılan Değerler: Eğer hücrede gösterilecek veri yoksa, sütun meta bilgisinde tanımlanmış
defaultValue
kullanılır. - Özel Formatlar: Eğer sütun meta bilgisi
displayFormat
içeriyorsa, bu format hücre içeriğine uygulanır.
- Tarih Türü: Tarih içeren hücreler için
-
Dinamik Render Süreci:
- Hücrenin render edilmesi, sütun türüne ve meta verisine göre dinamik olarak gerçekleşir.
- Hücre içeriği direkt olarak render edilebileceği gibi, tooltip veya formatlanmış bir değer şeklinde de kullanıcıya sunulabilir.
-
Ekran Yeniden Boyutlandırma:
useEffect
içinde tanımlanan bir event listener, pencere boyutu değişimlerinde hücrelerin tooltip durumunu dinamik olarak günceller.- Hücre içeriğinin sığmaması durumunda tooltip aktif hale gelir.
-
Performans Optimizasyonu:
- Hücrelerin render edilme süreci, sadece görünür hücreler üzerinden gerçekleştirilir. Bu, büyük veri setlerinde performansı artırır.
-
Hücre Verisi İşleme:
- Hücrede gösterilecek veri,
cell.getValue()
ile alınır. - Sütun meta verisi (
metaItem
) kullanılarak verinin türüne göre biçimlendirilir.
- Hücrede gösterilecek veri,
-
Tooltip Yönetimi:
- Hücre içeriği hücre boyutundan daha büyükse,
Tooltip
bileşeni aktif hale gelir. - Kullanıcı fareyle hücrenin üzerine geldiğinde geniş içeriği görebilir.
- Hücre içeriği hücre boyutundan daha büyükse,
-
Tür Bazlı Formatlama:
- Tarih türündeki veriler
moment.js
kullanılarak formatlanır. - Karmaşık veri yapıları için
genericFormatString
veformatObject
yardımcı fonksiyonları kullanılır.
- Tarih türündeki veriler
Aldığı Propslar
CustomTableCells
aşağıdaki propsları alır:
Prop | Tipi | Açıklama |
---|---|---|
cell | Cell<unknown> | Render edilecek hücrenin tüm verisini içerir. |
tableCellSize | "small" | "medium" | Hücre boyutunu tanımlar. |
Yönetilen Olaylar
- Hücre Verisi Biçimlendirme:
- Hücre verisi, sütun türüne göre biçimlendirilir:
- Tarih türü için:
getLocalizedMoment(cellValue).format("LLL")
- Metin veya sayı türü için: Hücre doğrudan render edilir.
- Tarih türü için:
- Hücre verisi, sütun türüne göre biçimlendirilir:
- Tooltip Gösterimi:
- Hücre içeriği hücre boyutunu aşıyorsa,
showTooltip
durumu aktif hale gelir ve içerik tooltip içinde gösterilir.
- Hücre içeriği hücre boyutunu aşıyorsa,
- Sütun Meta Verisi Kullanımı:
- Hücredeki içerik, sütun meta bilgisine göre şekillendirilir:
- Varsayılan değerler (
defaultValue
) kullanılır. - Kullanıcı tarafından belirlenen özel formatlar (
displayFormat
) uygulanır.
- Varsayılan değerler (
- Hücredeki içerik, sütun meta bilgisine göre şekillendirilir:
İlgili Bileşenler
- OpsTable: Hücrelerin bulunduğu ana tablo bileşeni.
- TableBodyComponent: Hücrelerin render edildiği tablo gövdesi bileşeni.
Burada Yapılan Ana İşlemler
Custom Table Cells bileşeninde aşağıdaki işlemler anahtar rol oynar ve bu olaylara müdahale etmek için ilgili bölümlere odaklanabilirsiniz:
- Veri Biçimlendirme: Hücre içeriği sütun tür üne göre dinamik olarak biçimlendirilir.
- Tooltip Yönetimi: Hücre içeriği genişse kullanıcıya tooltip ile tam veri sunulur.
- Sütun Meta Verileri: Sütunlara özgü ayarlar, hücrelerin render edilme şeklini belirler.
Örnek Kullanım
import React from "react";
import CustomTableCells from "./CustomTableCells";
export default function ExampleCustomTableCells({ cell, tableCellSize }) {
return <CustomTableCells cell={cell} tableCellSize={tableCellSize} />;
}