AdministrationWindow: Fix default value handling

This commit is contained in:
2023-08-30 14:54:16 +02:00
parent 1f377483a5
commit 5aa8e45652
5 changed files with 52 additions and 9 deletions

View File

@ -203,5 +203,21 @@ namespace Elwig.Helpers {
public static void SelectCheckComboBoxItems(Xceed.Wpf.Toolkit.CheckComboBox ccb, IEnumerable<object>? items, Func<object?, object?> getId) {
SelectCheckComboBoxItems(ccb, getId, items?.Select(i => getId(i)));
}
public static object? GetInputValue(Control input) {
if (input is TextBox tb) {
return tb.Text;
} else if (input is ComboBox sb) {
return sb.SelectedItem;
} else if (input is Xceed.Wpf.Toolkit.CheckComboBox ccb) {
return ccb.SelectedItems.Cast<object>().ToArray();
} else if (input is CheckBox cb) {
return cb.IsChecked;
} else if (input is RadioButton rb) {
return rb.IsChecked;
} else {
return null;
}
}
}
}

View File

@ -220,6 +220,10 @@ namespace Elwig.Windows {
}
}
protected void SetDefaultValue(Control input) {
SetDefaultValue(input, ControlUtils.GetInputValue(input));
}
protected void UnsetDefaultValue(Control input) {
DefaultValues.Remove(input);
if (!InputHasChanged(input)) {
@ -257,9 +261,9 @@ namespace Elwig.Windows {
} else if (input is CheckComboBox ccb) {
return !ccb.SelectedItems.Cast<object>().ToArray().SequenceEqual(((object[]?)OriginalValues[ccb]) ?? Array.Empty<object>());
} else if (input is CheckBox cb) {
return (OriginalValues[cb] != null) != (cb.IsChecked ?? false);
return OriginalValues[cb] != (object?)cb.IsChecked;
} else if (input is RadioButton rb) {
return (OriginalValues[rb] != null) != (rb.IsChecked ?? false);
return OriginalValues[rb] != (object?)rb.IsChecked;
} else {
return false;
}
@ -275,9 +279,9 @@ namespace Elwig.Windows {
} else if (input is CheckComboBox ccb) {
return !ccb.SelectedItems.Cast<object>().ToArray().SequenceEqual(((object[]?)DefaultValues[ccb]) ?? Array.Empty<object>());
} else if (input is CheckBox cb) {
return (DefaultValues[cb] != null) != (cb.IsChecked ?? false);
return DefaultValues[cb] != (object?)cb.IsChecked;
} else if (input is RadioButton rb) {
return (DefaultValues[rb] != null) != (rb.IsChecked ?? false);
return DefaultValues[rb] != (object?)rb.IsChecked;
} else {
return false;
}

View File

@ -58,6 +58,7 @@ namespace Elwig.Windows {
EditAreaCommitmentButton.IsEnabled = false;
DeleteAreaCommitmentButton.IsEnabled = false;
ClearOriginalValues();
ClearDefaultValues();
ClearInputs(validate);
ClearInputStates();
}
@ -66,6 +67,7 @@ namespace Elwig.Windows {
private void FillInputs(AreaCom a) {
ClearOriginalValues();
ClearDefaultValues();
FbNrInput.Text = a.FbNr.ToString();
MgNrInput.Text = a.MgNr.ToString();
@ -84,9 +86,14 @@ namespace Elwig.Windows {
}
private async void InitInputs() {
ClearOriginalValues();
ClearDefaultValues();
FbNrInput.Text = (await Context.NextFbNr()).ToString();
MgNrInput.Text = Member.MgNr.ToString();
FinishInputFilling();
SetDefaultValue(FbNrInput);
ValidateRequiredInputs();
}
protected override async Task RenewContext() {

View File

@ -131,17 +131,21 @@ namespace Elwig.Windows {
}
private void InitialInputs() {
ClearOriginalValues();
ClearDefaultValues();
HandPickedInput.IsChecked = null;
SetDefaultValue(HandPickedInput, null);
if (App.Client.IsMatzen) {
GerebeltGewogenInput.IsChecked = true;
GerebeltGewogenInput.IsEnabled = false;
SetDefaultValue(GerebeltGewogenInput);
} else {
GerebeltGewogenInput.IsChecked = false;
UnsetDefaultValue(GerebeltGewogenInput);
GerebeltGewogenInput.IsEnabled = true;
UnsetDefaultValue(GerebeltGewogenInput);
}
ClearOriginalValues();
SetDefaultValue(HandPickedInput);
ValidateRequiredInputs();
}
@ -426,6 +430,7 @@ namespace Elwig.Windows {
FillInputs(d);
} else {
ClearOriginalValues();
ClearDefaultValues();
ClearInputs(validate);
ClearInputStates();
}
@ -434,6 +439,7 @@ namespace Elwig.Windows {
private void FillInputs(Delivery d) {
ClearOriginalValues();
ClearDefaultValues();
MgNrInput.Text = d.MgNr.ToString();
ControlUtils.SelectComboBoxItem(BranchInput, i => (i as Branch)?.ZwstId, d.ZwstId);
@ -456,6 +462,7 @@ namespace Elwig.Windows {
private void FillInputs(DeliveryPart p) {
FillInputs(p.Delivery);
ClearOriginalValues();
ClearDefaultValues();
SortIdInput.Text = p?.SortId ?? "";
ControlUtils.SelectCheckComboBoxItems(AttributesInput, p?.Attributes, i => (i as WineAttr)?.AttrId);

View File

@ -106,6 +106,7 @@ namespace Elwig.Windows {
AreaCommitmentButton.IsEnabled = false;
DeliveryButton.IsEnabled = false;
ClearOriginalValues();
ClearDefaultValues();
ClearInputs(validate);
ClearInputStates();
}
@ -113,13 +114,20 @@ namespace Elwig.Windows {
}
private async void InitInputs() {
ClearOriginalValues();
ClearDefaultValues();
MgNrInput.Text = (await Context.NextMgNr()).ToString();
EntryDateInput.Text = DateTime.Now.ToString("dd.MM.yyyy");
if (Context.Branches.Count() == 1)
BranchInput.SelectedItem = Context.Branches.First();
ActiveInput.IsChecked = true;
ContactPostalInput.IsChecked = true;
FinishInputFilling();
SetDefaultValue(MgNrInput);
SetDefaultValue(EntryDateInput);
SetDefaultValue(ActiveInput);
ValidateRequiredInputs();
}
protected override async Task RenewContext() {
@ -439,6 +447,7 @@ namespace Elwig.Windows {
private void FillInputs(Member m) {
ClearOriginalValues();
ClearDefaultValues();
MgNrInput.Text = m.MgNr.ToString();
PredecessorMgNrInput.Text = m.PredecessorMgNr.ToString();