Grid düzenlerini saklama
LivaDataGrid, LivaTreeList ve LivaPivotGrid; kolon veya alan düzenlerini
kullanıcı bazında adlandırarak sunucuda saklayabilir. Uygulama kökündeki
LivaGridStateProvider depolamayı, her grid'in kararlı kimliği ise kayıt alanını
belirler.
Kurulum
import { LivaGridStateProvider } from "@dataliva/livalib";
<LivaGridStateProvider
apiUrl={`${API_URL}/UserGridLayout`}
token={token}
lang="TR"
canSetDefault={currentUser.isSystemAdmin}
>
<App />
</LivaGridStateProvider>
Her grid'e sayfa ve grid için benzersiz, sabit bir kimlik verin:
<LivaDataGrid id="customer-list" stateVersion={1} {...props} />
<LivaTreeList id="cost-center-tree" stateVersion={1} {...props} />
<LivaPivotGrid stateStoringId="sales-analysis" stateVersion={1} {...props} />
Kimliği filtre, seçili kayıt veya kullanıcı gibi değişkenlerden üretmeyin. Kolon
ya da alan şeması geriye uyumsuz değiştiğinde stateVersion değerini artırın;
eski düzenler yeni şemaya uygulanmaz.
Provider veya grid kimliği yoksa Düzen menüsü gösterilmez ve durum saklanmaz. DataGrid ve TreeList kolon sırasını, genişliğini, görünürlüğünü, sıralamayı ve gruplamayı; PivotGrid ise alan konumu, sırası, filtreleri ve genişletme durumunu saklar.
REST sözleşmesi
| Metot | Rota | Amaç |
|---|---|---|
GET | /{gridId} | Görünen düzenlerin metadatası |
GET | /{gridId}/default | Varsayılan düzen ({ layout } veya 204) |
GET | /{gridId}/{layoutId} | Tek düzen ({ layout }) |
POST | /{gridId} | { name, layout } ile kaydet/güncelle |
DELETE | /{gridId}/{layoutId} | Düzeni sil |
PUT | /{gridId}/{layoutId}/default | Genel varsayılan yap |
DELETE | /{gridId}/default | Genel varsayılanı kaldır |
Liste kayıtları id, name, isDefault, isShared ve isOwn alanlarını
taşımalıdır. layout, JSON durumunun string'e çevrilmiş halidir. canSetDefault
yalnızca yönetici eylemini arayüzde gösterir; yetkiyi sunucu da denetlemelidir.
Özel depolama
import type { LivaGridStateStorage } from "@dataliva/livalib";
const storage: LivaGridStateStorage = {
list: async (key) => [],
loadDefault: async (key) => null,
load: async (key, id) => null,
save: async (key, name, value) => undefined,
remove: async (key, id) => {},
setDefault: async (key, id) => {},
};
<LivaGridStateProvider storage={storage}>{children}</LivaGridStateProvider>
save metoduna gelen değer load tarafından değiştirilmeden geri dönmelidir.
storage ile apiUrl aynı anda verilmez.