Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / Masaüstü istemci

Referans

Genel bileşenler

widgets/generic ve widgets/common içindeki masaüstü bileşenlerinin alan türleri, ayrıntı sekmesi türleri ve biçimlendiricilerle başvurusu.

Bu başvuru, sunucu metadata'sını masaüstü ekranlarına dönüştüren src/cluster_erp/desktop/widgets/generic/ içindeki bileşenleri ve src/cluster_erp/desktop/widgets/common/ içindeki ortak yapı taşlarını listeler. Alan fabrikasının desteklediği alan türlerini, ayrıntı sekmesi türlerini, hücre biçimlendiricilerini ve araç çubuğu sinyallerini verir. Bir bölümün ekranını nasıl seçtiği sekmeler, bölmeler ve yerleşim sayfasındadır. Metadata sınıflarının kendisi metadata modeli sayfasındadır.

Kapsam ve kaynak

  • Tanım yeri: src/cluster_erp/desktop/widgets/generic/*.py (17 dosya) ve src/cluster_erp/desktop/widgets/common/*.py (11 dosya), __init__.py sayılmadan.
  • Sayı: generic/ içinde 19, common/ içinde 11 genel sınıf; adı büyük harfle başlayan class deyimleri sayılarak çıkarıldı. Alan türleri create_field dallarından sayıldı (src/cluster_erp/desktop/widgets/generic/field_factory.py:419-480). Ayrıntı sekmesi türleri GenericDetailView._setup_ui içinden sayıldı (src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:148-189).

Ekran sınıfları

Bu sınıflar bir sekmeyi ya da bir iletişim kutusunu doldurur. Her biri MetadataStore içinden bir varlığın metadata sözlüğünü okur.

Sınıf Amaç Kaynak
GenericListView Arama, metadata süzgeçleri, boş durum, metadata aksiyon düğmeleri, kayıt araç çubuğu ve onay kutusu seçimi olan sayfalı liste. Çift tıklama kayıt kartını, varlığın ayrıntı görünümü yoksa düzenleme iletişim kutusunu açar src/cluster_erp/desktop/widgets/generic/generic_list_view.py:37, src/cluster_erp/desktop/widgets/generic/generic_list_view.py:395-402
GenericTabbedListView entity_tabs üzerinden kurulan, sekme olarak birden çok GenericListView; varlıklar farklı modüllere ait olabilir src/cluster_erp/desktop/widgets/generic/generic_tabbed_list_view.py:10-14
GenericTreeView Varlığın tree_view metadata'sından (display_key, children_key, parent_id_key, nested, tree_endpoint) TreePanel ile çizilen ağaç src/cluster_erp/desktop/widgets/generic/generic_tree_view.py:20-56
GenericSettingsView Her varlık anahtarı için bir _SettingsPanel sekmesi olan ayar sayfası; her panel listeler, kapsar, düzenler ve tohum aksiyonları çalıştırır src/cluster_erp/desktop/widgets/generic/generic_settings_view.py:37-42, src/cluster_erp/desktop/widgets/generic/generic_settings_view.py:508-513
GenericDetailView Kayıt kartı: detail_view sekmeleri, kayıt araç çubuğu, kilit şeridi, başka ekranlara bağlantılar ve kaydetme ve silme akışları src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:36
GenericSubPanel Bir ayrıntı sekmesinde sub_table.columns üzerinden ekleme, düzenleme ve silme sunan alt varlık tablosu src/cluster_erp/desktop/widgets/generic/generic_sub_panel.py:41-45
GenericFormDialog GenericForm çevresindeki oluşturma ve düzenleme iletişim kutusu; dosya yüklemeleri, ek yük ve eklerle src/cluster_erp/desktop/widgets/generic/generic_form_dialog.py:47
GenericForm Form gövdesi: alan grupları, koşullu gruplar, iç içe anahtarlar, yabancı anahtar yükleme, otomatik doldurma, otomatik üretilen değerler, kilitleme ve doğrulama src/cluster_erp/desktop/widgets/generic/generic_form.py:58

Alan türleri

create_field her field_type için bir Qt denetimi döndürür. Bilinmeyen bir tür düz bir metin kutusu alır (src/cluster_erp/desktop/widgets/generic/field_factory.py:419-480). get_value ve set_value her türü okur ve yazar (src/cluster_erp/desktop/widgets/generic/field_factory.py:483-622).

field_type Denetim Sunucuya giden değer Kaynak
string QLineEdit metin src/cluster_erp/desktop/widgets/generic/field_factory.py:645
text QPlainTextEdit metin src/cluster_erp/desktop/widgets/generic/field_factory.py:656
integer QSpinBox tamsayı src/cluster_erp/desktop/widgets/generic/field_factory.py:666
float dört ondalıklı QDoubleSpinBox sayı src/cluster_erp/desktop/widgets/generic/field_factory.py:679-690
decimal DecimalLineEdit metin; isteğe bağlı alan boşsa None src/cluster_erp/desktop/widgets/generic/field_factory.py:505-516
boolean QCheckBox mantıksal değer src/cluster_erp/desktop/widgets/generic/field_factory.py:708
date QDateEdit yyyy-MM-dd; devre dışıysa None src/cluster_erp/desktop/widgets/generic/field_factory.py:519-525
datetime yerel saatte QDateTimeEdit Z ile biten UTC ISO-8601 metni src/cluster_erp/desktop/widgets/generic/field_factory.py:526-536
enum metadata seçenekli QComboBox seçilen değer src/cluster_erp/desktop/widgets/generic/field_factory.py:765
suggest_combo düzenlenebilir QComboBox yazılan ya da seçilen metin src/cluster_erp/desktop/widgets/generic/field_factory.py:545-550
foreign_key SearchableFkCombo; kaynak bir varlık türü adlandırıyorsa oluşturma düğmesiyle seçilen kimlik src/cluster_erp/desktop/widgets/generic/field_factory.py:451-460
multi_foreign_key MultiSelectFkCombo boş olabilen kimlik listesi src/cluster_erp/desktop/widgets/generic/field_factory.py:542-544
json, field_list, dynamic_form, string_list JSON tutan QPlainTextEdit ayrıştırılmış JSON src/cluster_erp/desktop/widgets/generic/field_factory.py:38, src/cluster_erp/desktop/widgets/generic/field_factory.py:489-500
file_upload FileUploadWidget yüklemeden önce yerel yol, sonra ek kimliği src/cluster_erp/desktop/widgets/generic/field_factory.py:551-557

Tabloda 17 field_type değeri için 14 satır vardır, çünkü dört JSON benzeri değer tek satırı paylaşır. semantic değeri password olan bir alan girdisini gizler (src/cluster_erp/desktop/widgets/generic/field_factory.py:476-478). Sayısal denetimler odak almadan fare tekerleğini yok sayar (src/cluster_erp/desktop/widgets/generic/field_factory.py:41-45).

DecimalLineEdit girdiyi max_digits, decimal_places ve allow_negative üzerinden kurulan bir düzenli ifadeyle doğrular ve hiçbir zaman float'a dönüştürmez. Belge dizgesi, paranın yalnızca Decimal olması standardına atıf yapar (src/cluster_erp/desktop/widgets/generic/field_factory.py:148-182). Bkz. para ve decimal. tests/test_desktop_datetime_field.py, datetime gidiş-dönüşünü sabitler (tests/test_desktop_datetime_field.py:45-71).

Form davranışı

Özellik Davranış Kaynak
Koşullu gruplar Bir conditional_group yalnızca koşulu sağlandığı sürece gösterilir, doğrulanır ve toplanır src/cluster_erp/desktop/widgets/generic/generic_form.py:209-262, src/cluster_erp/desktop/widgets/generic/generic_form.py:667-688
İç içe anahtarlar nested_key taşıyan bir grubun alanları bir alt nesnede toplanır ve oradan okunur src/cluster_erp/desktop/widgets/generic/generic_form.py:252-270, src/cluster_erp/desktop/widgets/generic/generic_form.py:1349-1366
Yalnızca düzenleme grupları edit_only işaretli gruplar yalnızca mevcut kayıtlarda görünür src/cluster_erp/desktop/widgets/generic/generic_form.py:126-131, src/cluster_erp/desktop/widgets/generic/generic_form.py:154-161
Bağımlı yabancı anahtarlar Bir {field:<key>} parametresi kardeş alandan doldurulur; değer yoksa liste boş kalır src/cluster_erp/desktop/widgets/generic/generic_form.py:867-890
Döngüsüz yeniden doldurma Liste yeniden doldurulurken sinyaller engellenir ve yalnızca değer değiştiyse tek bir değişiklik yayılır src/cluster_erp/desktop/widgets/generic/generic_form.py:818-839
Alandan oluşturma Oluşturma düğmesi kaynak varlık için GenericFormDialog açar, sonra listeyi yeniden yükler ve yeni kaydı seçer src/cluster_erp/desktop/widgets/generic/generic_form.py:1079-1121
Otomatik doldurma ve üretme Metadata kuralları alanları seçilen bir kayıttan ya da bir şablondan doldurur src/cluster_erp/desktop/widgets/generic/generic_form.py:1189-1347
Kayıt kilidi Kilit alanı bir kilit değeri taşıyan kayıt salt okunurdur ve kaydetme devre dışıdır src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:494-529
İyimser eşzamanlılık Yüklenen version güncellemeyle geri gönderilir src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:600-605

Ayrıntı sekmesi türleri

GenericDetailView, detail_view.tabs içindeki her girdi için tab_type değerine göre bir sekme kurar (src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:148-189).

tab_type Bileşen Kaynak
form FormToolbar ile GenericForm; entity ayarlıysa bir GenericSubPanel src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:154-160
sub_entity_table GenericSubPanel src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:162-165
sub_entity_tree Alt hiyerarşi için TreePanel src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:166-169
permission_checklist PermissionPanel src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:170-172
role_checklist RoleAssignPanel src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:173-175
access_summary AccessSummaryPanel src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:176-178
custom _DETAIL_TAB_WIDGETS içinden bir kurucu: capability_checklist CapabilityPanel, purchase_rfq_comparison PurchaseRfqComparisonPanel, working_calendar WorkingCalendarPanel verir src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:179-197
completeness Karşılanan ve eksik gereksinimlerin salt okunur listesi olan CompletenessPanel src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:188-190, src/cluster_erp/desktop/widgets/generic/completeness_panel.py:18-21

Anahtarı kayıtta olmayan bir custom sekme eklenmez (src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:182-187).

Hücre biçimlendiricileri

build_formatter, liste görünümleri, alt paneller ve ayar panelleri için ham bir hücre değerini metne çevirir (src/cluster_erp/desktop/widgets/generic/formatters.py:1-6, src/cluster_erp/desktop/widgets/generic/formatters.py:20-121).

formatter Çıktı Kaynak
yok biçimlendirici yok; ham değer gösterilir src/cluster_erp/desktop/widgets/generic/formatters.py:47-49
boolean, active_flag common.yes ya da common.no metni src/cluster_erp/desktop/widgets/generic/formatters.py:51-58
date kullanıcının saat diliminde tarih src/cluster_erp/desktop/widgets/generic/formatters.py:60-72
datetime kullanıcının saat diliminde tarih ve saat src/cluster_erp/desktop/widgets/generic/formatters.py:74-86
enum geçerli dilde seçenek etiketi src/cluster_erp/desktop/widgets/generic/formatters.py:88-104
foreign_key FkCache içinden görüntü metni src/cluster_erp/desktop/widgets/generic/formatters.py:106-119

Saat dilimi timezone ayarından gelir, varsayılanı UTC (src/cluster_erp/desktop/core/timezone_utils.py:37-43). Tarihler sabit %Y-%m-%d ve %Y-%m-%d %H:%M:%S biçimlerini kullanır (src/cluster_erp/desktop/core/timezone_utils.py:61-72).

Ortak bileşenler

Sınıf veya işlev Amaç Kaynak
ListView Arama, sayfalama (varsayılan 50 satır), onay kutusu seçimi, sayısal hizalama ve çift tıklama sinyali olan tablo. Bir sıra numarası eski isteklerin yanıtlarını atar src/cluster_erp/desktop/widgets/common/list_view.py:116-143, src/cluster_erp/desktop/widgets/common/list_view.py:299-333
ColumnDef, infer_alignment, is_numeric_value Sütun tanımı ve sayısal sütunlar için sağa hizalama src/cluster_erp/desktop/widgets/common/list_view.py:46-101
CheckableTable Bir tablo modeli için onay kutusu seçim yöneticisi src/cluster_erp/desktop/widgets/common/checkable_table.py:8-19
RecordToolbar 14 sinyalli araç çubuğu: sayfa gezinme, yenileme, yeni, kaydetme, not, ek, yazdırma, e-posta, tümünü seçme, seçimi kaldırma ve silme src/cluster_erp/desktop/widgets/common/record_toolbar.py:26-40
FormToolbar Bir form sekmesinin kaydetme ve silme düğmeleri src/cluster_erp/desktop/widgets/common/detail_form.py:10-12
TreePanel Seçme, ekleme, düzenleme ve silme sinyalleri olan ağaç src/cluster_erp/desktop/widgets/common/tree_view.py:23-27
ConfirmDialog, confirm_delete, confirm_discard Çevrilmiş metinlerle evet veya hayır onayı src/cluster_erp/desktop/widgets/common/confirm_dialog.py:8-47
Toast, show_toast success, error, info ve warning türleri olan süreli ileti src/cluster_erp/desktop/widgets/common/toast.py:8-48, src/cluster_erp/desktop/widgets/common/toast.py:108
NotesDialog NotesApi üzerinden bir kaydın notları src/cluster_erp/desktop/widgets/common/notes_dialog.py:66
AttachmentDialog AttachmentsApi üzerinden bir kaydın ekleri; önizlemeler süreç başına önizleme klasörüne gider src/cluster_erp/desktop/widgets/common/attachment_dialog.py:91, src/cluster_erp/desktop/widgets/common/attachment_dialog.py:339
EmailDialog Seçilen kayıtları EmailApi üzerinden e-postayla gönderir src/cluster_erp/desktop/widgets/common/email_dialog.py:37
print_record Bir kaydın HTML belgesi olarak baskı önizlemesi src/cluster_erp/desktop/widgets/common/print_helper.py:60-88

Ek önizlemeleri sistemin geçici dizini altında süreç başına bir klasöre yazılır. Klasör çıkışta silinir. Bir sonraki açılışta önceki süreçlerin klasörleri, kalp atışı dosyası taze olanlar dışında silinir; taze kalp atışı hâlâ çalışan bir masaüstü örneğini gösterir ve bir zamanlayıcı onu beş dakikada bir yeniler (src/cluster_erp/desktop/core/preview_files.py:25-53, src/cluster_erp/desktop/core/preview_files.py:68-74, src/cluster_erp/desktop/main.py:137-147).

Kısıtlar ve doğrulama

  • GenericFormDialog._on_save, herhangi bir şey göndermeden önce GenericForm.validate çalıştırır ve ilk hatayı bildirim olarak gösterir (src/cluster_erp/desktop/widgets/generic/generic_form_dialog.py:209-215).
  • Araç çubuğu düğmeleri kullanıcının izinlerini izler: oluşturma <entity>.create, silme <entity>.delete ya da <entity>.bulk_delete, kaydetme <entity>.update ister (src/cluster_erp/desktop/widgets/generic/generic_list_view.py:103-107, src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:513-515). Sunucu aynı izinleri uygular; bkz. roller ve izinler.
  • tests/test_desktop_table_text_insets.py, gerçek stil sayfasında başlık ve hücre metni konumlarını sabitler (tests/test_desktop_table_text_insets.py:104-135).

Tutarsızlıklar

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
field factory create_field Bir metadata alan türü için Qt denetimini oluşturan işlev. alan fabrikası src/cluster_erp/desktop/widgets/generic/field_factory.py:419
decimal line edit DecimalLineEdit Yalnızca ondalık kalıbını kabul eden ve metin döndüren girdi kutusu. ondalık metin kutusu src/cluster_erp/desktop/widgets/generic/field_factory.py:148
detail tab type tab_type Bir kayıt kartı sekmesinin bileşenini seçen metadata değeri. ayrıntı sekmesi türü src/cluster_erp/desktop/widgets/generic/generic_detail_view.py:150
record toolbar RecordToolbar Listelerin ve kayıt kartlarının üstünde sayfalama, kayıt ve çıktı düğmeleri olan araç çubuğu. kayıt araç çubuğu src/cluster_erp/desktop/widgets/common/record_toolbar.py:26

İlgili sayfalar


92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.

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