Exemple #1
0
 internal void Construct(ApplicationCompositionDefinition composition, CompositeDataMap dataMap, DetailController detailController)
 {
     _composition       = composition;
     _compositeDataMap  = dataMap;
     _componentDataMaps = dataMap.Components(composition.To());
     _detailController  = detailController;
 }
Exemple #2
0
        public static ApplicationCompositionDefinition GetInstance([NotNull] string @from, [NotNull] string relationship, string label, ApplicationCompositionSchema schema, string showExpression, string toolTip, bool hidden, ApplicationHeader header)
        {
            var composition = new ApplicationCompositionDefinition(from, relationship, label, schema, showExpression,
                                                                   toolTip, hidden, header);

            composition.SetLazyResolver(new Lazy <EntityAssociation>(
                                            () => {
                var metadata = MetadataProvider.Application(@from);
                var suffixed = EntityUtil.GetRelationshipName(relationship);

                return(MetadataProvider
                       .Entity(MetadataProvider.Application(@from).Entity)
                       .Associations
                       .FirstOrDefault(a => a.Qualifier == suffixed));
            }));
            return(composition);
        }
Exemple #3
0
        private static ApplicationCompositionSchema DoInitializeCompositionSchemas(ApplicationSchemaDefinition schema, ApplicationCompositionDefinition composition, IdentitySet checkedCompositions)
        {
            var relationship                 = composition.Relationship;
            var compositionApplication       = MetadataProvider.GetCompositionApplication(schema, relationship);
            var compositionResult            = new CompositionSchemas();
            var applicationCompositionSchema = composition.Schema;

            if (applicationCompositionSchema.Schemas != null)
            {
                return(applicationCompositionSchema);
            }
            compositionResult.Detail = GetDetailSchema(compositionApplication, applicationCompositionSchema);
            if (composition.Collection && applicationCompositionSchema is ApplicationCompositionCollectionSchema)
            {
                compositionResult.List  = GetListSchema(applicationCompositionSchema, compositionApplication);
                compositionResult.Print = GetPrintSchema(applicationCompositionSchema, compositionApplication, compositionResult.Detail, compositionResult.List);
                var collSchema = (ApplicationCompositionCollectionSchema)applicationCompositionSchema;
                collSchema.FetchFromServer = ShouldFetchFromServer(compositionResult.Detail, compositionResult.List);
            }
            //build eventual inner compositions schema data
            checkedCompositions.Add(composition.Relationship);
            if (compositionResult.Detail != null)
            {
                //sometimes,we don´t have a detail schema, just a list one
                foreach (var innerComposition in compositionResult.Detail.Compositions)
                {
                    if (!checkedCompositions.Contains(innerComposition.Relationship))
                    {
                        //to avod infinte loop
                        DoInitializeCompositionSchemas(schema, innerComposition, checkedCompositions);
                    }
                }
            }
            applicationCompositionSchema.Schemas = compositionResult;
            return(applicationCompositionSchema);
        }
 public static string Relationship(this ApplicationCompositionDefinition definition)
 {
     //currently the server is returning a _ at the end of the string, due to a (probably)bad design decision.
     //TODO: fix that on the server later
     return(definition.Relationship.Replace("_", ""));
 }
 public static void To(this ApplicationCompositionDefinition definition, ApplicationSchemaDefinition schema)
 {
     definition.ExtensionParameter("To", schema);
 }
 public static ApplicationSchemaDefinition To(this ApplicationCompositionDefinition definition)
 {
     return((ApplicationSchemaDefinition)definition.ExtensionParameter("To"));
 }
Exemple #7
0
 public IReadOnlyList <DataMap> Components(ApplicationCompositionDefinition composition)
 {
     return(Components(composition.To()));
 }