Ejemplo n.º 1
0
        protected internal virtual void RenderInvalidMessageElement(IFormField formField,
                                                                    HtmlDocumentBuilder documentBuilder)
        {
            var divElement = new HtmlElementWriter(DivElement);

            var formFieldId  = formField.Id;
            var ifExpression = string.Format(InvalidExpression + " && " + DirtyExpression, formFieldId, formFieldId);

            divElement.Attribute(NgIfAttribute, ifExpression).Attribute(ClassAttribute, HasErrorClass);

            // <div ng-if="....$invalid && ....$dirty"...>
            documentBuilder.StartElement(divElement);

            if (!IsDate(formField))
            {
                RenderInvalidValueMessage(formField, documentBuilder);
                RenderInvalidTypeMessage(formField, documentBuilder);
            }
            else
            {
                RenderInvalidDateMessage(formField, documentBuilder);
            }

            documentBuilder.EndElement();
        }
Ejemplo n.º 2
0
        protected internal virtual string RenderFormData(IFormData formData)
        {
            if ((formData == null) ||
                (((formData.FormFields == null) || (formData.FormFields.Count == 0)) &&
                 ((formData.FormProperties == null) || (formData.FormProperties.Count == 0))))
            {
                return(null);
            }
            var formElement =
                new HtmlElementWriter(FormElement).Attribute(NameAttribute, GeneratedFormName)
                .Attribute(RoleAttribute, FormRole);

            var documentBuilder = new HtmlDocumentBuilder(formElement);

            // render fields
            foreach (var formField in formData.FormFields)
            {
                RenderFormField(formField, documentBuilder);
            }

            // render deprecated form properties
            foreach (var formProperty in formData.FormProperties)
            {
                RenderFormField(new FormPropertyAdapter(formProperty), documentBuilder);
            }

            // end document element
            documentBuilder.EndElement();

            return(documentBuilder.HtmlString);
        }
Ejemplo n.º 3
0
        protected internal virtual void RenderSelectBox(IFormField formField, HtmlDocumentBuilder documentBuilder)
        {
            var selectBox = new HtmlElementWriter(SelectElement, false);

            AddCommonFormFieldAttributes(formField, selectBox);

            // <select ...>
            documentBuilder.StartElement(selectBox);

            // <option ...>
            RenderSelectOptions(formField, documentBuilder);

            // </select>
            documentBuilder.EndElement();
        }
Ejemplo n.º 4
0
        protected internal virtual void RenderFormField(IFormField formField, HtmlDocumentBuilder documentBuilder)
        {
            // start group
            var divElement = new HtmlElementWriter(DivElement).Attribute(ClassAttribute, FormGroupClass);

            documentBuilder.StartElement(divElement);

            var formFieldId    = formField.Id;
            var formFieldLabel = formField.Label;

            // write label
            if (!ReferenceEquals(formFieldLabel, null) && (formFieldLabel.Length > 0))
            {
                var labelElement =
                    new HtmlElementWriter(LabelElement).Attribute(ForAttribute, formFieldId)
                    .TextContent(formFieldLabel);

                // <label for="...">...</label>
                documentBuilder.StartElement(labelElement).EndElement();
            }

            // render form control
            if (IsEnum(formField))
            {
                RenderSelectBox(formField, documentBuilder);
            }
            else if (IsDate(formField))
            {
                RenderDatePicker(formField, documentBuilder);
            }
            else
            {
                RenderInputField(formField, documentBuilder);
            }

            RenderInvalidMessageElement(formField, documentBuilder);

            // end group
            documentBuilder.EndElement();
        }
Ejemplo n.º 5
0
        protected internal virtual void RenderDatePicker(IFormField formField, HtmlDocumentBuilder documentBuilder)
        {
            //bool isReadOnly = isReadOnly(formField);

            // start input-group
            var inputGroupDivElement = new HtmlElementWriter(DivElement).Attribute(ClassAttribute, InputGroupClass);

            var formFieldId = formField.Id;

            // <div>
            documentBuilder.StartElement(inputGroupDivElement);

            // input field
            var inputField = CreateInputField(formField);

            //if (!isReadOnly)
            {
                inputField.Attribute(DatepickerPopupAttribute, DateFormat)
                .Attribute(IsOpenAttribute, string.Format(DateFieldOpenedAttribute, formFieldId));
            }

            // <input ... />
            documentBuilder.StartElement(inputField).EndElement();


            // if form field is read only, do not render date picker open button
            //if (!isReadOnly)
            {
                // input addon
                var addonElement = new HtmlElementWriter(DivElement).Attribute(ClassAttribute, InputGroupBtnClass);

                // <div>
                documentBuilder.StartElement(addonElement);

                // button to open date picker
                var buttonElement =
                    new HtmlElementWriter(ButtonElement).Attribute(TypeAttribute, ButtonButtonType)
                    .Attribute(ClassAttribute, ButtonDefaultClass)
                    .Attribute(NgClickAttribute, string.Format(OpenDatepickerFunctionSnippet, formFieldId));

                // <button>
                documentBuilder.StartElement(buttonElement);

                var iconElement = new HtmlElementWriter(Element).Attribute(ClassAttribute, CalendarGlyphicon);

                // <i ...></i>
                documentBuilder.StartElement(iconElement).EndElement();

                // </button>
                documentBuilder.EndElement();

                // </div>
                documentBuilder.EndElement();


                var scriptElement =
                    new HtmlElementWriter(ScriptElement).Attribute(CamScriptAttribute, null)
                    .Attribute(TypeAttribute, TextFormScriptType)
                    .TextContent(string.Format(OpenDatepickerSnippet, formFieldId, formFieldId));

                // <script ...> </script>
                documentBuilder.StartElement(scriptElement).EndElement();
            }

            // </div>
            documentBuilder.EndElement();
        }