private XElement GenerateFieldMarkup(string formHtmlId, ModelFieldMetadata field) { var element = new XElement( "Form.field", GenerateScopeSelectorAttribute(), new XAttribute("formId", formHtmlId), new XAttribute("propName", field.Property.Name.ToString(CasingStyle.Camel))); if (field.Label != null) { var labelText = new IdentifierName(field.Label, LanguageInfo.Entries.JavaScript(), style: CasingStyle.Pascal); element.Add(new XAttribute("label", labelText.ToString(CasingStyle.UserFriendly) + ":")); } element.Add(new JsxExpressionAttribute( "getter", LAMBDA(@m => IIF(@m, whenTrue: @m.DOT(field.Property), whenFalse: ANY("???"))))); if (field.Direction == FieldDirection.Input) { element.Add(new JsxExpressionAttribute( "setter", LAMBDA((@m, @v) => @m.DOT(field.Property).ASSIGN(@v)))); } element.Add(new JsxExpressionAttribute("validation", GenerateValidationObject(field))); return(element); }
private AbstractExpression GenerateValidationObject(ModelFieldMetadata field) { return(INITOBJECT(() => { if (field.Direction == FieldDirection.Output) { KEY("isOutput", ANY(true)); } if (field.IsRequired) { KEY("required", ANY(true)); } if (field.MaxLength.HasValue) { KEY("maxLength", ANY(field.MaxLength.Value)); } })); }
public IModelFieldMetadata GetMetadataForField() { IModelFieldMetadata modelFieldMetadata = new ModelFieldMetadata(); return(modelFieldMetadata); // TODO map results with modelFieldMetadata }