webapp/js/gen-form.js, web uygulamasının her oluşturma formunu, düzenleme formunu, aksiyon formunu ve salt okunur kayıt kartını EntityMeta.form üzerinden kurar. webapp/js/form-drafts.js bir oturum boyunca kaydedilmemiş girdileri tutar ve webapp/js/customselect.js her yerel seçim kutusunu yeniden biçimlendirir. Bu sayfa alan denetimlerini, formun uyduğu metadata özelliklerini, değerlerin nasıl toplandığını ve taslakların nasıl çalıştığını listeler. Metadata sınıfları metadata modeli sayfasındadır.
Kapsam ve kaynak¶
- Tanımlandığı yer:
webapp/js/gen-form.js(createGenForm,makeGenFormView,mountRecordForm,buildRecordCard),webapp/js/form-drafts.js,webapp/js/customselect.js(initCustomSelects) - Sayı: kendine özgü denetimi olan 15 alan türü ve düz metin geri dönüşü (
webapp/js/gen-form.js:67-200içindekicontrolHtmldallarından sayıldı);FieldMeta.field_type19 değere izin verir (src/cluster_erp/core/metadata.py:82-102)
Giriş noktaları¶
| İşlev | Amaç | Kaynak |
|---|---|---|
createGenForm(moduleName, entityMeta, opts) |
Form öğesini kurar ve loadFks, validate, showErrors, collect, commitFiles, setLocked ve taslak yardımcılarını içeren bir nesne döndürür |
webapp/js/gen-form.js:287-1829 |
makeGenFormView(moduleName, entityMeta, opts) |
Form, oluşturma yolu {parent_id} gerektirdiğinde bir üst seçici, bir belge toplayıcı ve kaydetme içeren itilmiş bir ekran |
webapp/js/gen-form.js:1846-2035 |
mountRecordForm(host, moduleName, entityMeta, opts) |
Düzenle (common.edit) ile düzenleme kipine geçen salt okunur bir kayıt kartı |
webapp/js/gen-form.js:2310 |
Alan denetimleri¶
field_type |
Denetim | Gönderilen değer | Kaynak |
|---|---|---|---|
string ve bilinmeyen türler |
Metin girdisi; semantic: "password" parola girdisi verir |
Metin | webapp/js/gen-form.js:197-199 |
text, json |
Metin alanı | Metin | webapp/js/gen-form.js:72-74 |
integer |
min_value ve max_value ile sayı girdisi |
Tam sayı | webapp/js/gen-form.js:75-79, webapp/js/gen-form.js:495-498 |
float |
Ondalık tuş takımlı metin girdisi | Sayı | webapp/js/gen-form.js:80-82, webapp/js/gen-form.js:499-502 |
decimal |
Ondalık tuş takımlı metin girdisi | Yazılan dize; zorunlu ve boşsa "0" |
webapp/js/gen-form.js:80-82, webapp/js/gen-form.js:503-506 |
boolean |
Anahtar | Mantıksal değer | webapp/js/gen-form.js:83-88 |
date |
Tarih girdisi | YYYY-MM-DD veya null |
webapp/js/gen-form.js:89-91, webapp/js/gen-form.js:511 |
datetime |
Yerel tarih-saat girdisi | UTC ISO dizesi | webapp/js/gen-form.js:92-94, webapp/js/gen-form.js:512-514 |
file_upload |
Dosya düğmesi; dosya kaydetmede yüklenir | Ek kimliği | webapp/js/gen-form.js:95-105 |
enum |
Seçim kutusu; isteğe bağlı alan boş başlar | Seçenek değeri veya null | webapp/js/gen-form.js:106-116 |
multi_enum |
Açılıp kapanan çipler | Değer listesi | webapp/js/gen-form.js:117-127 |
foreign_key |
source ile doldurulan seçim kutusu; kaynak bir varlık türü adlandırdığında hızlı oluşturma + ile |
Kimlik | webapp/js/gen-form.js:144-155 |
multi_foreign_key |
source ile doldurulan, hızlı oluşturma + taşıyan çipler |
Kimlik listesi | webapp/js/gen-form.js:128-143 |
suggest_combo |
Önerili metin girdisi | Metin | webapp/js/gen-form.js:156-164 |
dynamic_form |
Sürücü alanın seçili kaydından yüklenen alt alanlar | Nesne | webapp/js/gen-form.js:165-174 |
field_list |
item_fields için yinelenen satırlar |
Nesne listesi | webapp/js/gen-form.js:175-184 |
string_list |
Girdili, kaldırılabilir çipler | Dize listesi | webapp/js/gen-form.js:185-195 |
hidden_scope_field |
Denetim yok; değer ekran kapsamından gelir | Kapsam değeri | webapp/js/gen-form.js:390, webapp/js/gen-form.js:1775-1778 |
Ondalık girdi alandan isteğe kadar dize olarak kalır. Bu, para ve Decimal sayfasındaki para kuralını izler. Hızlı oluşturma + düğmesi Hızlı oluştur (fk.create_tooltip) ipucunu taşır.
Uyulan metadata özellikleri¶
| Özellik | Davranış | Kaynak |
|---|---|---|
create_only ve edit_only grupları |
Yalnız oluşturma grubu düzenlerken, yalnız düzenleme grubu oluştururken gizlenir | webapp/js/gen-form.js:290-298 |
condition ile conditional_group |
Denetleyen alanın değeri boru ile ayrılmış kümede olduğunda gösterilir, negate ile tersine döner; formda olmayan denetleyen alan yüklenen kayıttan okunur |
webapp/js/gen-form.js:698-722 |
weight: "detail" |
Satır, kullanıcı ayrıntı satırlarını açana kadar gizlidir | webapp/js/gen-form.js:408-412 |
auto_generate |
Diğer alanlar eşleştiğinde alanı bir şablondan doldurur | webapp/js/gen-form.js:434, webapp/js/gen-form.js:724-760 |
{parent_id} ve {field:<key>} içeren source.params |
Adlandırılan kardeş alan değiştiğinde seçici yeniden yüklenir | webapp/js/gen-form.js:816-900 |
immutable_on_edit |
Var olan kayıtta devre dışıdır; yabancı anahtar tek bir okumadan yalnız kaydın kendi seçeneğini gösterir | webapp/js/gen-form.js:845-860, webapp/js/gen-form.js:1632 |
read_only |
Devre dışıdır ve toplanmaz | webapp/js/gen-form.js:1632, webapp/js/gen-form.js:1779 |
autofill |
Seçilen kaydın bir alanını bir kardeş alana, isteğe bağlı olarak başka bir kaynak üzerinden kopyalar | webapp/js/gen-form.js:1180-1240 |
nested_key |
Değerler iç içe bir nesneden okunur ve ona yazılır (okumada <key>_info geri dönüşüyle) |
webapp/js/gen-form.js:1650-1662, webapp/js/gen-form.js:1768-1773 |
storage: "extra" |
Kiracı tanımlı bir alan satırın extra torbasında taşınır |
webapp/js/gen-form.js:1656-1657, webapp/js/gen-form.js:1785-1790 |
EntityMeta.completeness |
Formun üstünde kademeli bir tamamlanma çubuğu | webapp/js/gen-form.js:465-480, webapp/js/gen-form.js:771-805 |
EntityMeta.composite_create |
Bir oluşturma, bildirilen uca tek bir bileşik yük gönderir | webapp/js/gen-form.js:39-56, webapp/js/gen-form.js:1990-2000 |
EntityMeta.photo |
Oluşturma formunda seçilen fotoğraf yeni kaydın fotoğraf ucuna yüklenir | webapp/js/gen-form.js:2002-2012 |
EntityMeta.create_with_documents |
Oluşturma formu belgeleri toplar ve oluşturmadan sonra ekler | webapp/js/gen-form.js:1914-1920 |
Doğrulama ve toplama¶
validate() görünür gruplardaki zorunlu alanları, kap alanlarının zorunlu alt alanları dahil denetler ve validation.field_required_named ile kurulan iletiler döndürür (webapp/js/gen-form.js:1696-1762). collect() gizli koşullu grupları ve salt okunur alanları atlar, iç içe grupları kendi torbalarına yazar ve seçeneği bulunamayan yüklenmiş bir değeri hiçbir zaman boşaltmaz (webapp/js/gen-form.js:1764-1794). commitFiles() seçilen dosyaları POST /attachments/ ile yükler ve collect() çalışmadan önce dönen kimlikleri yazar (webapp/js/gen-form.js:1795-1812). Sunucu yeniden doğrular; bkz. hatalar ve istisnalar.
Kayıt kartı¶
mountRecordForm önce buildRecordCard ile kurulan salt okunur bir kart gösterir (webapp/js/gen-form.js:2210-2308, webapp/js/gen-form.js:2440-2484). Kart şunları gösterir:
record_actionsiçin iletişim hızlı aksiyonları (call,message,mail) (webapp/js/gen-form.js:2058-2077,webapp/js/gen-form.js:2449-2450);- varlık
photobildirdiğinde fotoğraf başlığı (webapp/js/gen-form.js:2452-2460); record_documentsfalse değilse Belgeler satırı (docs.section) (webapp/js/gen-form.js:2477-2483);- gezinme çubuğu girdileri: Paylaş, Düzenle ve
single_recordaksiyonları uygulandığında Aksiyonlar (webapp/js/gen-form.js:2319-2361); - kayda uyan metadata bağlantıları (
RecordLinkMeta); bir bağlantı kayıttan alınan parametrelerlecluster:open-sectionyayar (webapp/js/gen-form.js:2364-2385).
Düzenleme kipinde gezinme çubuğu İptal ve Kaydet gösterir (webapp/js/gen-form.js:2318-2322).
Kaydedilmemiş girdinin taslakları¶
form-drafts.js yalnız kullanıcının yüklenen tabandan değiştirdiği alanları tutar (webapp/js/gen-form.js:1255-1271, webapp/js/form-drafts.js:1-16).
| Kural | Değer | Kaynak |
|---|---|---|
| Taslak anahtarı | Modül, varlık, kayıt kimliği veya new, üst kimlik ve kapsam, dikey çizgiyle birleştirilmiş |
webapp/js/form-drafts.js:56-61 |
| Depolama | Bellek; sekme oturum deposuna cluster.session.form_drafts altında yansıtılır |
webapp/js/form-drafts.js:18-51 |
| En çok taslak | 60; en eskisi düşer | webapp/js/form-drafts.js:20, webapp/js/form-drafts.js:94-104 |
| Hiç saklanmayan alanlar | Parola alanları ve izinle kısıtlı alanlar | webapp/js/gen-form.js:2043-2052, webapp/js/form-drafts.js:69-82 |
| Silen olaylar | Kaydetme, İptal, uygulamayı açık uygulamalar ekranından kapatma ve çıkış | webapp/js/form-drafts.js:114-132, webapp/js/home.js:2539-2541 |
| Geri yükleme bildirimi | Atma düğmeli bir durum satırı | webapp/js/gen-form.js:1830-1844 |
Bir taslak geri yüklenirken başka bir alana bağlı alanlar denetleyen alanlarından sonra doldurulur; böylece bağımlı seçiciler seçeneklerini bulur (webapp/js/gen-form.js:1273-1290).
Özel seçim kutuları¶
initCustomSelects() açılışta çalışır ve şimdiki ve gelecekteki her yerel seçim kutusunu bir MutationObserver ile yükseltir. Yerel öğe değer ve değişim olayları için doğruluk kaynağı olarak kalır. 8 seçenekten itibaren bir arama kutusu görünür (webapp/js/customselect.js:1-17, webapp/js/customselect.js:229, webapp/js/main.js:229).
Kısıtlar ve doğrulama¶
- Form hiçbir zaman bir durum alanı uydurmaz. Yalnız aksiyonlarla değişen bir durum formda yer almaz; ona bağlı bir koşul yüklenen kaydı okur (
webapp/js/gen-form.js:703-707). Bkz. aksiyonlar ve aksiyon kartı. - Tarayıcı testleri:
web-client/_e2e_form_draft.mjs,web-client/_e2e_form_draft_matrix.mjs,web-client/_e2e_ui_forms.mjs,web-client/_e2e_party_form_fixes.mjs.
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| record card | mountRecordForm |
İstenince düzenleme kipine geçen, bir kaydın salt okunur görünümü. | kayıt kartı | webapp/js/gen-form.js:2310 |
| form draft | writeDraft |
Kullanıcının değiştirip kaydetmediği alanların yalnız oturumluk kopyası. | form taslağı | webapp/js/form-drafts.js:84 |
| quick create | fk.create_tooltip |
Bir seçicinin yanında, formdan çıkmadan başvurulan bir kaydı oluşturan +. | Hızlı oluştur | webapp/js/gen-form.js:146-148 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.