|
@@ -138,7 +138,7 @@ namespace InABox.DynamicGrid
|
|
|
public event GetPropertyValueHandler? OnGetPropertyValue;
|
|
|
public event SetPropertyValueHandler? OnSetPropertyValue;
|
|
|
|
|
|
- public delegate Dictionary<string, object?> EditorGridValueChangedHandler(DynamicEditorGrid sender, string name, object value);
|
|
|
+ public delegate Dictionary<string, object?> EditorGridValueChangedHandler(DynamicEditorGrid sender, string name, object? value);
|
|
|
public event EditorGridValueChangedHandler? OnEditorValueChanged;
|
|
|
|
|
|
public event OnAfterEditorValueChanged? OnAfterEditorValueChanged;
|
|
@@ -381,12 +381,12 @@ namespace InABox.DynamicGrid
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
- private void EditorValueChanged(IDynamicEditorControl sender, Dictionary<string, object> values)
|
|
|
+ private void EditorValueChanged(IDynamicEditorControl sender, Dictionary<string, object?> values)
|
|
|
{
|
|
|
//Logger.Send(LogType.Information, "", string.Format("DynamicEditorGrid.EditorValueChanged({0})", values.Keys.Count));
|
|
|
var changededitors = new Dictionary<string, object?>();
|
|
|
|
|
|
- void ExtractChanged(Dictionary<String, object?>? columns)
|
|
|
+ void ExtractChanged(Dictionary<string, object?>? columns)
|
|
|
{
|
|
|
if (columns != null)
|
|
|
foreach (var (change, value) in columns)
|
|
@@ -394,11 +394,52 @@ namespace InABox.DynamicGrid
|
|
|
changededitors[change] = value;
|
|
|
}
|
|
|
|
|
|
- foreach (var key in values.Keys)
|
|
|
+ var name = sender.ColumnName;
|
|
|
+ var resetAll = false;
|
|
|
+ if(values.Remove(name, out var value))
|
|
|
{
|
|
|
- var changedcolumns = EditorGrid.OnEditorValueChanged?.Invoke(EditorGrid, key, values[key]);
|
|
|
+ var changedcolumns = EditorGrid.OnEditorValueChanged?.Invoke(EditorGrid, name, value);
|
|
|
+
|
|
|
+ resetAll = changedcolumns?.ContainsKey(name) ?? false;
|
|
|
ExtractChanged(changedcolumns);
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (var (key, otherValue) in values)
|
|
|
+ {
|
|
|
+ var changes = new Dictionary<string, object?>();
|
|
|
+ if (resetAll)
|
|
|
+ {
|
|
|
+ var prop = DatabaseSchema.Property(EditorGrid.UnderlyingType, key);
|
|
|
+ if(prop is not null)
|
|
|
+ {
|
|
|
+ var def = CoreUtils.GetDefault(prop.PropertyType);
|
|
|
+ var resetChanges = EditorGrid.OnEditorValueChanged?.Invoke(EditorGrid, key, def);
|
|
|
+ if(resetChanges is not null)
|
|
|
+ {
|
|
|
+ changes = resetChanges;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var changedOtherColumns = EditorGrid.OnEditorValueChanged?.Invoke(EditorGrid, key, otherValue);
|
|
|
+
|
|
|
+ if(changedOtherColumns is not null)
|
|
|
+ {
|
|
|
+ foreach (var (k, v) in changedOtherColumns)
|
|
|
+ {
|
|
|
+ changes[k] = v;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ ExtractChanged(changes);
|
|
|
+ }
|
|
|
|
|
|
var afterchanged = EditorGrid.OnAfterEditorValueChanged?.Invoke(EditorGrid, new AfterEditorValueChangedArgs(sender.ColumnName, changededitors));
|
|
|
ExtractChanged(afterchanged);
|