Working on Admin page modal
This commit is contained in:
@@ -23,5 +23,6 @@ public interface IAdminPageGenerator<TModel> {
|
||||
IAdminPageGenerator<TModel> ConfigureRepository<TRepository>() where TRepository : ModelRepository<TModel>;
|
||||
|
||||
IAdminPropertyGenerator Property<TProperty>(Expression<Func<TModel, TProperty>> propertyExpression);
|
||||
IAdminPageGenerator<TModel> ListingProperty<TProperty>(Expression<Func<TModel, TProperty>> propertyExpression);
|
||||
|
||||
}
|
||||
|
||||
@@ -14,5 +14,6 @@ public interface IAdminPropertyGenerator {
|
||||
IAdminPropertyGenerator Description(string description);
|
||||
IAdminPropertyGenerator Prefix(string prefix);
|
||||
IAdminPropertyGenerator Validator(Func<object, bool> validator);
|
||||
IAdminPropertyGenerator IsSelector<TSelector>();
|
||||
|
||||
}
|
||||
@@ -113,6 +113,12 @@ internal sealed class AdminPageGenerator<TModel> : IAdminPageGenerator<TModel>,
|
||||
return generator;
|
||||
}
|
||||
|
||||
public IAdminPageGenerator<TModel> ListingProperty<TProperty>(Expression<Func<TModel, TProperty>> propertyExpression) {
|
||||
var property = GetPropertyInfo(propertyExpression);
|
||||
Page.ListingProperty = property.Name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AdminPage<TModel> Compile() {
|
||||
var properties = new List<AdminPageProperty>();
|
||||
|
||||
|
||||
@@ -70,6 +70,11 @@ internal sealed class AdminPropertyGenerator(string name, Type type) : IAdminPro
|
||||
return this;
|
||||
}
|
||||
|
||||
public IAdminPropertyGenerator IsSelector<TSelector>() {
|
||||
_property.SelectorType = typeof(TSelector);
|
||||
return this;
|
||||
}
|
||||
|
||||
public AdminPageProperty Compile() {
|
||||
_property.DisplayName ??= _property.Name;
|
||||
return _property;
|
||||
|
||||
@@ -11,6 +11,7 @@ public class AdminPage {
|
||||
public string Url { get; set; }
|
||||
public AdminPagePermissions Permissions { get; set; }
|
||||
public IList<AdminPageProperty> Properties { get; set; }
|
||||
public string ListingProperty { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public Type RepositoryProvider { get; set; }
|
||||
|
||||
@@ -19,6 +19,8 @@ public sealed class AdminPageProperty {
|
||||
[JsonIgnore]
|
||||
public Type Type { get; set; }
|
||||
|
||||
public Type SelectorType { get; set; }
|
||||
|
||||
public Func<object, bool> Validator { get; set; }
|
||||
|
||||
public object GetValue(object entry) {
|
||||
|
||||
@@ -7,5 +7,6 @@ public interface IAdminPagesProvider {
|
||||
internal void RegisterAdminPage(string url, AdminPage page);
|
||||
AdminPage LoadAdminPage(string url);
|
||||
IList<AdminPage> LoadRegisteredAdminPages();
|
||||
AdminPage HasPageFor(Type type);
|
||||
|
||||
}
|
||||
@@ -16,4 +16,11 @@ public class AdminPagesProvider : IAdminPagesProvider {
|
||||
public IList<AdminPage> LoadRegisteredAdminPages() {
|
||||
return _pages.Values.ToList();
|
||||
}
|
||||
|
||||
public AdminPage HasPageFor(Type type) {
|
||||
return _pages
|
||||
.Where(p => p.Value.ModelType == type)
|
||||
.Select(p => p.Value)
|
||||
.SingleOrDefault();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user