|
@@ -65,22 +65,6 @@ public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid w
|
|
|
// so that clients will (usually) provide sufficient columns for saving
|
|
|
foreach (var col in LookupFactory.RequiredColumns<TEntity>())
|
|
|
HiddenColumns.Add(CoreUtils.CreateLambdaExpression<TEntity>(col.Property));
|
|
|
-
|
|
|
- //HiddenColumns.Add(x => x.ID);
|
|
|
-
|
|
|
- // if (typeof(TEntity).GetInterfaces().Contains(typeof(IIssues)))
|
|
|
- // {
|
|
|
- // HiddenColumns.Add(x => (x as IIssues)!.Issues);
|
|
|
- // HiddenColumns.Add(x=>(x as IIssues)!.IssuesResolved);
|
|
|
- // var coltype = typeof(DynamicIssuesColumn<>).MakeGenericType(typeof(TEntity));
|
|
|
- // var column = Activator.CreateInstance(coltype, this);
|
|
|
- // var dic = (column as IDynamicIssuesColumn)!;
|
|
|
- // dic.CustomiseEditor = (v) => DoCustomiseIssuesEditor(v.OfType<TEntity>().ToArray());
|
|
|
- // dic.IssuesUpdated = (v, c) => DoUpdateIssues(v.OfType<TEntity>().ToArray(), c);
|
|
|
- // var dac = (column as DynamicActionColumn)!;
|
|
|
- // ActionColumns.Add(dac);
|
|
|
- // }
|
|
|
-
|
|
|
|
|
|
if (typeof(TEntity).GetInterfaces().Contains(typeof(IProblems)))
|
|
|
{
|
|
@@ -88,9 +72,6 @@ public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid w
|
|
|
HiddenColumns.Add(x=>(x as IProblems)!.Problem.Resolved);
|
|
|
var coltype = typeof(DynamicProblemsColumn<>).MakeGenericType(typeof(TEntity));
|
|
|
var column = Activator.CreateInstance(coltype, this);
|
|
|
- //var dic = (column as IDynamicIssuesColumn)!;
|
|
|
- //dic.CustomiseEditor = (v) => DoCustomiseIssuesEditor(v.OfType<TEntity>().ToArray());
|
|
|
- //dic.IssuesUpdated = (v, c) => DoUpdateIssues(v.OfType<TEntity>().ToArray(), c);
|
|
|
var dac = (column as DynamicActionColumn)!;
|
|
|
ActionColumns.Add(dac);
|
|
|
}
|
|
@@ -98,10 +79,6 @@ public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid w
|
|
|
SetupFilterColumns();
|
|
|
}
|
|
|
|
|
|
- // protected virtual void DoUpdateIssues(TEntity[] toArray, FrameworkElement? frameworkElement) { }
|
|
|
- //
|
|
|
- // protected virtual FrameworkElement? DoCustomiseIssuesEditor(TEntity[] values) => null;
|
|
|
-
|
|
|
protected override void Init()
|
|
|
{
|
|
|
FilterComponent = new(this,
|
|
@@ -321,15 +298,14 @@ public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid w
|
|
|
|
|
|
if (newFilter is not null)
|
|
|
{
|
|
|
- //var id = row.Get<TEntity, Guid>(x => x.ID);
|
|
|
if (filter is null)
|
|
|
- filter = newFilter;//new Filter<TEntity>(x => x.ID).IsEqualTo(id);
|
|
|
+ filter = newFilter;
|
|
|
else
|
|
|
- filter = filter.Or(newFilter);//.Or(x => x.ID).IsEqualTo(id);
|
|
|
+ filter = filter.Or(newFilter);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- var columns = LoadEditorColumns(); // new Columns<TEntity>().Default(ColumnType.IncludeOptional, ColumnType.IncludeForeignKeys, ColumnType.IncludeUserProperties);
|
|
|
+ var columns = LoadEditorColumns();
|
|
|
var data = Client.Query(filter, columns);
|
|
|
results.AddRange(data.ToObjects<TEntity>());
|
|
|
}
|
|
@@ -340,7 +316,7 @@ public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid w
|
|
|
public override TEntity LoadItem(CoreRow row)
|
|
|
{
|
|
|
var id = row.Get<TEntity, Guid>(x => x.ID);
|
|
|
- var filter = GetRowFilter(row);//new Filter<TEntity>(x => x.ID).IsEqualTo(id);
|
|
|
+ var filter = GetRowFilter(row);
|
|
|
return Client.Query(filter, LoadEditorColumns()).ToObjects<TEntity>().FirstOrDefault()
|
|
|
?? throw new Exception($"No {typeof(TEntity).Name} with ID {id}");
|
|
|
}
|
|
@@ -366,7 +342,6 @@ public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid w
|
|
|
CoreUtils.SetPropertyValue(delete, column.Property, row[column.Property]);
|
|
|
}
|
|
|
|
|
|
- //var delete = /* row.ToObject<TEntity>(); */
|
|
|
deletes.Add(delete);
|
|
|
}
|
|
|
|
|
@@ -394,18 +369,8 @@ public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid w
|
|
|
else if (prop is CustomProperty)
|
|
|
row.Set(column.ColumnName, obj.UserProperties[column.ColumnName]);
|
|
|
}
|
|
|
-
|
|
|
- //base.ObjectToRow(obj, row);
|
|
|
}
|
|
|
|
|
|
- //private void Auditgrid_OnReload(object sender, Dictionary<string, object> criteria, ref String sort)
|
|
|
- //{
|
|
|
- // criteria["DocumentType"] = typeof(TEntity).EntityName();
|
|
|
- // criteria["DocumentID"] = (sender as FrameworkElement).Tag;
|
|
|
-
|
|
|
- // sort = "TimeStamp";
|
|
|
- //}
|
|
|
-
|
|
|
public override void LoadEditorButtons(TEntity item, DynamicEditorButtons buttons)
|
|
|
{
|
|
|
base.LoadEditorButtons(item, buttons);
|
|
@@ -413,9 +378,8 @@ public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid w
|
|
|
buttons.Add("Audit Trail", Wpf.Resources.view.AsBitmapImage(), item, AuditTrailClick);
|
|
|
}
|
|
|
|
|
|
- private void AuditTrailClick(object sender, object item)
|
|
|
+ private void AuditTrailClick(object sender, TEntity entity)
|
|
|
{
|
|
|
- var entity = (TEntity)item;
|
|
|
var window = new AuditWindow(entity.ID);
|
|
|
window.ShowDialog();
|
|
|
}
|
|
@@ -520,7 +484,6 @@ public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid w
|
|
|
return result;
|
|
|
});
|
|
|
tasks.Add(itemtask);
|
|
|
- //itemtask.Wait();
|
|
|
|
|
|
Task<List<string?>>? codetask = null;
|
|
|
if (!string.IsNullOrWhiteSpace(code))
|
|
@@ -536,7 +499,6 @@ public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid w
|
|
|
});
|
|
|
tasks.Add(codetask);
|
|
|
}
|
|
|
- //codetask.Wait();
|
|
|
|
|
|
var children = new Dictionary<Type, CoreTable>();
|
|
|
foreach (var childtype in childtypes)
|
|
@@ -570,32 +532,8 @@ public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid w
|
|
|
}
|
|
|
});
|
|
|
tasks.Add(childtask);
|
|
|
- //childtask.Wait();
|
|
|
}
|
|
|
|
|
|
- //var manytomanys = CoreUtils.TypeList(
|
|
|
- // AppDomain.CurrentDomain.GetAssemblies(),
|
|
|
- // x => x.GetInterfaces().Any(intf => intf.IsGenericType && intf.GetGenericTypeDefinition() == typeof(IManyToMany<,>) && intf.GenericTypeArguments.Contains(typeof(T)))
|
|
|
- //);
|
|
|
-
|
|
|
- //Task<CoreTable> childtask = Task.Run(() =>
|
|
|
- //{
|
|
|
- // var result = new CoreTable();
|
|
|
- // result.LoadColumns(typeof(TChild));
|
|
|
- // var children = new Client<TChild>().Load(new Filter<TChild>(x => linkfield).IsEqualTo(id));
|
|
|
- // foreach (var child in children)
|
|
|
- // {
|
|
|
- // child.ID = Guid.Empty;
|
|
|
- // String linkprop = CoreUtils.GetFullPropertyName<TChild, Guid>(linkfield, ".");
|
|
|
- // CoreUtils.SetPropertyValue(child, linkprop, Guid.Empty);
|
|
|
- // var newrow = result.NewRow();
|
|
|
- // result.LoadRow(newrow, child);
|
|
|
- // result.Rows.Add(newrow);
|
|
|
- // }
|
|
|
- // return result;
|
|
|
- //});
|
|
|
- //tasks.Add(childtask);
|
|
|
-
|
|
|
Task.WaitAll(tasks.ToArray());
|
|
|
|
|
|
var item = itemtask.Result;
|