|
@@ -357,50 +357,19 @@ namespace InABox.DynamicGrid
|
|
|
|
|
|
#region Editor Values
|
|
|
|
|
|
- public static Dictionary<string, object?> GetValues(BaseObject item, string name, IEnumerable<IProperty>? props = null)
|
|
|
- {
|
|
|
- var result = new Dictionary<string, object?>();
|
|
|
- props ??= DatabaseSchema.Properties(item.GetType()).Where(x => x.Editor is not NullEditor);
|
|
|
- foreach (var prop in props)
|
|
|
- if (prop is CustomProperty)
|
|
|
- try
|
|
|
- {
|
|
|
- result[prop.Name] = item.UserProperties[prop.Name];
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- Logger.Send(LogType.Error, "", string.Format("*** Unknown Error: {0}\n{1}", e.Message, e.StackTrace));
|
|
|
- }
|
|
|
- else
|
|
|
- try
|
|
|
- {
|
|
|
- object? value;
|
|
|
- var getter = prop.Getter();
|
|
|
- if (getter != null)
|
|
|
- value = getter.Invoke(item);
|
|
|
- else
|
|
|
- value = CoreUtils.GetPropertyValue(item, prop.Name);
|
|
|
- result[prop.Name] = value;
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- Logger.Send(LogType.Error, "", string.Format("*** Unknown Error: {0}\n{1}", e.Message, e.StackTrace));
|
|
|
- }
|
|
|
-
|
|
|
- return result;
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
public static Dictionary<string, object?> UpdateEditorValue(BaseObject[] items, string name, object value)
|
|
|
{
|
|
|
Logger.Send(LogType.Information, "", string.Format("DynamicGridUtils.UpdateEditorValue({0},{1},{2})", items.Length, name, value));
|
|
|
var sw = new Stopwatch();
|
|
|
|
|
|
- var changes = new Dictionary<string, object?>();
|
|
|
- var props = DatabaseSchema.Properties(items.First().GetType()).Where(x => x.Editor is not NullEditor);
|
|
|
+ var changes = new Dictionary<String, object?>();
|
|
|
+ var props = DatabaseSchema.Properties(items.First().GetType()).Where(x => x.Editor is not NullEditor).ToArray();
|
|
|
foreach (var item in items)
|
|
|
{
|
|
|
//Dictionary<String, object> previous = new Dictionary<string, object>();
|
|
|
- var previous = GetValues(item, name, props);
|
|
|
+ var previous = CoreUtils.GetValues(item, props);
|
|
|
|
|
|
//if (item.OriginalValues != null)
|
|
|
//{
|
|
@@ -437,24 +406,11 @@ namespace InABox.DynamicGrid
|
|
|
string.Format("Unable to Set Value for [{0}.{1}] (Value is {2})", item.GetType().Name, name, value));
|
|
|
}
|
|
|
}
|
|
|
+ var current = CoreUtils.GetValues(item, props);
|
|
|
+ CoreUtils.MergeChanges(previous, current, changes);
|
|
|
|
|
|
- var current = GetValues(item, name, props);
|
|
|
-
|
|
|
- foreach (var key in previous.Keys)
|
|
|
- if (previous[key] == null)
|
|
|
- {
|
|
|
- if (current[key] != null)
|
|
|
- changes[key] = current[key];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (current[key] == null)
|
|
|
- changes[key] = current[key];
|
|
|
- else if (!object.Equals(previous[key], current[key]))
|
|
|
- changes[key] = current[key];
|
|
|
- }
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return changes;
|
|
|
}
|
|
|
|