public void Describe(DescribeFilterContext describe) { foreach (var part in _contentDefinitionManager.ListPartDefinitions()) { if (!part.Fields.Any()) { continue; } var descriptor = describe.For(part.Name + "ContentFields", T("{0} Content Fields", part.Name.CamelFriendly()), T("Content Fields for {0}", part.Name.CamelFriendly())); foreach (var field in part.Fields) { var localField = field; var localPart = part; var drivers = _contentFieldDrivers.Where(x => x.GetFieldInfo().Any(fi => fi.FieldTypeName == localField.FieldDefinition.Name)).ToList(); var membersContext = new DescribeMembersContext( (storageName, storageType, displayName, description) => { // look for a compatible field type editor IFieldTypeEditor fieldTypeEditor = _fieldTypeEditors.FirstOrDefault(x => x.CanHandle(storageType)); if (fieldTypeEditor == null) { return; } descriptor.Element( type: localPart.Name + "." + localField.Name + "." + storageName, name: new LocalizedString(localField.DisplayName + (displayName != null ? ":" + displayName.Text : "")), description: description ?? T("{0} property for {1}", storageName, localField.DisplayName), filter: context => ApplyFilter(context, fieldTypeEditor, storageName, storageType, localPart, localField), display: context => fieldTypeEditor.DisplayFilter(localPart.Name.CamelFriendly() + "." + localField.DisplayName, storageName, context.State), form: fieldTypeEditor.FormName); }); foreach (var driver in drivers) { driver.Describe(membersContext); } } } }
public void Describe(DescribeGroupByContext describe) { foreach (var part in _contentDefinitionManager.ListPartDefinitions()) { if (!part.Fields.Any()) { continue; } var descriptor = describe.For(part.Name + "ContentFields", T("{0} Content Fields", part.Name.CamelFriendly()), T("Content Fields for {0}", part.Name.CamelFriendly())); foreach (var field in part.Fields) { var localField = field; var localPart = part; var drivers = _contentFieldDrivers.Where(x => x.GetFieldInfo().Any(fi => fi.FieldTypeName == localField.FieldDefinition.Name)).ToList(); var membersContext = new DescribeMembersContext( (storageName, storageType, displayName, description) => { // look for a compatible field type editor IFieldTypeEditor fieldTypeEditor = _fieldTypeEditors.FirstOrDefault(x => x.CanHandle(storageType)); if (fieldTypeEditor == null) { return; } if (localField.FieldDefinition.Name == "NumericField") { this.DescribeNumericFieldMemberContext( localField: localField, description: description, storageName: storageName, descriptor: descriptor, displayName: displayName, fieldTypeEditor: fieldTypeEditor, localPart: localPart); } else if (localField.FieldDefinition.Name == "EnumerationField") { //field.FieldDefinition.Name List <AggregateMethods> methods = new List <AggregateMethods>(); methods.Add(AggregateMethods.Count); descriptor.Element( type: localPart.Name + "." + localField.Name + "." + storageName, name: T(localField.DisplayName), description: T("group the result by {0} values", localField.DisplayName), run: (query, method) => this.fieldAggregateQueryService.RunEnumerationAggregation(query, method, localField.Name, localPart.Name), aggregateMethods: methods, display: context => fieldTypeEditor.DisplayFilter(localPart.Name.CamelFriendly() + "." + localField.DisplayName, storageName, context.State)); } }); foreach (var driver in drivers) { driver.Describe(membersContext); } } } }
public override LocalizedString DisplayFilter(string fieldName, string storageName, dynamic formState) { return(_editor.DisplayFilter(fieldName, storageName, formState)); }