Author: mridulpathak
Date: Sat Oct 15 13:19:35 2016 New Revision: 1765058 URL: http://svn.apache.org/viewvc?rev=1765058&view=rev Log: Improved: In form widgets of list type empty header row should not render if list to render in file is empty. (OFBIZ-7598) Thanks: Suraj Khurana for contribution. Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1765058&r1=1765057&r2=1765058&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original) +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Sat Oct 15 13:19:35 2016 @@ -86,6 +86,7 @@ under the License. <xs:attribute name="style" type="xs:string" /> <xs:attribute name="focus-field-name" type="xs:string" /> <xs:attribute name="title" type="xs:string" /> + <xs:attribute name="empty-form-data-message" type="xs:string" /> <xs:attribute name="tooltip" type="xs:string" /> <xs:attribute name="list-name" type="xs:string"> <xs:annotation> @@ -327,6 +328,7 @@ under the License. <xs:attribute name="style" type="xs:string" /> <xs:attribute name="focus-field-name" type="xs:string" /> <xs:attribute name="title" type="xs:string" /> + <xs:attribute name="empty-form-data-message" type="xs:string" /> <xs:attribute name="tooltip" type="xs:string" /> <xs:attribute name="list-name" type="xs:string"> <xs:annotation> Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java?rev=1765058&r1=1765057&r2=1765058&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java (original) +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelForm.java Sat Oct 15 13:19:35 2016 @@ -147,7 +147,7 @@ public abstract class ModelForm extends private final String formWidgetAreaStyle; private final boolean groupColumns; private final String headerRowStyle; - private final boolean hideHeader; + private boolean hideHeader; private final String itemIndexSeparator; private final List<String> lastOrderFields; private final String listEntryName; @@ -184,6 +184,7 @@ public abstract class ModelForm extends private final String targetType; private final FlexibleStringExpander targetWindowExdr; private final String title; + private final String emptyFormDataMessage; private final String tooltip; private final String type; private final boolean useRowSubmit; @@ -241,6 +242,13 @@ public abstract class ModelForm extends title = parentModel.title; } this.title = title; + String emptyFormDataMessage = formElement.getAttribute("empty-form-data-message"); + if (emptyFormDataMessage.isEmpty() && parentModel != null) { + emptyFormDataMessage = parentModel.emptyFormDataMessage; + } else if (emptyFormDataMessage.isEmpty()) { + emptyFormDataMessage = "No records found"; + } + this.emptyFormDataMessage = emptyFormDataMessage; String tooltip = formElement.getAttribute("tooltip"); if (tooltip.isEmpty() && parentModel != null) { tooltip = parentModel.tooltip; @@ -1015,6 +1023,10 @@ public abstract class ModelForm extends public boolean getHideHeader() { return this.hideHeader; } + public boolean setHideHeader(Boolean hideHeader) { + this.hideHeader = hideHeader; + return hideHeader; + } public String getItemIndexSeparator() { if (UtilValidate.isNotEmpty(this.itemIndexSeparator)) { @@ -1384,6 +1396,10 @@ public abstract class ModelForm extends return this.title; } + public String getEmptyFormDataMessage() { + return this.emptyFormDataMessage; + } + public String getTooltip() { return this.tooltip; } Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java (original) +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormRenderer.java Sat Oct 15 13:19:35 2016 @@ -48,6 +48,7 @@ import org.apache.ofbiz.widget.model.*; import org.apache.ofbiz.widget.model.ModelForm.FieldGroup; import org.apache.ofbiz.widget.model.ModelForm.FieldGroupBase; import org.apache.ofbiz.widget.model.ModelFormField; +import org.apache.ofbiz.widget.model.ModelFormField.DisplayField; /** * A form rendering engine. @@ -925,9 +926,12 @@ public class FormRenderer { formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm); int numOfColumns = 0; + this.checkFormDataAndSetHeader(context); // ===== render header row ===== if (!modelForm.getHideHeader()) { numOfColumns = this.renderHeaderRow(writer, context); + } else { + formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm); } // ===== render the item rows ===== @@ -951,9 +955,12 @@ public class FormRenderer { formStringRenderer.renderFormatListWrapperOpen(writer, context, modelForm); int numOfColumns = 0; + this.checkFormDataAndSetHeader(context); // ===== render header row ===== if (!modelForm.getHideHeader()) { numOfColumns = this.renderHeaderRow(writer, context); + } else { + formStringRenderer.renderEmptyFormDataMessage(writer, context, modelForm); } // ===== render the item rows ===== @@ -967,6 +974,32 @@ public class FormRenderer { } + private void checkFormDataAndSetHeader(Map<String, Object> context) { + String lookupName = modelForm.getListName(); + Object obj = context.get(lookupName); + if (obj == null) { + if (Debug.verboseOn()) + Debug.logVerbose("No object for list or iterator name [" + lookupName + "] found, so not rendering rows.", module); + return; + } + // if list is empty, do not render rows + Iterator<?> iter = null; + if (obj instanceof Iterator<?>) { + iter = (Iterator<?>) obj; + } else if (obj instanceof List<?>) { + iter = ((List<?>) obj).listIterator(); + } + int itemIndex = -1; + Object item = null; + while ((item = safeNext(iter)) != null) { + itemIndex++; + break; + } + if (itemIndex < 0) { + modelForm.setHideHeader(true); + } + } + private void renderSingleFormString(Appendable writer, Map<String, Object> context, int positions) throws IOException { List<ModelFormField> tempFieldList = new LinkedList<ModelFormField>(); Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java (original) +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java Sat Oct 15 13:19:35 2016 @@ -99,4 +99,5 @@ public interface FormStringRenderer { public void renderContainerFindField(Appendable writer, Map<String, Object> context, ModelFormField.ContainerField containerField) throws IOException; public void renderFieldGroupOpen(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException; public void renderFieldGroupClose(Appendable writer, Map<String, Object> context, ModelForm.FieldGroup fieldGroup) throws IOException; + public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException; } Modified: ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java?rev=1765058&r1=1765057&r2=1765058&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java (original) +++ ofbiz/trunk/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java Sat Oct 15 13:19:35 2016 @@ -1538,7 +1538,16 @@ public final class MacroFormRenderer imp renderEndingBoundaryComment(writer, "Grid Widget - Grid Element", modelForm); } } - + + public void renderEmptyFormDataMessage(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException { + StringWriter sr = new StringWriter(); + sr.append("<@renderEmptyFormDataMessage"); + sr.append(" message=\""); + sr.append(modelForm.getEmptyFormDataMessage()); + sr.append("\" />"); + executeMacro(writer, sr.toString()); + } + public void renderFormatHeaderOpen(Appendable writer, Map<String, Object> context, ModelForm modelForm) throws IOException { StringWriter sr = new StringWriter(); sr.append("<@renderFormatHeaderOpen "); Modified: ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl?rev=1765058&r1=1765057&r2=1765058&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl (original) +++ ofbiz/trunk/framework/widget/templates/HtmlFormMacroLibrary.ftl Sat Oct 15 13:19:35 2016 @@ -326,6 +326,10 @@ under the License. </label><#t/> </#macro> +<#macro renderEmptyFormDataMessage message> + <h3><#if message?has_content>${message}</#if></h3> +</#macro> + <#macro renderSingleFormFieldTitle></#macro> <#macro renderFormOpen linkUrl formType targetWindow containerId containerStyle autocomplete name viewIndexField viewSizeField viewIndex viewSize useRowSubmit> |
Free forum by Nabble | Edit this page |