LivaMonthAdjustPopup
Dataliva'ya özgü, 12 aylık bütçe satırındaki değerleri toplu olarak artırıp
azaltmaya yarayan popup. Bir satır ve ay kolonu için
createMonthAdjustSession ile oturum oluşturulur; popup her ay için mevcut
tutarı ve düzenlenebilir bir ayar kolonu gösterir. Uygula düğmesi taslak
değerleri onApply ile geri verir, yeni tutarlar applyMonthAdjustSession
ile hesaplanır. İki mod vardır:
cumulative— satırdaki tüm aylar listelenir; varsayılan ayar tipipercent'tir (100 = değişiklik yok, 110 = yüzde 10 artış).single— yalnızca tıklanan ayın satırı listelenir; varsayılan ayar tipiamount'tır (0 = değişiklik yok, pozitif/negatif tutar eklenir).
import {
LivaMonthAdjustPopup,
createMonthAdjustSession,
applyMonthAdjustSession,
sumMonthValues,
STANDARD_MONTH_FIELDS,
type MonthAdjustSession,
type LivaMonthAdjustSummaryField,
} from "@dataliva/livalib";
Kümülatif yüzde ayarı
Düğmeye tıklayınca 12 ayın tamamı için yüzde bazlı ayar oturumu açılır.
Örneğin bir aya 110 yazıp uyguladığınızda o ayın tutarı yüzde 10 artar;
100 bırakılan aylar değişmez. summaryFields popup başlığının altında
hesap/departman gibi satır bilgilerini rozet olarak gösterir
(stripLeadingAccountCode baştaki "770 -" benzeri hesap kodunu ayıklar).
Tek ay tutar ayarı
mode: "single" yalnızca columnField ile verilen ayı düzenler; girilen
tutar mevcut değere eklenir (negatif değer azaltır). Gerçek uygulamada bu
oturum, grid hücresinin sağ tık menüsünden tıklanan kolona göre açılır.
Yardımcı fonksiyonlar
Popup, utils/monthAdjust modülündeki yardımcılarla birlikte çalışır;
tümü paket kökünden dışa aktarılır:
| Fonksiyon / Sabit | Açıklama |
|---|---|
STANDARD_MONTH_FIELDS | Standart ay alanları: ["V001", "V002", …, "V012"] |
MONTH_FIELD_PATTERN | Ay alanı deseni: /^[vV]\d{3}$/ |
createMonthAdjustSession(params) | Satır, kolon ve moddan MonthAdjustSession üretir |
applyMonthAdjustSession(session, monthFields) | Taslak değerlerden alan → yeni tutar haritası hesaplar |
sumMonthValues(rowData, monthFields, updates) | Güncellemeler uygulanmış yıllık toplamı verir |
getAffectedMonthIndices(mode, columnField, monthFields) | Moda göre etkilenecek ay indekslerini verir |
getDefaultMonthAdjustDraftValues(adjustType) | Başlangıç taslağı: percent için 100, amount için 0 |
getRowFieldValue(row, fieldName) | Alan adını büyük/küçük harf duyarsız çözerek değeri okur |
resolveMonthFieldsFromColumns(columns) | Grid kolon tanımlarından ay alanlarını çıkarır |
LivaDataGrid bileşeni bu akışı monthAdjustOptions prop'uyla hazır
olarak sunar; bu sayfadaki gibi elle oturum yönetimi yalnızca özel
senaryolarda gerekir.
MonthAdjustSession
type MonthAdjustSession = {
rowId: string;
rowData: Record<string, unknown>;
columnField: string; // oturum oluşturulurken büyük harfe çevrilir
mode: "single" | "cumulative";
adjustType: "percent" | "amount";
draftValues: number[]; // 12 elemanlı taslak dizisi
};
| Prop | Tip | Varsayılan |
|---|---|---|
session | MonthAdjustSession | — |
monthFields | string[] | — |
monthCaptions | string[] | — |
summaryFields | LivaMonthAdjustSummaryField[] | [] |
onApply | (draftValues: number[]) => void | — |
onCancel | () => void | — |
LivaMonthAdjustSummaryField alanları: label (rozet etiketi),
fieldNames (sırayla denenecek satır alanları), fallback (değer
bulunamazsa gösterilecek metin), stripLeadingAccountCode (baştaki hesap
kodunu ayıklar), wide (rozeti geniş gösterir). Popup her render
edildiğinde açık gelir; kapatma davranışı onCancel üzerinden koşullu
render ile yönetilir.