KAR richtingnummers instelbaar in GUI + toevoegen aan SpecGen#150
KAR richtingnummers instelbaar in GUI + toevoegen aan SpecGen#150LexTrafico wants to merge 2 commits into
Conversation
| <TextBlock Text="Overig" Grid.ColumnSpan="2" Margin="5" Padding="0" TextDecorations="Underline" /> | ||
| <Label Content="Check op wagen nummer" Grid.Row="1" /> | ||
| <CheckBox IsChecked="{Binding Path=CheckWagenNummer,UpdateSourceTrigger=PropertyChanged}" Margin="5" /> | ||
| <Grid Grid.ColumnSpan="2" Visibility="{Binding Path=HasKAROV,Converter={StaticResource Bool2VisConv}}" > |
There was a problem hiding this comment.
Merk op dat AutoGrid al kolommen aanmaakt via Columns="Auto,*". Je kunt dus deze Grid verwijderen ten gunste van gewoon direct in de lijst opnemen van Label en TextBox
There was a problem hiding this comment.
Er is een geneste Grid omdat er twee visibility condities zijn: HasKAROV en KARSignaalGroepNummersInParameters. De een werkt nu op de geneste Grid, de ander op Label en TextBox. Wanneer 1 van beide ontbreekt mag de optie niet getoond worden (vind ik tenminste ;-) ).
Ik heb gepoogd om eea te maken met een booleanAndConverter (via MultiValueConverter), maar dat kreeg ik niet werkend.
There was a problem hiding this comment.
Dit kun je in het ViewModel oplossen. Bv.:
public bool TwoConditions => Condition1 && Condition2;
// ... en in de setters van Codition1 en Condition2:
OnPropertyChanged(nameof(TwoCoditions));
Vervolgens kun je in de View gewoon een regulier Binding doen op de TwoConditions property.
There was a problem hiding this comment.
HasKAROV is gebaseerd op een extension (?) HasPrioIngreepKAR() .
public bool HasKAROV => PrioIngreep.HasPrioIngreepKAR();
Ik weet niet hoe je daar een setter bij maakt.
mennowo
left a comment
There was a problem hiding this comment.
Dit is geen echte null check, want die cast naar int zal alsnog een nullref geven. Je zou moeten kijken naar iFcm.HasValue. Ik zal het nu wel zo overnemen en later eens aanpassen als het ofwel een issue wordt ofwel ik erlangs kom toevallig
|
|
||
| [Browsable(false)] | ||
| public int KARSignaalGroepNummer | ||
| { |
There was a problem hiding this comment.
Dit kan ik niet helemaal plaatsen. Functioneel zou ik het beste vinden, indien je als gebruiker gewoon in kunt vullen wat je in wilt vullen, en dat ook in het model komt. Deze code lijkt eigenstandig iets te doen met de ingevoerde waarde op basis van instellingen die hier buiten beeld vallen.
Mijn voorstel zou zijn: hier gewoon één waarde met een simpele get-set, en dan in de code generatie deze logica toepassen op basis van de algemene instellingen.
There was a problem hiding this comment.
Graag zou ik deze PR mergen met de master, deze code vind ik evenwel toch wat problematisch, vooral omdat ik niet kan volgen wat functioneel de bedoeling is.
Mijn voorkeur zou zijn: KARSignaalGroepNummer een reguliere full property maken, en dit soort logica verplaatsen naar de code generator (met commentaar zodat duidelijk is wat er functioneel gebeurt). Tenzij er een goede reden is om dit hier te doen, maar ook dan hebben we commentaar nodig zodat de code in de toekomst beheerbaar blijft.
Excuses voor de vertraging omtrent deze merge, voortgang rond TLCGen hing enige tijd op een merge van de "interstartgroen" branch, die anders te ver af zou geraken van de master.
There was a problem hiding this comment.
Deze logica staat al in de code generator. Is hier bedoeld om hetzelfde te tonen als dat er gegenereerd wordt.
Indien nog geen SG nummer bestaat (KARSGN == 0) wordt het richtingnummer bepaald obv de fasecyclus via TryParse. Is de signaalgroep > 200 dan wordt er 200 afgetrokken.
Wanneer de gebruiker zelf een SG nr opgeeft dat groter is dan 200 ook. Bij kleiner, wordt het nr wat de gebruiker opgeeft geaccepteerd.
Test op <= 400 is omdat je anders alsnog boven de 200 uit zou komen (462 - 200 is alsnog 262).
| [Description("KAR richtingnummer HD")] | ||
| [BrowsableCondition(nameof(KARSignaalGroepNummersInParameters))] | ||
| public int KARSignaalGroepNummerHD | ||
| { |
There was a problem hiding this comment.
Zie vorige opmerkingen: mijn voorstel zou zijn de logica te verplaatsen naar de code generatie
| <TextBlock Text="Overig" Grid.ColumnSpan="2" Margin="5" Padding="0" TextDecorations="Underline" /> | ||
| <Label Content="Check op wagen nummer" Grid.Row="1" /> | ||
| <CheckBox IsChecked="{Binding Path=CheckWagenNummer,UpdateSourceTrigger=PropertyChanged}" Margin="5" /> | ||
| <Grid Grid.ColumnSpan="2" Visibility="{Binding Path=HasKAROV,Converter={StaticResource Bool2VisConv}}" > |
There was a problem hiding this comment.
Dit kun je in het ViewModel oplossen. Bv.:
public bool TwoConditions => Condition1 && Condition2;
// ... en in de setters van Codition1 en Condition2:
OnPropertyChanged(nameof(TwoCoditions));
Vervolgens kun je in de View gewoon een regulier Binding doen op de TwoConditions property.
Mogelijkheid om de waarde van de KAR richtingparameters (PRM karsg## en karsghd##) in te stellen via de GUI (issue #149),