Optymalizacja soneta-form-xml skill

This commit is contained in:
Marcin Wojas
2026-03-05 15:31:31 +01:00
parent 3f5d9a795e
commit 898fd6a98d
43 changed files with 5677 additions and 525 deletions
@@ -0,0 +1,128 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Zakładka: Kredyt kontrahenta
Plik: Kontrahent.Kredyt.pageform.xml
Demonstruje wzorce warunkowej widoczności przy użyciu:
- RowCondition ({?...}) dla porównań wartości pól
- Visibility z bindowaniem do właściwości bool
- Renderable uzależniony od licencji (liczony raz przy logowaniu)
- Class="Collapsable" dla zwijanych grup
-->
<DataForm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.enova.pl/schema/form.xsd"
xsi:schemaLocation="http://www.enova.pl/schema/ http://www.enova.pl/schema/form.xsd"
Priority="30">
<Page CaptionHtml="Kredyt" DataContext="{DataSource}">
<!-- =====================================================================
WZORZEC 1: Pole widoczne tylko gdy TypKlienta = 'Korporacyjny'
Używamy wyrażenia RowCondition: {?TypKlienta=Korporacyjny}
Pole LimitKredytu jest zwijane (Collapsed) gdy warunek nie jest spełniony.
====================================================================== -->
<Group CaptionHtml="Limit kredytu">
<Field CaptionHtml="Typ klienta" Width="20" EditValue="{TypKlienta}" />
<Field CaptionHtml="Limit kredytu"
Width="18"
EditValue="{LimitKredytu}"
Visibility="{?TypKlienta=Korporacyjny}" />
<Field CaptionHtml="Waluta limitu"
Width="10"
EditValue="{WalutaLimitu}"
Visibility="{?TypKlienta=Korporacyjny}" />
</Group>
<!-- =====================================================================
WZORZEC 2: Pole widoczne gdy Status = 'Premium' LUB Status = 'VIP'
Używamy operatora 'or' w wyrażeniu RowCondition.
Składnia: {?Pole=Wartość1 or Pole=Wartość2}
====================================================================== -->
<Group CaptionHtml="Warunki specjalne">
<Field CaptionHtml="Status klienta" Width="20" EditValue="{Status}" />
<Field CaptionHtml="Warunki specjalne"
Width="*"
Height="3"
EditValue="{WarunkiSpecjalne}"
Visibility="{?Status=Premium or Status=VIP}" />
<Field CaptionHtml="Opiekun VIP"
Width="30"
EditValue="{OpiekunVIP}"
Visibility="{?Status=Premium or Status=VIP}" />
</Group>
<!-- =====================================================================
WZORZEC 3: Pole widoczne gdy NIE Status = 'Aktywny'
Używamy negacji w wyrażeniu RowCondition: {?!Status=Aktywny}
Ostrzeżenie o branży pojawia się tylko dla nieaktywnych kontrahentów.
====================================================================== -->
<Group CaptionHtml="Ostrzeżenia">
<Field CaptionHtml="Ostrzezenie branze"
Width="*"
EditValue="{OstrzezenieBranzy}"
Class="WarningLabel"
Visibility="{?!Status=Aktywny}" />
<Field CaptionHtml="Powod nieaktywnosci"
Width="*"
EditValue="{PowodNieaktywnosci}"
Visibility="{?!Status=Aktywny}" />
</Group>
<!-- =====================================================================
WZORZEC 4: Przycisk Command widoczny gdy ObrotyRoczne > 0
Dla porównań numerycznych (> < >= <=) RowCondition nie obsługuje
operatorów arytmetycznych bezpośrednio — zamiast tego:
a) Używamy właściwości bool z logiki biznesowej: {MaObrotyRoczne}
(właściwość C# zwracająca: ObrotyRoczne > 0)
b) Alternatywnie: worker z właściwością bool: {Workers.KredytWorker.MaObroty}
====================================================================== -->
<Group CaptionHtml="Analiza obrotow">
<Row>
<Field CaptionHtml="Obroty roczne" Width="18" EditValue="{ObrotyRoczne}" />
<Field CaptionHtml="Obroty miesieczne" Width="18" EditValue="{ObrotyMiesieczne}" />
<Gap Width="*" />
<!-- Przycisk widoczny gdy ObrotyRoczne > 0 (via właściwość bool MaObrotyRoczne) -->
<Command CaptionHtml="Analiza kredytowa"
Width="18"
MethodName="WykonajAnalize"
CommandStyle="Important"
Visibility="{MaObrotyRoczne}" />
<!-- Alternatywny wzorzec: worker z właściwością bool -->
<Command CaptionHtml="Raport obrotow"
Width="16"
MethodName="GenerujRaport"
DataContext="{new KredytExtender}"
Visibility="{Workers.KredytWorker.MaObroty}" />
</Row>
</Group>
<!-- =====================================================================
WZORZEC 5: Grupa zwijalna (Collapsable) z Renderable uzależnionym
od licencji.
- Class="Collapsable" — użytkownik może zwijać/rozwijać grupę
- Renderable="{Licence.HAN}" — renderowana tylko gdy licencja HAN
aktywna (wartość liczona RAZ przy logowaniu operatora, optymalne
dla warunków środowiskowych i licencyjnych)
====================================================================== -->
<Group CaptionHtml="Dane zaawansowane"
Class="Collapsable"
Renderable="{Licence.HAN}">
<Row>
<Stack LabelWidth="20">
<Field CaptionHtml="Scoring kredytowy" Width="10" EditValue="{ScoringKredytowy}" />
<Field CaptionHtml="Kategoria ryzyka" Width="20" EditValue="{KategoriaRyzyka}" />
<Field CaptionHtml="Data ostatniej oceny" Width="15" EditValue="{DataOstOceny}" />
</Stack>
<Stack LabelWidth="20">
<Field CaptionHtml="Maksymalna ekspozycja" Width="18" EditValue="{MaksEkspozycja}" />
<Field CaptionHtml="Ubezpieczenie kredytu" Width="8" EditValue="{UbezpieczenieKredytu}" />
<Field CaptionHtml="Firma ubezpieczeniowa" Width="25" EditValue="{FirmaUbezpieczeniowa}"
Visibility="{UbezpieczenieKredytu}" />
</Stack>
</Row>
<Field CaptionHtml="Uwagi analityka" Width="*" Height="3" EditValue="{UwagiAnalityka}" />
</Group>
</Page>
</DataForm>
@@ -0,0 +1,4 @@
{
"files_created": ["Kontrahent.Kredyt.pageform.xml"],
"errors_encountered": 0
}