Add wine quality level in DeliveryAdminWindow

This commit is contained in:
2023-05-22 23:45:47 +02:00
parent dc236bab62
commit 2281ec80ae
5 changed files with 58 additions and 16 deletions

View File

@ -112,17 +112,23 @@
<GroupBox Header="Gradation" Grid.Column="2" Grid.Row="2" Margin="5,5,5,5">
<Grid>
<TextBox x:Name="GradationOeInput" Width="80" Grid.Row="1" Grid.Column="1" Margin="10,10,10,10" HorizontalAlignment="Left"
IsReadOnly="False" IsEnabled="True"
TextAlignment="Right" Padding="2,2,25,2"
TextChanged="GradationOeInput_TextChanged" LostFocus="GradationOeInput_LostFocus"/>
<Label Content="°Oe" Margin="63,11,10,10"/>
<Label Content="=" Margin="94,10,10,10"/>
<TextBox x:Name="GradationKmwInput" Width="80" Grid.Row="1" Grid.Column="1" Margin="110,10,10,10" HorizontalAlignment="Left"
IsReadOnly="False" IsEnabled="True"
TextAlignment="Right" Padding="2,2,38,2"
TextChanged="GradationKmwInput_TextChanged" LostFocus="GradationKmwInput_LostFocus"/>
<Label Content="°KMW" Margin="150,11,10,10"/>
<Grid Grid.Row="1" Grid.Column="1" Width="56" Height="25" Margin="10,10,10,10" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="GradationOeInput" TextAlignment="Right" Padding="2,1,25,2"
IsReadOnly="False" IsEnabled="True"
TextChanged="GradationOeInput_TextChanged" LostFocus="GradationOeInput_LostFocus"/>
<Label Content="°Oe" Margin="0,1,3,0" HorizontalAlignment="Right"/>
</Grid>
<Label Content="=" Margin="72,10,10,10"/>
<Grid Grid.Row="1" Grid.Column="1" Width="72" Height="25" Margin="90,10,10,10" HorizontalAlignment="Left" VerticalAlignment="Top">
<TextBox x:Name="GradationKmwInput" TextAlignment="Right" Padding="2,1,38,2"
IsReadOnly="False" IsEnabled="True"
TextChanged="GradationKmwInput_TextChanged" LostFocus="GradationKmwInput_LostFocus"/>
<Label Content="°KMW" Margin="0,1,3,0" HorizontalAlignment="Right"/>
</Grid>
<Label Content="Qualitätsstufe:" Margin="10,40,10,10"/>
<ComboBox x:Name="WineQualityLevelInput" IsEnabled="True" Margin="100,40,10,10"
ItemTemplate="{StaticResource WineQualityLevelTemplate}"/>
</Grid>
</GroupBox>
@ -137,7 +143,7 @@
<GroupBox Header="Herkunft" Grid.Column="2" Grid.Row="4" Margin="5,5,5,5">
<Grid>
<ComboBox x:Name="WineOriginInput" IsEnabled="True" Margin="10,10,10,10"
ItemTemplate="{StaticResource WineOriginTemplate}" SelectedValuePath="Name"/>
ItemTemplate="{StaticResource WineOriginTemplate}"/>
</Grid>
</GroupBox>
</Grid>

View File

@ -16,7 +16,8 @@ namespace Elwig.Windows {
MgNrInput, MemberInput,
SortIdInput, WineVarietyInput,
GradationOeInput, GradationKmwInput,
WineOriginInput
WineQualityLevelInput,
WineOriginInput,
};
ExemptInputs = new Control[] {
MgNrInput, MemberInput,
@ -28,6 +29,7 @@ namespace Elwig.Windows {
MemberInput.ItemsSource = Context.Members.OrderBy(m => m.FamilyName).ThenBy(m => m.GivenName).ToList();
WineVarietyInput.ItemsSource = Context.WineVarieties.OrderBy(v => v.Name).ToList();
AttributesInput.ItemsSource = Context.WineAttributes.OrderBy(a => a.Name).ToList();
WineQualityLevelInput.ItemsSource = Context.WineQualityLevels.ToList();
ModifiersInput.ItemsSource = Context.Modifiers.Where(m => m.Season.Year == 2022).OrderBy(m => m.Name).ToList();
WineOriginInput.ItemsSource = Context.WineOrigins.ToList().OrderByDescending(o => o.SortKey).ThenBy(o => o.HkId);
}
@ -80,12 +82,22 @@ namespace Elwig.Windows {
if (s != null) SortIdInput.Text = s.SortId;
}
private void UpdateWineQualityLevels() {
var kmw = double.Parse(GradationKmwInput.Text);
WineQualityLevelInput.ItemsSource = Context.WineQualityLevels.Where(q => q.MinKmw == null || q.MinKmw <= kmw).ToList();
if (WineQualityLevelInput.SelectedItem == null || (WineQualityLevelInput.SelectedItem is WineQualLevel selected && !selected.IsPredicate)) {
var qual = Context.WineQualityLevels.Where(q => !q.IsPredicate && (q.MinKmw == null || q.MinKmw <= kmw)).OrderBy(q => q.MinKmw).LastOrDefault();
WineQualityLevelInput.SelectedItem = qual;
}
}
private void UpdateGradationKmw() {
IsUpdatingGradation = true;
var caret = GradationKmwInput.CaretIndex;
GradationKmwInput.Text = $"{Utils.OeToKmw(double.Parse(GradationOeInput.Text)):#.0}";
GradationKmwInput.CaretIndex = caret;
IsUpdatingGradation = false;
UpdateWineQualityLevels();
}
private void UpdateGradationOe() {
@ -94,6 +106,7 @@ namespace Elwig.Windows {
GradationOeInput.Text = $"{Utils.KmwToOe(double.Parse(GradationKmwInput.Text)):#}";
GradationOeInput.CaretIndex = caret;
IsUpdatingGradation = false;
UpdateWineQualityLevels();
}
private void GradationOeInput_TextChanged(object sender, TextChangedEventArgs evt) {
@ -112,6 +125,7 @@ namespace Elwig.Windows {
private void GradationKmwInput_LostFocus(object sender, RoutedEventArgs evt) {
InputLostFocus((TextBox)sender, Validator.CheckGradationKmw);
if (!GradationKmwInput.Text.Contains(',')) GradationKmwInput.Text += ",0";
}
private void AttributesInput_SelectionChanged(object sender, ItemSelectionChangedEventArgs evt) {