Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / Web uygulaması

Referans

Genel form

gen-form.js, customselect.js ve form-drafts.js için başvuru; FormMeta üzerinden oluşturma ve düzenleme formlarını ve salt okunur kayıt kartlarını kurarlar.

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-200 içindeki controlHtml dallarından sayıldı); FieldMeta.field_type 19 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_actions iç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 photo bildirdiğinde fotoğraf başlığı (webapp/js/gen-form.js:2452-2460);
  • record_documents false değilse Belgeler satırı (docs.section) (webapp/js/gen-form.js:2477-2483);
  • gezinme çubuğu girdileri: Paylaş, Düzenle ve single_record aksiyonları uygulandığında Aksiyonlar (webapp/js/gen-form.js:2319-2361);
  • kayda uyan metadata bağlantıları (RecordLinkMeta); bir bağlantı kayıttan alınan parametrelerle cluster:open-section yayar (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ı.

Doğrulanan commit 92f8051 · 2026-11-13