public static ICollectionConfig AddCollection <TEntity>(this ICollectionConfig root, string alias, string name, Action <ICollectionConfig <TEntity> > configure) where TEntity : IEntity { if (configure == null) { throw new ArgumentNullException(nameof(configure)); } if (alias != alias.ToUrlFriendlyString()) { throw new ArgumentException($"Use lowercase, hyphened strings as alias for collections, '{alias.ToUrlFriendlyString()}' instead of '{alias}'."); } if (!root.IsUnique(alias)) { throw new NotUniqueException(nameof(alias)); } var configReceiver = new CollectionConfig <TEntity>(alias, name, new EntityVariantConfig(typeof(TEntity).Name, typeof(TEntity))); configure.Invoke(configReceiver); root.Collections.Add(configReceiver); return(root); }
internal static List <ITreeElementSetup> ProcessCollections(this ICollectionConfig root) { var list = new List <ITreeElementSetup>(); foreach (var element in root.CollectionsAndPages) { if (element is CollectionConfig collectionConfigReceiver) { var collection = new CollectionSetup( collectionConfigReceiver.Icon, collectionConfigReceiver.Name, collectionConfigReceiver.Alias, new EntityVariantSetup(collectionConfigReceiver.EntityVariant), collectionConfigReceiver.RepositoryType, collectionConfigReceiver.Recursive) { DataViews = collectionConfigReceiver.DataViews, DataViewBuilder = collectionConfigReceiver.DataViewBuilder }; if (collectionConfigReceiver.SubEntityVariants.Any()) { collection.SubEntityVariants = collectionConfigReceiver.SubEntityVariants.ToList(variant => new EntityVariantSetup(variant)); } collection.TreeView = collectionConfigReceiver.TreeView == null ? null : new TreeViewSetup(collectionConfigReceiver.TreeView); collection.ListView = collectionConfigReceiver.ListView == null ? null : new ListSetup(collectionConfigReceiver.ListView, collection); collection.ListEditor = collectionConfigReceiver.ListEditor == null ? null : new ListSetup(collectionConfigReceiver.ListEditor, collection); collection.NodeView = collectionConfigReceiver.NodeView == null ? null : new NodeSetup(collectionConfigReceiver.NodeView, collection); collection.NodeEditor = collectionConfigReceiver.NodeEditor == null ? null : new NodeSetup(collectionConfigReceiver.NodeEditor, collection); // nested pages are not supported collection.Collections = collectionConfigReceiver.ProcessCollections().SelectNotNull(x => x as CollectionSetup).ToList(); list.Add(collection); } else if (element is IPageConfig pageConfigReceiver) { list.Add(new PageRegistrationSetup(pageConfigReceiver)); } } return(list); }
internal static List <CollectionSetup> ProcessCollections(this ICollectionConfig root) { var list = new List <CollectionSetup>(); foreach (var configReceiver in root.Collections.Cast <CollectionConfig>()) { var collection = new CollectionSetup( configReceiver.Icon, configReceiver.Name, configReceiver.Alias, new EntityVariantSetup(configReceiver.EntityVariant), configReceiver.RepositoryType, configReceiver.Recursive) { DataViews = configReceiver.DataViews, DataViewBuilder = configReceiver.DataViewBuilder }; if (configReceiver.SubEntityVariants.Any()) { collection.SubEntityVariants = configReceiver.SubEntityVariants.ToList(variant => new EntityVariantSetup(variant)); } collection.TreeView = configReceiver.TreeView == null ? null : new TreeViewSetup(configReceiver.TreeView); collection.ListView = configReceiver.ListView == null ? null : new ListSetup(configReceiver.ListView, collection); collection.ListEditor = configReceiver.ListEditor == null ? null : new ListSetup(configReceiver.ListEditor, collection); collection.NodeView = configReceiver.NodeView == null ? null : new NodeSetup(configReceiver.NodeView, collection); collection.NodeEditor = configReceiver.NodeEditor == null ? null : new NodeSetup(configReceiver.NodeEditor, collection); collection.Collections = configReceiver.ProcessCollections(); list.Add(collection); } return(list); }
internal static List <Collection> ProcessCollections(this ICollectionConfig root) { var list = new List <Collection>(); foreach (var configReceiver in root.Collections.Cast <CollectionConfig>()) { var collection = new Collection( configReceiver.Name, configReceiver.Alias, configReceiver.EntityVariant.ToEntityVariant(), configReceiver.RepositoryType, configReceiver.Recursive) { DataViews = configReceiver.DataViews, DataViewBuilder = configReceiver.DataViewBuilder }; if (configReceiver.SubEntityVariants.Any()) { collection.SubEntityVariants = configReceiver.SubEntityVariants.ToList(variant => variant.ToEntityVariant()); } collection.TreeView = configReceiver.TreeView?.ToTreeView(); collection.ListView = configReceiver.ListView?.ToList(collection); collection.ListEditor = configReceiver.ListEditor?.ToList(collection); collection.NodeView = configReceiver.NodeView?.ToNode(collection); collection.NodeEditor = configReceiver.NodeEditor?.ToNode(collection); collection.Collections = configReceiver.ProcessCollections(); list.Add(collection); } return(list); }
public static ICollectionConfig AddCollection <TEntity>(this ICollectionConfig root, string alias, string name, Action <ICollectionConfig <TEntity> > configure) where TEntity : IEntity { return(root.AddCollection(alias, default, name, configure));
public static ICollectionConfig <TEntity> AddSelfAsRecursiveCollection <TEntity>(this ICollectionConfig <TEntity> root) where TEntity : IEntity { var collectionConfig = (CollectionConfig)root; var collectionRoot = (ICollectionConfig)root; var configReceiver = new CollectionConfig <TEntity>(collectionConfig.Alias, collectionConfig.Name, collectionConfig.EntityVariant) { Recursive = true }; configReceiver.RepositoryType = collectionConfig.RepositoryType ?? throw new InvalidOperationException("Cannot add self without a Repository, use SetRepository first."); collectionRoot.Collections.Add(configReceiver); return(root); }