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) vesrc/cluster_erp/desktop/widgets/common/*.py(11 dosya),__init__.pysayılmadan. - Sayı:
generic/içinde 19,common/içinde 11 genel sınıf; adı büyük harfle başlayanclassdeyimleri sayılarak çıkarıldı. Alan türlericreate_fielddallarından sayıldı (src/cluster_erp/desktop/widgets/generic/field_factory.py:419-480). Ayrıntı sekmesi türleriGenericDetailView._setup_uiiç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 önceGenericForm.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>.deleteya da<entity>.bulk_delete, kaydetme<entity>.updateister (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¶
- Masaüstü istemci
- Sekmeler, bölmeler ve yerleşim
- Metadata deposu ve yabancı anahtar önbelleği
- Genel liste
- Genel form
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.