Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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));
Exemple #6
0
        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);
        }