internal void Construct(ApplicationCompositionDefinition composition, CompositeDataMap dataMap, DetailController detailController) { _composition = composition; _compositeDataMap = dataMap; _componentDataMaps = dataMap.Components(composition.To()); _detailController = detailController; }
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); }
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")); }
public IReadOnlyList <DataMap> Components(ApplicationCompositionDefinition composition) { return(Components(composition.To())); }