|
@@ -70,6 +70,7 @@ namespace InABox.Core
|
|
|
public interface ILookupDefinitionGenerator
|
|
|
{
|
|
|
public IColumns DefineColumns();
|
|
|
+ string FormatDisplay(CoreRow row);
|
|
|
public IFilter? DefineFilter(BaseObject[] items);
|
|
|
public IColumns DefineFilterColumns();
|
|
|
public ISortOrder? DefineSortOrder();
|
|
@@ -82,6 +83,9 @@ namespace InABox.Core
|
|
|
{
|
|
|
public virtual Columns<TLookup> DefineColumns() => Columns.None<TLookup>();
|
|
|
|
|
|
+ public virtual string? FormatDisplay(CoreRow row) =>
|
|
|
+ LookupFactory.FormatLookup<TLookup>(row.ToDictionary(), new string[] { "Display" });
|
|
|
+
|
|
|
public virtual Filter<TLookup>? DefineFilter(TEntity[] items) => null;
|
|
|
|
|
|
/// <summary>
|
|
@@ -105,6 +109,8 @@ namespace InABox.Core
|
|
|
|
|
|
IColumns ILookupDefinitionGenerator.DefineColumns() => DefineColumns();
|
|
|
|
|
|
+ String ILookupDefinitionGenerator.FormatDisplay(CoreRow row) => FormatDisplay(row);
|
|
|
+
|
|
|
IFilter? ILookupDefinitionGenerator.DefineFilter(BaseObject[] items) => DefineFilter(items as TEntity[]);
|
|
|
|
|
|
IColumns ILookupDefinitionGenerator.DefineFilterColumns() => DefineFilterColumns();
|
|
@@ -170,7 +176,8 @@ namespace InABox.Core
|
|
|
? Activator.CreateInstance(generator) as ILookupDefinitionGenerator
|
|
|
: null;
|
|
|
}
|
|
|
- private static ILookupDefinitionGenerator? GetLookupGenerator(Type T, string column)
|
|
|
+
|
|
|
+ public static ILookupDefinitionGenerator? GetLookupGenerator(Type T, string column)
|
|
|
{
|
|
|
return GetLookupGenerator(GetLinkProperty(T, column));
|
|
|
}
|
|
@@ -311,16 +318,20 @@ namespace InABox.Core
|
|
|
public static IColumns DefineLookupColumns(Type TEntity, Type TLookup, string column)
|
|
|
{
|
|
|
var columns = Columns.None(TLookup);
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
var property = GetLinkProperty(TEntity, column);
|
|
|
if(property != null)
|
|
|
{
|
|
|
+
|
|
|
var prefix = property.Name + ".";
|
|
|
+
|
|
|
+ columns.Add(column.Substring(prefix.Length));
|
|
|
|
|
|
// Add all required columns of the entity link.
|
|
|
- foreach(var prop in DatabaseSchema.Properties(TEntity).Where(x => x.Required && x.Name.StartsWith(prefix)))
|
|
|
+ foreach(var prop in DatabaseSchema.Properties(property.PropertyType).Where(x => x.Required))
|
|
|
{
|
|
|
- columns.Add(prop.Name[prefix.Length..]);
|
|
|
+ columns.Add(prop.Name);
|
|
|
}
|
|
|
|
|
|
// Add all columns which are associated with linked properties.
|