OpsPageForm
OpsPageForm, dinamik form oluşturma ve API entegrasyonu işlemleri için kullanılan bir bileşendir. Bu bileşen, CRUD işlemlerini destekler ve özelleştirilebilir bir yapı sunar.
Genel Özellikler
- Dinamik Form:
schemaözelliği ile form alanları kolayca tanımlanabilir. - CRUD İşlemleri:
OpsPageForm, hem ekleme (POST) hem de güncelleme (PUT) işlemlerini destekler. - Özelleştirilebilir Gönderim:
customSubmitfonksiyonu ile formun gönderim işlemi özelleştirilebilir. - Yetkilendirme Kontrolleri: Formun düzenlenebilir veya silinebilir olması kullanıcı yetkilerine bağlıdır.
Props
| Prop | Tip | Açıklama |
|---|---|---|
url | string | API endpoint adresi. |
opsService | any | Formun güncel işlemleri tetiklemek için kullanılan servis. |
schema | IOpsPageFormItem[] | Form alanlarının tanımlandığı yapı. |
title | string | Form başlığı (Ekleme modunda). |
editTitle | string | Form başlığı (Düzenleme modunda). |
customSubmit | (formData: any, setSubmitLoading: (loading: boolean) => void) => void | Özelleştirilmiş gönderim fonksiyonu. |
succesCallback | () => void | Gönderim işlemi başarılı olduğunda tetiklenecek geri çağırım fonksiyonu. |
deletePropertyName | string | Silme işleminde gönderilecek parametre adı. Varsayılan olarak "id". |
deleteModalProps | { title?: string; info?: string } | Silme modalı için başlık ve bilgi metni özelleştirme. |
İşlevler
Form Gönderim İşlemi (handleSubmit)
- Varsayılan İşleyiş:
- Yeni bir kayıt eklemek için
POST, mevcut bir kaydı düzenlemek içinPUTmetodu kullanılır. - Veriler
diffFormObjectfonksiyonu ile önceki durum ile karşılaştırılır.
- Yeni bir kayıt eklemek için
Silme İşlemi (handleDelete)
- Silme işlemi, silinecek öğenin
iddeğerini kullanarakDELETEisteği gönderir. - Silme işlemi sırasında kullanıcıdan onay almak için bir modal görüntülenir.
deletePropertyNameözelliğiyle API'ye gönderilecek parametre adı özelleştirilebilir.
Şema Filtreleme (filteredSchema)
filteredSchemafonksiyonu, formun düzenleme veya ekleme moduna göre şemayı filtreler:- Ekleme Modu:
visibility: AddveyaBotholan alanlar gösterilir. - Düzenleme Modu:
visibility: EditveyaBotholan alanlar gösterilir.
- Ekleme Modu:
Yetkilendirme Kontrolleri
- Form, kullanıcının düzenleme veya silme yetkisi olup olmadığını kontrol eder:
- Düzenleme Yetkisi:
pageInfo.hasEditvepageInfo.userCanEdit. - Silme Yetkisi:
pageInfo.hasDeletevepageInfo.userCanDelete.
- Düzenleme Yetkisi:
- Bu kontroller, form üzerinde gönderim ve silme butonlarının görünürlüğünü belirler.
filterOpsGridSchema Yardımcı Fonksiyonu
filterOpsGridSchemafonksiyonu, form şemasını düzenleme veya ekleme moduna göre filtreler:- Girdi Parametreleri:
schema: Form alanlarının tanımlandığı şema.isEdit: Formun düzenleme modunda olup olmadığını belirten boolean değer.
- İşleyiş:
- Şema öğeleri, görünürlük kurallarına (
visibility) göre filtrelenir. - Görünürlük Kuralları:
- Ekleme Modu:
visibility: AddveyaBotholan alanlar gösterilir. - Düzenleme Modu:
visibility: EditveyaBotholan alanlar gösterilir.
- Ekleme Modu:
- Çoklu şema (
multiSchema) içeren alanlarda, her bir alt şema öğesi de aynı şekilde filtrelenir. - Eğer bir öğe özel bir bileşen (
renderComponent) içeriyorsa, bu bileşen görünürlük kurallarına uygun şekilde işlenir.
- Şema öğeleri, görünürlük kurallarına (
- Dönen Değer:
- Filtrelenmiş şema, sadece ilgili modda görüntülenmesi gereken alanları içerir.
- Girdi Parametreleri:
Kullanım Örnekleri
Basit Bir Kullanım
import OpsPageForm from "@/components/OpsPageForm";
import { FormItemTypeEnum } from "@/enums/IFormItemTypeEnum";
import { FormItemVisibilityEnum } from "@/enums/FormItemVisibilityEnum";
const schema = [
{
name: "Ürün Bilgileri",
schema: [
{
name: "productName",
type: FormItemTypeEnum.TEXT,
label: "Ürün Adı",
visibility: FormItemVisibilityEnum.Both,
},
{
name: "price",
type: FormItemTypeEnum.NUMBER,
label: "Fiyat",
visibility: FormItemVisibilityEnum.Both,
},
],
},
];
export default function ProductForm() {
return (
<OpsPageForm
url="/api/products"
schema={schema}
title="Yeni Ürün Ekle"
editTitle="Ürün Düzenle"
succesCallback={() => alert("İşlem ba şarılı!")}
/>
);
}
Custom Submit Kullanımı
const customSubmit = (formData, setSubmitLoading) => {
setSubmitLoading(true);
console.log("Özelleştirilmiş veri gönderimi: ", formData);
setTimeout(() => {
alert("Başarılı şekilde gönderildi!");
setSubmitLoading(false);
}, 1000);
};
<OpsPageForm
url="/api/products"
schema={schema}
title="Yeni Ürün Ekle"
customSubmit={customSubmit}
/>;
Silme Modalı
- Silme işlemi sırasında kullanıcıdan onay almak için bir modal görüntülenir.
- Modalın başlık ve açıklama metni,
deleteModalPropsözelliğiyle özelleştirilebilir:deleteModalProps.title: Modal başlığı. Varsayılan olarak"Silmek istediğinize emin misiniz?".deleteModalProps.info: Modal açıklaması. Varsayılan olarak"Bu işlem geri alınamaz.".
İpuçları
-
Hata Yönetimi:
- Gönderim sırasında hata oluşursa, işlem durdurulur ve kullanıcı bilgilendirilir.
-
Loading Durumu:
submitLoadingdurumu, gönderim sırasında kullanıcıya işlem yapıldığını göstermek için kullanılır.
-
Yetkilendirme Kontrolleri:
- Kullanıcının düzenleme veya silme yetkilerini kontrol etmek için
usePageInformationhook'u kullanılır.
- Kullanıcının düzenleme veya silme yetkilerini kontrol etmek için
Bu doküman, OpsPageForm bileşenini anlamak ve verimli bir şekilde kullanmak için kapsamlı bir rehber sunar. Daha fazla özelleştirme veya sorun giderme konusunda desteğe ihtiyacınız varsa, lütfen bize ulaşın.